<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ITSMConfigurationManagement</Name>
    <Version>11.1.3</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-10-27 11:22:51" Version="11.1.3">- Update to OTOBO 11.1.1.
- Render multivalue reference links on AgentITSMConfigItemZoom. (#132)
- Align CI caching with tickets to prevent wrongly cached lenses. (#122)
- Fix: Transition action ConfigItemUpdate ignores dynamic fields and overwrites the name. (#127)
- Add linked object event trigger. (#108)
- Fixed LastChanged column for dashboard widget. (#109)
- Various other bugfixes.</ChangeLog>
    <ChangeLog Date="2026-07-27 11:02:30" Version="11.1.2">- Update to OTOBO 11.1.0 Beta2.
- Various Bugfixes: Fix version selection for customers (#105), UniqueNameCheck on edit (#104), enable Class attribute for ACLs also on AJAXUpdate (#87).</ChangeLog>
    <ChangeLog Date="2026-06-24 14:05:44" Version="11.1.1">Update to OTOBO 11.1.</ChangeLog>
    <Description Lang="en">The OTOBO::ITSM Configuration Management package.</Description>
    <Description Lang="de">Das OTOBO::ITSM Configuration Management Paket.</Description>
    <Description Lang="es">El paquete OTOBO::ITSM Configuration Management.</Description>
    <Description Lang="hu">Az OTOBO::ITSM konfigurációmenedzsment csomag.</Description>
    <Framework Minimum="11.1.1">11.1.x</Framework>
    <IntroInstall Lang="en" Title="Install Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WELCOME&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        You are about to install the OTOBO package ITSMConfigurationManagement.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTE&lt;/strong&gt;
        &lt;br/&gt;
        Bundles of new default classes are available and can be imported in Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;REQUIRED OTOBO PACKAGES&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.1.x&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="de" Title="Installation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WILLKOMMEN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Sie sind im Begriff das OTOBO-Paket ITSMConfigurationManagement zu installieren.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;BENÖTIGTE OTOBO-PAKETE&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.1.x&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="es" Title="Install Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;BIENVENIDO&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Usted está punto de instalar el paquete ITSMConfigurationManagement de OTOBO.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTA&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;li&gt;ITSMCore 11.1.x&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="en" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;NOTICE&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        In order to grant users access to the config item menu, you need to add them as member to the group 'itsm-configitem'.
        &lt;br/&gt;
        &lt;br/&gt;
        The menu items that were added by this package will be visible after you log-in to the system again.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="de" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;HINWEIS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Um Benutzern Zugriff auf das ConfigItem-Menü zu gewähren, müssen diese Mitglied der neuen Gruppe 'itsm-configitem' sein.
        &lt;br/&gt;
        &lt;br/&gt;
        Die von diesem Paket hinzugefügten Menü-Punkte sind erst nach einem erneuten Anmeldevorgang im System sichtbar.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="es" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;ATENCIÓN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Para permitirles a los usuarios el acceso al menú de los elementos de configuración, es necesario que se den de
        alta como miembros del grupo 'itsm-configitem'.
        &lt;br/&gt;
        &lt;br/&gt;
        Los elementos del menú que se agregaron por este paquete, serpan visibles después reiniciar la sesión al sistema.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))
        &lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="hu" Title="Telepítési információk" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;FIGYELMEZTETÉS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Annak érdekében, hogy hozzáférést adjon a felhasználók számára a konfigurációelem menühöz, hozzá kell adnia őket az „itsm-configitem” csoporthoz tagként.
        &lt;br/&gt;
        &lt;br/&gt;
        Azok a menüpontok, amelyeket ez a csomag adott hozzá, azután lesznek láthatóak, miután ismét bejelentkezik a rendszerbe.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroUninstall Lang="en" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ATTENTION&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        If you uninstall this package, all database tables that were created during installation will be deleted.
        All data from these tables will be irrevocably lost!
        &lt;br/&gt;
        &lt;br/&gt;
        The group 'itsm-configitem' that was created during package installation will be deactivated.
        You can activate this group again in the admin area.
        &lt;br/&gt;
        &lt;br/&gt;
        All links to config item objects will be irrevocably deleted!
        &lt;br/&gt;
        &lt;br/&gt;
        The statistics that are associated with this package, will no longer be available if the package is uninstalled.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="de" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ACHTUNG&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Bei der Deinstallation werden die von diesem Paket angelegten Datenbank-Tabellen gelöscht.
        Alle darin enthaltenen Daten gehen unwiderruflich verloren!
        &lt;br/&gt;
        &lt;br/&gt;
        Die von diesem Paket angelegte Gruppe 'itsm-configitem' wird deaktiviert.
        Sie kann jederzeit im Admin-Bereich wieder aktiviert werden.
        &lt;br/&gt;
        &lt;br/&gt;
        Alle Verknüpfungen zu ConfigItem-Objekten werden unwiderruflich gelöscht!
        &lt;br/&gt;
        &lt;br/&gt;
        Nach der Deinstallation sind die zu diesem Paket zugehörigen Statistiken nicht mehr verfügbar.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="es" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ATENCIÓN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Si usted desinstala este paquete, todas las tablas de la base de datos que fueron creadas durante su instalación se eliminarán.
        ¡Todos los datos de dichas tablas se perderán irrevocablemente!
        &lt;br/&gt;
        &lt;br/&gt;
        El grupo 'itsm-configitem' que se creó durante la instalación de este paquete se desactivará.
        Es posible reactivar este grupo en el área de administración.
        &lt;br/&gt;
        &lt;br/&gt;
        ¡Todos los vínculos a objetos de elementos de configuración serán eliminados permanentemente!
        &lt;br/&gt;
        &lt;br/&gt;
        Si usted desinstala este paquete, las estadísticas que están asociadas a él ya no estarán disponibles.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="hu" Title="Eltávolítási információk" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;FIGYELEM&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Ha eltávolítja ezt a csomagot, akkor a telepítés során létrehozott összes adatbázistábla törlésre kerül.
        Az ezekben a táblákban lévő összes adat visszavonhatatlanul el fog veszni!
        &lt;br/&gt;
        &lt;br/&gt;
        A csomagtelepítés során létrehozott „itsm-configitem” csoport ki lesz kapcsolva.
        Ezt a csoportot az adminisztrációs területen tudja ismét bekapcsolni.
        &lt;br/&gt;
        &lt;br/&gt;
        A konfigurációelem objektumokra mutató összes hivatkozás visszavonhatatlanul törölve lesz!
        &lt;br/&gt;
        &lt;br/&gt;
        Az ehhez a csomaghoz hozzárendelt statisztikák többé nem lesznek elérhetők, ha a csomag eltávolításra kerül.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUpgrade Lang="en" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WELCOME&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        You are about to upgrade the OTOBO package ITSMConfigurationManagement.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;REQUIRED OTOBO PACKAGES&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.1.x&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <IntroUpgrade Lang="de" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WILLKOMMEN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Sie sind im Begriff das OTOBO-Paket ITSMConfigurationManagement zu aktualisieren.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;BENÖTIGTE OTOBO-PAKETE&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.1.x&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <IntroUpgrade Lang="es" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;BIENVENIDO&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Usted está a punto de actualizar el paquete ITSMConfigurationManagement de OTOBO.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;PAQUETES OTOBO REQUERIDOS&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.1.x&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <PackageMerge Name="ITSMPublicCMDB" TargetVersion="11.1.1"></PackageMerge>
    <PackageRequired Version="11.1.0">ITSMCore</PackageRequired>
    <CodeInstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeInstall();

    </CodeInstall>
    <CodeUpgrade Type="post" Version="11.0.15">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM-&gt;ObjectsDiscard(
            Objects            =&gt; [$CodeModule],
            ForcePackageReload =&gt; 1,
        );

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgradeFromLowerThan_11_0_15();

    </CodeUpgrade>
    <CodeUpgrade Type="post" Version="11.0.7">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM-&gt;ObjectsDiscard(
            Objects            =&gt; [$CodeModule],
            ForcePackageReload =&gt; 1,
        );

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgradeFromLowerThan_11_0_7();

    </CodeUpgrade>
    <CodeUpgrade Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM-&gt;ObjectsDiscard(
            Objects            =&gt; [$CodeModule],
            ForcePackageReload =&gt; 1,
        );

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgrade();

    </CodeUpgrade>
    <CodeUninstall Type="pre">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstall();

    </CodeUninstall>
    <CodeUninstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstallPost();

        {
            # cleanup stats list (only stats related to the given stat objects)
            $Kernel::OM-&gt;Get('Kernel::System::Stats')-&gt;StatsCleanUp(
                ObjectNames =&gt; [ 'ITSMConfigItem' ],
                UserID =&gt; 1,
            );
        }

    </CodeUninstall>
    <CodeReinstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeReinstall();

    </CodeReinstall>
    <BuildCommitID>c97b690b6f4ea47f9bef3defe9e1bf721e82f07b</BuildCommitID>
    <BuildDate>2026-10-27 11:23:04</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AdminDynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA1ODJlOTIxOTRlODBmYzI1YzdiYTI3ZDFjN2VhZjZiNjlhNTgxYTIxIC0gS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluRHluYW1pY0ZpZWxkOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9ID0gJ0luY2x1ZGVJbnZhbGlkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9IH07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0R5bmFtaWNGaWVsZERlbGV0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0lUU01Db25maWdJdGVtVmVyc2lvblVwZGF0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25TeW5jKCkgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gPT4gJ092ZXJ2aWV3JywKICAgICk7Cn0KCiMgQUpBWCBzdWItYWN0aW9uCnN1YiBfRHluYW1pY0ZpZWxkRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIG15ICRDb25maXJtZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlybWVkJyApOwogICAgaWYgKCAhJENvbmZpcm1lZCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiTmVlZCAnQ29uZmlybWVkJyEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X1RyaWdnZXJFcnJvckRpYWxvZygKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVsZXRpb24gd2FzIG5vdCBjb25maXJtZWQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJElELAogICAgKTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZmluZCBEeW5hbWljRmllbGQgJElEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fVHJpZ2dlckVycm9yRGlhbG9nKAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb3VsZCBub3QgZmluZCBkeW5hbWljIGZpZWxkIHRvIGJlIGRlbGV0ZWQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntJbnRlcm5hbEZpZWxkfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBpbnRlcm5hbCBEeW5hbWljRmllbGQgJElEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fVHJpZ2dlckVycm9yRGlhbG9nKAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggIkNvdWxkIG5vdCBkZWxldGUgZHluYW1pYyBmaWVsZCAnJXMnIGJlY2F1c2UgaXQgaXMgYW4gaW50ZXJuYWwgZmllbGQuIiwgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICksCiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgIyBwcmV2ZW50IGR5bmFtaWMgZmllbGQgZGVsZXRpb24gaWYgdGhlIGZpZWxkIGlzIHVzZWQgaW4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICAjIHN0YW5kYXJkIGNhc2U6IHRoZSBmaWVsZCBpcyBkaXJlY3RseSBpbnRlZ3JhdGVkCiAgICAgICAgbXkgJUxvY2FsaXplZERGQ29uZmlnID0gJER5bmFtaWNGaWVsZENvbmZpZy0+JSo7CiAgICAgICAgbXkgJExvY2FsaXplZERGQ29uZmlnUmVmID0geyAlTG9jYWxpemVkREZDb25maWcgfTsKCiAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCBpcyBwYXJ0IG9mIGEgc2V0LCBhbnkgY2hhbmdlIHRvIGl0IHdpbGwgYWZmZWN0IHRoZSBleGlzdGluZyBzZXQKICAgICAgICAjIGFuZCB0aHVzIHRoZSBDSQogICAgICAgIGlmICggJExvY2FsaXplZERGQ29uZmlnUmVmLT57Q29uZmlnfXtQYXJ0T2ZTZXR9ICkgewogICAgICAgICAgICAkTG9jYWxpemVkREZDb25maWdSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICRMb2NhbGl6ZWRERkNvbmZpZ1JlZi0+e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbG9vcCBvdmVyIGFsbCBjbGFzc2VzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXkgaW5jbHVkZSB0aGUgY2hhbmdlZCBkeW5hbWljIGZpZWxkCiAgICAgICAgbXkgQEFmZmVjdGVkQ0lDbGFzc2VzOwogICAgICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJENsYXNzTGlzdC0+JSogKSB7CiAgICAgICAgICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1c2UgbmFtZSBvZiBmaWVsZCBpdHNlbGYKICAgICAgICAgICAgaWYgKCAkRGVmaW5pdGlvblJlZi0+e0R5bmFtaWNGaWVsZFJlZn17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQWZmZWN0ZWRDSUNsYXNzZXMsICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0LWlubmVyIGZpZWxkcyBhcmUgbm90IHN0b3JlZCBpbiBkZWZpbml0aW9uIGR5bmFtaWMgZmllbGQgcmVmCiAgICAgICAgICAgIGVsc2lmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkTG9jYWxpemVkREZDb25maWdSZWYtPntOYW1lfSB9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQWZmZWN0ZWRDSUNsYXNzZXMsICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2VuZCBlcnJvciBtZXNzYWdlIHRvIGZyb250ZW5kIHRvIGJlIGRpc3BsYXllZCBpbiBtb2RhbCBkaWFsb2cKICAgICAgICBpZiAoIEBBZmZlY3RlZENJQ2xhc3NlcyApIHsKICAgICAgICAgICAgbXkgJEpvaW5lZENsYXNzZXMgPSBqb2luKCc8YnIvPicsIEBBZmZlY3RlZENJQ2xhc3Nlcyk7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9UcmlnZ2VyRXJyb3JEaWFsb2coCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJUaGUgZHluYW1pYyBmaWVsZCAnJXMnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuIiwgJExvY2FsaXplZERGQ29uZmlnUmVmLT57TmFtZX0sICRKb2luZWRDbGFzc2VzKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgbXkgJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkFsbFZhbHVlc0RlbGV0ZSgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRWYWx1ZXNEZWxldGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X1RyaWdnZXJFcnJvckRpYWxvZygKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlKCAiVmFsdWVzIGZvciB0aGUgZHluYW1pYyBmaWVsZCAnJXMnIGNvdWxkIG5vdCBiZSBkZWxldGVkLiBQbGVhc2UgcmV2aWV3IHRoZSBsb2dzIGZvciBtb3JlIGRldGFpbHMuIiwgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZERlbGV0ZSgKICAgICAgICBJRCAgICAgPT4gJElELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRFbmNvZGVkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkVuY29kZSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcywKICAgICAgICB9LAogICAgKTsKCiAgICAjIEpTT04gZW5jb2RpbmcgbmVlZGVkIGFzIGZyb250ZW5kIGRvZXMgdXNlIHRoZSByZXNwb25zZSBmb3Igc2hvd2luZyBhbiBlcnJvciBkaWFsb2cgaWYgbmVjZXNzYXJ5CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJEVuY29kZWRDb250ZW50LAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgpzdWIgX1Nob3dPdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRmllbGRUeXBlQ29uZmlnICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKTsKICAgIG15ICRPYmplY3RUeXBlRmlsdGVyICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnT2JqZWN0VHlwZUZpbHRlcicgKSB8fCAnJzsKICAgIG15ICRGaWVsZFR5cGVGaWx0ZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnRmllbGRUeXBlRmlsdGVyJyApICB8fCAnJzsKICAgIG15ICROYW1lc3BhY2VGaWx0ZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZXNwYWNlRmlsdGVyJyApICB8fCAnJzsKCiAgICAkUGFyYW17SW5jbHVkZUludmFsaWR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0luY2x1ZGVJbnZhbGlkJyApOwoKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SW5jbHVkZUludmFsaWR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJFBhcmFte0luY2x1ZGVJbnZhbGlkfSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQYXJhbXtJbmNsdWRlSW52YWxpZH07CiAgICB9CiAgICAkUGFyYW17SW5jbHVkZUludmFsaWRDaGVja2VkfSA9ICRTZWxmLT57SW5jbHVkZUludmFsaWR9ID8gJ2NoZWNrZWQnIDogJyc7CgogICAgbXkgJE91dHB1dCA9IGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXI7CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICVDSURlZmluaXRpb25zT3V0T2ZTeW5jID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25OZWVkU3luYygpOwoKICAgIGlmICggJUNJRGVmaW5pdGlvbnNPdXRPZlN5bmMgKSB7CiAgICAgICAgbXkgJENJU3luY2hyb25pemVNZXNzYWdlID0gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJwogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBJbmZvID0+ICRDSVN5bmNocm9uaXplTWVzc2FnZSwKICAgICAgICApOwogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgY2hlY2sgZm9yIHBvc3NpYmxlIG9yZGVyIGNvbGxpc2lvbnMgb3IgZ2FwcwogICAgbXkgJE9yZGVyU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZE9yZGVyQ2hlY2soKTsKICAgIGlmICggISRPcmRlclN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkT3JkZXJSZXNldCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBjYWxsIGFsbCBuZWVkZWQgdGVtcGxhdGUgYmxvY2tzCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNYWluJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0KICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkVHlwZUNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnRmllbGRzIGNvbmZpZ3VyYXRpb24gaXMgbm90IHZhbGlkJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB0aGUgZmllbGQgdHlwZXMgKGJhY2tlbmRzKSBhbmQgaXRzIGNvbmZpZyBkaWFsb2dzCiAgICBteSAlRmllbGRUeXBlczsKICAgIG15ICVGaWVsZERpYWxvZ3M7CiAgICBGSUVMRFRZUEU6CiAgICBmb3IgbXkgJEZpZWxkVHlwZSAoIHNvcnQga2V5cyAleyRGaWVsZFR5cGVDb25maWd9ICkgewoKICAgICAgICBuZXh0IEZJRUxEVFlQRSBpZiAhJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGV9OwogICAgICAgIG5leHQgRklFTERUWVBFIGlmICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlfS0+e0Rpc2FibGVkQWRkfTsKCiAgICAgICAgIyBhZGQgdGhlIGZpZWxkIHR5cGUgdG8gdGhlIGxpc3QKICAgICAgICAkRmllbGRUeXBlc3skRmllbGRUeXBlfSA9ICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlfS0+e0Rpc3BsYXlOYW1lfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBkaWFsb2cKICAgICAgICAkRmllbGREaWFsb2dzeyRGaWVsZFR5cGV9ID0gJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGV9LT57Q29uZmlnRGlhbG9nfTsKICAgIH0KCiAgICBteSAkT2JqZWN0VHlwZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZScpOwogICAgbXkgQERGTmFtZXNwYWNlcyAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TmFtZXNwYWNlJyktPk5hbWVzcGFjZXNMaXN0KAogICAgICAgIFNjb3BlID0+ICdEeW5hbWljRmllbGQnLAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkT2JqZWN0VHlwZUNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnT2JqZWN0cyBjb25maWd1cmF0aW9uIGlzIG5vdCB2YWxpZCcpLAogICAgICAgICk7CiAgICB9CgogICAgIyBtYWtlIE9iamVjdFR5cGVDb25maWcgbG9jYWwgdmFyaWFibGUgdG8gcHJvcGVyIHNvcnRpbmcKICAgIG15ICVPYmplY3RUeXBlQ29uZmlnID0gJXskT2JqZWN0VHlwZUNvbmZpZ307CgogICAgIyBjeWNsZSB0aG91Z2h0IGFsbCBvYmplY3RzIHRvIGNyZWF0ZSB0aGUgc2VsZWN0IGFkZCBmaWVsZCBzZWxlY3RzCiAgICBteSBAT2JqZWN0VHlwZXM7CiAgICBteSAlT2JqZWN0VHlwZXNUcmFuc2xhdGVkOwoKICAgIE9CSkVDVFRZUEU6CiAgICBmb3IgbXkgJE9iamVjdFR5cGUgKAogICAgICAgIHNvcnQgewogICAgICAgICAgICAoIGludCAkT2JqZWN0VHlwZUNvbmZpZ3skYX0tPntQcmlvfSB8fCAwICkgPD0+ICggaW50ICRPYmplY3RUeXBlQ29uZmlneyRifS0+e1ByaW99IHx8IDAgKQogICAgICAgIH0ga2V5cyAlT2JqZWN0VHlwZUNvbmZpZwogICAgICAgICkKICAgIHsKICAgICAgICBuZXh0IE9CSkVDVFRZUEUgdW5sZXNzICRPYmplY3RUeXBlQ29uZmlnLT57JE9iamVjdFR5cGV9OwoKICAgICAgICBteSAkU2VsZWN0TmFtZSA9ICRPYmplY3RUeXBlIC4gJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgIG15IEBGaWVsZExpc3Q7CiAgICAgICAgbXkgQFJlZmVyZW5jZUR5bmFtaWNGaWVsZHM7CiAgICAgICAgRklFTERUWVBFOgogICAgICAgIGZvciBteSAkRmllbGRUeXBlTmFtZSAoIHNvcnQgeyAkRmllbGREaWFsb2dzeyRhfSBjbXAgJEZpZWxkRGlhbG9nc3skYn0gfSBrZXlzICVGaWVsZFR5cGVzICkgewoKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlTmFtZX17T2JqZWN0VHlwZXN9ICkgKSB7CiAgICAgICAgICAgICAgICBuZXh0IEZJRUxEVFlQRSB1bmxlc3MgYW55IHsgJE9iamVjdFR5cGUgZXEgJF8gfSAkRmllbGRUeXBlQ29uZmlnLT57JEZpZWxkVHlwZU5hbWV9e09iamVjdFR5cGVzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ3JvdXAgcmVmZXJlbmNlIGZpZWxkIHR5cGVzIHRvIHNob3cgaW4gdHJlZSB2aWV3CiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRGaWVsZFR5cGVzeyRGaWVsZFR5cGVOYW1lfTsKICAgICAgICAgICAgaWYgKCAkRmllbGREaWFsb2dzeyRGaWVsZFR5cGVOYW1lfSA9fiAvXkFkbWluRHluYW1pY0ZpZWxkUmVmZXJlbmNlJC8gKSB7CiAgICAgICAgICAgICAgICAkVmFsdWUgPSAnUmVmZXJlbmNlOjonIC4gJFZhbHVlOwogICAgICAgICAgICAgICAgcHVzaCBAUmVmZXJlbmNlRHluYW1pY0ZpZWxkcywgJEZpZWxkVHlwZU5hbWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQEZpZWxkTGlzdCwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJEZpZWxkIChARmllbGRMaXN0KSB7CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoIkZyb250ZW5kOjpNb2R1bGUiKS0+eyAkRmllbGREaWFsb2dzeyAkRmllbGQtPntLZXl9IH0gfSApIHsKICAgICAgICAgICAgICAgICRGaWVsZC0+e0Rpc2FibGVkfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRoZSBBZGQgRHluYW1pYyBGaWVsZCBzZWxlY3QKICAgICAgICBteSAkQWRkRHluYW1pY0ZpZWxkU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFxARmllbGRMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRTZWxlY3ROYW1lLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgID0+IDEsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICAgICAgICAgU29ydCAgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICctJywKICAgICAgICAgICAgVHJlZVZpZXcgICAgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUgVzc1cGMnLAogICAgICAgICk7CgogICAgICAgICMgVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcy4KICAgICAgICAjIEluamVjdCBhZGRpdGlvbmFsIGRhdGEgaW50byB0aGUgb3B0aW9uIHRhZy4KICAgICAgICAjIEUuZy4gPG9wdGlvbiB2YWx1ZT0iUmVmZXJlbmNlOjpJVFNNQ29uZmlnSXRlbSIgZGF0YS1yZWZlcmVuY2VkX29iamVjdF90eXBlPSJJVFNNQ29uZmlnSXRlbSI+Jm5ic3A7Jm5ic3A7SVRTTUNvbmZpZ0l0ZW08L29wdGlvbj4KICAgICAgICAjIFNlZSBodHRwczovL3d3dy53M3NjaG9vbHMuY29tL3RhZ3MvYXR0X2RhdGEtLmFzcAogICAgICAgIG15ICRSZWZlcmVuY2VGaWVsZHNTdHJnID0gam9pbiggJ3wnLCBAUmVmZXJlbmNlRHluYW1pY0ZpZWxkcyApOwogICAgICAgICRBZGREeW5hbWljRmllbGRTdHJnID1+IHNbICh2YWx1ZT0iKCRSZWZlcmVuY2VGaWVsZHNTdHJnKSIpPl1bICQxIGRhdGEtcmVmZXJlbmNlZF9vYmplY3RfdHlwZT0iJDIiPl1nOwoKICAgICAgICBteSAkT2JqZWN0VHlwZU5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUnKQogICAgICAgICAgICAtPnskT2JqZWN0VHlwZX0tPntEaXNwbGF5TmFtZX0gfHwgJE9iamVjdFR5cGU7CgogICAgICAgIHB1c2ggQE9iamVjdFR5cGVzLCAkT2JqZWN0VHlwZTsKCiAgICAgICAgaWYgKCAkT2JqZWN0VHlwZU5hbWUgbmUgJ0FydGljbGUnICkgewogICAgICAgICAgICAkT2JqZWN0VHlwZXNUcmFuc2xhdGVkeyRPYmplY3RUeXBlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkT2JqZWN0VHlwZU5hbWUpOwogICAgICAgIH0KCiAgICAgICAgIyBjYWxsIEFjdGlvbkFkZER5bmFtaWNGaWVsZCBibG9jawogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25BZGREeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIEFkZER5bmFtaWNGaWVsZFN0cmcgPT4gJEFkZER5bmFtaWNGaWVsZFN0cmcsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICAgICAgICAgID0+ICRPYmplY3RUeXBlLAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZU5hbWUgICAgICA9PiAkT2JqZWN0VHlwZU5hbWUsCiAgICAgICAgICAgICAgICBTZWxlY3ROYW1lICAgICAgICAgID0+ICRTZWxlY3ROYW1lLAogICAgICAgICAgICB9LAogICAgICAgICk7CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIGlmICggJE9iamVjdFR5cGVOYW1lIGVxICdJVFNNIENvbmZpZ0l0ZW0nICYmICVDSURlZmluaXRpb25zT3V0T2ZTeW5jICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGlvbkR5bmFtaWNGaWVsZEV4dHJhJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgID0+ICdBZG1pbkR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgU3ViYWN0aW9uICAgPT4gJ0lUU01Db25maWdJdGVtVmVyc2lvblVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgPT4gJ1N5bmMgQ0kgRGVmaW5pdGlvbnMnLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICdEZXBsb3kgZHluYW1pYyBmaWVsZCBjaGFuZ2VzOiBBZGQgbmV3IGRlZmluaXRpb25zIGZvciBhbGwgYWZmZWN0ZWQgSVRTTUNvbmZpZ0l0ZW0gY2xhc3Nlcy4nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdFN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVPYmplY3RUeXBlc1RyYW5zbGF0ZWQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdEeW5hbWljRmllbGRPYmplY3RUeXBlJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJE9iamVjdFR5cGVGaWx0ZXIsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRPYmplY3RUeXBlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBEeW5hbWljRmllbGRPYmplY3RTdHJnID0+ICREeW5hbWljRmllbGRPYmplY3RTdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICVGaWVsZFR5cGVTZWxlY3Rpb24gPSBtYXAgewogICAgICAgICRfID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZpZWxkVHlwZUNvbmZpZy0+eyRffS0+e0Rpc3BsYXlOYW1lfSApCiAgICB9IGtleXMgJEZpZWxkVHlwZUNvbmZpZy0+JSo7CgogICAgbXkgJER5bmFtaWNGaWVsZFR5cGVTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlRmllbGRUeXBlU2VsZWN0aW9uLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkRmllbGRUeXBlJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJEZpZWxkVHlwZUZpbHRlciwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZEZpZWxkVHlwZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkVHlwZVN0cmcgPT4gJER5bmFtaWNGaWVsZFR5cGVTdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmIChAREZOYW1lc3BhY2VzKSB7CiAgICAgICAgbXkgJU5hbWVzcGFjZVNlbGVjdGlvbiA9ICgKICAgICAgICAgICAgJzxub25lPicgPT4gJzwnIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdub25lJykgLiAnPicsCiAgICAgICAgICAgIG1hcCB7ICRfID0+ICRfIH0gQERGTmFtZXNwYWNlcywKICAgICAgICApOwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZXNwYWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVOYW1lc3BhY2VTZWxlY3Rpb24sCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lc3BhY2VTdHJnID0+ICREeW5hbWljRmllbGROYW1lc3BhY2VTdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT2JqZWN0VHlwZXMnLAogICAgICAgIFZhbHVlID0+IFxAT2JqZWN0VHlwZXMKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnRHluYW1pY0ZpZWxkcycsCiAgICAgICAgVmFsdWUgPT4gXCVGaWVsZERpYWxvZ3MKICAgICk7CgogICAgIyBjYWxsIGhpbnQgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0hpbnQnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBtZXJnZSBUaWNrZXQgYW5kIEFydGljbGUgaW50byBvbmUgdHlwZQogICAgbXkgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZjsKICAgIGlmICggJE9iamVjdFR5cGVGaWx0ZXIgZXEgJ1RpY2tldCcgKSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9IFsgJ1RpY2tldCcsICdBcnRpY2xlJyBdOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9ICRPYmplY3RUeXBlRmlsdGVyID8gWyRPYmplY3RUeXBlRmlsdGVyXSA6IHVuZGVmOwogICAgfQoKICAgICMgZ2V0IGNvbXBsZXRlIGR5bmFtaWMgZmllbGRzIGxpc3QKICAgIG15ICREeW5hbWljRmllbGRzTGlzdEFsbCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgIyBnZXQgZmlsdGVyZWQgZHluYW1pYyBmaWVsZHMgbGlzdAogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0RmlsdGVyZWQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiwKICAgICAgICBGaWVsZFR5cGUgID0+IElzU3RyaW5nV2l0aERhdGEoJEZpZWxkVHlwZUZpbHRlcikgPyBbJEZpZWxkVHlwZUZpbHRlcl0gOiB1bmRlZiwKICAgICAgICBOYW1lc3BhY2UgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgVmFsaWQgICAgICA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/IDAgOiAxLAogICAgKTsKCiAgICBteSAkRmlsdGVyU3RyZyA9ICcnOwogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCRPYmplY3RUeXBlRmlsdGVyKSApIHsKICAgICAgICAkRmlsdGVyU3RyZyAuPSAiO09iamVjdFR5cGVGaWx0ZXI9IiAuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuRmlsdGVyIHwgdXJpICVdJywKICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRPYmplY3RUeXBlRmlsdGVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCRGaWVsZFR5cGVGaWx0ZXIpICkgewogICAgICAgICRGaWx0ZXJTdHJnIC49ICI7RmllbGRUeXBlRmlsdGVyPSIgLiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkZpbHRlciB8IHVyaSAlXScsCiAgICAgICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkRmllbGRUeXBlRmlsdGVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKEBERk5hbWVzcGFjZXMpIHsKICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoJE5hbWVzcGFjZUZpbHRlcikgKSB7CiAgICAgICAgICAgICRGaWx0ZXJTdHJnIC49ICI7TmFtZXNwYWNlRmlsdGVyPSIgLiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkTmFtZXNwYWNlRmlsdGVyLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmludCB0aGUgbGlzdCBvZiBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPl9EeW5hbWljRmllbGRzTGlzdFNob3coCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAkRHluYW1pY0ZpZWxkc0xpc3RGaWx0ZXJlZCwKICAgICAgICBUb3RhbCAgICAgICAgID0+IHNjYWxhciBAeyREeW5hbWljRmllbGRzTGlzdEZpbHRlcmVkfSwKICAgICAgICBNYXhGaWVsZE9yZGVyID0+IHNjYWxhciBAeyREeW5hbWljRmllbGRzTGlzdEFsbH0sCiAgICAgICAgRmlsdGVyU3RyZyAgICA9PiAkRmlsdGVyU3RyZywKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbkR5bmFtaWNGaWVsZCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBGaWx0ZXJTdHJnID0+ICRGaWx0ZXJTdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9EeW5hbWljRmllbGRzTGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJEZpZWxkVHlwZUNvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHJpdmVyJyk7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGFuIGZpZWxkcyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCBmaWVsZCBwYWdlCiAgICBteSAkU3RhcnRIaXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMTsKCiAgICAjIGdldCBwZXJzb25hbCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnQWRtaW5EeW5hbWljRmllbGRzT3ZlcnZpZXdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPntTZXNzaW9ufXskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDM1OwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0R5bmFtaWNGaWVsZHNPdmVydmlld1BhZ2VTaG93bic7CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgY2FsY3VsYXRlIG1heC4gc2hvd24gcGVyIHBhZ2UKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGJ1aWxkIG5hdiBiYXIKICAgIG15ICRMaW1pdCAgID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPntBY3Rpb259LAogICAgICAgIExpbmsgICAgICA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgICAgIElEUHJlZml4ICA9PiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biBkeW5hbWljIGZpZWxkcyBwZXIgcGFnZQogICAgJFBhcmFte1JlcXVlc3RlZFVSTH0gICAgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhZ2VTaG93biwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIERhdGEgICAgICAgID0+IFwlRGF0YSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY1ZhbHVlJywKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgaWYgKCVQYWdlTmF2KSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZXh0U2V0dGluZ3MnLAogICAgICAgICAgICBEYXRhID0+IHsgJVBhZ2VOYXYsICVQYXJhbSwgfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgYXQgbGVhc3QgMSBkeW5hbWljIGZpZWxkIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIHN5c3RlbQogICAgaWYgKCAkUGFyYW17VG90YWx9ICkgewoKICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkcyBkZXRhaWxzCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICBEWU5BTUlDRklFTERJRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZElEICggQHsgJFBhcmFte0R5bmFtaWNGaWVsZHN9IH0gKSB7CiAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIGlmICggJENvdW50ZXIgPj0gJFN0YXJ0SGl0ICYmICRDb3VudGVyIDwgKCAkUGFnZVNob3duICsgJFN0YXJ0SGl0ICkgKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBJRCA9PiAkRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERJRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZERhdGEpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBWYWxpZElEIHRvIFZhbGlkaXR5IHN0cmluZwogICAgICAgICAgICAgICAgbXkgJFZhbGlkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gJER5bmFtaWNGaWVsZERhdGEtPntWYWxpZElEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIG9iamVjdCB0eXBlIGRpc3BsYXkgbmFtZQogICAgICAgICAgICAgICAgbXkgJE9iamVjdFR5cGVOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlJykKICAgICAgICAgICAgICAgICAgICAtPnsgJER5bmFtaWNGaWVsZERhdGEtPntPYmplY3RUeXBlfSB9LT57RGlzcGxheU5hbWV9CiAgICAgICAgICAgICAgICAgICAgfHwgJER5bmFtaWNGaWVsZERhdGEtPntPYmplY3RUeXBlfTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgZmllbGQgdHlwZSBkaXNwbGF5IG5hbWUKICAgICAgICAgICAgICAgIG15ICRGaWVsZFR5cGVOYW1lID0gJEZpZWxkVHlwZUNvbmZpZy0+eyAkRHluYW1pY0ZpZWxkRGF0YS0+e0ZpZWxkVHlwZX0gfS0+e0Rpc3BsYXlOYW1lfQogICAgICAgICAgICAgICAgICAgIHx8ICREeW5hbWljRmllbGREYXRhLT57RmllbGRUeXBlfTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgZmllbGQgYmFja2VuZCBkaWFsb2cKICAgICAgICAgICAgICAgIG15ICRDb25maWdEaWFsb2cgPSAkRmllbGRUeXBlQ29uZmlnLT57ICREeW5hbWljRmllbGREYXRhLT57RmllbGRUeXBlfSB9LT57Q29uZmlnRGlhbG9nfQogICAgICAgICAgICAgICAgICAgIHx8ICcnOwoKICAgICAgICAgICAgICAgICMgcHJpbnQgZWFjaCBkeW5hbWljIGZpZWxkIHJvdwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkc1JvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZERhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgICA9PiAkVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0RpYWxvZyAgID0+ICRDb25maWdEaWFsb2csCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkVHlwZU5hbWUgID0+ICRGaWVsZFR5cGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlTmFtZSA9PiAkT2JqZWN0VHlwZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclN0cmcgICAgID0+ICRQYXJhbXtGaWx0ZXJTdHJnfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIEludGVybmFsIGZpZWxkcyBjYW4gbm90IGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkRGF0YS0+e0ludGVybmFsRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEZWxldGVMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyREeW5hbWljRmllbGREYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkICAgICAgICAgID0+ICRWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0RpYWxvZyAgID0+ICRDb25maWdEaWFsb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFR5cGVOYW1lICA9PiAkRmllbGRUeXBlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGVOYW1lID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDbG9uZUxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZERhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgICAgICAgICAgPT4gJFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnRGlhbG9nICAgPT4gJENvbmZpZ0RpYWxvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkVHlwZU5hbWUgID0+ICRGaWVsZFR5cGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZU5hbWUgPT4gJER5bmFtaWNGaWVsZERhdGEtPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZCcsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01heEZpZWxkT3JkZXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBNYXhGaWVsZE9yZGVyID0+ICRQYXJhbXtNYXhGaWVsZE9yZGVyfSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRHluYW1pY0ZpZWxkT3JkZXJSZXNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUmVzZXRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRPcmRlclJlc2V0KCk7CgogICAgIyBzaG93IGVycm9yIG1lc3NhZ2UgaWYgdGhlIG9yZGVyIHJlc2V0IHdhcyBub3Qgc3VjY2Vzc2Z1bAogICAgaWYgKCAhJFJlc2V0U3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCByZXNldCBEeW5hbWljIEZpZWxkIG9yZGVyIHByb3Blcmx5LCBwbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLicKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQoKICAgICMgcmVkaXJlY3QgdG8gbWFpbiBzY3JlZW4KICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAiQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiwKICAgICk7Cn0KCnN1YiBfVHJpZ2dlckVycm9yRGlhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkRXJyb3JNZXNzYWdlCiAgICAgICAgPSAkUGFyYW17RXJyb3JNZXNzYWdlfQogICAgICAgIHx8ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAtPlRyYW5zbGF0ZSgnRHluYW1pYyBmaWVsZCBkZWxldGlvbiBjb3VsZCBub3QgYmUgY29tcGxldGVkLiBQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvciBvciByZXZpZXcgdGhlIGxvZ3MgZm9yIG1vcmUgaW5mb3JtYXRpb24nKTsKCiAgICBteSAkRW5jb2RlZENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5FbmNvZGUoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJEVycm9yTWVzc2FnZSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIEpTT04gZW5jb2RpbmcgbmVlZGVkIGFzIGZyb250ZW5kIGRvZXMgdXNlIHRoZSByZXNwb25zZSBmb3Igc2hvd2luZyBhbiBlcnJvciBkaWFsb2cgaWYgbmVjZXNzYXJ5CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJEVuY29kZWRDb250ZW50LAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Modules/AgentDashboardCommon.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZDY2MTZkZjNiZmIwZjE2ZGJlYjQ5MTg0NWI1MzU4MjhlZThlYjFjIC0gS2VybmVsL01vZHVsZXMvQWdlbnREYXNoYm9hcmRDb21tb24ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RGFzaGJvYXJkQ29tbW9uOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6REJPYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7JVBhcmFtfSwgJFR5cGU7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSAgPSAnRGFzaGJvYXJkQmFja2VuZCc7CiAgICBteSAkTWFpbk1lbnVDb25maWdLZXkgPSAnQWdlbnREYXNoYm9hcmQ6Ok1haW5NZW51JzsKICAgIG15ICRVc2VyU2V0dGluZ3NLZXkgICA9ICdVc2VyRGFzaGJvYXJkJzsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICAkQmFja2VuZENvbmZpZ0tleSAgPSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kJzsKICAgICAgICAkTWFpbk1lbnVDb25maWdLZXkgPSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpNYWluTWVudSc7CiAgICAgICAgJFVzZXJTZXR0aW5nc0tleSAgID0gJ1VzZXJDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJzsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICAkQmFja2VuZENvbmZpZ0tleSAgPSAnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCc7CiAgICAgICAgJE1haW5NZW51Q29uZmlnS2V5ID0gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6Ok1haW5NZW51JzsKICAgICAgICAkVXNlclNldHRpbmdzS2V5ICAgPSAnVXNlckN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJzsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgbG9hZCBiYWNrZW5kcwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgkQmFja2VuZENvbmZpZ0tleSk7CiAgICBpZiAoICEkQ29uZmlnICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBzdWNoIGNvbmZpZyBmb3IgJXMnLCAkQmFja2VuZENvbmZpZ0tleSApLAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgYWxsIGNvbmZpZ3VyZWQgc3RhdGlzdGljcyBmcm9tIHRoZSBzeXN0ZW0gdGhhdCBzaG91bGQgYmUgc2hvd24gYXMgYSBkYXNoYm9hcmQgd2lkZ2V0CiAgICAjICAgYW5kIHJlZ2lzdGVyIHRoZW0gZHluYW1pY2FsbHkgaW4gdGhlIGNvbmZpZ3VyYXRpb24uCiAgICBteSBAU3RhdHNJRHM7CiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnREYXNoYm9hcmQnICkgewoKICAgICAgICBteSAkU3RhdHNIYXNoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzTGlzdEdldCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRTdGF0c0hhc2gpICkgewogICAgICAgICAgICBTVEFUSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdElEICggc29ydCBrZXlzICV7JFN0YXRzSGFzaH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57U2hvd0FzRGFzaGJvYXJkV2lkZ2V0fTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57UGVybWlzc2lvbn07CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkU3RhdHNIYXNoLT57JFN0YXRJRH0tPntQZXJtaXNzaW9ufSApOwoKICAgICAgICAgICAgICAgIG15IEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzOwogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cElEICggQHsgJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57UGVybWlzc2lvbn0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoIEdyb3VwSUQgPT4gJEdyb3VwSUQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15ICRTdGF0c1Blcm1pc3Npb25Hcm91cHMgPSBqb2luKCAnOycsIEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzICk7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIGFsbCBsaW5lIGJyZWFrcyB3aXRoIHNwYWNlcyAob3RoZXJ3aXNlIFRyYW5zbGF0ZSgpIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5KQogICAgICAgICAgICAgICAgJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57RGVzY3JpcHRpb259ID1+IHN7XHI/XG58XHJ9eyB9bXN4ZzsKCiAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb24gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRTdGF0c0hhc2gtPnskU3RhdElEfS0+e0Rlc2NyaXB0aW9ufSApOwoKICAgICAgICAgICAgICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57VGl0bGV9ICk7CiAgICAgICAgICAgICAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRpc3RpYycpIC4gJzogJwogICAgICAgICAgICAgICAgICAgIC4gJFRpdGxlIC4gJyAoJwogICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTdGF0czo6U3RhdHNIb29rJykKICAgICAgICAgICAgICAgICAgICAuICRTdGF0c0hhc2gtPnskU3RhdElEfS0+e1N0YXROdW1iZXJ9IC4gJyknOwoKICAgICAgICAgICAgICAgICRDb25maWctPnsgKCAkU3RhdElEICsgMTAwMCApIC4gJy1TdGF0cycgfSA9IHsKICAgICAgICAgICAgICAgICAgICAnQmxvY2snICAgICAgID0+ICdDb250ZW50TGFyZ2UnLAogICAgICAgICAgICAgICAgICAgICdEZWZhdWx0JyAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAnTW9kdWxlJyAgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpTdGF0cycsCiAgICAgICAgICAgICAgICAgICAgJ1RpdGxlJyAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgJ1N0YXRJRCcgICAgICA9PiAkU3RhdElELAogICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbicgPT4gJERlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICdHcm91cCcgICAgICAgPT4gJFN0YXRzUGVybWlzc2lvbkdyb3VwcywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBwdXNoIEBTdGF0c0lEcywgJFN0YXRJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0Rhc2hib2FyZFN0YXRzSURzJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFxAU3RhdHNJRHMKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJFNlbGYtPntDdXN0b21lcklEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDdXN0b21lcklEJyApOwoKICAgICAgICAjIGNoZWNrIEN1c3RvbWVySUQgcHJlc2VuY2UgZm9yIGFsbCBzdWJhY3Rpb25zIHRoYXQgbmVlZCBpdAogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdVcGRhdGVQb3NpdGlvbicgKSB7CiAgICAgICAgICAgIGlmICggISRTZWxmLT57Q3VzdG9tZXJJRH0gKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29kZSA9PiAnQ29yZS5BZ2VudC5DdXN0b21lckluZm9ybWF0aW9uQ2VudGVyU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coKTsnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJFNlbGYtPntDdXN0b21lclVzZXJJRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ3VzdG9tZXJVc2VySUQnICk7CgogICAgICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VySUQgcHJlc2VuY2UgZm9yIGFsbCBzdWJhY3Rpb25zIHRoYXQgbmVlZCBpdAogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdVcGRhdGVQb3NpdGlvbicgKSB7CgogICAgICAgICAgICBpZiAoICEkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU09uRG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb2RlID0+ICdDb3JlLkFnZW50LkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coKTsnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRTZXNzaW9uT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgdXBkYXRlL2Nsb3NlIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdVcGRhdGVSZW1vdmUnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYW1lJyApOwogICAgICAgIG15ICRLZXkgID0gJFVzZXJTZXR0aW5nc0tleSAuICROYW1lOwoKICAgICAgICAjIE1hbmRhdG9yeSB3aWRnZXRzIGNhbid0IGJlIHJlbW92ZWQuCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9ICYmICRDb25maWctPnskTmFtZX0tPntNYW5kYXRvcnl9ICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gMCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAgICAgaWYgKCAkU2VsZi0+e0N1c3RvbWVySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJJRD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJFNlbGYtPntDdXN0b21lcklEfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJVc2VySUQ9IiAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1VwZGF0ZVByZWZlcmVuY2VzJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJE5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKTsKCiAgICAgICAgIyBnZXQgcHJlZmVyZW5jZXMgc2V0dGluZ3MKICAgICAgICBteSBAUHJlZmVyZW5jZXNPbmx5ID0gJFNlbGYtPl9FbGVtZW50KAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIENvbmZpZ3MgICAgICAgICA9PiAkQ29uZmlnLAogICAgICAgICAgICBQcmVmZXJlbmNlc09ubHkgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggIUBQcmVmZXJlbmNlc09ubHkgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHByZWZlcmVuY2VzIGZvciAlcyEnLCAkTmFtZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciBwcmVmZXJlbmNlcwogICAgICAgIGZvciBteSAkUGFyYW0gKEBQcmVmZXJlbmNlc09ubHkpIHsKCiAgICAgICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW0tPntOYW1lfSApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcnVudGltZSB2YXJzCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPnsgJFBhcmFtLT57TmFtZX0gfSA9ICRWYWx1ZTsKCiAgICAgICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsaXZlciBuZXcgY29udGVudCBwYWdlCiAgICAgICAgbXkgJUVsZW1lbnRSZWxvYWQgPSAkU2VsZi0+X0VsZW1lbnQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIENvbmZpZ3MgPT4gJENvbmZpZywKICAgICAgICAgICAgQUpBWCAgICA9PiAxCiAgICAgICAgKTsKICAgICAgICBpZiAoICElRWxlbWVudFJlbG9hZCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBlbGVtZW50IGRhdGEgb2YgJXMhJywgJE5hbWUgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkeyAkRWxlbWVudFJlbG9hZHtDb250ZW50fSB9LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgdXBkYXRlIHNldHRpbmdzCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnVXBkYXRlU2V0dGluZ3MnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSBAQmFja2VuZHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnQmFja2VuZCcgKTsKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXskQ29uZmlnfSApIHsKICAgICAgICAgICAgbXkgJEFjdGl2ZSA9IDA7CiAgICAgICAgICAgIEJBQ0tFTkQ6CiAgICAgICAgICAgIGZvciBteSAkQmFja2VuZCAoQEJhY2tlbmRzKSB7CiAgICAgICAgICAgICAgICBuZXh0IEJBQ0tFTkQgaWYgJEJhY2tlbmQgbmUgJE5hbWU7CiAgICAgICAgICAgICAgICAkQWN0aXZlID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgQkFDS0VORDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBNYW5kYXRvcnkgd2lkZ2V0cyBjYW4gbm90IGJlIHJlbW92ZWQuCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+eyROYW1lfS0+e01hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICAgICAkQWN0aXZlID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEtleSA9ICRVc2VyU2V0dGluZ3NLZXkgLiAkTmFtZTsKCiAgICAgICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQWN0aXZlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJEFjdGl2ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAgICAgaWYgKCAkU2VsZi0+e0N1c3RvbWVySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJJRD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJFNlbGYtPntDdXN0b21lcklEfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJVc2VySUQ9IiAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1VwZGF0ZVBvc2l0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgQEJhY2tlbmRzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0JhY2tlbmQnICk7CgogICAgICAgICMgZ2V0IG5ldyBvcmRlcgogICAgICAgIG15ICRLZXkgID0gJFVzZXJTZXR0aW5nc0tleSAuICdQb3NpdGlvbic7CiAgICAgICAgbXkgJERhdGEgPSAnJzsKICAgICAgICBmb3IgbXkgJEJhY2tlbmQgKEBCYWNrZW5kcykgewogICAgICAgICAgICAkQmFja2VuZCA9fiBzeyBcQSBEYXNoYm9hcmQgKC4rPykgLWJveCBceiB9eyQxfWd4bXM7CiAgICAgICAgICAgICREYXRhIC49ICRCYWNrZW5kIC4gJzsnOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJERhdGEsCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSApIHsKICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICREYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHN1Y2Nlc3NmdWwgcmVzcG9uc2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcxJywKICAgICAgICApOwogICAgfQoKICAgICMgZGVsaXZlciBlbGVtZW50CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRWxlbWVudCcgKSB7CgogICAgICAgIG15ICROYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICk7CgogICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gZmlsdGVycyBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICAgICAgbXkgJUdldENvbHVtbkZpbHRlcjsKICAgICAgICBteSAlR2V0Q29sdW1uRmlsdGVyU2VsZWN0OwoKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgIHF3KE93bmVyIFJlc3BvbnNpYmxlIFN0YXRlIFF1ZXVlIFByaW9yaXR5IFR5cGUgTG9jayBTZXJ2aWNlIFNMQSBDdXN0b21lcklEIEN1c3RvbWVyVXNlcklEKQogICAgICAgICAgICBxdyhPd25lciBSZXNwb25zaWJsZSBTdGF0ZSBRdWV1ZSBQcmlvcml0eSBUeXBlIExvY2sgU2VydmljZSBTTEEgQ3VzdG9tZXJJRCBDdXN0b21lclVzZXJJRCBDbGFzcyBDdXJEZXBsU3RhdGUgQ3VySW5jaVN0YXRlKQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lIC4gJE5hbWUgKQogICAgICAgICAgICAgICAgfHwgJyc7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CgogICAgICAgICAgICBpZiAoICRDb2x1bW5OYW1lIGVxICdDdXN0b21lcklEJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gfSwgICAgICAgICAgICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnsgJENvbHVtbk5hbWUgLiAnUmF3JyB9IH0sICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW5OYW1lIGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRDb2x1bW5GaWx0ZXJ7Q3VzdG9tZXJVc2VyTG9naW59IH0sICAgICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcntDdXN0b21lclVzZXJMb2dpblJhd30gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICROYW1lIH0gPSAkRmlsdGVyVmFsdWU7CiAgICAgICAgICAgICRHZXRDb2x1bW5GaWx0ZXJTZWxlY3R7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMSwKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgICAgICAgICBPYmplY3RUeXBlID0+IFsnVGlja2V0JywgJ0lUU01Db25maWdJdGVtJ10sCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgKTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgIFBhcmFtID0+ICdDb2x1bW5GaWx0ZXJEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICROYW1lCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKCiAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICAgICAgRXF1YWxzID0+ICRGaWx0ZXJWYWx1ZSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJE5hbWUgfSA9ICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgJEdldENvbHVtbkZpbHRlclNlbGVjdHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU29ydEJ5ICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICk7CiAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKTsKCiAgICAgICAgbXkgJUVsZW1lbnQgPSAkU2VsZi0+X0VsZW1lbnQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ29uZmlncyAgICAgICAgICAgICAgID0+ICRDb25maWcsCiAgICAgICAgICAgIEFKQVggICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgICAgICAgICAgPT4gXCVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgIEdldENvbHVtbkZpbHRlciAgICAgICA9PiBcJUdldENvbHVtbkZpbHRlciwKICAgICAgICAgICAgR2V0Q29sdW1uRmlsdGVyU2VsZWN0ID0+IFwlR2V0Q29sdW1uRmlsdGVyU2VsZWN0LAogICAgICAgICk7CgogICAgICAgIGlmICggISVFbGVtZW50ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDYW5cJ3QgZ2V0IGVsZW1lbnQgZGF0YSBvZiAlcyEnLCAkTmFtZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRFbGVtZW50e0NvbnRlbnR9IH0sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWxpdmVyIGVsZW1lbnQKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApOwogICAgICAgIG15ICgkTmFtZSkgICAgICAgICA9ICRFbGVtZW50Q2hhbmdlZCA9fiBteyAoIFxkezR9IC0gLio/ICkgXHogfWd4bXM7CiAgICAgICAgbXkgJENvbHVtbiAgICAgICAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgICAgICRDb2x1bW4gPX4gc3sgXEEgQ29sdW1uRmlsdGVyIH17fWd4bXM7CiAgICAgICAgJENvbHVtbiA9fiBzeyAkTmFtZSB9e31neG1zOwoKICAgICAgICBteSAkRmlsdGVyQ29udGVudCA9ICRTZWxmLT5fRWxlbWVudCgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIEZpbHRlckNvbnRlbnRPbmx5ID0+IDEsCiAgICAgICAgICAgIEZpbHRlckNvbHVtbiAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgIEVsZW1lbnRDaGFuZ2VkICAgID0+ICRFbGVtZW50Q2hhbmdlZCwKICAgICAgICAgICAgQ29uZmlncyAgICAgICAgICAgPT4gJENvbmZpZywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICROYW1lICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsdGVyQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHF1ZXVlIHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICBteSAlQ29udGVudEJsb2NrRGF0YTsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJENvbnRlbnRCbG9ja0RhdGF7Q3VzdG9tZXJJRH0gPSAkU2VsZi0+e0N1c3RvbWVySUR9OwoKICAgICAgICAjIEgxIHRpdGxlCiAgICAgICAgJENvbnRlbnRCbG9ja0RhdGF7Q3VzdG9tZXJJRFRpdGxlfSA9ICRTZWxmLT57Q3VzdG9tZXJJRH07CgogICAgICAgIG15ICVDdXN0b21lckNvbXBhbnlEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlHZXQoCiAgICAgICAgICAgIEN1c3RvbWVySUQgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRDdXN0b21lckNvbXBhbnlEYXRhe0N1c3RvbWVyQ29tcGFueU5hbWV9ICkgewogICAgICAgICAgICAkQ29udGVudEJsb2NrRGF0YXtDdXN0b21lcklEVGl0bGV9ID0gIiRDdXN0b21lckNvbXBhbnlEYXRhe0N1c3RvbWVyQ29tcGFueU5hbWV9ICgkU2VsZi0+e0N1c3RvbWVySUR9KSI7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXInICkgewoKICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAkQ29udGVudEJsb2NrRGF0YXtDdXN0b21lclVzZXJJRH0gPSAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfTsKCiAgICAgICAgIyBIMSB0aXRsZQogICAgICAgICRDb250ZW50QmxvY2tEYXRhe0N1c3RvbWVyVXNlcklEVGl0bGV9ID0gIlwiJEN1c3RvbWVyVXNlckRhdGF7VXNlckZ1bGxuYW1lfVwiIDwkQ3VzdG9tZXJVc2VyRGF0YXtVc2VyRW1haWx9PiI7CgogICAgfQoKICAgICMgc2hvdyBkYXNoYm9hcmQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgIERhdGEgPT4gXCVDb250ZW50QmxvY2tEYXRhLAogICAgKTsKCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGdldCBzaG93biBiYWNrZW5kcwogICAgbXkgJUJhY2tlbmRzOwogICAgQkFDS0VORDoKICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAleyRDb25maWd9ICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9LT57R3JvdXB9ICkgewogICAgICAgICAgICBteSAkUGVybWlzc2lvbk9LID0gMDsKICAgICAgICAgICAgbXkgQEdyb3VwcyAgICAgICA9IHNwbGl0IC87LywgJENvbmZpZy0+eyROYW1lfS0+e0dyb3VwfTsKICAgICAgICAgICAgR1JPVVA6CiAgICAgICAgICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKICAgICAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAncm8nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uT0sgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dCBCQUNLRU5EIGlmICEkUGVybWlzc2lvbk9LOwogICAgICAgIH0KCiAgICAgICAgbXkgJEtleSA9ICRVc2VyU2V0dGluZ3NLZXkgLiAkTmFtZTsKICAgICAgICBpZiAoIGRlZmluZWQgJFNlbGYtPntTZXNzaW9ufXskS2V5fSApIHsKICAgICAgICAgICAgJEJhY2tlbmRzeyROYW1lfSA9ICRTZWxmLT57U2Vzc2lvbn17JEtleX07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQmFja2VuZHN7JE5hbWV9ID0gJENvbmZpZy0+eyROYW1lfS0+e0RlZmF1bHR9OwogICAgICAgIH0KCiAgICAgICAgIyBBbHdheXMgc2hvdyB3aWRnZXRzIHdpdGggbWFuZGF0b3J5IGZsYWcuCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgJEJhY2tlbmRzeyROYW1lfSA9ICRDb25maWctPnskTmFtZX0tPntNYW5kYXRvcnl9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBvcmRlciBvZiBwbHVnaW5zCiAgICBteSAkS2V5ID0gJFVzZXJTZXR0aW5nc0tleSAuICdQb3NpdGlvbic7CiAgICBteSBAT3JkZXI7CiAgICBteSAkVmFsdWUgPSAkU2VsZi0+e1Nlc3Npb259eyRLZXl9OwoKICAgIGlmICgkVmFsdWUpIHsKICAgICAgICBAT3JkZXIgPSBzcGxpdCAvOy8sICRWYWx1ZTsKCiAgICAgICAgIyBvbmx5IHVzZSBhY3RpdmUgYmFja2VuZHMKICAgICAgICBAT3JkZXIgPSBncmVwIHsgJENvbmZpZy0+eyRffSB9IEBPcmRlcjsKICAgIH0KICAgIGlmICggIUBPcmRlciApIHsKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJUJhY2tlbmRzICkgewogICAgICAgICAgICBwdXNoIEBPcmRlciwgJE5hbWU7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIG5vdCBvcmRlcmVkIHBsdWdpbnMgKGUuIGcuIG5ldyBhY3RpdmUpCiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVCYWNrZW5kcyApIHsKICAgICAgICBteSAkSW5jbHVkZWQgPSAwOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRJdGVtIChAT3JkZXIpIHsKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRJdGVtIG5lICROYW1lOwogICAgICAgICAgICAkSW5jbHVkZWQgPSAxOwogICAgICAgIH0KICAgICAgICBuZXh0IE5BTUUgaWYgJEluY2x1ZGVkOwogICAgICAgIHB1c2ggQE9yZGVyLCAkTmFtZTsKICAgIH0KCiAgICAjIGdldCBkZWZhdWx0IGNvbHVtbnMKICAgIG15ICRDb2x1bW5zID0gJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IHx8ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdE92ZXJ2aWV3Q29sdW1ucycpIHx8IHt9OwoKICAgICMgdHJ5IGV2ZXJ5IGJhY2tlbmQgdG8gbG9hZCBhbmQgZXhlY3V0ZSBpdAogICAgbXkgQENvbnRhaW5lck5hbWVzOwogICAgTkFNRToKICAgIGZvciBteSAkTmFtZSAoQE9yZGVyKSB7CgogICAgICAgICMgZ2V0IGVsZW1lbnQgZGF0YQogICAgICAgIG15ICVFbGVtZW50ID0gJFNlbGYtPl9FbGVtZW50KAogICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ29uZmlncyAgPT4gJENvbmZpZywKICAgICAgICAgICAgQmFja2VuZHMgPT4gXCVCYWNrZW5kcywKICAgICAgICApOwogICAgICAgIG5leHQgTkFNRSBpZiAhJUVsZW1lbnQ7CgogICAgICAgICMgTmFtZUZvcm0gKHRvIHN1cHBvcnQgSUUsIGlzIG5vdCB3b3JraW5nIHdpdGggIi0iIGluIGZvcm0gbmFtZXMpCiAgICAgICAgbXkgJE5hbWVGb3JtID0gJE5hbWU7CiAgICAgICAgJE5hbWVGb3JtID1+IHN7LX17fWc7CgogICAgICAgIG15ICVKU0RhdGEgPSAoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICBOYW1lRm9ybSA9PiAkTmFtZUZvcm0sCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29udGFpbmVyTmFtZXMsIFwlSlNEYXRhOwoKICAgICAgICAjIHJlbmRlcmluZwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30sCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBOYW1lRm9ybSAgICAgICA9PiAkTmFtZUZvcm0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICA9PiAkeyAkRWxlbWVudHtDb250ZW50fSB9LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgcmVmcmVzaCBsaW5rIGlmIHJlZnJlc2hpbmcgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCAkRWxlbWVudHtDb25maWd9LT57Q2FuUmVmcmVzaH0gKSB7CgogICAgICAgICAgICBteSAkTmFtZUhUTUwgPSAkTmFtZTsKICAgICAgICAgICAgJE5hbWVIVE1MID1+IHN7LX17X314bXNnOwoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NhblJlZnJlc2gtJyAuICROYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVIVE1MID0+ICROYW1lSFRNTCwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRWxlbWVudHtDb25maWd9LT57QmxvY2t9IC4gJ1JlZnJlc2gnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVIVE1MID0+ICROYW1lSFRNTCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERvIG5vdCBzaG93IHRoZSBkZWxldGUgbGluayBpZiB0aGUgd2lkZ2V0IGlzIG1hbmRhdG9yeS4KICAgICAgICBpZiAoICEkQ29uZmlnLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRWxlbWVudHtDb25maWd9LT57QmxvY2t9IC4gJ1JlbW92ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkRWxlbWVudHtDb25maWd9IH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0gfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBjb2x1bW4gaXMgbm90IGEgZGVmYXVsdCBjb2x1bW4sIGFkZCBpdCBmb3IgdHJhbnNsYXRpb24KICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQga2V5cyAleyAkRWxlbWVudHtDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH0gKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJENvbHVtbnMtPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICRDb2x1bW5zLT57JENvbHVtbn0gPSAkRWxlbWVudHtDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JENvbHVtbn07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2hvdyBzZXR0aW5ncyBsaW5rIGlmIHByZWZlcmVuY2VzIGFyZSBhdmFpbGFibGUKICAgICAgICBpZiAoICRFbGVtZW50e1ByZWZlcmVuY2VzfSAmJiBAeyAkRWxlbWVudHtQcmVmZXJlbmNlc30gfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtID0+ICROYW1lRm9ybSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIFBBUkFNOgogICAgICAgICAgICBmb3IgbXkgJFBhcmFtICggQHsgJEVsZW1lbnR7UHJlZmVyZW5jZXN9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBzcGVjaWFsIHBhcmFtZXRlcnMgYXJlIGFkZGVkLCB3aGljaCBkbyBub3QgaGF2ZSBhIHR0IGJsb2NrLAogICAgICAgICAgICAgICAgIyBiZWNhdXNlIHRoZSBkaXNwbGF5ZWQgZmllbGRzIGFyZSBhZGRlZCB3aXRoIHRoZSBvdXRwdXQgZmlsdGVyLAogICAgICAgICAgICAgICAgIyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgYW55IGJsb2NrIGhlcmUKICAgICAgICAgICAgICAgIG5leHQgUEFSQU0gaWYgISRQYXJhbS0+e0Jsb2NrfTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXNJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm0gPT4gJE5hbWVGb3JtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW0tPntCbG9ja30gZXEgJ09wdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtLT57T3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkUGFyYW0tPntEYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbS0+e1NlbGVjdGVkSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkUGFyYW0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXNJdGVtJyAuICRQYXJhbS0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAleyRQYXJhbX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+ICRTZWxmLT57U2Vzc2lvbn17ICRQYXJhbS0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVQcmVmID0+ICRQYXJhbS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm0gPT4gJE5hbWVGb3JtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG1vcmUgbGluawogICAgICAgIGlmICggJEVsZW1lbnR7Q29uZmlnfS0+e0xpbmt9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEVsZW1lbnR7Q29uZmlnfS0+e0Jsb2NrfSAuICdNb3JlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7ICRFbGVtZW50e0NvbmZpZ30gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0NvbnRhaW5lck5hbWVzJywKICAgICAgICBWYWx1ZSA9PiBcQENvbnRhaW5lck5hbWVzLAogICAgKTsKCiAgICAjIGJ1aWxkIG1haW4gbWVudQogICAgbXkgJE1haW5NZW51Q29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCRNYWluTWVudUNvbmZpZ0tleSk7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRNYWluTWVudUNvbmZpZykgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ01haW5NZW51JyApOwoKICAgICAgICBmb3IgbXkgJE1haW5NZW51SXRlbSAoIHNvcnQga2V5cyAleyRNYWluTWVudUNvbmZpZ30gKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ01haW5NZW51SXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkTWFpbk1lbnVDb25maWctPnskTWFpbk1lbnVJdGVtfSB9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCB0cmFuc2xhdGlvbnMgZm9yIHRoZSBhbGxvY2F0aW9uIGxpc3RzIGZvciByZWd1bGFyIGNvbHVtbnMKICAgIGlmICggJENvbHVtbnMgJiYgSXNIYXNoUmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJXskQ29sdW1uc30gKSB7CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdTZXJ2aWNlIFRpbWUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdGaXJzdCBSZXNwb25zZSBUaW1lJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdFc2NhbGF0aW9uU29sdXRpb25UaW1lJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnU29sdXRpb24gVGltZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblVwZGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdVcGRhdGUgVGltZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnUGVuZGluZ1RpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdQZW5kaW5nIHRpbGwnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1c3RvbWVyQ29tcGFueU5hbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBOYW1lJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXN0b21lcklEJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VzdG9tZXIgSUQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1c3RvbWVyTmFtZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1c3RvbWVyIFVzZXIgTmFtZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VzdG9tZXJVc2VySUQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBVc2VyIElEJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVHJhbnNsYXRlZFdvcmQpLAogICAgICAgICAgICApOwoKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAgICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydUaWNrZXQnXSwKICAgICk7CgogICAgaWYgKCAkQ29sdW1uc0R5bmFtaWNGaWVsZCAmJiBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnNEeW5hbWljRmllbGQpICkgewoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHNvcnQgQHskQ29sdW1uc0R5bmFtaWNGaWVsZH0gKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZDsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwp9CgpzdWIgX0VsZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTmFtZSAgICAgICAgICAgICAgICAgID0gJFBhcmFte05hbWV9OwogICAgbXkgJENvbmZpZ3MgICAgICAgICAgICAgICA9ICRQYXJhbXtDb25maWdzfTsKICAgIG15ICRCYWNrZW5kcyAgICAgICAgICAgICAgPSAkUGFyYW17QmFja2VuZHN9OwogICAgbXkgJFNvcnRCeSAgICAgICAgICAgICAgICA9ICRQYXJhbXtTb3J0Qnl9OwogICAgbXkgJE9yZGVyQnkgICAgICAgICAgICAgICA9ICRQYXJhbXtPcmRlckJ5fTsKICAgIG15ICRDb2x1bW5GaWx0ZXIgICAgICAgICAgPSAkUGFyYW17Q29sdW1uRmlsdGVyfTsKICAgIG15ICRHZXRDb2x1bW5GaWx0ZXIgICAgICAgPSAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfTsKICAgIG15ICRHZXRDb2x1bW5GaWx0ZXJTZWxlY3QgPSAkUGFyYW17R2V0Q29sdW1uRmlsdGVyU2VsZWN0fTsKCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICBpZiAoICRDb25maWdzLT57JE5hbWV9LT57R3JvdXB9ICkgewogICAgICAgIG15ICRQZXJtaXNzaW9uT0sgPSAwOwogICAgICAgIG15IEBHcm91cHMgICAgICAgPSBzcGxpdCAvOy8sICRDb25maWdzLT57JE5hbWV9LT57R3JvdXB9OwogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgJFBlcm1pc3Npb25PSyA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBpZiAhJFBlcm1pc3Npb25PSzsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZHMKICAgIG15ICRNb2R1bGUgPSAkQ29uZmlncy0+eyROYW1lfS0+e01vZHVsZX07CgogICAgcmV0dXJuIHVubGVzcyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpOwoKICAgIG15ICRPYmplY3QgPSAkTW9kdWxlLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgID0+ICRDb25maWdzLT57JE5hbWV9LAogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICBDdXN0b21lcklEICAgICAgICAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBDb2x1bW5GaWx0ZXIgICAgICAgICAgPT4gJENvbHVtbkZpbHRlciwKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gJEdldENvbHVtbkZpbHRlciwKICAgICAgICBHZXRDb2x1bW5GaWx0ZXJTZWxlY3QgPT4gJEdldENvbHVtbkZpbHRlclNlbGVjdCwKICAgICk7CgogICAgIyBnZXQgbW9kdWxlIGNvbmZpZwogICAgbXkgJUNvbmZpZyA9ICRPYmplY3QtPkNvbmZpZygpOwoKICAgICMgUGVyZm9ybSB0aGUgYWN0dWFsIGRhdGEgZmV0Y2hpbmcgYW5kIGNvbXB1dGF0aW9uIG9uIHRoZSBtaXJyb3IgREIsIGlmIGNvbmZpZ3VyZWQKICAgIGxvY2FsICRLZXJuZWw6OlN5c3RlbTo6REI6OlVzZU1pcnJvckRCID0gMTsKCiAgICAjIGdldCBtb2R1bGUgcHJlZmVyZW5jZXMKICAgIG15IEBQcmVmZXJlbmNlcyA9ICRPYmplY3QtPlByZWZlcmVuY2VzKCk7CgogICAgcmV0dXJuIEBQcmVmZXJlbmNlcyBpZiAkUGFyYW17UHJlZmVyZW5jZXNPbmx5fTsKCiAgICAjIFBlcmZvcm0gdGhlIGFjdHVhbCBkYXRhIGZldGNoaW5nIGFuZCBjb21wdXRhdGlvbiBvbiB0aGUgbWlycm9yIERCLCBpZiBjb25maWd1cmVkCiAgICBsb2NhbCAkS2VybmVsOjpTeXN0ZW06OkRCOjpVc2VNaXJyb3JEQiA9IDE7CgogICAgaWYgKCAkUGFyYW17RmlsdGVyQ29udGVudE9ubHl9ICkgewogICAgICAgIG15ICRGaWx0ZXJDb250ZW50ID0gJE9iamVjdC0+RmlsdGVyQ29udGVudCgKICAgICAgICAgICAgRmlsdGVyQ29sdW1uICAgPT4gJFBhcmFte0ZpbHRlckNvbHVtbn0sCiAgICAgICAgICAgIENvbmZpZyAgICAgICAgID0+ICRDb25maWdzLT57JE5hbWV9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRGaWx0ZXJDb250ZW50OwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBhZGQgYmFja2VuZCB0byBzZXR0aW5ncyBzZWxlY3Rpb24KICAgIGlmICgkQmFja2VuZHMpIHsKICAgICAgICBteSAkQ2hlY2tlZCA9ICcnOwogICAgICAgIGlmICggJEJhY2tlbmRzLT57JE5hbWV9IHx8ICRDb25maWdzLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgJENoZWNrZWQgPSAnY2hlY2tlZCAnOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSB3aWRnZXQgaXMgZm9yY2libHkgZGlzcGxheWVkLgogICAgICAgICMgTWFuZGF0b3J5IHdpZGdldHMgYXJlIGRpc3BsYXllZCBhcyByZWFkLW9ubHkuCiAgICAgICAgbXkgJFJlYWRvbmx5ID0gJyc7CiAgICAgICAgaWYgKCAkQ29uZmlncy0+eyROYW1lfS0+e01hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICRSZWFkb25seSA9ICdkaXNhYmxlZCc7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudFNldHRpbmdzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlQ29uZmlnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBDaGVja2VkICA9PiAkQ2hlY2tlZCwKICAgICAgICAgICAgICAgIFJlYWRvbmx5ID0+ICRSZWFkb25seSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gaWYgISRCYWNrZW5kcy0+eyROYW1lfTsKICAgIH0KCiAgICAjIGNoZWNrIGJhY2tlbmRzIGNhY2hlIChodG1sIHBhZ2UgY2FjaGUpCiAgICBteSAkQ29udGVudDsKICAgIG15ICRDYWNoZUtleSAgICA9ICRDb25maWd7Q2FjaGVLZXl9OwogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgaWYgKCAhJENhY2hlS2V5ICkgewogICAgICAgICRDYWNoZUtleSA9ICROYW1lIC4gJy0nCiAgICAgICAgICAgIC4gKCAkU2VsZi0+e0N1c3RvbWVySUR9ICAgICB8fCAnJyApIC4gJy0nCiAgICAgICAgICAgIC4gKCAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSB8fCAnJyApIC4gJy0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX07CiAgICB9CiAgICBpZiAoICRDb25maWd7Q2FjaGVUVEx9ICkgewogICAgICAgICRDb250ZW50ID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgICAgICk7CiAgICB9CgogICAgIyBleGVjdXRlIGJhY2tlbmRzCiAgICBteSAkQ2FjaGVVc2VkID0gMTsKICAgIGlmICggIWRlZmluZWQgJENvbnRlbnQgfHwgJFNvcnRCeSApIHsKICAgICAgICAkQ2FjaGVVc2VkID0gMDsKICAgICAgICAkQ29udGVudCAgID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICBBSkFYICAgICAgICAgICA9PiAkUGFyYW17QUpBWH0sCiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0gICAgIHx8ICcnLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSB8fCAnJywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgY29udGVudCBzaG91bGQgYmUgc2hvd24KICAgIHJldHVybiBpZiAhJENvbnRlbnQ7CgogICAgIyBzZXQgY2FjaGUgKGh0bWwgcGFnZSBjYWNoZSkKICAgIGlmICggISRDYWNoZVVzZWQgJiYgJENvbmZpZ3tDYWNoZVRUTH0gKSB7CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICdEYXNoYm9hcmQnLAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgIFZhbHVlID0+ICRDb250ZW50LAogICAgICAgICAgICBUVEwgICA9PiAkQ29uZmlne0NhY2hlVFRMfSAqIDYwLAogICAgICAgICk7CiAgICB9CgogICAgIyByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gKAogICAgICAgIENvbnRlbnQgICAgID0+IFwkQ29udGVudCwKICAgICAgICBDb25maWcgICAgICA9PiBcJUNvbmZpZywKICAgICAgICBQcmVmZXJlbmNlcyA9PiBcQFByZWZlcmVuY2VzLAogICAgKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminDynamicField.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSAyZDgxYzQ0MzBhYTg3OWJhODU5YzZlMzRlMmMxMTNhMTdhMmQ3NzM0IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYWluIikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMgTWFuYWdlbWVudCIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZShEYXRhLkFjdGlvbikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0R5bmFtaWMgRmllbGRzIE1hbmFnZW1lbnQnKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSIgWyUgRGF0YS5JbmNsdWRlSW52YWxpZENoZWNrZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2x1ZGVJbnZhbGlkIj5bJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyRHluYW1pY0ZpZWxkcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIER5bmFtaWMgRmllbGRzIikgfCBodG1sICVdPC9sYWJlbD48L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckR5bmFtaWNGaWVsZHMiIGNsYXNzPSJGaWx0ZXJCb3giIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoIkp1c3Qgc3RhcnQgdHlwaW5nIHRvIGZpbHRlci4uLiIpIHwgaHRtbCAlXSIgbmFtZT0iRmlsdGVyRHluYW1pY0ZpZWxkcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRPYmplY3RUeXBlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZE9iamVjdFN0cmcgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZpZWxkIGJ5IG9iamVjdCB0eXBlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkT2JqZWN0VHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZEZpZWxkVHlwZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGRUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZmllbGQgYnkgZmllbGQgdHlwZSIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkR5bmFtaWNGaWVsZEZpZWxkVHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZE5hbWVzcGFjZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc3BhY2VTdHJnICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkZpbHRlciBmaWVsZCBieSBuYW1lc3BhY2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGROYW1lc3BhY2UiKSAlXQogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbkFkZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+PGxhYmVsIGZvcj0iWyUgRGF0YS5TZWxlY3ROYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCBEYXRhLk9iamVjdFR5cGVOYW1lICkgfCBodG1sICVdPC9sYWJlbD48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFkZER5bmFtaWNGaWVsZFN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkFkZCBuZXcgZmllbGQgZm9yIG9iamVjdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2xpPgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5TdWJhY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGV4dCkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcm9ja2V0Ij48L2k+WyUgVHJhbnNsYXRlKERhdGEuVGV4dCkgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEiKSAlXQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudApbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uQWRkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSGludCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkhpbnQiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBhZGQgYSBuZXcgZmllbGQsIHNlbGVjdCB0aGUgZmllbGQgdHlwZSBmcm9tIG9uZSBvZiB0aGUgb2JqZWN0J3MgbGlzdCwgdGhlIG9iamVjdCBkZWZpbmVzIHRoZSBib3VuZGFyeSBvZiB0aGUgZmllbGQgYW5kIGl0IGNhbid0IGJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGZpZWxkIGNyZWF0aW9uLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiMgVE9ETzogQWRkIHRoZSBhY3R1YWxseSBuZXcgZmllbGRzCiMgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiMgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgojICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk5ldyBEeW5hbWljIEZpZWxkcyIpIHwgaHRtbCAlXTwvaDI+CiMgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgojICAgICAgICAgICAgICAgICAgICA8cD4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV291bGQgeW91IGxpa2UgdG8gYmVuZWZpdCBmcm9tIGFkZGl0aW9uYWwgZHluYW1pYyBmaWVsZCB0eXBlcz8gWW91IGhhdmUgZnVsbCBhY2Nlc3MgdG8gdGhlIGZvbGxvd2luZyBmaWVsZCB0eXBlczoiKSB8IGh0bWwgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9wPgojICAgICAgICAgICAgICAgICAgICA8ZGw+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCdEYXRhYmFzZScpIHwgaHRtbCAlXTwvZHQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+WyUgVHJhbnNsYXRlKCdVc2UgZXh0ZXJuYWwgZGF0YWJhc2VzIGFzIGNvbmZpZ3VyYWJsZSBkYXRhIHNvdXJjZXMgZm9yIHRoaXMgZHluYW1pYyBmaWVsZC4nKSB8IGh0bWwgJV08L2RkPgojCiMgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCdXZWIgc2VydmljZScpIHwgaHRtbCAlXTwvZHQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+WyUgVHJhbnNsYXRlKCdFeHRlcm5hbCB3ZWIgc2VydmljZXMgY2FuIGJlIGNvbmZpZ3VyZWQgYXMgZGF0YSBzb3VyY2VzIGZvciB0aGlzIGR5bmFtaWMgZmllbGQuJykgfCBodG1sICVdPC9kZD4KIwojICAgICAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgnQ29udGFjdCB3aXRoIGRhdGEnKSB8IGh0bWwgJV08L2R0PgojICAgICAgICAgICAgICAgICAgICAgICAgPGRkPlslIFRyYW5zbGF0ZSgnVGhpcyBmZWF0dXJlIGFsbG93cyB0byBhZGQgKG11bHRpcGxlKSBjb250YWN0cyB3aXRoIGRhdGEgdG8gdGlja2V0cy4nKSB8IGh0bWwgJV08L2RkPgojICAgICAgICAgICAgICAgICAgICA8L2RsPgojICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSGludCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyBMaXN0IikgfCBodG1sICVdPC9oMj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRleHRTZXR0aW5ncyIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkNvbnRleHRGdW5jdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ29udGV4dFNldHRpbmdzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlNob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIiIGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWdlbnRQcmVmZXJlbmNlcyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJVcGRhdGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iR3JvdXAiIHZhbHVlPSJbJSBEYXRhLkdyb3VwIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSZWRpcmVjdFVSTCIgdmFsdWU9IlslIERhdGEuUmVxdWVzdGVkVVJMIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlByZWZlcmVuY2VzS2V5IHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIGZpZWxkcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRleHRTZXR0aW5ncyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRHluYW1pY0ZpZWxkc1BhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlBhZ2luYXRpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VOYXZCYXIiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0TG9uZyAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJEeW5hbWljRmllbGRzQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgaWQ9IkR5bmFtaWNGaWVsZHNUYWJsZSIgc3VtbWFyeT0iTGlzdCBvZiBhbGwgcmVnaXN0ZXJlZCBEeW5hbWljIEZpZWxkcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkxhYmVsIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk9yZGVyIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiT2JqZWN0IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvcHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uWyUgSUYgRGF0YS5WYWxpZElEICE9IDElXSBJbnZhbGlkWyUgRU5EICVdIiBpZD0iRHluYW1pY0ZpZWxkSURfWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBEYXRhLkNvbmZpZ0RpYWxvZyB8IHVyaSAlXTtTdWJhY3Rpb249Q2hhbmdlO09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgdXJpICVdO0ZpZWxkVHlwZT1bJSBEYXRhLkZpZWxkVHlwZSB8IHVyaSAlXTtJRD1bJSBEYXRhLklEIHwgdXJpICVdWyUgRGF0YS5GaWx0ZXJTdHJnICVdIiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTmFtZSAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5GaWVsZE9yZGVyICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuRmllbGRUeXBlTmFtZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZU5hbWUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNsb25lTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkR5bmFtaWNGaWVsZENsb25lIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRGF0YS5Db25maWdEaWFsb2cgJV07U3ViYWN0aW9uPUFkZDtDbG9uZUZpZWxkSUQ9WyUgRGF0YS5JRCB8IHVyaSAlXVslIERhdGEuRmlsdGVyU3RyZyAlXTtGaWVsZFR5cGU9WyUgRGF0YS5GaWVsZFR5cGUgfCB1cmkgJV07T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGVOYW1lIHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb3B5IHRoaXMgZmllbGQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29weSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsb25lTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWxldGVMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iVHJhc2hDYW4gRHluYW1pY0ZpZWxkRGVsZXRlIiBocmVmPSIjIiBkYXRhLXF1ZXJ5LXN0cmluZz0iQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkO1N1YmFjdGlvbj1EeW5hbWljRmllbGREZWxldGU7SUQ9WyUgRGF0YS5JRCB8IHVyaSAlXVslIERhdGEuRmlsdGVyU3RyZyAlXTtbJSBFbnYoIkNoYWxsZW5nZVRva2VuUGFyYW0iKSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGZpZWxkIikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGZpZWxkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRGVsZXRlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjciPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWF4RmllbGRPcmRlciIpICVdCiAgICAgICAgPGlucHV0IGlkPSJNYXhGaWVsZE9yZGVyIiB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1heEZpZWxkT3JkZXIiIHZhbHVlPSJbJSBEYXRhLk1heEZpZWxkT3JkZXIgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJNYXhGaWVsZE9yZGVyIikgJV0KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFpbiIpICVdCg==</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorageDB.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZURCLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGxvY2FsIGRhdGEgYmFzZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2VEQi5wbSx2IDEuMTEgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0Owp1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2hleCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREIKCj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZGF0YSBiYXNlIGJhY2tlbmQgLSBsb2NhbCwgT1RSUy1kYXRhIGJhc2UuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBBdHRhY2htZW50U3RvcmFnZURCIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2VEQicpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkSUQgPSAwOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgZm9yZWFjaCAocXcoQXR0RGlySUQgRGF0YVJlZikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgI2VuY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICRQYXJhbXtEYXRhUmVmfSApOwoKICAgICAgICAjb3ZlcndyaXRlIGV4aXN0aW5nIHZhbHVlIGluc3RlYWQgb2YgdXNpbmcgYW5vdGhlciBmaWxlc2l6ZSBvZiBtZW1vcnkuLi4KICAgICAgICAkeyAkUGFyYW17RGF0YVJlZn0gfSA9IGVuY29kZV9iYXNlNjQoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CiAgICB9CgogICAgI2RiIHF1b3RpbmcuLi4KICAgIGZvcmVhY2ggKHF3KCBBdHREaXJJRCkpIHsKICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgIH0KCiAgICAjYnVpbGQgc3FsLi4uCiAgICBteSAkU1FMID0gIiI7CiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT57QmFja2VuZH0tPnsnREI6OlR5cGUnfSA9fiAvb3JhY2xlLyApIHsKICAgICAgICAkU1FMID0gIklOU0VSVCBJTlRPIGF0dGFjaG1lbnRfc3RvcmFnZSAiIC4KICAgICAgICAgICAgIiAoYXR0YWNobWVudF9kaXJlY3RvcnlfaWQsIGRhdGEpICIgLgogICAgICAgICAgICAiIFZBTFVFUyAiIC4KICAgICAgICAgICAgIiAoICRQYXJhbXtBdHREaXJJRH0sIEVNUFRZX0NMT0IoKSkiOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTUUwgPSAiSU5TRVJUIElOVE8gYXR0YWNobWVudF9zdG9yYWdlICIgLgogICAgICAgICAgICAiIChhdHRhY2htZW50X2RpcmVjdG9yeV9pZCwgZGF0YSkgIiAuCiAgICAgICAgICAgICIgVkFMVUVTICIgLgogICAgICAgICAgICAiICggJFBhcmFte0F0dERpcklEfSwgPykiOwogICAgfQoKICAgICNydW4gc3FsLi4uCiAgICBteSAkRG9SZXN1bHQgPSAwOwogICAgJERvUmVzdWx0ID0gJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAkU1FMLCBCaW5kID0+IFsgJFBhcmFte0RhdGFSZWZ9IF0sICAgICMgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBpZiAoJERvUmVzdWx0KSB7CgogICAgICAgICNyZXR1cm4gSUQuLi4KICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X3N0b3JhZ2UgV0hFUkUgIiAuCiAgICAgICAgICAgICAgICAiYXR0YWNobWVudF9kaXJlY3RvcnlfaWQgPSAkUGFyYW17QXR0RGlySUR9IiwKICAgICAgICApOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRJRCA9ICRSb3dbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiRmFpbGVkIHRvIGluc2VydCBhdHRhY2htZW50IGRhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQp9Cgo9aXRlbSBBdHRhY2htZW50R2V0KCkKCnJldHVybnMgYW4gZW50cnkgaW4gYXR0YWNobWVudF9zdG9yYWdlCgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudE9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJRCA9PiAxMjMsICMoc29tZSBhdHRhY2htZW50IHN0b3JhZ2UgaWQpCiAgICAgICAgIyAuLi5PUi4uLgogICAgICAgIEF0dERpcklEID0+IDEyMyAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpLAogICAgKTsKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhICA9ICgpOwogICAgbXkgJFdIRVJFID0gIiI7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICYmICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEIG9yIElEISIgKTsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggQXR0RGlySUQgSUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17QXR0RGlySUR9ICkgJiYgJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkID0gJFBhcmFte0F0dERpcklEfSI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGlkID0gJFBhcmFte0lEfSI7CiAgICB9CgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgaWYgKCAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMLCBFbmNvZGUgPT4gWyAwLCAwLCAxIF0gKSApIHsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgIG15IEBEYXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICBpZiAoQERhdGEpIHsKICAgICAgICBteSAkU1FMID0gIlNFTEVDVCBkYXRhIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFpbGVkIHRvIHByZXBhcmUgU1FMIGZvciBGZXRjaHJvd0FycmF5ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIFwlRGF0YTsKICAgICAgICB9CgogICAgICAgIG15IEBBdHRhY2hEYXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICAgICAgbXkgJEF0dGFjaERhdGFSZWYgPSBcJEF0dGFjaERhdGFbMF07CgogICAgICAgIGlmICggISRBdHRhY2hEYXRhUmVmICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFpbGVkIHRvIEZldGNocm93QXJyYXkhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgICAgIH0KCiAgICAgICAgI2RlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgICAgICBpZiAoICEkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICAgICAkeyRBdHRhY2hEYXRhUmVmfSA9IGRlY29kZV9iYXNlNjQoICR7JEF0dGFjaERhdGFSZWZ9ICk7CiAgICAgICAgfQoKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgSUQgICAgICAgPT4gJERhdGFbMF0sCiAgICAgICAgICAgIEF0dERpcklEID0+ICREYXRhWzFdLAoKICAgICAgICAgICAgRGF0YVJlZiA9PiAkQXR0YWNoRGF0YVJlZiwKICAgICAgICApOwoKICAgICAgICAkQXR0YWNoRGF0YVJlZiA9IHVuZGVmOwogICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygpCgpyZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBhdHRhY2htZW50IGluIHRoZSBzdG9yYWdlIGJhY2tlbmQgYW5kIHRoZSBtZDVzdW0uCgogICAgbXkgUmVhbFByb3BlcnRpZXMgPSBBdHRhY2htZW50U3RvcmFnZU9iamVjdC0+QXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAgSUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBzdG9yYWdlIGlkKQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlUmVhbFByb3BlcnRpZXM7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEISIgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAgfQoKICAgIG15ICREYXRhID0gJFNlbGYtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBteSAkUmVhbEZpbGVTaXplID0gMDsKICAgIG15ICRSZWFsTUQ1U3VtICAgPSAnJzsKCiAgICBpZiAoIGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSApIHsKICAgICAgICBteSAkQ29udGVudCA9ICR7ICREYXRhLT57RGF0YVJlZn0gfTsKICAgICAgICAkU2VsZi0+e0VuY29kZU9iamVjdH0tPkVuY29kZU91dHB1dCggXCRDb250ZW50ICk7CgogICAgICAgICRSZWFsRmlsZVNpemUgPSBieXRlczo6bGVuZ3RoKCRDb250ZW50KTsKICAgICAgICAkUmVhbE1ENVN1bSAgID0gbWQ1X2hleCgkQ29udGVudCk7CiAgICB9CgogICAgJFJlYWxQcm9wZXJ0aWVze1JlYWxGaWxlU2l6ZX0gPSAkUmVhbEZpbGVTaXplOwogICAgJFJlYWxQcm9wZXJ0aWVze1JlYWxNRDVTdW19ICAgPSAkUmVhbE1ENVN1bTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dA==</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorageFS.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZUZTLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGZpbGUgc3lzdGVtCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUtaXQoZG90KWRlCiMgLS0KIyAkSWQ6IEF0dGFjaG1lbnRTdG9yYWdlRlMucG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NDsKdXNlIEZpbGU6OnN0YXQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlRlMKCj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZmlsZSBzeXN0ZW0gYmFja2VuZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIEF0dGFjaG1lbnRTdG9yYWdlRlMgb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQXR0YWNobWVudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkcmV0VmFsID0gMTsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGZvcmVhY2ggKHF3KEF0dERpcklEIERhdGFSZWYpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJF8hIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICNidWlsZCBhdHRhY2htZW50IGRhdGEgZmlsZSBwYXRoLi4uCiAgICAkcmV0VmFsID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0hvbWUnKSAuCiAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlRlM6OlN0b3JhZ2VEaXJlY3RvcnknKTsKCiAgICAjY2hlY2sgaWYgZGVzdGluYXRpb24gcGF0aCBleGlzdHMuLi4KICAgIGlmICggIS1kICRyZXRWYWwgKSB7CiAgICAgICAgaWYgKCAhRmlsZTo6UGF0aDo6bWtwYXRoKCBbJHJldFZhbF0sIDAsIDA3NzUgKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJBdHRhY2htZW50U3RvcmFnZUZTIHBhdGggZG9lcyBub3QgZXhpc3QgbmVpdGhlciBJIGNhbiBjcmVhdGUgaXQgKCRyZXRWYWwpOiAkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgYXR0YWNobWVudCBkYXRhIGZpbGUgcGF0aC4uLgogICAgJHJldFZhbCAuPSAiLyIgLiAkUGFyYW17QXR0RGlySUR9IC4gIi5kYXQiOwoKICAgICN3cml0ZSB0aGUgYXR0YWNobWVudCBkYXRhIGZpbGUuLi4KICAgIGlmICggb3BlbiggbXkgJERBVEEsICI+IiwgIiRyZXRWYWwiICkgKSB7CiAgICAgICAgYmlubW9kZSgkREFUQSk7CiAgICAgICAgcHJpbnQgJERBVEEgJHsgJFBhcmFte0RhdGFSZWZ9IH07CiAgICAgICAgY2xvc2UoJERBVEEpOwogICAgICAgIHJldHVybiAkcmV0VmFsOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4gTk9UIHdyaXRlIGZpbGUgKCRyZXRWYWwpOiAkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXQoKQoKcmV0dXJucyBhbiBlbnRyeSBpbiBhdHRhY2htZW50X3N0b3JhZ2UKCiAgICBteSAlRGF0YSA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEF0dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAgRmlsZVBhdGggPT4gJy9wYXRoL3RvL3RoZS9hdHRhY2htZW50L2ZpbGUuZGF0JywKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJURhdGEgICAgID0gKCk7CiAgICBteSAkRmlsZVBhdGggPSAnJzsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtGaWxlUGF0aH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgQXR0RGlySUQgb3IgRmlsZVBhdGghIiApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17RmlsZVBhdGh9ICkgJiYgJFBhcmFte0ZpbGVQYXRofSApIHsKICAgICAgICAkRmlsZVBhdGggPSAkUGFyYW17RmlsZVBhdGh9OwogICAgfQoKICAgICNjaGVjayBpZiBQYXJhbUlEIGlzIGRlZmluZWQKICAgIGlmICggZGVmaW5lZCggJFBhcmFte0F0dERpcklEfSApICYmICRQYXJhbXtBdHREaXJJRH0gKSB7CgogICAgICAgICNkYiBxdW90aW5nLi4uCiAgICAgICAgZm9yZWFjaCAocXcoIEF0dERpcklEKSkgewogICAgICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICNidWlsZCBzcWwuLi4KICAgICAgICBteSAkU1FMID0gIlNFTEVDVCBmaWxlX3BhdGggRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiCiAgICAgICAgICAgIC4gIldIRVJFIGlkPSRQYXJhbXtBdHREaXJJRH0iOwoKICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICRTUUwsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRGaWxlUGF0aCA9ICREYXRhWzBdOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkRmlsZVBhdGggKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICJDb3VsZCBOT1QgZmluZCBmaWxlIHBhdGggZm9yIGdpdmVuIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkICgkUGFyYW17QXR0RGlySUR9KSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNnZXQgdGhlIGF0dGFjaG1lbnQgZGF0YSBmaWxlLi4uCiAgICBpZiAoIG9wZW4oIG15ICREQVRBLCAiPCIsICRGaWxlUGF0aCApICkgewogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBteSAkRGF0YSAgICA9ICIiOwogICAgICAgIGJpbm1vZGUoJERBVEEpOwogICAgICAgIHdoaWxlICg8JERBVEE+KSB7CiAgICAgICAgICAgICREYXRhIC49ICRfOwogICAgICAgIH0KICAgICAgICBjbG9zZSgkREFUQSk7CgogICAgICAgICMgc2V0IERhdGFSZWYgcGFyYW0KICAgICAgICAkRGF0YXtEYXRhUmVmfSA9IFwkRGF0YTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IG9wZW4gJEZpbGVQYXRoOiAkISAhIiwKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gQXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKCkKCnJldHVybnMgdGhlIHNpemUgb2YgdGhlIGF0dGFjaG1lbnQgaW4gdGhlIHN0b3JhZ2UgYmFja2VuZCBhbmQgdGhlIG1kNXN1bS4KCiAgICBteSBSZWFsUHJvcGVydGllcyA9IEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMoCiAgICAgICAgQXR0RGlySUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgaWYgKCAhJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCBBdHREaXJJRCEiICk7CiAgICAgICAgcmV0dXJuICVSZWFsUHJvcGVydGllczsKICAgIH0KCiAgICBteSAkRGF0YSA9ICRTZWxmLT5BdHRhY2htZW50R2V0KAogICAgICAgIEF0dERpcklEID0+ICRQYXJhbXtBdHREaXJJRH0KICAgICk7CgogICAgbXkgJFJlYWxGaWxlU2l6ZSA9IDA7CiAgICBteSAkUmVhbE1ENVN1bSAgID0gJyc7CgogICAgaWYgKGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSkgewogICAgICAgIG15ICRDb250ZW50ID0gJHsgJERhdGEtPntEYXRhUmVmfSB9OwogICAgICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fS0+RW5jb2RlT3V0cHV0KCBcJENvbnRlbnQgKTsKCiAgICAgICAgJFJlYWxGaWxlU2l6ZSA9IGJ5dGVzOjpsZW5ndGgoJENvbnRlbnQpOwogICAgICAgICRSZWFsTUQ1U3VtICAgPSBtZDVfaGV4KCRDb250ZW50KTsKICAgIH0KCiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbEZpbGVTaXplfSA9ICRSZWFsRmlsZVNpemU7CiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbE1ENVN1bX0gICA9ICRSZWFsTUQ1U3VtOwoKICAgIHJldHVybiAlUmVhbFByb3BlcnRpZXM7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorage.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZS5wbSAtIGxpYiBmb3IgYXR0YWNobWVudCBtYW5hZ2VtZW50CiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogRG9yb3RoZWEoZG90KURvZXJmZmVsKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZS1pdChkb3QpZGUKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2UucG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKdXNlIEVuY29kZSBxdyhlbmNvZGVfdXRmOCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2UgLSBzdGQuIGF0dGFjaG1lbnQgbGliCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBhdHRhY2htZW50IHN0b3JhZ2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgc3RkLiBhdHRhY2htZW50IG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57TWFpbk9iamVjdH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgIyBnZXQgY29uZmlndXJlZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBteSAkQmFja2VuZFJlZiA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdBdHRhY2htZW50U3RvcmFnZTo6U3RvcmFnZUJhY2tlbmRNb2R1bGVzJyk7CiAgICBpZiAoICEoIHJlZigkQmFja2VuZFJlZikgZXEgJ0hBU0gnICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICNyZXRyaWV2ZSByZXF1aXJlZCBzdG9yYWdlIGJhY2tlbmQgbW9kdWxlcy4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgZGlzdGluY3Qoc3RvcmFnZV9iYWNrZW5kKSBGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5IjsKICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICkgKSB7CiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRCYWNrZW5kUmVmLT57ICREYXRhWzBdIH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjbG9hZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBmb3IgbXkgJEN1cnJLZXkgKCBrZXlzKCAleyRCYWNrZW5kUmVmfSApICkgewogICAgICAgIGlmICggJEJhY2tlbmRSZWYtPnskQ3VycktleX0gJiYgJFNlbGYtPntNYWluT2JqZWN0fS0+UmVxdWlyZSgkQ3VycktleSkgKSB7CiAgICAgICAgICAgICRTZWxmLT57JEN1cnJLZXl9ID0gJEtlcm5lbDo6T00tPkdldCgkQ3VycktleSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoKQoKZ2V0IGFuIGF0dGFjaG1lbnQgLSByZXR1cm5zIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGVudHJ5IHdpdGhvdXQgYXR0YWNobWVudCBjb250ZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0RGlyZWN0b3J5KAogICAgICAgIElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggSUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIHN0b3JhZ2VfYmFja2VuZCwgZmlsZV9wYXRoLCAiIC4KICAgICAgICAiZmlsZV9uYW1lICIgLgogICAgICAgICJGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5ICIgLgogICAgICAgICJXSEVSRSBpZD0kUGFyYW17SUR9IjsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIEF0dERpcklEICAgICAgID0+ICREYXRhWzBdLAogICAgICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAkRGF0YVsxXSwKICAgICAgICAgICAgRmlsZVBhdGggICAgICAgPT4gJERhdGFbMl0sCiAgICAgICAgICAgIEZpbGVOYW1lICAgICAgID0+ICREYXRhWzNdLAogICAgICAgICk7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5IHByZWZlcmVuY2VzCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICNidWlsZCBzcWwuLi4KICAgICRTUUwgPSAiU0VMRUNUIHByZWZlcmVuY2VzX2tleSwgcHJlZmVyZW5jZXNfdmFsdWUgIiAuCiAgICAgICAgIkZST00gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMgIiAuCiAgICAgICAgIldIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkPSRQYXJhbXtJRH0iOwoKICAgICRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAgKTsKCiAgICBteSAlUHJlZmVyZW5jZXM7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFByZWZlcmVuY2VzeyAkRGF0YVswXSB9ID0gJERhdGFbMV07CiAgICB9CgogICAgI2FkZCBwcmVmZXJlbmNlcwogICAgJERhdGF7UHJlZmVyZW5jZXN9ID0gXCVQcmVmZXJlbmNlczsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRTdG9yYWdlR2V0KCkKCmdldCBhbiBhdHRhY2htZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0KAogICAgICAgIElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCBkaXJlY3RvcnkgZGF0YS4uLgogICAgJURhdGEgPSAkU2VsZi0+QXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoIElEID0+ICRQYXJhbXtJRH0gKTsKCiAgICBpZiAoICFkZWZpbmVkKCAkRGF0YXtBdHREaXJJRH0gKSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gYXR0YWNobWVudCB3aXRoIHRoaXMgSUQgZXhpc3RzISIKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCB0aGUgYWN0dWFsIGF0dGFjaG1lbnQuLi4KICAgIG15ICRBdHRhY2htZW50UmVmID0gJFNlbGYtPnsgJERhdGF7U3RvcmFnZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEF0dERpcklEID0+ICREYXRhe0F0dERpcklEfSwKICAgICk7CgogICAgIyREYXRhe0NvbnRlbnRUeXBlfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVR5cGV9OwoKICAgICMgZ2V0IENvbnRlbnRSZWYgZm9yIERCIGJhY2tlbmQKICAgIGlmICggJEF0dGFjaG1lbnRSZWYtPntEYXRhUmVmfSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVJlZn07CiAgICB9CgogICAgIyBnZXQgQ29udGVudFJlZiBmb3IgRlMgYmFja2VuZAogICAgZWxzaWYgKCBleGlzdHMoICRBdHRhY2htZW50UmVmLT57RGF0YX0gKSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9IFwkQXR0YWNobWVudFJlZi0+e0RhdGF9OwogICAgfQoKICAgICRBdHRhY2htZW50UmVmID0gdW5kZWY7CiAgICAkQXR0YWNobWVudFJlZiA9IHt9OwoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtICBBdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKCkKCmdldCB0aGUgYXR0YWNobWVudCdzIHNpemUgb24gZGlzayBhbmQgdGhlIG1kNXN1bQoKICAgIG15ICVEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0dERpcklEICAgICAgPT4gJEF0dERpcklELAogICAgICAgU3RvcmFnZUJhY2tlbmQgPT4gIktlcm5lbDo6U3lzdGVtOjpBdHRhY2htZW50U3RvcmFnZURCIiwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICMgY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEF0dERpcklEIGFuZCBTdG9yYWdlQmFja2VuZCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAgfQoKICAgICMgZ2V0IHRoZSBhY3R1YWwgYXR0YWNobWVudCBwcm9wZXJ0aWVzLi4uCiAgICAlUmVhbFByb3BlcnRpZXMgPSAkU2VsZi0+eyAkUGFyYW17U3RvcmFnZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygKICAgICAgICBBdHREaXJJRCA9PiAkUGFyYW17QXR0RGlySUR9LAogICAgKTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9Cgo9aXRlbSBBdHRhY2htZW50U3RvcmFnZUFkZCgpCgpjcmVhdGUgYSBuZXcgYXR0YWNobWVudCBkaXJlY3RvcnkgZW50cnkgYW5kIHdyaXRlIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBiYWNrZW5kCgogICAgbXkgJElEID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUFkZCgKICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAnS2VybmVsOjpTeXN0ZW06OkF0dGFjaG1lbnRTdG9yYWdlREInLAogICAgICAgIERhdGFSZWYgPT4gJFNvbWVDb250ZW50UmVmZXJlbmNlLAogICAgICAgIEZpbGVOYW1lID0+ICdTb21lRmlsZU5hbWUuemlwJywKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgICAgIFByZWZlcmVuY2VzICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVHlwZSAgICAgICAgICAgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVDdXN0b21QYXJhbXMgICA9PiAnd2l0aCBvdXIgb3duIHZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50U3RvcmFnZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJElEICAgICA9IDA7CiAgICBteSAkTUQ1c3VtID0gJyc7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBmb3JlYWNoIChxdyhEYXRhUmVmIEZpbGVOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEoICRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSApIHsKICAgICAgICAkUGFyYW17U3RvcmFnZUJhY2tlbmR9ID0KICAgICAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlOjpEZWZhdWx0U3RvcmFnZUJhY2tlbmRNb2R1bGUnKTsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDEpIGNyZWF0ZSBhdHRhY2htZW50IGRpcmVjdG9yeSBlbnRyeS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIFN0b3JhZ2VCYWNrZW5kIEZpbGVOYW1lKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30gKTsKICAgIH0KICAgIGZvcmVhY2ggKHF3KCBVc2VySUQgKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICNidWlsZCBzcWwuLi4KICAgIG15ICRTUUwgPSAiSU5TRVJUIElOVE8gYXR0YWNobWVudF9kaXJlY3RvcnkgKCIgLgogICAgICAgICIgc3RvcmFnZV9iYWNrZW5kLCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCwgZmlsZV9uYW1lLCAgIiAuCiAgICAgICAgIiBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KSAiIC4KICAgICAgICAiIFZBTFVFUyAoIiAuCiAgICAgICAgIiAnJFBhcmFte1N0b3JhZ2VCYWNrZW5kfScsICIgLgogICAgICAgICIgJycsICckUGFyYW17RmlsZU5hbWV9JywgIiAuCiAgICAgICAgIiBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0sIGN1cnJlbnRfdGltZXN0YW1wLCAkUGFyYW17VXNlcklEfSkiOwoKICAgICNydW4gU1FMLi4uCiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT5EbyggU1FMID0+ICRTUUwgKSApIHsKCiAgICAgICAgIy4uLmFuZCBnZXQgdGhlIElELi4uCiAgICAgICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIG1heChpZCkgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSBXSEVSRSAiIC4KICAgICAgICAgICAgICAgICJmaWxlX25hbWUgPSAnJFBhcmFte0ZpbGVOYW1lfScgQU5EICIgLgogICAgICAgICAgICAgICAgInN0b3JhZ2VfYmFja2VuZCA9ICckUGFyYW17U3RvcmFnZUJhY2tlbmR9JyBBTkQgIiAuCiAgICAgICAgICAgICAgICAiY3JlYXRlX2J5ID0gJFBhcmFte1VzZXJJRH0iLAogICAgICAgICk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJElEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBOT1QgaW5zZXJ0IGF0dGFjaG1lbnQgaW4gYXR0YWNobWVudCBkaXJlY3RvcnkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDIpIHNhdmUgYXR0YWNobWVudCBkaXJlY3RvcnkgcHJlZmVyZW5jZXMgLi4uCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAjIG1kNXN1bSBjYWxjdWxhdGlvbgogICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57TUQ1U3VtfSA9IG1kNV9oZXgoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CgogICAgIyBzaXplIGNhbGN1bGF0aW9uCiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemVCeXRlc30gPSBieXRlczo6bGVuZ3RoKCAkeyAkUGFyYW17RGF0YVJlZn0gfSApOwoKICAgIG15ICRGaWxlU2l6ZSA9ICRQYXJhbXtQcmVmZXJlbmNlc30tPntGaWxlU2l6ZUJ5dGVzfTsKICAgIGlmICggJEZpbGVTaXplID4gKCAxMDI0ICogMTAyNCApICkgewogICAgICAgICRGaWxlU2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZVNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgIH0KICAgIGVsc2lmICggJEZpbGVTaXplID4gMTAyNCApIHsKICAgICAgICAkRmlsZVNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggJEZpbGVTaXplIC8gMTAyNCApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpbGVTaXplID0gJEZpbGVTaXplIC4gJyBCeXRlcyc7CiAgICB9CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemV9ID0gJEZpbGVTaXplOwoKICAgICMgaW5zZXJ0IHByZWZlcmVuY2VzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17UHJlZmVyZW5jZXN9IH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMgJwogICAgICAgICAgICAgICAgLiAnKGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkLCBwcmVmZXJlbmNlc19rZXksIHByZWZlcmVuY2VzX3ZhbHVlKSBWQUxVRVMgKCA/LCA/LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJElELCBcJEtleSwgXCRQYXJhbXtQcmVmZXJlbmNlc30tPnskS2V5fSBdLAogICAgICAgICk7CgogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyAoMykgY3JlYXRlIGF0dGFjaG1lbnQgc3RvcmFnZSBlbnRyeSAoID0gc2F2ZSBmaWxlKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgbXkgJEF0dElEID0gJFNlbGYtPnsgJFBhcmFte1N0b3JhZ2VCYWNrZW5kfSB9LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+ICRJRCwKICAgICAgICBEYXRhUmVmICA9PiAkUGFyYW17RGF0YVJlZn0sCiAgICApOwoKICAgIGlmICggISRBdHRJRCApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCBzdG9yZSBhdHRhY2htZW50IGluIHN0b3JhZ2UgKCRQYXJhbXtTdG9yYWdlQmFja2VuZH0pISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjICg0KSB1cGRhdGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKGkuZS4gZmlsZSBwYXRoKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJEF0dElEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCRBdHRJRCk7CiAgICAkU1FMICAgPSAiVVBEQVRFIGF0dGFjaG1lbnRfZGlyZWN0b3J5IFNFVCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCA9ICckQXR0SUQnICIgLgogICAgICAgICIgV0hFUkUgaWQgPSAkSUQiOwoKICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPkRvKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCB1cGRhdGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKElEPSRJRCwgZmlsZV9wYXRoPSRBdHRJRCkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VTZWFyY2goKQoKcmV0dXJucyBhdHRhY2htZW50IGRpcmVjdG9yeSBJRHMgZm9yIHRoZSBnaXZlbiBGaWxlTmFtZQoKICAgIG15IEBEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZVNlYXJjaCgKICAgICAgICBGaWxlTmFtZSA9PiAnU29tZUZpbGVOYW1lLnppcCcsCiAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMSwgKDEgfHwgMCwgb3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRTdG9yYWdlU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSBAUmVzdWx0ID0gKCk7CiAgICBteSAkV0hFUkUgID0gIihpZCA+IDApIjsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtGaWxlTmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEZpbGVOYW1lISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIEZpbGVOYW1lICkpIHsKICAgICAgICBpZiAoIGRlZmluZWQoICRQYXJhbXskX30gKSAmJiAoICRQYXJhbXskX30gKSApIHsKICAgICAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSApOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgV0hFUkUtY2xhdXNlLi4uCiAgICBpZiAoICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gKSB7CiAgICAgICAgJFdIRVJFIC49ICIgQU5EIChmaWxlX25hbWUgTElLRSAnJFBhcmFte0ZpbGVOYW1lfScpIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRXSEVSRSAuPSAiIEFORCAoZmlsZV9uYW1lID0gJyRQYXJhbXtGaWxlTmFtZX0nKSI7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiIC4KICAgICAgICAiV0hFUkUgIiAuICRXSEVSRTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCggQFJlc3VsdCwgJERhdGFbMF0gKTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQ=</File>
        <File Location="Custom/Kernel/System/DynamicField/Driver/Lens.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojICRvcmlnaW46IG90b2JvIC0gOTBmYzdlM2QxY2JmZjFiZjAyYmRjYjUwZWI4ZWVkYTAzNjEwMmNmZSAtIEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9MZW5zLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpMZW5zOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpCYXNlKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkxlbnMgLSBkcml2ZXIgZm9yIHRoZSBMZW5zIGR5bmFtaWMgZmllbGQKCj1oZWFkMSBERVNDUklQVElPTgoKQWNjZXNzIHRvIGFuIGF0dHJpYnV0ZSBvZiBhIHJlZmVyZW5jZWQgb2JqZWN0LgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKClRoaXMgZHluYW1pYyBmaWVsZCBkcml2ZXIgbW9kdWxlIGltcGxlbWVudHMgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb2YgTDxLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kPi4KUGxlYXNlIGxvb2sgdGhlcmUgZm9yIGEgZGV0YWlsZWQgcmVmZXJlbmNlIG9mIHRoZSBmdW5jdGlvbnMuCgo9aGVhZDIgbmV3KCkKCml0IGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IGNyZWF0ZSBpbnN0YW5jZXMgb2YgZHluYW1pYyBmaWVsZCBkcml2ZXJzLgpJbnN0YW5jZXMgb2YgdGhlIGRyaXZlcnMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZQpkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0IEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3Mge30sICRUeXBlOwoKICAgICMgVXNlZCBmb3IgZGVjbGFyaW5nIENTUyBjbGFzc2VzCiAgICAkU2VsZi0+e0ZpZWxkQ1NTQ2xhc3N9ID0gJ0R5bmFtaWNGaWVsZExlbnMnOwoKICAgICMgc2V0IGZpZWxkIGJlaGF2aW9ycwogICAgIyAgIE5PVEUgYmVoYXZpb3JzIElzQUNMUmVkdWNpYmxlLCBJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSwgSXNSZWZlcmVuY2VGaWVsZCBhbmQKICAgICMgICBJc1NldEZpZWxkIGdldCBvdmVycmlkZGVuIHdpdGggdGhlIGF0dHJpYnV0ZSBmaWVsZHMgYmVoYXZpb3JzIGluIHN1YiBIYXNCZWhhdmlvcgogICAgJFNlbGYtPntCZWhhdmlvcnN9ID0gewogICAgICAgICdJc0FDTFJlZHVjaWJsZScgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc05vdGlmaWNhdGlvbkV2ZW50Q29uZGl0aW9uJyA9PiAxLAogICAgICAgICdJc1NvcnRhYmxlJyAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc0ZpbHRyYWJsZScgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc1N0YXRzQ29uZGl0aW9uJyAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScgICA9PiAwLAogICAgICAgICdJc0hpZGRlbkluVGlja2V0SW5mb3JtYXRpb24nICA9PiAwLAogICAgICAgICdTZXRzRHluYW1pY0NvbnRlbnQnICAgICAgICAgICA9PiAxLAogICAgICAgICdJc1JlZmVyZW5jZUZpZWxkJyAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc1NldEZpZWxkJyAgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc1NldENhcGFibGUnICAgICAgICAgICAgICAgICA9PiAxLAogICAgfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBWYWx1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAjIGluIHNldCBjYXNlLCBhbiBhcnJheXJlZiBvZiBvYmplY3QgaWRzIGlzIHJldHVybmVkCiAgICBteSAkUmVmZXJlbmNlZE9iamVjdElEID0gJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0gfHwgJFNlbGYtPl9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgICAgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICAgICBTZXQgICAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXtTZXR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRSZWZlcmVuY2VkT2JqZWN0SUQ7CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgdGhlIHJlZmVyZW5jZWQgb2JqZWN0CiAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+X0dldFJlZmVyZW5jZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJE9iamVjdElET3JOYW1lID0gJFJlZmVyZW5jZURGQ29uZmlnLT57RmllbGRUeXBlfSA9fiAvXkN1c3RvbWVyLyA/ICdPYmplY3ROYW1lJyA6ICdPYmplY3RJRCc7CgogICAgIyBpbiBzZXQgY2FzZSwgdmFsdWVzIG5lZWQgdG8gYmUgY29sbGVjdGVkIG9uZSBieSBvbmUKICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICBmb3IgbXkgJFJlZklEICggJFJlZmVyZW5jZWRPYmplY3RJRC0+QCogKSB7CiAgICAgICAgICAgIGlmICggISRSZWZJRCApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFZhbHVlcywgdW5kZWY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWYWx1ZXMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAkT2JqZWN0SURPck5hbWUgICAgPT4gJFJlZklELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gXEBWYWx1ZXM7CiAgICB9CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICAgICAkT2JqZWN0SURPck5hbWUgICAgPT4gJFJlZmVyZW5jZWRPYmplY3RJRCwKICAgICAgICBGb3JMZW5zICAgICAgICAgICAgPT4gJFBhcmFte0ZvckxlbnN9LAogICAgKTsKfQoKc3ViIFZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiBub3QgZXhwbGljaXRseSBkZWFjdGl2YXRlZCB3ZSBhc3N1bWUgYmVpbmcgb24gYW4gZWRpdCBtYXNrCiAgICBteSAkRWRpdEZpZWxkVmFsdWUgPSAkUGFyYW17RWRpdEZpZWxkVmFsdWV9IC8vIDE7CiAgICBteSAkTGVuc0RGQ29uZmlnICAgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiMgICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKIyAgICApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgdGhlIHJlZmVyZW5jZWQgb2JqZWN0CiAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+X0dldFJlZmVyZW5jZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJE9iamVjdElET3JOYW1lID0gJFJlZmVyZW5jZURGQ29uZmlnLT57RmllbGRUeXBlfSA9fiAvXkN1c3RvbWVyLyA/ICdPYmplY3ROYW1lJyA6ICdPYmplY3RJRCc7CgogICAgIyBpbiBzZXQgY2FzZSwgd2UgaXRlcmF0ZSBvdmVyIHRoZSB2YWx1ZXMgYW5kIHNldCB0aGVtIG9uZSBieSBvbmUKICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgSU5ERVg6CiAgICAgICAgZm9yIG15ICRTZXRJbmRleCAoIDAgLi4gJCN7ICRQYXJhbXtWYWx1ZX0gfSApIHsKCiAgICAgICAgICAgICRMZW5zREZDb25maWctPntTZXRJbmRleH0gPSAkU2V0SW5kZXg7CgogICAgICAgICAgICAjIHdpdGggcGFyYW0gU2V0SW5kZXgsIGEgc2luZ2xlIG9iamVjdCBpZCBpcyByZXR1cm5lZAogICAgICAgICAgICAjIGFzIHdlIGFyZSBhbHJlYWR5IHNhdmluZyB3ZSB0cnVzdCwgdGhhdCB0aGUgcmVmZXJlbmNlIGVkaXQgZmllbGQgaGFzIGJlZW4gdmFsaWRhdGVkCiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VkT2JqZWN0SUQgPSAkU2VsZi0+X0dldFJlZmVyZW5jZWRPYmplY3RJRCgKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICAgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICAgICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICAgICAgICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICAgICAgPT4gJEVkaXRGaWVsZFZhbHVlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjbGVhbiB1cCBvYmplY3QgaWQgaW4gY2FzZSB0aGF0IE9iamVjdE5hbWUgaXMgcGFzc2VkIHRvIG5vdCBjb2xsaWRlCiAgICAgICAgICAgIGlmICggJE9iamVjdElET3JOYW1lIGVxICdPYmplY3ROYW1lJyApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkUGFyYW17T2JqZWN0SUR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IElOREVYIHVubGVzcyAkUmVmZXJlbmNlZE9iamVjdElEOwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0SUQgICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICAgICAgICAgICk7CgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX1bJFNldEluZGV4XSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1IYW5kbGVkICA9PiAwLAogICAgICAgICAgICAgICAgRWRpdEZpZWxkVmFsdWUgICAgID0+IDAsCiAgICAgICAgICAgICAgICBTZXQgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICRPYmplY3RJRE9yTmFtZSA9PiAkUmVmZXJlbmNlZE9iamVjdElELAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFzIHdlIGFyZSBhbHJlYWR5IHNhdmluZyB3ZSB0cnVzdCwgdGhhdCB0aGUgcmVmZXJlbmNlIGVkaXQgZmllbGQgaGFzIGJlZW4gdmFsaWRhdGVkCiAgICBteSAkUmVmZXJlbmNlZE9iamVjdElEID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgICAgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICAgICBFZGl0RmllbGRWYWx1ZSAgICAgICAgID0+ICRFZGl0RmllbGRWYWx1ZSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkUmVmZXJlbmNlZE9iamVjdElEOwoKICAgICMgY2xlYW4gdXAgb2JqZWN0IGlkIGluIGNhc2UgdGhhdCBPYmplY3ROYW1lIGlzIHBhc3NlZCB0byBub3QgY29sbGlkZQogICAgaWYgKCAkT2JqZWN0SURPck5hbWUgZXEgJ09iamVjdE5hbWUnICkgewogICAgICAgIGRlbGV0ZSAkUGFyYW17T2JqZWN0SUR9OwogICAgfQoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0SUQgICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlU2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMCwKICAgICAgICBFZGl0RmllbGRWYWx1ZSAgICAgPT4gMCwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIH0sCiAgICAgICAgJE9iamVjdElET3JOYW1lID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwp9CgpzdWIgVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVWYWxpZGF0ZSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaFNRTEdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxPcmRlckZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBFZGl0RmllbGRSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgICMgVGhlIGVkaXQgZmllbGQgc2hvdWxkIGJlIHJlbmRlcmVkIGxpa2UgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QsCiAgICAjIEJ1dCBuYW1lIGFuZCBMYWJlbCBzaG91bGQgYmUgdGhhdCBvZiB0aGUgTGVucyBkeW5hbWljIGZpZWxkLgogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TmFtZX0gID0gJExlbnNERkNvbmZpZy0+e05hbWV9OwogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TGFiZWx9ID0gJExlbnNERkNvbmZpZy0+e0xhYmVsfTsKICAgIG15ICRBdHRyaWJ1dGVGaWVsZEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgUHJvY2Vzc1N1ZmZpeCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtQcm9jZXNzU3VmZml4fSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZUZpZWxkSFRNTDsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICAjIFRoZSBuYW1lIHVzZWQgaW4gdGhlIEdVSSBpcyB0aGUgbmFtZSBvZiB0aGUgTGVucwogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TmFtZX0gPSAkTGVuc0RGQ29uZmlnLT57TmFtZX07CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgRWRpdEZpZWxkVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZmV0Y2ggYXR0cmlidXRlIGRmIGNvbmZpZwogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICAjIGNhbGwgYXR0cmlidXRlIGRmIGNvbmZpZyB2YWxpZGF0aW9uCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5FZGl0RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgRGlzcGxheVZhbHVlUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICByZXR1cm4gJycgdW5sZXNzICRBdHRyaWJ1dGVERkNvbmZpZzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgJVBhcmFtLCAgICAjIGUuZy4gVmFsdWUgYW5kIEhUTUxPdXRwdXQKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIFNlYXJjaEZpZWxkUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7Cn0KCnN1YiBTZWFyY2hGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBteSAkUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lICA9PiAkTGVuc0RGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIExhYmVsID0+ICRMZW5zREZDb25maWctPntMYWJlbH0sCiAgICAgICAgfQogICAgKTsKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgU2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBteSAkUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lICA9PiAkTGVuc0RGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIExhYmVsID0+ICRMZW5zREZDb25maWctPntMYWJlbH0sCiAgICAgICAgfQogICAgKTsKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgU3RhdHNGaWVsZFBhcmFtZXRlckJ1aWxkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHsKICAgICAgICBOYW1lICAgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TGFiZWx9LAogICAgICAgIEVsZW1lbnQgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSwKICAgIH07Cn0KCnN1YiBTdGF0c1NlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgc2V0IG9wZXJhdG9yCiAgICBteSAkT3BlcmF0b3IgPSAnRXF1YWxzJzsKCiAgICAjIHNlYXJjaCBmb3IgYSB3aWxkIGNhcmQgaW4gdGhlIHZhbHVlCiAgICBpZiAoICRWYWx1ZSAmJiAkVmFsdWUgPX4gbXtcKn0gKSB7CgogICAgICAgICMgY2hhbmdlIG9wZXJhdG9yCiAgICAgICAgJE9wZXJhdG9yID0gJ0xpa2UnOwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgJE9wZXJhdG9yID0+ICRWYWx1ZSwKICAgIH07Cn0KCnN1YiBSZWFkYWJsZVZhbHVlUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIFRlbXBsYXRlVmFsdWVUeXBlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX07CgogICAgIyBzZXQgdGhlIGZpZWxkIHR5cGVzCiAgICBteSAkRWRpdFZhbHVlVHlwZSAgID0gJ1NDQUxBUic7CiAgICBteSAkU2VhcmNoVmFsdWVUeXBlID0gJ1NDQUxBUic7CgogICAgIyByZXR1cm4gdGhlIGNvcnJlY3Qgc3RydWN0dXJlCiAgICBpZiAoICRQYXJhbXtGaWVsZFR5cGV9IGVxICdFZGl0JyApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAkRmllbGROYW1lID0+ICRFZGl0VmFsdWVUeXBlLAogICAgICAgIH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtGaWVsZFR5cGV9IGVxICdTZWFyY2gnICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICdTZWFyY2hfJyAuICRGaWVsZE5hbWUgPT4gJFNlYXJjaFZhbHVlVHlwZSwKICAgICAgICB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgJEZpZWxkTmFtZSAgICAgICAgICAgICA9PiAkRWRpdFZhbHVlVHlwZSwKICAgICAgICAgICAgJ1NlYXJjaF8nIC4gJEZpZWxkTmFtZSA9PiAkU2VhcmNoVmFsdWVUeXBlLAogICAgICAgIH07CiAgICB9Cn0KCnN1YiBSYW5kb21WYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZG8gbm90aGluZyBidXQgcmVwb3J0aW5nIHN1Y2Nlc3MKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBWYWx1ZSAgID0+IDEsCiAgICB9Owp9CgpzdWIgT2JqZWN0TWF0Y2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBmaWVsZCBpcyBub3QgZGVmaW5lZAogICAgcmV0dXJuIDAgdW5sZXNzIGRlZmluZWQgJFBhcmFte09iamVjdEF0dHJpYnV0ZXN9LT57JEZpZWxkTmFtZX07CgogICAgIyByZXR1cm4gZmFsc2UgaWYgbm90IG1hdGNoCiAgICByZXR1cm4gMSBpZiAkUGFyYW17T2JqZWN0QXR0cmlidXRlc30tPnskRmllbGROYW1lfSBlcSAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuIDA7Cn0KCnN1YiBIaXN0b3JpY2FsVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyByZXR1cm4gdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZyb20gZGF0YWJhc2UKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKS0+SGlzdG9yaWNhbFZhbHVlR2V0KAogICAgICAgIEZpZWxkSUQgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0lEfSwKICAgICAgICBWYWx1ZVR5cGUgPT4gJ1RleHQnLAogICAgKTsKfQoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUxvb2t1cCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBWYWx1ZUlzRGlmZmVyZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUlzRGlmZmVyZW50KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIEhhc0JlaGF2aW9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPOiBUaGluayBhYm91dCBhZGRpdGlvbmFsIGJlaGF2aW9ycyB3ZSBjYW4ganVzdCBhZG9wdCBmcm9tIHRoZSBhdHRyaWJ1dGUgZmllbGQKICAgICMgZm9yIGNlcnRhaW4gYmVoYXZpb3JzIGluc3RlYWQgdXNlIHRoZSBhdHRyaWJ1dGUgZmllbGQgYmVoYXZpb3JzCiAgICBpZiAoIGFueSB7ICRQYXJhbXtCZWhhdmlvcn0gZXEgJF8gfSBxdy9Jc0FDTFJlZHVjaWJsZSBJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSBJc1NldEZpZWxkIElzUmVmZXJlbmNlRmllbGQvICkgewogICAgICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgICMgcmV0dXJuIHN1Y2Nlc3MgaWYgdGhlIGR5bmFtaWMgZmllbGQgaGFzIHRoZSBleHBlY3RlZCBiZWhhdmlvcgogICAgcmV0dXJuICRTZWxmLT5TVVBFUjo6SGFzQmVoYXZpb3IoIEJlaGF2aW9yID0+ICRQYXJhbXtCZWhhdmlvcn0gKTsKfQoKc3ViIFBvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBPYmplY3REZXNjcmlwdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317TmFtZX0sCiAgICAgICAgfSwKICAgICk7Cn0KCnN1YiBCdWlsZFNlbGVjdGlvbkRhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hPYmplY3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hPYmplY3RzKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgR2V0RmllbGRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKICAgIG15ICRERlBhcmFtICAgICAgICAgICAgPSAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH07CiAgICBteSAkTmVlZHNSZXNldDsKCiAgICAjIHJlc2V0IGlmIHRoZSByZWZlcmVuY2VkIG9iamVjdCBjaGFuZ2VzCiAgICBpZiAoICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtSZWZlcmVuY2VERk5hbWV9IH0gKSB7CiAgICAgICAgJE5lZWRzUmVzZXQgPSAxOwogICAgfQoKICAgICMgb3IgaWYgd2UgaGF2ZSB0aGUgZmllbGQgcmVhcHBlYXIKICAgIGVsc2lmICggISRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fSB8fCAhJFBhcmFte0NhY2hlZFZpc2liaWxpdHl9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSApIHsKICAgICAgICAkTmVlZHNSZXNldCA9IDE7CiAgICB9CgogICAgbXkgJEF0dHJpYnV0ZUZpZWxkVmFsdWU7CiAgICBpZiAoJE5lZWRzUmVzZXQpIHsKCiAgICAgICAgbXkgJFJlZmVyZW5jZUlEID0gJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9ID8gJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9WzBdIDogdW5kZWY7CgogICAgICAgICMgZ2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSByZWZlcmVuY2VkIGF0dHJpYnV0ZSBmaWVsZCBpZiBhbiBvYmplY3QgaXMgcmVmZXJlbmNlZAogICAgICAgIGlmICgkUmVmZXJlbmNlSUQpIHsKCiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VERk5hbWUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtSZWZlcmVuY2VERk5hbWV9IC4gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH0gLy8gJycgKTsKCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17U2V0SW5kZXh9ICkgewogICAgICAgICAgICAgICAgJFJlZmVyZW5jZURGTmFtZSAuPSAiXyRQYXJhbXtTZXRJbmRleH0iOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e1NldEluZGV4fSA9ICRQYXJhbXtTZXRJbmRleH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgdGhlIHZhbHVlIHdvdWxkIGNoYW5nZSwgd2UgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGUgdXNlciBpcyByZWFsbHkgYWxsb3dlZAogICAgICAgICAgICAjIHRvIGFjY2VzcyB0aGUgcHJvdmlkZWQgcmVmZXJlbmNlZCBvYmplY3QgdmlhIHRoaXMgZm9ybQogICAgICAgICAgICAjIHRoaXMgaXMgdGhlIGNhc2UgaWYgZWl0aGVyIHRoZSByZWZlcmVuY2VkIG9iamVjdCB3YXMgc2hvd24gdmlhIGEgc2VhcmNoICgxKQogICAgICAgICAgICAjIG9yIGhhcyBiZWVuIHJlbmRlcmVkICgyKQogICAgICAgICAgICAjIG9yIGlzIGN1cnJlbnRseSBzdG9yZWQgZm9yIHRoZSBlZGl0ZWQgdGlja2V0L2NpLy4uLiAoMykKICAgICAgICAgICAgbXkgJExhc3RTZWFyY2hSZXN1bHRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyktPkdldEZvcm1EYXRhKAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnUG9zc2libGVWYWx1ZXNfJyAuICRSZWZlcmVuY2VERk5hbWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluIHNldCBjYXNlLCB3ZSBmZXRjaCB0aGUgdGVtcGxhdGUgdmFsdWVzIGFuZCBlaXRoZXIgY29uY2F0ZW5hdGUgdGhlbSB0byB0aGUgc2VhcmNoIHJlc3VsdHMKICAgICAgICAgICAgIyAgIG9yLCBpZiBubyBzZWFyY2ggcmVzdWx0cyBhcmUgcHJlc2VudCwgdXNlIHRoZSB0ZW1wbGF0ZSB2YWx1ZXMgZW50aXJlbHkKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTZXRJbmRleH0gKSB7CiAgICAgICAgICAgICAgICBteSAkVGVtcGxhdGVOYW1lICAgICAgICAgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSAuICdfVGVtcGxhdGUnOwogICAgICAgICAgICAgICAgbXkgJFRlbXBsYXRlU2VhcmNoUmVzdWx0cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5HZXRGb3JtRGF0YSgKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnUG9zc2libGVWYWx1ZXNfJyAuICRUZW1wbGF0ZU5hbWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggcmVmICRMYXN0U2VhcmNoUmVzdWx0cyAmJiByZWYgJFRlbXBsYXRlU2VhcmNoUmVzdWx0cyApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoICRMYXN0U2VhcmNoUmVzdWx0cy0+QCosICRUZW1wbGF0ZVNlYXJjaFJlc3VsdHMtPkAqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCByZWYgJFRlbXBsYXRlU2VhcmNoUmVzdWx0cyApIHsKICAgICAgICAgICAgICAgICAgICAkTGFzdFNlYXJjaFJlc3VsdHMgPSAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIGEgc2VhcmNoIGhhcyBhbHJlYWR5IGJlZW4gcGVyZm9ybWVkIGZvciB0aGlzIGZvcm0gaWQKICAgICAgICAgICAgbXkgJEFsbG93ZWQgPSAoIGdyZXAgeyAkXyBlcSAkUmVmZXJlbmNlSUQgfSAkTGFzdFNlYXJjaFJlc3VsdHMtPkAqICkgPyAxIDogMDsKCiAgICAgICAgICAgICMgYWJvcnQgaWYgcmVxdWVzdGVkIHZhbHVlIGlzIG5vdCBhbGxvd2VkCiAgICAgICAgICAgIGlmICggISRBbGxvd2VkICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZhbHVlICRSZWZlcmVuY2VJRCBmb3IgbGVucyBmaWVsZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gaXMgbm90IGFsbG93ZWQuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAjIGZvciBjb25maWcgaXRlbSByZWZlcmVuY2UgZmllbGRzLCBHZXRQYXJhbSBjb250YWlucyB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgIyAgIHRoaXMgaGFzIHRvIGJlIHRyYW5zaXRpb25lZCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gaWQgb2YgdGhlIHJlc3BlY3RpdmUgY29uZmlnIGl0ZW0KICAgICAgICAgICAgbXkgJFJlZmVyZW5jZURGQ29uZmlnID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VERkNvbmZpZygKICAgICAgICAgICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdGhpcyBjYW4gYWxzbyBiZSBuZXN0ZWQgaW4gYSBsZW5zIC0gd2UgaGF2ZSB0byBjaGVjayBpdHMgYXR0cmlidXRlIERGIHRoZW4KICAgICAgICAgICAgIyAgIGlmIGEgbGVucyBpcyB1c2VkIGFzIHJlZmVyZW5jZSBkZiwgd2UgaGF2ZSB0byBjaGVjayBpZiBpdHMgYXR0cmlidXRlIGlzIGEgQ0kKICAgICAgICAgICAgdW50aWwgKCAkUmVmZXJlbmNlREZDb25maWctPntGaWVsZFR5cGV9IG5lICdMZW5zJyApIHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgICAgICAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUmVmZXJlbmNlREZDb25maWcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRSZWZlcmVuY2VERkNvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nICkgewoKICAgICAgICAgICAgICAgICMgQmFja2VuZE9iamVjdCBoYXMgYWxsIHRoZSBPYmplY3RUeXBlIEhhbmRsZXJzIGxvYWRlZCBhcyBwcm9wZXJ0aWVzCiAgICAgICAgICAgICAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgICAgICAjIGRldGVybWluZSB0aGUgcHJvcGVydHkgbmFtZSBmb3Igb3VyIHR5cGVuYW1lCiAgICAgICAgICAgICAgICBteSAkQmFja2VuZFR5cGVPYmplY3RLZXkgPSAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbU9iamVjdCc7CgogICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBpcyBhIFR5cGVPYmplY3QgaGFuZGxlciBvYmplY3QgLi4uCiAgICAgICAgICAgICAgICBpZiAoIGV4aXN0cyAkQmFja2VuZE9iamVjdC0+eyRCYWNrZW5kVHlwZU9iamVjdEtleX0gKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRCYWNrZW5kVHlwZU9iamVjdCA9ICRCYWNrZW5kT2JqZWN0LT57JEJhY2tlbmRUeXBlT2JqZWN0S2V5fTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRCYWNrZW5kVHlwZU9iamVjdC0+Y2FuKCdWYWx1ZUZvckxlbnMnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVGb3JMZW5zID0gJEJhY2tlbmRUeXBlT2JqZWN0LT5WYWx1ZUZvckxlbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUmVmZXJlbmNlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGV4cGVjdGVkIGlzIGVpdGhlciBvbmUgaXRlbSBvciBub25lCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRWYWx1ZUZvckxlbnMpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJlZmVyZW5jZUlEID0gJFZhbHVlRm9yTGVucy0+WzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgICAgICAgICAkQXR0cmlidXRlRmllbGRWYWx1ZSA9ICRTZWxmLT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAoKICAgICAgICAgICAgICAgICMgVE9ETzogSW5zdGVhZCB3ZSBjb3VsZCBqdXN0IHNlbmQgJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9IGFzIE9iamVjdElECiAgICAgICAgICAgICAgICAjIGJ1dCB3ZSB3b3VsZCBuZWVkIHRvIGludGVycHJldCBpdCBsYXRlciAoZnJvbSBDb25maWdJdGVtSUQgdG8gTGFzdFZlcnNpb25JRCwgZS5nLikKICAgICAgICAgICAgICAgICMgVE9ETzogVmFsaWRhdGUgdGhlIFJlZmVyZW5jZSBPYmplY3RJRCBoZXJlLCBvciBlYXJsaWVyLCB0byBwcmV2ZW50IGRhdGEgbGVha3MhCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICMgd2lsbCBub3QgYmUgdXNlZDsKICAgICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RJRCA9PiAkUmVmZXJlbmNlSUQsCiAgICAgICAgICAgICkgLy8gJyc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQXR0cmlidXRlRmllbGRWYWx1ZSA9ICcnOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICk7CgogICAgbXkgJUZpZWxkU3RhdGVzID0gJFBhcmFte0ZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0fS0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIE5lZWRzUmVzZXQgICAgICAgPT4gJE5lZWRzUmVzZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGJ5cGFzcyBjaGVja3MgaW4gcmVmZXJlbmNlIGRyaXZlcgogICAgICAgIENhY2hlZFZpc2liaWxpdHkgPT4gJE5lZWRzUmVzZXQgPyB1bmRlZiA6ICRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fSwKICAgICAgICBEeW5hbWljRmllbGRzICAgID0+IHsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+IHsKICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgICAgICBQcm9jZXNzU3VmZml4ID0+ICREeW5hbWljRmllbGRDb25maWctPntQcm9jZXNzU3VmZml4fSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgR2V0UGFyYW0gPT4gewogICAgICAgICAgICAkUGFyYW17R2V0UGFyYW19LT4lKiwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICAgICAgICAgICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJEF0dHJpYnV0ZUZpZWxkVmFsdWUgLy8gJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgKTsKICAgIGlmICggZGVmaW5lZCAkRmllbGRTdGF0ZXN7TmV3VmFsdWVzfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CiAgICAgICAgJEZpZWxkU3RhdGVze05ld1ZhbHVlfSA9ICRGaWVsZFN0YXRlc3tOZXdWYWx1ZXN9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KICAgIGVsc2lmICggZGVmaW5lZCAkQXR0cmlidXRlRmllbGRWYWx1ZSApIHsKICAgICAgICAkRmllbGRTdGF0ZXN7TmV3VmFsdWV9ID0gJEF0dHJpYnV0ZUZpZWxkVmFsdWU7CiAgICB9CgogICAgIyBwcmV2ZW50IGF1dG92aXZpZmljYXRpb24KICAgIGlmICggZXhpc3RzICRGaWVsZFN0YXRlc3tGaWVsZHN9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSAmJiBleGlzdHMgJEZpZWxkU3RhdGVze0ZpZWxkc317ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9e1Bvc3NpYmxlVmFsdWVzfSApIHsKICAgICAgICAkRmllbGRTdGF0ZXN7UG9zc2libGVWYWx1ZXN9ID0gJEZpZWxkU3RhdGVze0ZpZWxkc317ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9e1Bvc3NpYmxlVmFsdWVzfTsKCiAgICAgICAgaWYgKCBleGlzdHMgJEZpZWxkU3RhdGVze0ZpZWxkc317ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9e05vdEFDTFJlZHVjaWJsZX0gKSB7CiAgICAgICAgICAgICRGaWVsZFN0YXRlc3tOb3RBQ0xSZWR1Y2libGV9ID0gJEZpZWxkU3RhdGVze0ZpZWxkc317ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9e05vdEFDTFJlZHVjaWJsZX07CiAgICAgICAgfQogICAgfQoKICAgICMgbmVjZXNzYXJ5IGNsZWFuLXVwIHRvIGF2b2lkIGludGVyZmVyZW5jZSB3aXRoIEdldEZpZWxkU3RhdGUgbWVjaGFuaXNtIGluIEZpZWxkUmVzdHJpY3Rpb25zIG1vZHVsZXMKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkRmllbGRTdGF0ZXN7U2V0c30gKSApIHsKICAgICAgICBkZWxldGUgJEZpZWxkU3RhdGVze1NldHN9OwogICAgfQogICAgZWxzaWYgKCROZWVkc1Jlc2V0KSB7CgogICAgICAgICMgZmlsbCB2YWx1ZXMgd2l0aCBkYXRhIHdpdGggc2V0IHZhbHVlIGRhdGEKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQXR0cmlidXRlRmllbGRWYWx1ZSkgKSB7CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgICMgZ2V0IHNldCBpbm5lciBkeW5hbWljIGZpZWxkcyBmcm9tIGF0dHJpYnV0ZSBmaWVsZAogICAgICAgICAgICBteSAkSW5uZXJEeW5hbWljRmllbGRzID0gJFNlbGYtPl9HZXRJbmNsdWRlZER5bmFtaWNGaWVsZHMoCiAgICAgICAgICAgICAgICBJbnB1dEZpZWxkRGVmaW5pdGlvbiA9PiAkQXR0cmlidXRlREZDb25maWctPntDb25maWd9e0luY2x1ZGV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRJbmRleCAoIDAgLi4gJCN7JEF0dHJpYnV0ZUZpZWxkVmFsdWV9ICkgewoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZUl0ZW0gPSAkQXR0cmlidXRlRmllbGRWYWx1ZS0+WyRJbmRleF07CiAgICAgICAgICAgICAgICBteSBAREZOYW1lcyAgID0ga2V5cyAkVmFsdWVJdGVtLT4lKjsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJERGTmFtZSAoQERGTmFtZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFN1ZmZpeGVkREZOYW1lID0gJERGTmFtZSAuICggJER5bmFtaWNGaWVsZENvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9IHx8ICcnICkgLiAiXyRJbmRleCI7CgogICAgICAgICAgICAgICAgICAgICMgZmlsbCB1cCBkeW5hbWljIGZpZWxkIGNvbmZpZ3Mgb2Ygc2V0LWlubmVyIGZpZWxkcwogICAgICAgICAgICAgICAgICAgIGlmICggIWV4aXN0cyAkRmllbGRTdGF0ZXN7U2V0c317JERGTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZFN0YXRlc3tTZXRzfXskREZOYW1lfXtEeW5hbWljRmllbGRDb25maWd9ID0gJElubmVyRHluYW1pY0ZpZWxkcy0+eyRERk5hbWV9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgRmllbGRTdGF0ZXMgaGFzaAogICAgICAgICAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRJbm5lckR5bmFtaWNGaWVsZHMtPnskREZOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkSXNBQ0xSZWR1Y2libGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZFN0YXRlc3tTZXRzfXskREZOYW1lfXtGaWVsZFN0YXRlc317JFN1ZmZpeGVkREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBmaWxsIHVwIHZhbHVlcyBoYXNoCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZXhpc3RzICRGaWVsZFN0YXRlc3tTZXRzfXskREZOYW1lfXtWYWx1ZXN9eyRTdWZmaXhlZERGTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZFN0YXRlc3tTZXRzfXskREZOYW1lfXtWYWx1ZXN9eyRTdWZmaXhlZERGTmFtZX0gPSAkVmFsdWVJdGVtLT57JERGTmFtZX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkU2V0VmFsdWVDb3VudCAgICAgPSBJc0FycmF5UmVmV2l0aERhdGEoICRGaWVsZFN0YXRlc3tOZXdWYWx1ZX0gKSA/IHNjYWxhciAkRmllbGRTdGF0ZXN7TmV3VmFsdWV9LT5AKiA6IDE7CiAgICAgICAgbXkgJENvbXBsZXRlRmllbGROYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH0gfHwgJycgKTsKCiAgICAgICAgIyBhZGQgY291bnQgb2YgU2V0IHZhbHVlcyBmb3IgYWRkaW5nIHRoZSBjb3JyZWN0IG51bWJlciBvZiBmaWVsZHMgaW4gdGhlIGZyb250ZW5kCiAgICAgICAgJEZpZWxkU3RhdGVze1NldHN9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IHsKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgICAgICBOYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRmllbGRTdGF0ZXMgPT4gewogICAgICAgICAgICAgICAgJENvbXBsZXRlRmllbGROYW1lID0+IHsKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgTm90QUNMUmVkdWNpYmxlID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBWYWx1ZXMgPT4gewogICAgICAgICAgICAgICAgJENvbXBsZXRlRmllbGROYW1lID0+ICRTZXRWYWx1ZUNvdW50LAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuICVGaWVsZFN0YXRlczsKfQoKPWhlYWQyIEltcG9ydEV4cG9ydFByZXBhcmVDb25maWcoKQoKVGhpcyBzdWIgcGVyZm9ybXMgdHJhbnNsYXRpb24gYmV0d2VlbiBOYW1lIGFuZCBJRCBmb3IgYXR0cmlidXRlcyB3aGljaCBhcmUgc3RvcmVkIHdpdGggSUQgaW4gdGhlIGZpZWxkIGNvbmZpZy4gRm9yIGV4cG9ydCwgdGhlIE5hbWUgaXMgbmVlZGVkIGJlY2F1c2UgSURzIG9mIG9iamVjdHMgbWF5IGRpZmZlciBiZXR3ZWVuIHN5c3RlbXMuIER1cmluZyBpbXBvcnQsIHRoZSBOYW1lIG5lZWRzIHRvIGJlIHRyYW5zbGF0ZWQgYmFjayBpbnRvIHRoZSBJRCBmb3IgdGhlIGZpZWxkIHRvIHdvcmsgcHJvcGVybHkuCgogICAgbXkgQE9iamVjdElEcyA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgIyByZXF1aXJlZAogICAgICAgIERpcmVjdGlvbiAgICAgICAgICA9PiAnSW1wb3J0JywgICAgICAgICAgICAgIyByZXF1aXJlZDsgSW1wb3J0IG9yIEV4cG9ydAogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEeW5hbWljRmllbGRDb25maWcgRGlyZWN0aW9uKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgbXkgJVJldHVybjsKICAgIGlmICggJFBhcmFte0RpcmVjdGlvbn0gZXEgJ0ltcG9ydCcgKSB7CgogICAgICAgICMgbmVlZGVkIHRyYW5zZm9ybWF0aW9uOiBOYW1lIC0+IElECiAgICAgICAgbXkgJEF0dHJpYnV0ZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICk7CiAgICAgICAgJFJldHVybntBdHRyaWJ1dGVERn0gPSAkQXR0cmlidXRlREYtPntJRH07CiAgICAgICAgbXkgJFJlZmVyZW5jZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9LAogICAgICAgICk7CiAgICAgICAgJFJldHVybntSZWZlcmVuY2VERn0gPSAkUmVmZXJlbmNlREYtPntJRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdFeHBvcnQnICkgewoKICAgICAgICAjIG5lZWRlZCB0cmFuc2Zvcm1hdGlvbjogSUQgLT4gTmFtZQogICAgICAgIG15ICRBdHRyaWJ1dGVERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtBdHRyaWJ1dGVERn0sCiAgICAgICAgKTsKICAgICAgICAkUmV0dXJue0F0dHJpYnV0ZURGfSA9ICRBdHRyaWJ1dGVERi0+e05hbWV9OwogICAgICAgIG15ICRSZWZlcmVuY2VERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgKTsKICAgICAgICAkUmV0dXJue1JlZmVyZW5jZURGfSA9ICRSZWZlcmVuY2VERi0+e05hbWV9OwogICAgfQoKICAgIHJldHVybiAlUmV0dXJuOwp9Cgo9aGVhZDEgaW50ZXJuYWwgbWV0aG9kcwoKTWV0aG9kcyB0aGF0IGFyZSB1c2VkIG9ubHkgaW50ZXJuYWxseS4KCj1oZWFkMiBfR2V0UmVmZXJlbmNlREZDb25maWcoKQoKQSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGRlbGVnYXRlLgoKPWN1dAoKI1RPRE86IGluIENJIGRlZmluaXRpb25zIHN0b3JlIHRoZSBkZWZpbml0aW9uIGlkIG9yIGRmIGNvbmZpZ3MgaW4gdGhlIGxlbnMgY29uZmlnIGFuZCB1c2UgdGhpcyBvbmUgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBkZiBjb25maWdzCnN1YiBfR2V0UmVmZXJlbmNlREZDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSAvLz0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiMgICAgICAgIElEID0+ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKIyAgICApOwogICAgIyBjb25maWcgaXRlbXMgYW5kIGNpIHZlcnNpb25zIHN0b3JlIHRoZWlyIHJlc3BlY3RpdmUgcmVmZXJlbmNlIGNvbmZpZ3MgYXMgcGFydCBvZiB0aGUgbGVucyBjb25maWcKICAgICMgZWxzZSB1c2Ugc3RhbmRhcmQgZHluYW1pYyBmaWVsZCBnZXQKICAgICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSAvLz0gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e1JlZmVyZW5jZURGQ29uZmlnfQogICAgICAgIC8vICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBJRCA9PiAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgKTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICByZXR1cm4gJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9Owp9Cgo9aGVhZDIgX0dldEF0dHJpYnV0ZURGQ29uZmlnKCkKCkEgZHluYW1pYyBmaWVsZCBjb25maWd1cmF0aW9uIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBkZWxlZ2F0ZS4KCj1jdXQKCnN1YiBfR2V0QXR0cmlidXRlREZDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICFkZWZpbmVkICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSA9ICREeW5hbWljRmllbGRDb25maWcgPyB7ICREeW5hbWljRmllbGRDb25maWctPiUqIH0gOiB7fTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgI3JldHVybiAkU2VsZi0+e0F0dHJpYnV0ZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH07CiAgICBpZiAoICRQYXJhbXtSZWZlcmVuY2VkT2JqZWN0SUR9ICYmICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfSApIHsKICAgICAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+e1JlZmVyZW5jZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH07CgogICAgICAgIGlmICggJFJlZmVyZW5jZURGQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0F0dHJpYnV0ZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH0tPiUqLAogICAgICAgICAgICAgICAgICAgIENJQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAnUHJpb3JpdHknID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiTm8gQ29uZmlnSXRlbSB3aXRoIFZlcnNpb25JRCAnJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0nLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB7ICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfS0+JSogfTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKfQoKPWhlYWQyIF9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoKQoKVGhlIGNvbmZpZyBvZiB0aGUgbGVucyBjb250YWlucyB0aGUgSUQgb2YgYW5vdGhlciBkeW5hbWljIGZpZWxkLiBUaGF0IGZpZWxkIGlzIGEgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgdGhhdApyZWZlcmVuY2VzIGFub3RoZXIgb2JqZWN0LiBUaGUgSUQgb2YgdGhlIHJlZmVyZW5jZWQgb2JqZWN0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGQuCgo9Y3V0CgpzdWIgX0dldFJlZmVyZW5jZWRPYmplY3RJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZXh0cmFjdCBwYXJhbXMKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciB0aGUgcmVmZXJlbmNlZCBvYmplY3QKICAgIG15ICRSZWZlcmVuY2VERkNvbmZpZyA9ICRTZWxmLT5fR2V0UmVmZXJlbmNlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBpZiAoICRQYXJhbXtFZGl0RmllbGRWYWx1ZX0gKSB7CgogICAgICAgICMgc3VmZml4IG5hbWUgd2l0aCBwcm9jZXNzIGlkIGFuZCBzZXQgaW5kZXgsIGlmIHByZXNlbnQKICAgICAgICBteSAkUmVmZXJlbmNlREZOYW1lID0gJFJlZmVyZW5jZURGQ29uZmlnLT57TmFtZX07CiAgICAgICAgaWYgKCAkTGVuc0RGQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH0gKSB7CiAgICAgICAgICAgICRSZWZlcmVuY2VERk5hbWUgLj0gJExlbnNERkNvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCBkZWZpbmVkICRMZW5zREZDb25maWctPntTZXRJbmRleH0gKSB7CiAgICAgICAgICAgICRSZWZlcmVuY2VERk5hbWUgLj0gIl8kTGVuc0RGQ29uZmlnLT57U2V0SW5kZXh9IjsKICAgICAgICB9CgogICAgICAgIG15ICRPYmplY3RJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAkUmVmZXJlbmNlREZDb25maWctPiUqLAogICAgICAgICAgICAgICAgTmFtZSA9PiAkUmVmZXJlbmNlREZOYW1lLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksCiAgICAgICAgICAgIFRyYW5zZm9ybURhdGVzID0+IDAsCiAgICAgICAgICAgIEZvckxlbnMgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIGlmICEkT2JqZWN0SUQ7CiAgICAgICAgcmV0dXJuICRPYmplY3RJRC0+WzBdOwogICAgfQoKICAgIG15ICRPYmplY3RJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRSZWZlcmVuY2VERkNvbmZpZywKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBGb3JMZW5zICAgICAgICAgICAgPT4gMSwKICAgICAgICBTZXQgICAgICAgICAgICAgICAgPT4gJFBhcmFte1NldH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJE9iamVjdElEOwoKICAgICMgaW4gc2V0IGNhc2UsIHdlIG5lZWQgdG8gbWFwIHRoZSByZXR1cm5lZCBhcnJheSBvZiBhcnJheXMgaW50byBhbiBhcnJheSBvZiBmaXJzdCB2YWx1ZXMgYXMgbXVsdGl2YWx1ZSBsZW5zZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudAogICAgaWYgKCAkUGFyYW17U2V0fSApIHsKICAgICAgICBteSBAT2JqZWN0SURzID0gbWFwIHsgJF8tPlswXSB9ICRPYmplY3RJRC0+QCo7CiAgICAgICAgcmV0dXJuIFxAT2JqZWN0SURzOwogICAgfQoKICAgIHJldHVybiAkT2JqZWN0SUQtPlswXTsKfQoKPWhlYWQyIF9HZXRJbmNsdWRlZER5bmFtaWNGaWVsZHMoJEluY2x1ZGUsICREeW5hbWljRmllbGRPYmplY3QpCgpIZWxwZXIgRnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIER5bmFtaWMgRmllbGRzIGZyb20gYW4gSW5jbHVkZSwgaS5lLgokRHluYW1pY0ZpZWxkcyA9ICRHZXRJbmNsdWRlZER5bmFtaWNGaWVsZHMtPigkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0luY2x1ZGV9KTsKVGhpcyBzdWJyb3V0aW5lIHRha2VzIHRocmVlIGFyZ3VtZW50czoKJEluY2x1ZGU6IGEgbGlzdCBvZiBoYXNoIHJlZmVyZW5jZXMgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbXMgdG8gaW5jbHVkZQokRHluYW1pY0ZpZWxkT2JqZWN0OiBhbiBvYmplY3QgdXNlZCB0byByZXRyaWV2ZSBkeW5hbWljIGZpZWxkIGluZm9ybWF0aW9uCmFuZCByZXR1cm5zIGVpdGhlciB0aGUgRHluYW1pY0ZpZWxkcyBvciB1bmRlZiBpbiBjYXNlIG9mIGFuIGVycm9yLgoKPWN1dAoKc3ViIF9HZXRJbmNsdWRlZER5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJUR5bmFtaWNGaWVsZDsKCiAgICAjIFRoaXMgc3Vicm91dGluZSB0YWtlcyBhIERGRW50cnkgYW5kIHRoZSBEeW5hbWljRmllbGRPYmplY3QgYXMgYXJndW1lbnRzCiAgICAjIEl0IHJldHJpZXZlcyB0aGUgZHluYW1pYyBmaWVsZCBkZWZpbml0aW9uIGZvciB0aGUgZ2l2ZW4gREZFbnRyeQogICAgIyBJZiB0aGUgZGVmaW5pdGlvbiBpcyBub3QgYXZhaWxhYmxlLCBpdCByZXRyaWV2ZXMgaXQgZnJvbSB0aGUgRHluYW1pY0ZpZWxkT2JqZWN0CiAgICAjIFJldHVybnMgdGhlIGR5bmFtaWMgZmllbGQgZGVmaW5pdGlvbgogICAgbXkgJEdldER5bmFtaWNGaWVsZCA9IHN1YiB7CgogICAgICAgIG15ICgkREZFbnRyeSkgPSBAXzsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICRERkVudHJ5LT57RGVmaW5pdGlvbn0gLy8gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRERkVudHJ5LT57REZ9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkRHluYW1pY0ZpZWxkOwogICAgfTsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJbmNsdWRlSXRlbSAoIEB7ICRQYXJhbXtJbnB1dEZpZWxkRGVmaW5pdGlvbn0gfSApIHsKCiAgICAgICAgaWYgKCAkSW5jbHVkZUl0ZW0tPntHcmlkfSApIHsKCiAgICAgICAgICAgIGZvciBteSAkUm93ICggQHsgJEluY2x1ZGVJdGVtLT57R3JpZH17Um93c30gfSApIHsKCiAgICAgICAgICAgICAgICBERkVOVFJZOgogICAgICAgICAgICAgICAgZm9yIG15ICRERkVudHJ5ICggJFJvdy0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkR2V0RHluYW1pY0ZpZWxkLT4oJERGRW50cnkpOwogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJERGRW50cnktPntMYWJlbH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ID0gJERGRW50cnktPntMYWJlbH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e01hbmRhdG9yeX0gICAgICA9ICRERkVudHJ5LT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e1JlYWRvbmx5fSAgICAgICA9ICRERkVudHJ5LT57UmVhZG9ubHl9OwogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkeyAkREZFbnRyeS0+e0RGfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljRmllbGRDb25maWcgbWlzc2luZyBmb3IgZmllbGQ6ICRERkVudHJ5LT57REZ9LCBvciBpcyBub3QgYSBUaWNrZXQgRHluYW1pYyBGaWVsZCEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBERkVOVFJZOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRJbmNsdWRlSXRlbS0+e0RGfSApIHsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkR2V0RHluYW1pY0ZpZWxkLT4oJEluY2x1ZGVJdGVtKTsKICAgICAgICAgICAgaWYgKCREeW5hbWljRmllbGQpIHsKICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVJdGVtLT57TGFiZWx9ICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGQtPntMYWJlbH0gPSAkSW5jbHVkZUl0ZW0tPntMYWJlbH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TWFuZGF0b3J5fSAgICAgICAgICA9ICRJbmNsdWRlSXRlbS0+e01hbmRhdG9yeX07CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57UmVhZG9ubHl9ICAgICAgICAgICA9ICRJbmNsdWRlSXRlbS0+e1JlYWRvbmx5fTsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGR7ICRJbmNsdWRlSXRlbS0+e0RGfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkR5bmFtaWNGaWVsZENvbmZpZyBtaXNzaW5nIGZvciBmaWVsZDogJEluY2x1ZGVJdGVtLT57REZ9LCBvciBpcyBub3QgYSBUaWNrZXQgRHluYW1pYyBGaWVsZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbmV4dCBJVEVNOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVEeW5hbWljRmllbGQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItem.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgoKICAgIDwhLS0gcmVnaXN0cmF0aW9uIG9mIGFnZW50IGFuZCBjdXN0b21lciBmcm9udGVuZCBtb2R1bGVzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BZG1pbi48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uTW9kdWxlIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BZG1pbiBhcmVhIG5hdmlnYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6QWRtaW5PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6TmF2QmFyOjpNb2R1bGVBZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5DTURCU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikljb25CaWciPmZhLWxhcHRvcDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSWNvblNtYWxsIj48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluSVRTTUNvbmZpZ0l0ZW0jIyMwMDItSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkNvZGVNaXJyb3JFZGl0b3IuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkFkbWluLklUU01Db25maWdJdGVtLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvbGliL2NvZGVtaXJyb3IuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9oaW50L3Nob3ctaGludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvZm9sZGd1dHRlci5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2RpYWxvZy9kaWFsb2cuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaXNwbGF5L2Z1bGxzY3JlZW4uY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvbGliL2NvZGVtaXJyb3IuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL21vZGUveWFtbC95YW1sLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9oaW50L3Nob3ctaGludC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9tYXRjaHRhZ3MuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2VkaXQvbWF0Y2hicmFja2V0cy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9jbG9zZXRhZy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9jbG9zZWJyYWNrZXRzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvc2VhcmNoY3Vyc29yLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvc2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9mb2xkL2ZvbGRjb2RlLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9lZGl0L3RyYWlsaW5nc3BhY2UuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tcG9pbnRlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZm9sZC9mb2xkZ3V0dGVyLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9mb2xkL2JyYWNlLWZvbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvaW5kZW50LWZvbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvY29tbWVudC1mb2xkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9jb21tZW50L2NvbW1lbnQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2NvbW1lbnQvY29udGludWVjb21tZW50LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaWFsb2cvZGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvanVtcC10by1saW5lLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaXNwbGF5L2Z1bGxzY3JlZW4uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPklUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWxsb2NhdGlvbkxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5JdGVtQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk92ZXJ2aWV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SVRTTSBjb25maWcgaXRlbSBvdmVydmlldy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5PdmVydmlldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRPRE8gcmVsZXZhbnQgZm9yIGNvbHVtbiBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVGFibGUuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tLSBUT0RPIHJlbGV2YW50IGZvciBjb2x1bW4gc2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BbGxvY2F0aW9uTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TWVudTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMxMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJzdmdJY29uIj52YXIvaHR0cGQvaHRkb2NzL3NraW5zL0N1c3RvbWVyL2RlZmF1bHQvaW1nL2RldmljZXNfYmxhY2tfMjRkcC5zdmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBjb25maWcgaXRlbXMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1TZWFyY2guY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVGFibGUuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlByaW50LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFsbG9jYXRpb25MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5QcmludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pxdWVyeS10YWJsZXNvcnRlci0yLjI4LjE0L2pxdWVyeS50YWJsZXNvcnRlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5JbnB1dEZpZWxkcy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkR5bmFtaWNGaWVsZERCRGV0YWlsZWRTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkREJTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkxpbmtPYmplY3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maXJtRGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGVkaXQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkREJEZXRhaWxlZFNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5EeW5hbWljRmllbGREQlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5JbnB1dEZpZWxkcy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNSaWNoVGV4dFdpZHRoIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1FZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCslPyQiPjYyMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjI1JpY2hUZXh0SGVpZ2h0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRWRpdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJT8kIj4zMjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gcHJpbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+RGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPklUU00gQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5Db25maWdJdGVtIFRyZWUgVmlldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UcmVlIFZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5JVFNNIENvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5UcmVlVmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRyZWVWaWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pzcGx1bWItMS42LjQvanNwbHVtYi5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGFkZC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5BZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtQWRkIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk5ldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4yMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggY29uZmlnIGl0ZW1zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BbGxvY2F0aW9uTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5UYWJsZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uUHJpbnQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIGNvbmZpZyBpdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPm9uY2xpY2s9IklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcpOyBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9IGVsc2UgeyB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIG1lbnUgbW9kdWxlcyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+WyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMjAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMzMDAtRWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNDAwLVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlByaW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtQYXJhbSI+dGFyZ2V0PSJwcmludCI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNTAwLUxpbmsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50TGlua09iamVjdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM1NTAtVHJlZVZpZXciIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlRyZWUgVmlldzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbSBUcmVlIFZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3O1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNjAwLUR1cGxpY2F0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5EdXBsaWNhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkR1cGxpY2F0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzcwMC1Db25maWdJdGVtRGVsZXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRGVsZXRlO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+Q29uZmlybURpYWxvZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRWxlbWVudFNlbGVjdG9yIj4jTWVudVslIERhdGEuTWVudUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU7U3ViYWN0aW9uPUNvbmZpZ0l0ZW1EZWxldGU7Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nVGl0bGUiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIFslIENvbmZpZygiSVRTTUNvbmZpZ0l0ZW06Okhvb2siKSAlXSBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gc2V0dGluZ3MgZm9yIHNwZWNpZmljIGNvbmZpZyBpdGVtIGNsYXNzZXMgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6Q0lOYW1lUmVnZXgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbXB1dGVyOjpDSU5hbWVSZWdleCI+XkFCQy4qPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb21wdXRlcjo6Q0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UiPkEgY29tcHV0ZXIgbmFtZSBtdXN0IHN0YXJ0IHdpdGggQUJDITwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSGFyZHdhcmU6OkNJTmFtZVJlZ2V4Ij4uKlxkXGQkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJIYXJkd2FyZTo6Q0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UiPkEgaGFyZHdhcmUgbmFtZSBtdXN0IGVuZCB3aXRoIHR3byBkaWdpdHMhPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIHNldHRpbmdzIGZvciB0aGUgTGlua09iamVjdCBmZWF0dXJlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6Q29tcGxleFRhYmxlOjpTZXR0aW5nc1Zpc2liaWxpdHkjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgJ0lUU01Db25maWdJdGVtJy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5DbGllbnQ8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5DdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3VyRGVwbFNpZ25hbDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zQnlDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkN1ckRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjozPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjozOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpXYXJyYW50eUV4cGlyYXRpb25EYXRlOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkNyZWF0ZVRpbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6VHlwZTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpBZGRyZXNzOjoxPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBzdGF0cyBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IlN0YXRzOjpEeW5hbWljT2JqZWN0UmVnaXN0cmF0aW9uIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN0YXRzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJbXBvcnQvRXhwb3J0IHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kUmVnaXN0cmF0aW9uIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gZXZlbnQgc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihDb25maWdJdGVtQ3JlYXRlfFZlcnNpb25DcmVhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbURlbGV0ZXxMaW5rQWRkfExpbmtEZWxldGV8RGVmaW5pdGlvblVwZGF0ZXxOYW1lVXBkYXRlfFZlcnNpb25EZWxldGV8QXR0YWNobWVudEFkZFBvc3R8QXR0YWNobWVudERlbGV0ZVBvc3R8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMzMDAtRGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EZWZpbml0aW9uQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjNDAwMC1TY3JpcHREeW5hbWljRmllbGRzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2YWx1YXRlIGFsbCBzY3JpcHQgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RXZhbHVhdGVTY3JpcHRGaWVsZHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIG1vcmUgZnJvbnRlbmQgbW9kdWxlIHNldHRpbmdzIGFuZCByZWdpc3RyYXRpb25zIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9InJldmVyc2UiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJyZXZlcnNlIiBUcmFuc2xhdGFibGU9IjEiPnJldmVyc2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Im5vcm1hbCIgVHJhbnNsYXRhYmxlPSIxIj5ub3JtYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGhpc3RvcnkuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uSGlzdG9yeS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlByZWZlcmVuY2VzOjpVcGRhdGVBSkFYOjpBbGxvd2VkIyMjMDAyLUlUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIiBDb25maWdMZXZlbD0iMjAwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BIGxpc3Qgb2YgcGFyYW1ldGVycyB3aGljaCBjYW4gYmUgdXBkYXRlZCB2aWEgdGhlIFVwZGF0ZUFKQVguPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJDb25maWdJdGVtWm9vbVRhYmxlSGVpZ2h0Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZSBUeXBlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwb3N0cHJvZHVjdGl2ZSIgVHJhbnNsYXRhYmxlPSIxIj5wb3N0cHJvZHVjdGl2ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwcmVwcm9kdWN0aXZlIiBUcmFuc2xhdGFibGU9IjEiPnByZXByb2R1Y3RpdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHJvZHVjdGl2ZSIgVHJhbnNsYXRhYmxlPSIxIj5wcm9kdWN0aXZlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+RnVuY3Rpb25hbGl0eTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPk9wdGlvbjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBHZW5lcmFsQ2F0YWxvZyBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNEZXBsb3ltZW50U3RhdGVzQ29sb3JzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZSBDb2xvcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Db2xvcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbG9yUGlja2VyPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNOYW1lTW9kdWxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lIE1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+TmFtZU1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPk5hbWVNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzIyMjTnVtYmVyTW9kdWxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij40MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5DaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPk51bWJlck1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPk51bWJlck1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNWZXJzaW9uU3RyaW5nTW9kdWxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbiBTdHJpbmcgTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+NTA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8IS0tIFRPRE8gcmVuYW1lIERhdGFTZWxlY3RlZCBwcm9wZXJseSB0byBEYXRhU2VsZWN0ZWRJRCwgYXMgaXQgaXMgcGFzc2VkIGFzIFNlbGVjdGVkSUQgc3Vic2VxdWVudGx5IC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPkluY3JlbWVudGFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlZlcnNpb25TdHJpbmdNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5WZXJzaW9uU3RyaW5nTW9kdWxlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNWZXJzaW9uU3RyaW5nRXhwcmVzc2lvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjYwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlZlcnNpb25TdHJpbmdFeHByZXNzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+SW5wdXQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1ZlcnNpb25UcmlnZ2VyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbiBUcmlnZ2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+NzA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZXNjcmlwdGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsU3RhdGVJRCIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaVN0YXRlSUQiIFRyYW5zbGF0YWJsZT0iMSI+SW5jaWRlbnRTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZpbml0aW9uVXBkYXRlIiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VmVyc2lvblRyaWdnZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db25maWdJdGVtVmVyc2lvblRyaWdnZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTXVsdGlwbGUiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI0NhdGVnb3JpZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+Q2F0ZWdvcmllczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjgwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5DYXRlZ29yaWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29uZmlnSXRlbUNsYXNzQ2F0ZWdvcmllczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTXVsdGlwbGUiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBwZXJtaXNzaW9uIHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OkNsYXNzIyMjMDEwLUNsYXNzR3JvdXBDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OkNsYXNzR3JvdXBDaGVjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVxdWlyZWQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkdyYW50ZWQiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246Okl0ZW0jIyMwMTAtSXRlbUNsYXNzR3JvdXBDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uOjpJdGVtQ2xhc3NHcm91cENoZWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZXF1aXJlZCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JhbnRlZCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0gLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1ZpZXdBbGxQb3NzaWJsZUNvbmZpZ0l0ZW1zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZG1pbklUU01Db25maWdJdGVtIyMjRWRpdG9yUm93cyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46OlZpZXc6OklUU01Db25maWdJdGVtRGVmaW5pdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20jIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRXh0ZW5kZWRTZWFyY2hDb25kaXRpb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiZhbXA7JmFtcDsqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj40MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkFnZSI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkFnZSIgVHJhbnNsYXRhYmxlPSIxIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8IS0tIFRPRE8gdmVyaWZ5IGF0dHJpYnV0ZSBuYW1lcyAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTnVtYmVyIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEZXBsU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW5jaVN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPCEtLSBUT0RPIHRlc3QgZHluYW1pYyBmaWVsZHMgLS0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoQ1NWRGF0YSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EYXRhIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+Q3JlYXRlVGltZTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI051bWJlciIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOYW1lIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0RlcGxveW1lbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSW5jaWRlbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ3VzdG9tZXJJRCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNDdXN0b21lclVzZXJMb2dpbiIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVNsb3QiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNoYW5nZVRpbWVQb2ludCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNoYW5nZVRpbWVTbG90IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NlYXJjaFByZXZpb3VzVmVyc2lvbnMiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgJ1gnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6ICdhIHRleHQnLCBEcm9wZG93bjogJzEnLCBEYXRlL1RpbWU6ICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OycgYW5kIG9yICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03JzsuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlcGxveW1lbnRTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNJbmNpZGVudFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNFeHRlbmRlZFNlYXJjaENvbmRpdGlvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJmFtcDsmYW1wOyprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjQwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iQWdlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQWdlIiBUcmFuc2xhdGFibGU9IjEiPkFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTnVtYmVyIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEZXBsU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW5jaVN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEb3duIiBUcmFuc2xhdGFibGU9IjEiPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlVwIiBUcmFuc2xhdGFibGU9IjEiPlVwPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTnVtYmVyIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI05hbWUiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRGVwbG95bWVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJbmNpZGVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNEeW5hbWljRmllbGQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSAnWCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogJ2EgdGV4dCcsIERyb3Bkb3duOiAnMScsIERhdGUvVGltZTogJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7JyBhbmQgb3IgJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTcnOy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1Blcm1pc3Npb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPlBlcm1pc3Npb24gR3JvdXA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPlBlcm1pc3Npb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+UGVybWlzc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2gjIyNDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Il4oPzpBZ2VudHxBZG1pbilJVFNNQ29uZmlnSXRlbSI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7U3ViYWN0aW9uPUFKQVg8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaDo6SmF2YVNjcmlwdCMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgdGhlIHNlYXJjaCBmcm9udGVuZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Il4oPzpBZ2VudHxBZG1pbilJVFNNQ29uZmlnSXRlbSI+SVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKCdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyMxMDAtQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBKUyBmaWxlcyB0byBhbHdheXMgYmUgbG9hZGVkIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkLmpzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI0NvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6UHJlZmVyZW5jZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZlcmVuY2VHcm91cCI+TWlzY2VsbGFuZW91czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJhdGlvbiBJdGVtIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IktleSIgVHJhbnNsYXRhYmxlPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjAiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzUiPjM1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YVNlbGVjdGVkIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNDb25maWdJdGVtT3ZlcnZpZXdGaWx0ZXJTZXR0aW5ncyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyAnQWN0aXZlJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyJ3MgYmVoYWxmLiBVc2UgJ1ByZWZlcmVuY2VHcm91cCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpDb2x1bW5GaWx0ZXJzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQgZmlsdGVycy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgxMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6Q3VzdG9tZXJPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDb2x1bW5zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpU3RhdGUiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZWQiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6SG9vayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5Db25maWdJdGVtIzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4xMDAwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDYXRlZ29yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbT5BbGw8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0Rpc2FibGVkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0F2YWlsYWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjQ2xhc3NDb2x1bW5zRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbSMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlVuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKCdjbGFzcycpIG9yIGdsb2JhbGx5ICgnZ2xvYmFsJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9Imdsb2JhbCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Imdsb2JhbCIgVHJhbnNsYXRhYmxlPSIxIj5nbG9iYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9ImNsYXNzIiBUcmFuc2xhdGFibGU9IjEiPmNsYXNzPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QnVsa0FjdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QnVsa0FjdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+dXNlcnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQnVsayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+QnVsayBBY3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5DTURCPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGs8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQXR0YWNobWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5UbyBkb3dubG9hZCBhdHRhY2htZW50cy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQXR0YWNobWVudCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ6OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VG8gZG93bmxvYWQgYXR0YWNobWVudHMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZSMjIzEwMC1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZVByZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtWm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZSMjIzIwMC1IaXN0b3J5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZVByZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUjIyMzMDAtRHVwbGljYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZVByZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RHVwbGljYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EdXBsaWNhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtEdXBsaWNhdGVJRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTtSZXR1cm5Ub0xhc3RTY3JlZW49MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjRGVwbFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbUJ1bGs8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjSW5jaVN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1CdWxrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OkFkbWluTW9kdWxlR3JvdXBzIyMjMjAwLUlUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGF2YWlsYWJsZSBncm91cHMgZm9yIHRoZSBhZG1pbiBvdmVydmlldyBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TmF2QmFyTW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNNREJTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Q01EQiBTZXR0aW5nczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPcmRlciI+ODAwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjI1ZlcnNpb25zRW5hYmxlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1ab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjI1ZlcnNpb25zU2VsZWN0YWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OklUU01Db25maWdJdGVtWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20jIyNHZW5lcmFsSW5mbyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OklUU01Db25maWdJdGVtWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIEhpZGRlbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIFNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpZGVudFN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZWRUaW1lIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZWRUaW1lIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IkFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+QXNzaWduZWQgQ0lzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlcyI+Q3VzdG9tZXJDb21wYW55PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGaWx0ZXIiPkFzc2lnbmVkVG9FbnRpdHk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbWl0Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGVybWlzc2lvbiI+cm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50TGFyZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhY2hlVFRMTG9jYWwiPjAuNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93bkNsYXNzZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Q29sdW1ucyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYnkgZGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhc3RDaGFuZ2VkIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6SVRTTUNvbmZpZ0l0ZW1HZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Bc3NpZ25lZCBDSXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj5DdXN0b21lcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRmlsdGVyIj5Bc3NpZ25lZFRvRW50aXR5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW1pdCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBlcm1pc3Npb24iPnJvPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29udGVudExhcmdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYWNoZVRUTExvY2FsIj4wLjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3duQ2xhc3NlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0l0ZW1LZXkiPkNvbnRhY3QtVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdENvbHVtbnMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gQXZhaWxhYmxlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYXN0Q2hhbmdlZCIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFbGFzdGljc2VhcmNoOjpFeGNsdWRlZENJQ2xhc3NlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6RXhjbHVkZWRDSURlcGxveW1lbnRTdGF0ZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIiBDb25maWdMZXZlbD0iMTAwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmFzaWMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29uZmlnSXRlbUlEPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5DbGFzc0lEPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbVNlYXJjaEZpZWxkcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCYXNpYyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0YWNobWVudHMiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6UXVpY2tTZWFyY2hTaG93IyMjQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5PYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvdW50Ij41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkV2ZW50cyMjI0lUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgYWxsIFBhY2thZ2UgZXZlbnRzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgR1VJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+Q29uZmlnSXRlbUNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5WZXJzaW9uQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VmVyc2lvblVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxveW1lbnRTdGF0ZVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lkZW50U3RhdGVVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db25maWdJdGVtRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkF0dGFjaG1lbnRBZGRQb3N0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+QXR0YWNobWVudERlbGV0ZVBvc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5WZXJzaW9uRGVsZXRlPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBkeW5hbWljIGZpZWxkIHJlbGF0ZWQgc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkIG9iamVjdCByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPklUU00gQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MTE1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZFNjcmVlbnMjIyNJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBjb25maWd1cmF0aW9uIGRlZmluZXMgYWxsIHBvc3NpYmxlIHNjcmVlbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgZHluYW1pYyBmaWVsZHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6RHluYW1pY0ZpZWxkU2NyZWVuczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IyMjRHluYW1pY0ZpZWxkIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQjIyNEeW5hbWljRmllbGQiPkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkIj5BZ2VudElUU01Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIyMjRHluYW1pY0ZpZWxkIj5BZ2VudElUU01Db25maWdJdGVtWm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkIj5DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRlZmF1bHRDb2x1bW5zU2NyZWVucyMjI0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIGNvbmZpZ3VyYXRpb24gZGVmaW5lcyBhbGwgcG9zc2libGUgc2NyZWVucyB0byBlbmFibGUgb3IgZGlzYWJsZSBkZWZhdWx0IGNvbHVtbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6RHluYW1pY0ZpZWxkU2NyZWVuczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyIj5EYXNoYm9hcmRXaWRnZXQgQ1VJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyVXNlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkiPkRhc2hib2FyZFdpZGdldCBDSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDb2x1bW5zIj5BZ2VudElUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0jIyNEZWZhdWx0Q29sdW1ucyI+Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRTY3JlZW5zOjpPYmplY3RUeXBlcyMjI0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpEeW5hbWljRmllbGRTY3JlZW5zPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+SVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW0gUmVmZXJlbmNlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6RHJpdmVyIyMjQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljRmllbGQgYmFja2VuZCByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpEeW5hbWljRmllbGRzOjpEcml2ZXJSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzcGxheU5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5EeW5hbWljRmllbGRSZWZlcmVuY2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdFR5cGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkFydGljbGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8IS0tIEVuZCBkeW5hbWljIGZpZWxkIElUU01Db25maWdJdGVtIFJlZmVyZW5jZSAtLT4KCiAgICA8IS0tIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uIFJlZmVyZW5jZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkRyaXZlciMjI0NvbmZpZ0l0ZW1WZXJzaW9uIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBiYWNrZW5kIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM6OkRyaXZlclJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtIFZlcnNpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtVmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkR5bmFtaWNGaWVsZFJlZmVyZW5jZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0VHlwZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+QXJ0aWNsZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlRpY2tldDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gRW5kIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uIFJlZmVyZW5jZSAtLT4KCiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGQ6OkV2ZW50TW9kdWxlUG9zdCMjIzIwMC1EeW5hbWljRmllbGRTeW5jIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RXZlbnQ6OklUU01Db25maWdJdGVtRGVmaW5pdGlvblN5bmM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EeW5hbWljRmllbGRBZGR8RHluYW1pY0ZpZWxkVXBkYXRlfER5bmFtaWNGaWVsZERlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkOjpFdmVudE1vZHVsZVBvc3QjIyMyNDAwLVJlYnVpbGRBQ0xQcmVzZWxlY3Rpb25DYWNoZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZWJ1aWxkcyB0aGUgQUNMIHByZXNlbGVjdGlvbiBjYWNoZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OlJlYnVpbGRBQ0xQcmVzZWxlY3Rpb25DYWNoZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPkRlZmluaXRpb25DcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5BbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzA1IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyNEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzA0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gVHJlZVZpZXcgcmVsYXRlZCBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJUcmVlVmlldzo6RGVmYXVsdERlcHRoIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjM8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJUcmVlVmlldzo6U2hvd0xpbmtMYWJlbHMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iWWVzIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iWWVzIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTm8iIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkR5bmFtaWNGaWVsZFNldDo6SW5uZXJGaWVsZHNUaWNrZXRUb0NJIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkEgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3dhcHBlZERpc2tTTiI+SVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj5JVFNNTGljZW5zZS1MaWNlbnNlQ291bnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPklUU01MaWNlbnNlLUxpY2Vuc2VzQXZhaWxhYmxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj5JVFNNLVJlZmVyZW5jZVRvTGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+TWlzYzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj5UaGUgbGljZW5zZSAmbHQ7T1RPQk9fQ09ORklHSVRFTV9OQU1FJmd0OyBoYXMgbGVzcyB0aGFuICZsdDtPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX01JTiZndDsgaXRlbXMgKCZsdDtPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX0FWQUlMJmd0OyBsaWNlbnNlcyBsZWZ0KS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj5DTURCTGljZW5zZU5vdGlmaWNhdGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU0xBIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlciI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik93bmVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+TGljZW5zZSBSZXByb3Zpc2lvbmluZzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNaW5pbXVtTGljZW5zZXMiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZXh0IiBWYWx1ZVR5cGU9IlRleHRhcmVhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMyMDAtTGljZW5zZUxpbmtDb3VudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpDb3VudExpY2Vuc2VMaW5rczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPkRlcGxveW1lbnRTdGF0ZVVwZGF0ZXxDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlX3xEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2hXaWRnZXRCYWNrZW5kIyMjMDQtRWxhc3RpY3NlYXJjaENvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpFbGFzdGljc2VhcmNoOjpFbGFzdGljc2VhcmNoQ29uZmlnSXRlbUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIEl0ZW1zPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5BZ2VudElUU01Db25maWdJdGVtWm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SVRTTSBjb25maWcgaXRlbSBvdmVydmlldy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNJVFNNQ29uZmlnSXRlbVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSB6b29tLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggY29uZmlnIGl0ZW1zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5UbyBkb3dubG9hZCBhdHRhY2htZW50cy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6UHVibGljT3ZlcnZpZXdTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFnZVNob3duIj4yNTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtIyMjUGFnZVNob3duIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjEwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjQ2xhc3MiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNOYW1lIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI051bWJlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlcGxveW1lbnRTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNJbmNpZGVudFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJBZ2UiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJBZ2UiIFRyYW5zbGF0YWJsZT0iMSI+QWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOdW1iZXIiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJJbmNpU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+SW5jaWRlbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTnVtYmVyIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTmFtZSIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0RlcGxveW1lbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJbmNpZGVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlICdYJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiAnYSB0ZXh0JywgRHJvcGRvd246ICcxJywgRGF0ZS9UaW1lOiAnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTsnIGFuZCBvciAnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9Nyc7LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTdXBwcmVzc0Z1enp5TG9naWMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+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+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyNEZWZhdWx0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljSVRTTUNvbmZpZ0l0ZW0jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkR5bmFtaWNGaWVsZFJlZmVyZW5jZVNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkN1c3RvbWVyLlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUT0RPIHJlbGV2YW50IGZvciBjb2x1bW4gc2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlRhYmxlLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLS0gVE9ETyByZWxldmFudCBmb3IgY29sdW1uIHNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWxsb2NhdGlvbkxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAtLT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbU92ZXJ2aWV3LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtU2VhcmNoLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlRhYmxlLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5QcmludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uUHVibGljLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OlB1YmxpY0lUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20uY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlB1YmxpYy5jc3M8L0l0ZW0+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/Config/Files/XML/ITSMConfigItemACL.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgo8IS0tIFRPRE86IG1lcmdlIGZpbGUgaW50byBzdGFuZGFyZCBjb25maWdpdGVtLnhtbCAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMU1hdGNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9wZXJ0aWVzRGF0YWJhc2UiPlByb3BlcnRpZXNEYXRhYmFzZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbUFDTEtleXNMZXZlbDFDaGFuZ2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBvc3NpYmxlIj5Qb3NzaWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUG9zc2libGVBZGQiPlBvc3NpYmxlQWRkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQb3NzaWJsZU5vdCI+UG9zc2libGVOb3Q8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0l0ZW0iPkNvbmZpZ0l0ZW08L0l0ZW0+CjwhLS0gVE9ETyAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWN0aW9uPC9JdGVtPiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRm9ybSI+Rm9ybTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbUFDTEtleXNMZXZlbDI6OlBvc3NpYmxlQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSI+Q29uZmlnSXRlbTwvSXRlbT4KPCEtLSBUT0RPICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BY3Rpb248L0l0ZW0+IC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGb3JtIj5Gb3JtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMjo6UG9zc2libGVOb3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtIj5Db25maWdJdGVtPC9JdGVtPgo8IS0tIFRPRE8gICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFjdGlvbjwvSXRlbT4gLS0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZvcm0iPkZvcm08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwyOjpQcm9wZXJ0aWVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGcm9udGVuZCIgVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlciIgVHJhbnNsYXRhYmxlPSIxIj5Vc2VyPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMjo6UHJvcGVydGllc0RhdGFiYXNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyIiBUcmFuc2xhdGFibGU9IjEiPlVzZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwzOjpBY3Rpb25zIyMjMTAwLURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciAnQWN0aW9uJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNvbmZpZ0l0ZW1BQ0w6OkFDTFByZXNlbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ29uZmlnSXRlbUFDTDo6QXV0b3NlbGVjdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+Cg==</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemGenericInterface.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtR2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtVXBzZXJ0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1VcHNlcnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtR2V0IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtR2V0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+NTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iQWdlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOdW1iZXIiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJJbmNpU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+SW5jaWRlbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1ckRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXJyZW50IERlcGxveW1lbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1ckluY2lTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXJyZW50IEluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJBZ2UiIFRyYW5zbGF0YWJsZT0iMSI+QWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDcmVhdGVkIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkNoYW5nZWQiIFRyYW5zbGF0YWJsZT0iMSI+Q2hhbmdlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRG93biIgVHJhbnNsYXRhYmxlPSIxIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJVcCIgVHJhbnNsYXRhYmxlPSIxIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1EZWxldGUjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1EZWxldGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlIyMjRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW52b2tlciBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtTWFuYWdlbWVudDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbU1hbmFnZW1lbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzk3MDAtR2VuZXJpY0ludGVyZmFjZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpIYW5kbGVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihWZXJzaW9uVXBkYXRlfE5hbWVVcGRhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUNyZWF0ZXxDb25maWdJdGVtVXBkYXRlfFZlcnNpb25DcmVhdGV8Q29uZmlnSXRlbURlbGV0ZXxBdHRhY2htZW50QWRkUG9zdHxBdHRhY2htZW50RGVsZXRlUG9zdCk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbUZldGNoOjpDbGFzc2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+PEFycmF5PjwvQXJyYXk+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJEZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1GZXRjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtRmV0Y2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5UaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBhZG1pbiBhcmVhIG9mIE9UT0JPLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgSW52b2tlciBHVUk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJDb25maWdJdGVtIyMjMDA3LUlUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuQWRtaW4uR2VuZXJpY0ludGVyZmFjZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtVXBzZXJ0OjpDbGFzc2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT48QXJyYXk+PC9BcnJheT48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBPcGVyYXRpb24gR1VJPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25Db25maWdJdGVtIyMjMDAyLUdlbmVyaWNJbnRlcmZhY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2UuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5BZG1pbi5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNUcmlnZ2VyQ29uZmlnSXRlbUZldGNoLTAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiIENvbmZpZ0xldmVsPSIxMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDAxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRnVuY3Rpb24iPkV4ZWN1dGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1heGltdW1QYXJhbGxlbEluc3RhbmNlcyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFyYW1zIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPldlYlNlcnZpY2VOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JbnZva2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNUcmlnZ2VyQ29uZmlnSXRlbUZldGNoLTAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiIENvbmZpZ0xldmVsPSIxMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDAyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRnVuY3Rpb24iPkV4ZWN1dGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1heGltdW1QYXJhbGxlbEluc3RhbmNlcyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFyYW1zIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPldlYlNlcnZpY2VOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JbnZva2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNUcmlnZ2VyQ29uZmlnSXRlbUZldGNoLTAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiIENvbmZpZ0xldmVsPSIxMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDAzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRnVuY3Rpb24iPkV4ZWN1dGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1heGltdW1QYXJhbGxlbEluc3RhbmNlcyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFyYW1zIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPldlYlNlcnZpY2VOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JbnZva2VyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4K</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemTicketLink.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzA0Mi1JVFNNQ29uZmlnSXRlbVRpY2tldFN0YXR1c0xpbmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OlRpY2tldDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KExpbmtBZGR8TGlua0RlbGV0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyMwNDItSVRTTUNvbmZpZ0l0ZW1UaWNrZXRTdGF0dXNMaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpUaWNrZXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6VGlja2V0U3RhdHVzTGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihUaWNrZXRTdGF0ZVVwZGF0ZXxUaWNrZXRUeXBlVXBkYXRlKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjNDAwLUxpbmtlZFRpY2tldFVwZGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5VcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6TGlua2VkVGlja2V0VXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KENvbmZpZ0l0ZW1VcGRhdGV8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZSk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua1R5cGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiIFZhbHVlUmVnZXg9IiI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiIFZhbHVlUmVnZXg9IiI+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua1N0YXR1czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5XYXJuaW5nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+T3BlcmF0aW9uYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua1N0YXR1czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZWxldmFudFRvIj5JbmNpZGVudDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI0NNREJOb3RpZmljYXRpb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+Q01EQk5vdGlmaWNhdGlvbnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4wIDQgKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpJVFNNOjpDb25maWdJdGVtOjpDcmVhdGVDb25kaXRpb25hbFRpY2tldHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ01EQk5vdGlmaWNhdGlvbnM6OlJ1bGVzIyMjMDAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtOjpOb3RpZmljYXRpb25FdmVudDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+TGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Qcm9kdWN0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+SVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPi0zMGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPk1pc2M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+VGhlIGxpY2Vuc2UgJmx0O09UT0JPX0NPTkZJR0lURU1fTkFNRSZndDsgcnVucyBvdXQgaW4gMzAgZGF5cyAoJmx0O09UT0JPX0NPTkZJR0lURU1fREFURSZndDspLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkxpY2Vuc2UgUmVuZXdhbDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwOCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwOSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxOCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxOSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAyMCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMyMDAtTGljZW5zZVVwZGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNvdW50TGljZW5zZUxpbmtzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KERlcGxveW1lbnRTdGF0ZVVwZGF0ZXxDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlX3xEZWxldGUpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/GenericInterface/Event/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RXZlbnQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtIC0gR2VuZXJpY0ludGVyZmFjZSBldmVudCBkYXRhIGhhbmRsZXIKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBldmVudCBoYW5kbGVyIGdhdGhlcnMgZGF0YSBmcm9tIG9iamVjdHMuCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ29uZmlnSXRlbUlEISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE9iamVjdERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAleyRPYmplY3REYXRhfTsKfQoKMTsK</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/Common.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwp1c2UgU3RvcmFibGUgICAgIHF3KGRjbG9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW06OkNvbW1vbiAtIGNvbW1vbiBJbnZva2VyIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29tbW9uIGZ1bmN0aW9ucyBmb3IgQ29uZmlnSXRlbXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKICAgIG15ICRDb25maWdJdGVtQ29tbW9uT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCAgICAgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIEludm9rZXIgICAgICAgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsICMgZXhhbXBsZQogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IEludm9rZXIgV2Vic2VydmljZUlEICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWItc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPlByZXBhcmVSZXF1ZXN0KAogICAgICAgIERhdGEgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICB9LAogICAgKTsKClJlc3VsdCBleGFtcGxlOgoKICAgIHsKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgID0+ICdDSUNsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgPT4gJ1NvbWUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSA9PiAnREZWYWx1ZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBMYXN0VmVyc2lvbklEICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZScsCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgID0+IDQ1NiwKICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW0uTWlzc2luZ0RhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFNlbGYtPntJbnZva2VyfSAuICI6IFRoZSByZXF1ZXN0IGRhdGEgaXMgaW52YWxpZCEiLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtLk1pc3NpbmdDb25maWdJdGVtSUQnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFNlbGYtPntJbnZva2VyfSAuICI6IENvbmZpZ0l0ZW1JRCBpcyByZXF1aXJlZCEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbS5NaXNzaW5nQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRTZWxmLT57SW52b2tlcn0gLiAiOiBVc2VyIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjb25maWcgaXRlbSEiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkU2VsZi0+e0ludm9rZXJ9IC4gIjogVXNlciBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgY29uZmlnIGl0ZW0hIiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBdHRhY2htZW50RGF0YTsKICAgIG15IEBDb25maWdJdGVtQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRGaWxlbmFtZSAoQENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCkgewogICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJEZpbGVuYW1lOwogICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIE9ubHlNeUJhY2tlbmQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgIyB1c2UgJ3V0ZjgnIGluc3RlYWQgb2YgJ3V0Zi04JwogICAgICAgICMgYmVjYXVzZSBPcGVyYXRpb24gVGlja2V0Q3JlYXRlL1RpY2tldFVwZGF0ZQogICAgICAgICMgY3VycmVudGx5IGRvZXMgbm90IGFjY2VwdCAndXRmLTgnCiAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gc3t1dGYtOH17dXRmOH07CgogICAgICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9ICk7CgogICAgICAgICRBdHRhY2htZW50LT57RmlsZW5hbWV9ID0gJEZpbGVuYW1lOwogICAgICAgICRBdHRhY2htZW50LT57TWltZVR5cGV9ID0gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CiAgICAgICAgJEF0dGFjaG1lbnQtPntNaW1lVHlwZX0gPX4gc3sgWyw7XSBbIF0qIGNoYXJzZXQ9IC4rIFx6IH17fXhtc2k7CgogICAgICAgICMgcmVtb3ZlIGVtcHR5IGF0dHJpYnV0ZXMKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJEF0dGFjaG1lbnQtPiUqICkgewogICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAkQXR0cmlidXRlIGVxICdDb250ZW50VHlwZSc7CiAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICRBdHRyaWJ1dGUgZXEgJ0NvbnRlbnQnOwogICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiBJc1N0cmluZ1dpdGhEYXRhKCAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9ICk7CiAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9OwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAQXR0YWNobWVudERhdGEsICRBdHRhY2htZW50OwogICAgfQoKICAgICMgYWRkIGF0dGFjaG1lbnRzIHdpdGggb2xkIHN0cnVjdHVyZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQXR0YWNobWVudERhdGEgKSApIHsKICAgICAgICAkQ29uZmlnSXRlbURhdGEtPntBdHRhY2htZW50fSA9IFxAQXR0YWNobWVudERhdGE7CiAgICB9CgogICAgIyByZXBsYWNlIGNvbmZpZyBpdGVtIHZhbHVlcyB3aXRoIHJlYWRhYmxlIHZhbHVlcwogICAgJENvbmZpZ0l0ZW1EYXRhID0gJFNlbGYtPl9UcmFuc2l0aW9uRHluYW1pY0ZpZWxkRGF0YSgKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtRGF0YSwKICAgICk7CgogICAgJFNlbGYtPntSZXF1ZXN0RGF0YX0gPSBcJVBhcmFtOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLAogICAgfTsKfQoKPWhlYWQyIEhhbmRsZVJlc3BvbnNlKCkKCmhhbmRsZSByZXNwb25zZSBkYXRhIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWItc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPkhhbmRsZVJlc3BvbnNlKAogICAgICAgIFJlc3BvbnNlU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAjIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSByZW1vdGUgd2ViLXNlcnZpY2UKICAgICAgICBSZXNwb25zZUVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHdlYi1zZXJ2aWNlIGVycm9yCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICcnLCAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZCBhZnRlciBJbnZva2VyCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIEhhbmRsZVJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHJlc3BvbnNlLCBmb3J3YXJkIGl0CiAgICBpZiAoICEkUGFyYW17UmVzcG9uc2VTdWNjZXNzfSAmJiAhJFBhcmFte0RhdGF9ICkgewogICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbS5SZXNwb25zZUVycm9yJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkU2VsZi0+e0ludm9rZXJ9CiAgICAgICAgICAgICAgICAgICAgLiAiOiBHb3QgcmVzcG9uc2UgZXJyb3IsIGJ1dCBubyByZXNwb25zZSBlcnJvciBtZXNzYWdlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJFBhcmFte0RhdGF9LAogICAgfTsKfQoKPWhlYWQyIFJldHVybkVycm9yKCkKCmhlbHBlciBmdW5jdGlvbiB0byByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KCiAgICBteSAkUmV0dXJuID0gJENvbW1vbk9iamVjdC0+UmV0dXJuRXJyb3IoCiAgICAgICAgRXJyb3JDb2RlICAgID0+IENvbmZpZ0l0ZW0uQWNjZXNzRGVuaWVkLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnWW91IGRvbnQgaGF2ZSByaWdodHMgdG8gYWNjZXNzIHRoaXMgdGlja2V0JywKICAgICk7Cgo9Y3V0CgpzdWIgUmV0dXJuRXJyb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0RlYnVnZ2VyT2JqZWN0fS0+RXJyb3IoCiAgICAgICAgU3VtbWFyeSA9PiAkUGFyYW17RXJyb3JDb2RlfSwKICAgICAgICBEYXRhICAgID0+ICRQYXJhbXtFcnJvck1lc3NhZ2V9LAogICAgKTsKCiAgICAjIHJldHVybiBzdHJ1Y3R1cmUKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkUGFyYW17RXJyb3JDb2RlfTogJFBhcmFte0Vycm9yTWVzc2FnZX0iLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAkUGFyYW17RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUGFyYW17RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKfQoKc3ViIF9UcmFuc2l0aW9uRHluYW1pY0ZpZWxkRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAoKSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtfSApOwoKICAgIG15ICVDb25maWdJdGVtRGF0YSA9ICgKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIEtFWToKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtRGF0YSApIHsKCiAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRDb25maWdJdGVtRGF0YXskS2V5fTsKCiAgICAgICAgaWYgKCAkS2V5ID1+IC9eRHluYW1pY0ZpZWxkXyguKikkLyApIHsKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSAgID0gJDE7CiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRSZWFkYWJsZVZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXskS2V5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFJlYWRhYmxlVmFsdWUpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRheyRLZXl9ID0gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ29uZmlnSXRlbURhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemCreate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uICgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtQ3JlYXRlIEludm9rZXIgYmFja2VuZAoKPWhlYWQxIERFU0NSSVBUSU9OCgpDb250YWlucyBmdW5jdGlvbnMgZm9yIENvbmZpZ0l0ZW1DcmVhdGUuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCBJbnZva2VyICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9LT5QcmVwYXJlUmVxdWVzdCglUGFyYW0pOwp9CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntDb25maWdJdGVtQ29tbW9uT2JqZWN0fS0+SGFuZGxlUmVzcG9uc2UoJVBhcmFtKTsKfQoKc3ViIEhhbmRsZUVycm9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57Q29uZmlnSXRlbUNvbW1vbk9iamVjdH0tPkhhbmRsZVJlc3BvbnNlKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXNwb25zZVN1Y2Nlc3MgPT4gMCwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemFetch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUZldGNoOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhwYWlycyk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1GZXRjaCAtIEdlbmVyaWNJbnRlcmZhY2UgZm9yIElUU00gQ29uZmlnSXRlbXMKCj1oZWFkMSBTWU5PUFNJUwoKR2VuZXJpY0ludGVyZmFjZSBmb3IgSVRTTSBDb25maWdJdGVtcwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbXMKICAgIGZvciBteSAkTmVlZGVkICgKICAgICAgICBxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgSW52b2tlcikKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57JE5lZWRlZH0gPSAkUGFyYW17JE5lZWRlZH07CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KVGhpcyB3aWxsIGp1c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCgogICAgbXkgJFJlc3VsdCA9ICRJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUHJlcGFyZVJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSA/ICRQYXJhbXtEYXRhfSA6IHt9LAogICAgfTsKfQoKPWl0ZW0gSGFuZGxlUmVzcG9uc2UoKQoKaGFuZGxlIHJlc3BvbnNlIGRhdGEgb2YgdGhlIGNvbmZpZ3VyZWQgcmVtb3RlIHdlYiBzZXJ2aWNlLgpUaGlzIHdpbGwganVzdCByZXR1cm4gdGhlIGRhdGEgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPkhhbmRsZVJlc3BvbnNlKAogICAgICAgIFJlc3BvbnNlU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAjIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSByZW1vdGUgd2ViIHNlcnZpY2UKICAgICAgICBSZXNwb25zZUVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHdlYiBzZXJ2aWNlIGVycm9yCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICcnLCAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZCBhZnRlciBJbnZva2VyCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIEhhbmRsZVJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHJlc3BvbnNlLCBmb3J3YXJkIGl0CiAgICBpZiAoICEkUGFyYW17UmVzcG9uc2VTdWNjZXNzfSApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0gfHwgJ1Vua25vd24gRXJyb3InLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCByZWYgJFBhcmFte0RhdGF9IG5lICdIQVNIJyAmJiByZWYgJFBhcmFte0RhdGF9IG5lICdBUlJBWScgKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSW52YWxpZCBzdHJ1Y3R1cmUgZm9yIHBhcmFtZXRlciAnRGF0YScuIiwKICAgICAgICApOwogICAgfQoKICAgICMgTm90aGluZyB0byBkby4KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSAmJiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlN1Y2Nlc3MoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1vdmUgdG9wbGV2ZWwgQ29uZmlnSXRlbXMgaWYgbm90IGdpdmVuIGFzIGRpcmVjdCBhcnJheQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgJiYgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1zfSApIHsKICAgICAgICAkUGFyYW17RGF0YX0gPSAkUGFyYW17RGF0YX17Q29uZmlnSXRlbXN9OwogICAgfQoKICAgICMgdHJhbnNmb3JtIHRvIGFycmF5IHJlZmVyZW5jZQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgKSB7CiAgICAgICAgJFBhcmFte0RhdGF9ID0gWyAkUGFyYW17RGF0YX0gXTsKICAgIH0KCiAgICAjIGdldCB3ZWJzZXJ2aWNlIGNvbmZpZ3VyYXRpb24KICAgIG15ICRXZWJzZXJ2aWNlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZUdldCgKICAgICAgICBJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgICMgZ2V0IGludm9rZXIgY29uZmlnCiAgICBteSAkSW52b2tlckNvbmZpZyA9ICRXZWJzZXJ2aWNlLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkU2VsZi0+e0ludm9rZXJ9IH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICVDSUNsYXNzTWFwcGluZyA9ICgKICAgICAgICBJbmNpZGVudFN0YXRlICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIERlcGxveW1lbnRTdGF0ZSA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgbXkgJUdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cDsKICAgIG15ICVOYW1lTW9kdWxlT2JqZWN0czsKICAgIENJOgogICAgZm9yIG15ICRSZW1vdGVDSURhdGEgKCBAeyAkUGFyYW17RGF0YX0gfSApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFJlbW90ZUNJRGF0YSkgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgcmVtb3RlIENJIHN0cnVjdHVyZSBmb3VuZC4gU2tpcHBpbmcgaXRlbS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICB9CgogICAgICAgIG15IEBSZXF1aXJlZEF0dHJpYnV0ZXMgPSBxdyhDbGFzcyBEZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSk7CiAgICAgICAgbXkgJVJlcXVpcmVkQXR0cmlidXRlczsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAoIHNvcnQgQFJlcXVpcmVkQXR0cmlidXRlcyApIHsKCiAgICAgICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRSZW1vdGVDSURhdGEtPnskTmVlZGVkfSApICkgewoKICAgICAgICAgICAgICAgIG15ICROb3RpY2VJbmZvID0gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0gPyAiTnVtYmVyOiAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfTsiIDogJyc7CiAgICAgICAgICAgICAgICAkTm90aWNlSW5mbyAuPSAkUmVtb3RlQ0lEYXRhLT57TmFtZX0gPyAiTmFtZTogJFJlbW90ZUNJRGF0YS0+e05hbWV9OyIgOiAnJzsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTWlzc2luZyAnJE5lZWRlZCcgcGFyYW1ldGVyIGZvciBjcmVhdGluZy91cGRhdGluZyBhIENJLiBTa2lwcGluZyBpdGVtLiAkTm90aWNlSW5mbyIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXF1aXJlZEF0dHJpYnV0ZXN7JE5lZWRlZH0gPSAkUmVtb3RlQ0lEYXRhLT57JE5lZWRlZH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBJRHMgZm9yIENsYXNzLCBEZXBsLSBhbmQgSW5jaVN0YXRlCiAgICAgICAgZm9yIG15ICRDdXJyZW50Q0kgKCBzb3J0IGtleXMgJUNJQ2xhc3NNYXBwaW5nICkgewoKICAgICAgICAgICAgIyBjcmVhdGUvZ2V0IGxvb2t1cCBmb3IgZ2VuZXJhbCBjYXRhbG9nIGl0ZW1zCiAgICAgICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0l0ZW07CiAgICAgICAgICAgIGlmICggJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9ICkgewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1Mb29rdXB7ICRDSUNsYXNzTWFwcGluZ3skQ3VycmVudENJfSB9LT57ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICFJc0hhc2hSZWZXaXRoRGF0YSgkR2VuZXJhbENhdGFsb2dJdGVtKQogICAgICAgICAgICAgICAgICAgIHx8ICFJc1N0cmluZ1dpdGhEYXRhKCAkR2VuZXJhbENhdGFsb2dJdGVtLT57SXRlbUlEfSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciB3aGlsZSBsb29raW5nIHVwICRDdXJyZW50Q0kgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0nLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFkZCB0byBsb29rdXAKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW1Mb29rdXB7ICRDSUNsYXNzTWFwcGluZ3skQ3VycmVudENJfSB9LT57ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0gfSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFJlcXVpcmVkQXR0cmlidXRlc3sgJEN1cnJlbnRDSSAuICdJRCcgfSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGF0ZXN0IGRlZmluaXRpb24gZm9yIHRoZSBjbGFzcwogICAgICAgIG15ICRDbGFzc0lEID0gJFJlbW90ZUNJRGF0YS0+e0NsYXNzSUR9OwogICAgICAgIGlmICggISRDbGFzc0lEICkgewogICAgICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKICAgICAgICAgICAgJENsYXNzSUQgPSAkUmV2ZXJzZUNsYXNzTGlzdHsgJFJlbW90ZUNJRGF0YS0+e0NsYXNzfSB9OwogICAgICAgIH0KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgdmFsaWRhdGUgZHluYW1pYyBmaWVsZHMKICAgICAgICBEQVRBOgogICAgICAgIGZvciBteSAkRGF0YSAoIHBhaXJzICRSZW1vdGVDSURhdGEtPiUqICkgewogICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gJERhdGEtPkAqOwoKICAgICAgICAgICAgbmV4dCBEQVRBIHVubGVzcyAoICRLZXkgPX4gL15EeW5hbWljRmllbGRfLyApOwoKICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eRHluYW1pY0ZpZWxkXyg/PFBsYWluRmllbGROYW1lPltBLVphLXowLTktXSspLyApIHsKICAgICAgICAgICAgICAgIG15ICRQbGFpbkZpZWxkTmFtZSA9ICQre1BsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGlzIGluIGNsYXNzIGRlZmluaXRpb24KICAgICAgICAgICAgICAgIGlmICggISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskUGxhaW5GaWVsZE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRHluYW1pY0ZpZWxkLT5OYW1lIHBhcmFtZXRlciBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskUGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgdmFsaWRhdGUgdmFsdWUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIHN0cnVjdHVyZXMgYXJlIHN0cmluZyBhbmQgYXJyYXksIG5vIGRhdGEgaW5zaWRlIGlzIG5lZWRlZAogICAgICAgICAgICAgICAgICAgIGlmICggIUlzU3RyaW5nKCRWYWx1ZSkgJiYgcmVmICRWYWx1ZSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEeW5hbWljRmllbGQtPlZhbHVlIHBhcmFtZXRlciBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkSWRlbnRpZmllciA9ICRJbnZva2VyQ29uZmlnLT57ICdJZGVudGlmaWVyJyAuICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0gfTsKICAgICAgICBpZiAoICEkSWRlbnRpZmllciApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgaW1wb3J0aW5nIGl0ZW1zIGluIGNsYXNzICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9IC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhpcyBpdGVtIGV4aXN0cyAodXBkYXRlKSBvciBpcyBuZXcgKGNyZWF0ZSkKICAgICAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtID0gKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBRdWVyeUNvbmRpdGlvbiA9PiAwLAogICAgICAgICk7CiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggJElkZW50aWZpZXItPkAqICkgewogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgPX4gL15EeW4vICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFteyRBdHRyaWJ1dGV9ID0gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUmVtb3RlQ0lEYXRhLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnQ2xhc3NlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17Q2xhc3Nlc30gPSBbICRSZW1vdGVDSURhdGEtPntDbGFzc30gXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte05hbWV9ID0gJFJlbW90ZUNJRGF0YS0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnRGVwbFN0YXRlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17RGVwbFN0YXRlc30gPSBbICRSZW1vdGVDSURhdGEtPntEZXBsb3ltZW50U3RhdGV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfTsKCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NvbmZpZ0l0ZW1JRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm90IGltcG9ydGluZyBpdGVtcyBpbiBjbGFzcyAkUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzfSAtIHNraXBwaW5nLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJlbW90ZUNJRGF0YS0+e0NvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAgICAgbGFzdCBBVFRSSUJVVEU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSAkQXR0cmlidXRlIGFzIElkZW50aWZpZXIgLSBza2lwcGluZy4iLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5laXRoZXIgTnVtYmVyIG5vciBJRCBhcmUgcHJvdmlkZWQgZGlyZWN0bHksIHBlcmZvcm0gYSB0aGUgc2VhcmNoCiAgICAgICAgaWYgKCRDb25maWdJdGVtTnVtYmVyKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goJVNlYXJjaFBhcmFtKTsKCiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbUlEc1swXTsKCiAgICAgICAgICAgIGlmICggc2NhbGFyIEBDb25maWdJdGVtSURzID4gMSApIHsKICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXJzID0gam9pbiggJzsnLCBtYXAgeyIkXyA9PiAkU2VhcmNoUGFyYW17JF99In0ga2V5cyAlU2VhcmNoUGFyYW0gKTsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSBhbWJpZ3VvcyBzZWFyY2ggcmVzdWx0IC0gc2tpcHBpbmcuIFBhcmFtZXRlcnM6ICRTZWFyY2hQYXJhbWV0ZXJzOyIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9LAogICAgICAgICk7CiAgICAgICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlcy0+e05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXMtPntOYW1lTW9kdWxlfVswXSA6ICcnOwogICAgICAgIGlmICgkTmFtZU1vZHVsZSkgewogICAgICAgICAgICBpZiAoICEkTmFtZU1vZHVsZU9iamVjdHN7ICRSZW1vdGVDSURhdGEtPntDbGFzc30gfSApIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JyAuICROYW1lTW9kdWxlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgICAgICAkTmFtZU1vZHVsZU9iamVjdHN7ICRSZW1vdGVDSURhdGEtPntDbGFzc30gfSA9ICRLZXJuZWw6Ok9NLT5HZXQoICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OicgLiAkTmFtZU1vZHVsZSApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICAgICAgZGVsZXRlICRSZW1vdGVDSURhdGEtPntOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPntOYW1lfSA9ICROYW1lTW9kdWxlT2JqZWN0c3sgJFJlbW90ZUNJRGF0YS0+e0NsYXNzfSB9LT5Db25maWdJdGVtTmFtZUNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAkUmVtb3RlQ0lEYXRhLT4lKiwKICAgICAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7SW5jaWRlbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCAmJiAhJFJlbW90ZUNJRGF0YS0+e05hbWV9ICkgewogICAgICAgICAgICBteSAkTm90aWNlSW5mbyA9ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9ID8gIk51bWJlcjogJFJlbW90ZUNJRGF0YS0+e051bWJlcn07IiA6ICcnOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nICdOYW1lJyBwYXJhbWV0ZXIgZm9yIGNyZWF0aW5nIGEgQ0kuIFNraXBwaW5nIGl0ZW0uICROb3RpY2VJbmZvIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJFcnJvciB3aGlsZSB1cGRhdGluZyBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tEZXBsb3ltZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0luY2lkZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igd2hpbGUgY3JlYXRpbmcgQ0kgd2l0aCBOYW1lICckUmVxdWlyZWRBdHRyaWJ1dGVze05hbWV9JywgQ2xhc3MgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9JyAoQ2xhc3NJRDogJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0nKS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPlN1Y2Nlc3MoCiAgICAgICAgRGF0YSA9PiAkUGFyYW17RGF0YX0sCiAgICApOwp9Cgo9aXRlbSBFcnJvcigpCgpXcml0ZSBlcnJvciBtZXNzYWdlIHRvIE9UT0JPIGxvZyBhbmQgcmV0dXJuIGV4aXQgc3RydWN0dXJlLgoKICAgIG15ICRFeGl0U3RydWN0dXJlID0gJENvbW1vbk9iamVjdC0+RXJyb3IoCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICdhbiBlcnJvciBtZXNzYWdlJywKICAgICk7CgpyZXR1cm5zCgogICAgJEV4aXRTdHJ1Y3R1cmUgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdhbiBlcnJvciBtZXNzYWdlJywKICAgIH07Cgo9Y3V0CgpzdWIgRXJyb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciBpbiAnIiAuICRTZWxmLT57SW52b2tlcn0KICAgICAgICAgICAgLiAiJyBJbnZva2VyIChXZWJzZXJ2aWNlSUQ6ICIgLiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0gLiAiKToiCiAgICAgICAgICAgIC4gJFBhcmFte0Vycm9yTWVzc2FnZX0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtFcnJvck1lc3NhZ2V9LAogICAgfTsKfQoKPWl0ZW0gU3VjY2VzcygpCgpXcml0ZSBMYXN0UnVuVGltZXN0YW1wIGNhY2hlIGVudHJ5IGFuZCByZXR1cm4gZXhpdCBzdHJ1Y3R1cmUuCgogICAgbXkgJEV4aXRTdHJ1Y3R1cmUgPSAkQ29tbW9uT2JqZWN0LT5TdWNjZXNzKAogICAgICAgIERhdGEgPT4gJFJldHVybkRhdGEsCiAgICApOwoKcmV0dXJucwoKICAgICRFeGl0U3RydWN0dXJlID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+ICRSZXR1cm5EYXRhLAogICAgfTsKCj1jdXQKCnN1YiBTdWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExhc3RSdW5UaW1lc3RhbXAgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9TdHJpbmcoKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIEtleSAgID0+ICdHZW5lcmljSW50ZXJmYWNlOjpJVFNNOjpDb25maWdJdGVtOjonIC4gJFNlbGYtPntJbnZva2VyfSAuICc6Okxhc3RSdW5UaW1lc3RhbXAnLAogICAgICAgIFZhbHVlID0+ICRMYXN0UnVuVGltZXN0YW1wLAogICAgICAgIFR5cGUgID0+ICdJVFNNQ2hhbmdlSXRlbVdlYnNlcnZpY2UnIC4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDcsCiAgICApOwoKICAgICMgbG9nIGNvbXBsZXRpb24KICAgICRTZWxmLT57RGVidWdnZXJPYmplY3R9LT5EZWJ1ZygKICAgICAgICBTdW1tYXJ5ID0+ICdTdWNjZXNzZnVsbHkgY29tcGxldGVkLicsCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJFBhcmFte0RhdGF9LAogICAgfTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RPQk8gcHJvamVjdCAoTDxodHRwczovL290b2JvLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uICgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtVXBkYXRlIEludm9rZXIgYmFja2VuZAoKPWhlYWQxIERFU0NSSVBUSU9OCgpDb250YWlucyBmdW5jdGlvbnMgZm9yIENvbmZpZ0l0ZW1VcGRhdGUuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCBJbnZva2VyICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9LT5QcmVwYXJlUmVxdWVzdCglUGFyYW0pOwp9CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntDb25maWdJdGVtQ29tbW9uT2JqZWN0fS0+SGFuZGxlUmVzcG9uc2UoJVBhcmFtKTsKfQoKc3ViIEhhbmRsZUVycm9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57Q29uZmlnSXRlbUNvbW1vbk9iamVjdH0tPkhhbmRsZVJlc3BvbnNlKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXNwb25zZVN1Y2Nlc3MgPT4gMCwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/Elasticsearch/ConfigItemManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6RWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBNSU1FOjpCYXNlNjQgcXcoZW5jb2RlX2Jhc2U2NCk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkVsYXN0aWNzZWFyY2g6Ok1hbmFnZW1lbnRDb21tb24gcXcoUmVtb3ZlRVNXZWlnaHRlZFNlYXJjaEJvb3N0U3VmZml4KTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1zIGFuZCBzdG9yZSB0aGVtIGluICRTZWxmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlELykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KVGhpcyB3aWxsIGp1c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCgogICAgbXkgJFJlc3VsdCA9ICRJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUHJlcGFyZVJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgZm9yIG15ICROZWVkZWQgKHF3L0V2ZW50IENvbmZpZ0l0ZW1JRC8pIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGRvIG5vdGhpbmcgaWYgQ29uZmlnSXRlbXMgYXJlIG5vdCBjb25maWd1cmVkCiAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSBhbGwgZXZlbnRzIHdoaWNoIGFyZSBuZWl0aGVyIHVwZGF0ZSBub3IgY3JlYXRpb24gZmlyc3QKCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFBhcmFte0RhdGF9e0V2ZW50fSBlcSAnQ29uZmlnSXRlbURlbGV0ZScgKSB7CiAgICAgICAgbXkgJUNvbnRlbnQgPSAoCiAgICAgICAgICAgIHF1ZXJ5ID0+IHsKICAgICAgICAgICAgICAgIHRlcm0gPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJ19kZWxldGVfYnlfcXVlcnknLAogICAgICAgICAgICAgICAgaWQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHB1dCBhIHNpbmdsZSB0ZW1wb3JhcnkgYXR0YWNobWVudCBpbnRvIGEgcXVldWUKICAgICMgbW9yZSB0aGFuIG9uZSBhdHRhY2hlbWVudCBjb3VsZCBiZSBwdXQgcGVyIGNhbGwsIGJ1dCB0aGlzIHdvdWxkIG1ha2UgZXJyb3IgaGFuZGxpbmcgaGFyZGVyCiAgICBpZiAoICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ1B1dFRNUEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBmaWxlIGZvcm1hdCB0byBiZSBpbmdlc3RlZAogICAgICAgIG15ICRGaWxlRm9ybWF0ID0gJENvbmZpZ09iamVjdC0+R2V0KCdFbGFzdGljc2VhcmNoOjpJbmdlc3RBdHRhY2htZW50Rm9ybWF0Jyk7CiAgICAgICAgbXkgJUZvcm1hdEhhc2ggPSBtYXAgeyAkXyA9PiAxIH0gQHskRmlsZUZvcm1hdH07CgogICAgICAgIG15ICRNYXhGaWxlc2l6ZSA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6SW5nZXN0TWF4RmlsZXNpemUnKTsKICAgICAgICBteSAkRmlsZW5hbWUgICAgPSAkUGFyYW17RGF0YX17RmlsZW5hbWV9OwogICAgICAgIG15ICRDb250ZW50VHlwZSA9ICRQYXJhbXtEYXRhfXtDb250ZW50VHlwZX07CiAgICAgICAgbXkgJEZpbGVzaXplICAgID0gJFBhcmFte0RhdGF9e0ZpbGVzaXplfTsKCiAgICAgICAgIyBpbmdlc3QgYXR0YWNobWVudCBvbmx5IGlmIGZpbGVzaXplIGxlc3MgdGhhbiBkZWZpbmVkIGluIHN5c2NvbmZpZwogICAgICAgIGlmICggJEZpbGVzaXplID4gJE1heEZpbGVzaXplICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAoJFR5cGVGb3JtYXQpID0gJENvbnRlbnRUeXBlID1+IG0vXi4qP1wvKFtcZFx3XSspLzsKICAgICAgICBteSAoJE5hbWVGb3JtYXQpID0gJEZpbGVuYW1lICAgID1+IG0vXC4oW1xkXHddKykkLzsKCiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgaWYgKCAkRm9ybWF0SGFzaHskVHlwZUZvcm1hdH0gfHwgJEZvcm1hdEhhc2h7JE5hbWVGb3JtYXR9ICkgewogICAgICAgICAgICBteSAkRW5jb2RlZCA9IGVuY29kZV9iYXNlNjQoICRQYXJhbXtEYXRhfXtDb250ZW50fSApOwogICAgICAgICAgICAkRW5jb2RlZCA9fiBzL1xuLy9nOwogICAgICAgICAgICAkRGF0YXtmaWxlbmFtZX0gPSAkRmlsZW5hbWU7CiAgICAgICAgICAgICREYXRhe2RhdGF9ICAgICA9ICRFbmNvZGVkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBub3QgYSB2YWxpZCBmaWxlIHR5cGUKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTdG9wQ29tbXVuaWNhdGlvbiA9PiAxLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIGRvY2FwaSAgICAgID0+ICdfZG9jJywKICAgICAgICAgICAgICAgIHBhdGggICAgICAgID0+ICdBdHRhY2htZW50cycsICAgICMgYWN0dWFsbHkgdGhlIHBpcGVsaW5lCiAgICAgICAgICAgICAgICBpZCAgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+IFsgXCVEYXRhIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSB0aGUgcmVndWxhciB1cGRhdGluZyBhbmQgY3JlYXRpb24KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGF0dGFjaG1lbnQgbWFuYWdlbWVudAogICAgaWYgKCAkUGFyYW17RGF0YX17RXZlbnR9IGVxICdBdHRhY2htZW50QWRkUG9zdCcgKSB7CiAgICAgICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CgogICAgICAgICMgY3JlYXRlIGEgdGVtcG9yYXJ5IGluZGV4IHRvICJpbmdlc3QiIHRoZSBhdHRhY2htZW50CiAgICAgICAgbXkgJFJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtSW5nZXN0QXR0YWNobWVudCcsCiAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAwLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJXsgJFBhcmFte0RhdGF9IH0sCiAgICAgICAgICAgICAgICBFdmVudCA9PiAnUHV0VE1QQXR0YWNobWVudCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4sIGlmIGF0dGFjaG1lbnQgd2FzIG5vdCBhZGRlZAogICAgICAgIGlmICggISRSZXN1bHQgfHwgISRSZXN1bHQtPntEYXRhfXtfaWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJVJlcXVlc3QgPSAoCiAgICAgICAgICAgIGlkID0+ICRSZXN1bHQtPntEYXRhfXtfaWR9LAogICAgICAgICk7CiAgICAgICAgbXkgJUFQSSA9ICgKICAgICAgICAgICAgZG9jYXBpID0+ICdfZG9jJywKICAgICAgICApOwogICAgICAgIG15ICVJbmRleE5hbWUgPSAoCiAgICAgICAgICAgIGluZGV4ID0+ICd0bXBhdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXRyaWV2ZSB0aGUgcmVzdWx0IG9mIHRoZSBpbmdlc3QtcGx1Z2luCiAgICAgICAgJFJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgSW52b2tlciAgICAgID0+ICdVdGlsc0luZ2VzdF9HRVQnLAogICAgICAgICAgICBBc3luY2hyb25vdXMgPT4gMCwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIEluZGV4TmFtZSA9PiBcJUluZGV4TmFtZSwKICAgICAgICAgICAgICAgIFJlcXVlc3QgICA9PiBcJVJlcXVlc3QsCiAgICAgICAgICAgICAgICBBUEkgICAgICAgPT4gXCVBUEksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmVwYXJlIHByb2Nlc3NlZCBkYXRhIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBhdHRhY2htZW50IGFycmF5IG9mIHRoZSBDSQogICAgICAgIG15IEBBdHRhY2htZW50QXJyYXk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50QXR0ciAoIEB7ICRSZXN1bHQtPntEYXRhfXtfc291cmNlfXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgbXkgJUF0dGFjaG1lbnQgPSAoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkQXR0YWNobWVudEF0dHItPntmaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICA9PiAkQXR0YWNobWVudEF0dHItPnthdHRhY2htZW50fXtjb250ZW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudEFycmF5LCBcJUF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgZG9jIGluIHRtcGF0dGFjaG1lbnQKICAgICAgICAkUmVzdWx0ID0gJFJlcXVlc3Rlck9iamVjdC0+UnVuKAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJ1V0aWxzSW5nZXN0X0RFTEVURScsCiAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAwLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgSW5kZXhOYW1lID0+IFwlSW5kZXhOYW1lLAogICAgICAgICAgICAgICAgUmVxdWVzdCAgID0+IFwlUmVxdWVzdCwKICAgICAgICAgICAgICAgIEFQSSAgICAgICA9PiBcJUFQSSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSB0aGUgQ0kgd2l0aCB0aGUgZXh0cmFjdGVkIGRhdGEKICAgICAgICBteSAlQ29udGVudCA9ICgKICAgICAgICAgICAgc2NyaXB0ID0+IHsKICAgICAgICAgICAgICAgIHNvdXJjZSA9PiAnY3R4Ll9zb3VyY2UuQXR0YWNobWVudHMuYWRkQWxsKHBhcmFtcy5uZXcpJywKICAgICAgICAgICAgICAgIHBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgbmV3ID0+IFxAQXR0YWNobWVudEFycmF5LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgZG9jYXBpID0+ICdfdXBkYXRlJywKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICVDb250ZW50LAogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ0F0dGFjaG1lbnREZWxldGVQb3N0JyApIHsKICAgICAgICBteSAkUmVxdWVzdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInKTsKCiAgICAgICAgIyBzZXQgcGFyYW1ldGVycwogICAgICAgIG15ICVSZXF1ZXN0ID0gKAogICAgICAgICAgICBpZCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwogICAgICAgIG15ICVBUEkgPSAoCiAgICAgICAgICAgIGRvY2FwaSA9PiAnX2RvYycsCiAgICAgICAgKTsKICAgICAgICBteSAlSW5kZXhOYW1lID0gKAogICAgICAgICAgICBpbmRleCA9PiAnY29uZmlnaXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXRyaWV2ZSB0aGUgY3VycmVudCBhdHRhY2htZW50cwogICAgICAgIG15ICRSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICAgICAgICAgIEludm9rZXIgICAgICA9PiAnVXRpbHNJbmdlc3RfR0VUJywKICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+IDAsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBJbmRleE5hbWUgPT4gXCVJbmRleE5hbWUsCiAgICAgICAgICAgICAgICBSZXF1ZXN0ICAgPT4gXCVSZXF1ZXN0LAogICAgICAgICAgICAgICAgQVBJICAgICAgID0+IFwlQVBJLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJlcGFyZSBwcm9jZXNzZWQgZGF0YSB0byBiZSBhcHBlbmRlZCB0byB0aGUgYXR0YWNobWVudCBhcnJheSBvZiB0aGUgQ0kKICAgICAgICBteSBAQXR0YWNobWVudEFycmF5ID0gKCk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFJlc3VsdC0+e0RhdGF9e19zb3VyY2V9e0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAgICAgIyBzb3J0IG91dCBkZWxldGVkIGF0dGFjaG1lbnQKICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfSBuZSAkUGFyYW17RGF0YX17RmlsZW5hbWV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudEFycmF5LCBcJXskQXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVDb250ZW50ID0gKAogICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRBcnJheSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgZG9jYXBpID0+ICdfdXBkYXRlJywKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIGRvYyAgICA9PiBcJUNvbnRlbnQsCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQoKICAgICMgaWdub3JlIGV2ZW50cyBvdGhlciB0aGFuIENvbmZpZ0l0ZW1DcmVhdGUgb3IgQ29uZmlnSXRlbVVwZGF0ZQogICAgaWYgKCAkUGFyYW17RGF0YX17RXZlbnR9ICF+IC9Db25maWdJdGVtQ3JlYXRlfENvbmZpZ0l0ZW1VcGRhdGUvICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSBleGNsdXNpb25zCiAgICBteSAkRXhjbHVkZWRDbGFzc2VzICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdFbGFzdGljc2VhcmNoOjpFeGNsdWRlZENJQ2xhc3NlcycpOwogICAgbXkgJEV4Y2x1ZGVkRGVwbFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6RXhjbHVkZWRDSURlcGxveW1lbnRTdGF0ZXMnKTsKICAgICRFeGNsdWRlZENsYXNzZXMgICAgPSAkRXhjbHVkZWRDbGFzc2VzICAgID8geyBtYXAgeyAkXyA9PiAxIH0gQHskRXhjbHVkZWRDbGFzc2VzfSB9ICAgIDogdW5kZWY7CiAgICAkRXhjbHVkZWREZXBsU3RhdGVzID0gJEV4Y2x1ZGVkRGVwbFN0YXRlcyA/IHsgbWFwIHsgJF8gPT4gMSB9IEB7JEV4Y2x1ZGVkRGVwbFN0YXRlc30gfSA6IHVuZGVmOwoKICAgICMgZGVmaW5lIHRoZSBkZWZhdWx0IEFQSQogICAgbXkgJEFQSSA9ICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ0NvbmZpZ0l0ZW1DcmVhdGUnID8gJ19kb2MnIDogJ191cGRhdGUnOwoKICAgICMgZXhjbHVkZWQgY2xhc3NlcyBhbmQgZGVwbG95bWVudCBzdGF0ZXMKICAgIGlmICggZGVmaW5lZCAkRXhjbHVkZWRDbGFzc2VzIHx8IGRlZmluZWQgJEV4Y2x1ZGVkRGVwbFN0YXRlcyApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gaWYgY2xhc3MgaXMgZXhjbHVkZWQKICAgICAgICBpZiAoIGRlZmluZWQgJEV4Y2x1ZGVkQ2xhc3NlcyAmJiAkRXhjbHVkZWRDbGFzc2VzLT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU3RvcENvbW11bmljYXRpb24gPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgaWYgdGhlIERlcGxveW1lbnRTdGF0ZSBpcyBjaGFuZ2VkLCBjaGVjayBpZiB0aGUgY29uZmlnIGl0ZW0gaGFzIHRvIGJlIGNyZWF0ZWQgb3IgZGVsZXRlZCBpbiBFUwogICAgICAgIGlmICggZGVmaW5lZCAkRXhjbHVkZWREZXBsU3RhdGVzICkgewoKICAgICAgICAgICAgIyBhIENJIHdpdGggbm8gb2xkIHN0YXRlIGFuZCBpbiBhIGN1cnJlbnQgZXhjbHVkZWQgc3RhdGUKICAgICAgICAgICAgIyBtZWFucyB0aGF0IHRoZSBDSSBoYXMganVzdCBiZWVuIGNyZWF0ZWQgaW4gdGhhdCBpbml0aWFsIGV4Y2x1ZGVkIHN0YXRlCiAgICAgICAgICAgICMgaW4gdGhhdCBjYXNlIGRvIG5vdGhpbmcgYW5kIGRvIG5vdCBldmVuIGJvdGhlciB0byBtYWtlIGFuIEVTIGNhbGwKICAgICAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9e09sZERlcGxTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRFeGNsdWRlZERlcGxTdGF0ZXMtPnsgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcENvbW11bmljYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFuIG9sZCBzdGF0ZSBhbHJlYWR5IGV4aXN0cwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJE9sZERlcGxTdGF0ZSA9ICRTdGF0ZUxpc3QtPnsgJFBhcmFte0RhdGF9e09sZERlcGxTdGF0ZX0gfTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgaWYgYm90aCB0aGUgb2xkIGFuZCB0aGUgbmV3IHN0YXRlIGFyZSBleGNsdWRlZAogICAgICAgICAgICAgICAgaWYgKCAkRXhjbHVkZWREZXBsU3RhdGVzLT57JE9sZERlcGxTdGF0ZX0gJiYgJEV4Y2x1ZGVkRGVwbFN0YXRlcy0+eyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBTdG9wQ29tbXVuaWNhdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpZiB0aGUgQ0kgd2FzIG1vdmVkIHRvIGFuIGV4Y2x1ZGVkIHN0YXRlLCBkZWxldGUgaXQKICAgICAgICAgICAgICAgIGVsc2lmICggISRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSAmJiAkRXhjbHVkZWREZXBsU3RhdGVzLT57ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICVDb250ZW50ID0gKAogICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJ19kZWxldGVfYnlfcXVlcnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBDSSB3YXMgbW92ZWQgb3V0IG9mIGFuIGV4Y2x1ZGVkIGRlcGxveW1lbnQgc3RhdGUsIGNyZWF0ZSBpdAogICAgICAgICAgICAgICAgIyBpbiB0aGF0IGNhc2Ugb3ZlcnJpZGUgdGhlIHByZXZpb3VzICRBUEkgdmFsdWUgdG8gJ19kb2MnCiAgICAgICAgICAgICAgICBlbHNpZiAoICRQYXJhbXtEYXRhfXtPbGREZXBsU3RhdGV9ICYmICRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQVBJID0gJ19kb2MnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZWxzZSBpdCB3YXMgYSBub3JtYWwgdHJhbnNpdGlvbiBiZXR3ZWVuIG5vbiBleGNsdWRlZCBzdGF0ZXMsIHNvIG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzY29wZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGFsbCBmaWVsZHMgd2hpY2ggaGF2ZSB0byBiZSBzdG9yZWQKICAgIG15ICRTdG9yZSAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpOwogICAgbXkgJFNlYXJjaCA9IFJlbW92ZUVTV2VpZ2h0ZWRTZWFyY2hCb29zdFN1ZmZpeCgKICAgICAgICBEYXRhID0+ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbVNlYXJjaEZpZWxkcycpCiAgICApOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICVEYXRhVG9TdG9yZTsKICAgIGZvciBteSAkRmllbGQgKCBAeyAkU3RvcmUtPntCYXNpY30gfSwgQHsgJFNlYXJjaC0+e0Jhc2ljfSB9ICkgewogICAgICAgICREYXRhVG9TdG9yZXskRmllbGR9ID0gMTsKICAgIH0KCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBAeyAkU3RvcmUtPntEeW5hbWljRmllbGR9IH0sIEB7ICRTZWFyY2gtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZDsKCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0gZXEgJ0lUU01Db25maWdJdGVtJyApIHsKICAgICAgICAgICAgJERhdGFUb1N0b3JleyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZE5hbWUifSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSByZXF1ZXN0CiAgICBteSAlQ29udGVudDsKICAgIG15ICRHZXREeW5hbWljRmllbGRzID0gKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWFyY2gtPntEeW5hbWljRmllbGR9ICkgfHwgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RvcmUtPntEeW5hbWljRmllbGR9ICkgKSA/IDEgOiAwOwogICAgbXkgJFZlcnNpb24gICAgICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgIyBpdGVyYXRlIG92ZXIgZHluYW1pYyBmaWVsZHMgYW5kIHJlcGxhY2UgdmFsdWUgd2l0aCBEaXNwbGF5VmFsdWVSZW5kZXIgcmVzdWx0CiAgICBpZiAoJEdldER5bmFtaWNGaWVsZHMpIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICRERk5hbWUgKCBncmVwIHsgJERhdGFUb1N0b3JleyRffSAmJiAkXyA9fiAvXkR5bmFtaWNGaWVsZF8vIH0ga2V5cyAlRGF0YVRvU3RvcmUgKSB7CiAgICAgICAgICAgIG15ICRERk5hbWVTaG9ydCA9IHN1YnN0ciAkREZOYW1lLCBsZW5ndGgoJ0R5bmFtaWNGaWVsZF8nKTsKICAgICAgICAgICAgbXkgJERGQ29uZmlnICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRERk5hbWVTaG9ydCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgIG15ICRERlZhbHVlU3RydWN0dXJlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uLT57JERGTmFtZX0sCiAgICAgICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWZXJzaW9uLT57JERGTmFtZX0gPSAkREZWYWx1ZVN0cnVjdHVyZS0+e1ZhbHVlfTsKICAgICAgICB9CiAgICB9CiAgICAlQ29udGVudCA9ICgKICAgICAgICAoIG1hcCB7ICRfID0+ICRWZXJzaW9uLT57JF99IH0ga2V5cyAlRGF0YVRvU3RvcmUgKSwKICAgICk7CiAgICAkQ29udGVudHtBdHRhY2htZW50c30gPSBbXTsKCiAgICBpZiAoICRBUEkgZXEgJ191cGRhdGUnICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJEFQSSwKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIGRvYyAgICA9PiBcJUNvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJEFQSSwKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICVDb250ZW50LAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9Cn0KCj1oZWFkMiBIYW5kbGVSZXNwb25zZSgpCgpoYW5kbGUgcmVzcG9uc2UgZGF0YSBvZiB0aGUgY29uZmlndXJlZCByZW1vdGUgd2ViIHNlcnZpY2UuClRoaXMgd2lsbCBqdXN0IHJldHVybiB0aGUgZGF0YSB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgoKICAgIG15ICRSZXN1bHQgPSAkSW52b2tlck9iamVjdC0+SGFuZGxlUmVzcG9uc2UoCiAgICAgICAgUmVzcG9uc2VTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICMgc3VjY2VzcyBzdGF0dXMgb2YgdGhlIHJlbW90ZSB3ZWIgc2VydmljZQogICAgICAgIFJlc3BvbnNlRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAjIGluIGNhc2Ugb2Ygd2ViIHNlcnZpY2UgZXJyb3IKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiB0aGUgcmVzcG9uc2UsIGZvcndhcmQgaXQKICAgIGlmICggISRQYXJhbXtSZXNwb25zZVN1Y2Nlc3N9ICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSwKICAgICAgICB9OwogICAgfQoKICAgICMgUGVyIGRlZmF1bHQgdGhlcmUgaXMgbm8gcmVzY2hlZHVsaW5nIG9mIEVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50IHJlcXVlc3RzLAogICAgIyBidXQgRXJyb3JIYW5kbGluZzo6UmVxdWVzdFJldHJ5IGNvdWxkIGhhdmUgYmVlbiBjb25maWd1cmVkIG1hbnVhbGx5LCBlLmcuIHZpYSB0aGUgYWRtaW4gaW50ZXJmYWNlLgogICAgaWYgKCAkUGFyYW17RGF0YX17UmVzcG9uc2VDb250ZW50fSAmJiAkUGFyYW17RGF0YX17UmVzcG9uc2VDb250ZW50fSA9fiBte1JlU2NoZWR1bGU9MX0gKSB7CgogICAgICAgICMgUmVzcG9uc2VDb250ZW50IGhhcyBVUkkgbGlrZSBwYXJhbXMsIGNvbnZlcnQgdGhlbSBpbnRvIGEgaGFzaAogICAgICAgIG15ICVRdWVyeVBhcmFtcyA9IHNwbGl0IC9bJj1dLywgJFBhcmFte0RhdGF9e1Jlc3BvbnNlQ29udGVudH07CgogICAgICAgICMgdW5lc2NhcGUgVVJJIHN0cmluZ3MgaW4gcXVlcnkgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW0gKCBzb3J0IGtleXMgJVF1ZXJ5UGFyYW1zICkgewogICAgICAgICAgICAkUXVlcnlQYXJhbXN7JFBhcmFtfSA9IFVSSTo6RXNjYXBlOjp1cmlfdW5lc2NhcGUoICRRdWVyeVBhcmFtc3skUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICAjIGZpeCBFeGVjdXRpb25UaW1lIHBhcmFtCiAgICAgICAgaWYgKCAkUXVlcnlQYXJhbXN7RXhlY3V0aW9uVGltZX0gKSB7CiAgICAgICAgICAgICRRdWVyeVBhcmFtc3tFeGVjdXRpb25UaW1lfSA9fiBzeyhcZCspXCsoXGQrKX17JDEgJDJ9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUmUtU2NoZWR1bGluZy4uLicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVF1ZXJ5UGFyYW1zLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiAkUGFyYW17RGF0YX0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/Common.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb247Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbik7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0KCk7CnVzZSBFbmNvZGU7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uIC0gQmFzZSBjbGFzcyBmb3IgYWxsIENJIE9wZXJhdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgSW5pdCgpCgppbml0aWFsaXplIHRoZSBvcGVyYXRpb24gYnkgY2hlY2tpbmcgdGhlIHdlYiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24gYW5kIGdhdGhlciBvZiB0aGUgZHluYW1pYyBmaWVsZHMKCiAgICBteSAkUmV0dXJuID0gJENvbW1vbk9iamVjdC0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gMSwKICAgICk7CgpyZXR1cm5zOgoKICAgICRSZXR1cm4gPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwIGluIGNhc2Ugb2YgZmFpbHVyZSwKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIE1lc3NhZ2UnLAogICAgfQoKPWN1dAoKc3ViIEluaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgaWYgKCAhJFBhcmFte1dlYnNlcnZpY2VJRH0gKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vIFdlYnNlcnZpY2VJRCEiLAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgd2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbgogICAgbXkgJFdlYnNlcnZpY2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRQYXJhbXtXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZSkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgV2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbicKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uOjpuZXcoKScsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBWYWxpZGF0ZUNsYXNzKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gQ2xhc3MgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlQ2xhc3MoCiAgICAgICAgQ2xhc3MgPT4gJ3NvbWUgY2xhc3MnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVDbGFzcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDbGFzc307CgogICAgIyBjaGVjayBmb3IgQ2xhc3Mgc2VudAogICAgbXkgJEl0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17Q2xhc3N9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVEZXBsU3RhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBEZXBsU3RhdGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlRGVwbFN0YXRlKAogICAgICAgIERlbHBTdGF0ZSA9PiAnc29tZSBEZXBsU3RhdGUnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVEZXBsU3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RGVwbFN0YXRlfTsKCiAgICAjIGNoZWNrIGZvciBDbGFzcyBzZW50CiAgICBteSAkSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17RGVwbFN0YXRlfSwKICAgICk7CgogICAgIyByZXR1cm4gZmFsc2UgaWYgaXRlbSBkYXRhIGlzIGVtcHR5CiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRJdGVtRGF0YVJlZik7CgogICAgIyBsb29rcyBmaW5lCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5jaVN0YXRlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gSW5jaVN0YXRlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUluY2lTdGF0ZSgKICAgICAgICBJbmNpU3RhdGUgPT4gJ3NvbWUgSW5jaVN0YXRlJywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlSW5jaVN0YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0luY2lTdGF0ZX07CgogICAgIyBjaGVjayBmb3IgQ2xhc3Mgc2VudAogICAgbXkgJEl0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtJbmNpU3RhdGV9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dFRleHQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dFRleHQoCiAgICAgICAgVmFsdWUgICAgID0+ICdzb21lIHZhbHVlJywKICAgICAgICBNYXhMZW5ndGggPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dFRleHQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGxlbmd0aAogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0lucHV0fS0+e01heExlbmd0aH0KICAgICAgICAmJiAkUGFyYW17SW5wdXR9LT57TWF4TGVuZ3RofQogICAgICAgICYmIGxlbmd0aCAkUGFyYW17VmFsdWV9ID4gJFBhcmFte0lucHV0fS0+e01heExlbmd0aH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcnLAogICAgKTsKCm9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlKAogICAgICAgIFZhbHVlID0+ICcxOTc3LTEyLTEyJywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlSW5wdXREYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIwNS8xOC8yMDExIgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7Mn0pIC8gKFxkezJ9KSAvIChcZHs0fSkgXHp9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQzIC4gJy0nIC4gJDEgLiAnLScgLiAkMiAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjIwMTEtMDUtMTgiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHs0fSAtIFxkezJ9IC0gXGR7Mn0gXHopIH14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDEgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIENvbnZlcnQgdGhlIHJhdyBkYXRhIHRvIGEgc3lzdGVtIGRhdGV0aW1lIG9iamVjdC4KICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgU3RyaW5nID0+ICRWYWx1ZSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICREYXRlVGltZU9iamVjdDsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGVUaW1lKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTk3Ny0xMi0xMiAxMjowMDowMCcsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0RGF0ZVRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSAoXGR7Mn0gOiBcZHsyfSA6IFxkezJ9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJDQ7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERhdGVUaW1lT2JqZWN0OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEludGVnZXIoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dEludGVnZXIoCiAgICAgICAgVmFsdWUgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEludGVnZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhSXNJbnRlZ2VyKCRWYWx1ZSk7CgogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1ZhbHVlTWlufSAmJiAkVmFsdWUgPCAkUGFyYW17VmFsdWVNaW59OwogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1ZhbHVlTWF4fSAmJiAkVmFsdWUgPiAkUGFyYW17VmFsdWVNYXh9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCB0aGUgdmFsdWVzIGZvciB0aGUgR2VuZXJhbCBjYXRhbG9nIGNsYXNzCiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0lucHV0fS0+e0NsYXNzfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gaWYgISRJdGVtTGlzdExvb2t1cHskVmFsdWV9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRDdXN0b21lcigKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBsb2dpbicsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0Q3VzdG9tZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhJFZhbHVlOwoKICAgIG15ICVDdXN0b21lckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgVXNlciA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKCiAgICAjIGlmIGN1c3RvbWVyIGlzIG5vdCByZWdpc3RlcmVkIGluIHRoZSBkYXRhYmFzZQogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVDdXN0b21lckRhdGEgKTsKCiAgICAjIGlmIFZhbGlkSUQgaXMgcHJlc2VudCwgY2hlY2sgaWYgaXQgaXMgdmFsaWQhCiAgICBpZiAoIGRlZmluZWQgJEN1c3RvbWVyRGF0YXtWYWxpZElEfSApIHsKCiAgICAgICAgIyByZXR1cm4gZmFsc2UgaWYgY3VzdG9tZXIgaXMgbm90IHZhbGlkCiAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExvb2t1cCggVmFsaWRJRCA9PiAkQ3VzdG9tZXJEYXRhe1ZhbGlkSUR9ICkgbmUgJ3ZhbGlkJzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5wdXRDdXN0b21lckNvbXBhbnkoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSgKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBjb21wYW55IG5hbWUnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgcmV0dXJuIGlmICEkVmFsdWU7CgogICAgbXkgJUNvbXBhbnlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlMaXN0KAogICAgICAgIExpbWl0ID0+IDAsICAgICMgRGlzcGxheSBhbGwgQ3VzdG9tZXIgQ29tcGFuaWVzCiAgICApOwoKICAgIHJldHVybiBpZiAhJENvbXBhbnlMaXN0eyAkUGFyYW17VmFsdWV9IH07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZU1pbWVUeXBlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gTWltZVR5cGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlTWltZVR5cGUoCiAgICAgICAgTWltZVR5cGVJRCA9PiAnc29tZSBNaW1lVHlwZScsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZU1pbWVUeXBlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte01pbWVUeXBlfTsKCiAgICByZXR1cm4gaWYgJFBhcmFte01pbWVUeXBlfSAhfiBte1xBXHcrXC9cdytcen07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNoYXJzZXQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBDaGFyc2V0IGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUNoYXJzZXQoCiAgICAgICAgQ2hhcnNldCA9PiAnc29tZSBjaGFyc2V0JywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlQ2hhcnNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDaGFyc2V0fTsKCiAgICBteSAkQ2hhcnNldExpc3QgPSAkU2VsZi0+X0NoYXJzZXRMaXN0OwoKICAgIHJldHVybiB1bmxlc3MgJENoYXJzZXRMaXN0LT57ICRQYXJhbXtDaGFyc2V0fSB9OwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNvbnRlbnRUeXBlKCkKCmNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvbnRlbnQgdHlwZS4KClZhbGlkIHZhbHVlcyBmb3IgdGhlIE1JTUUgaGVhZGVyIEk8Q29udGVudC1UeXBlPiBhcmUgc3BlY2lmaWVkIGluIEw8UkZDIDIwNDV8aHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzIwNDUjc2VjdGlvbi01LjE+LgpUaGlzIHNwZWMgYWxsb3dzIGUuZy4gYmFyZSBjYXJyaWFnZSByZXR1cm4gYW5kIGJhY2tzbGFzaCBxdW90ZWQgbGluZSBmZWVkIGNoYXJhY3RlcnMgaW4gdGhlIHZhbHVlLiBCdXQgaW4gT1RPQk8gd2UKY2FuIGJlIG1vcmUgc3RyaWN0LiBUaGlzIGlzIGJlY2F1c2UgdXN1YWxseSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBtZWRpYSB0eXBlIGFuZCBpbiB0aGUgY2hhcnNldC4KVGh1cyB0aGUgZm9sbG93aW5nLCBzb21ld2hhdCBhcmJpdHJhcnksIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBUaGUgY2hhcmFjdGVyIGNhcnJpYWdlIHJldHVybiBpcyBub3QgYWxsb3dlZAoKPWl0ZW0gVGhlIGNoYXJhY3RlciBsaW5lIGZlZWQgaXMgbm90IGFsbG93ZWQKCj1pdGVtIFRoZSBNSU1FIHR5cGUsIGFrYSBtZWRpYSB0eXBlLCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHZhbHVlIGFuZCBtYXRjaGVzIEM8cXJ7XHcvXHd9aT4KCj1pdGVtIFRoZSBjaGFyYWN0ZXIgc2V0IGlzIGV4dHJhY3RlZCBieSBzb21lIHJlZ2V4ZXMgYW5kIGlzIHJlY29nbml6ZWQgYnkgdGhlIEM8RW5jb2RlPiBtb2R1bGUKCj1iYWNrCgo9Y3V0CgpzdWIgVmFsaWRhdGVDb250ZW50VHlwZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb250ZW50VHlwZX07CgogICAgbXkgJENvbnRlbnRUeXBlID0gJFBhcmFte0NvbnRlbnRUeXBlfTsKCiAgICAjIHByb2hpYml0IGNhcnJpYWdlIHJldHVybiBhbmQgbGluZSBmZWVkCiAgICByZXR1cm4gaWYgJENvbnRlbnRUeXBlID1+IG0vW1xyXG5dLzsKCiAgICAjIGNoZWNrIHRoZSBvcHRpb25hbCBDaGFyc2V0IHBhcnQKICAgIG15ICRDaGFyc2V0ID0gJyc7CiAgICBpZiAoICRDb250ZW50VHlwZSA9fiBtL2NoYXJzZXQ9L2kgKSB7CiAgICAgICAgJENoYXJzZXQgPSAkQ29udGVudFR5cGU7CiAgICAgICAgJENoYXJzZXQgPX4gcy8uKz9jaGFyc2V0PSgifCd8KShcdyspLyQyL2dpOwogICAgICAgICRDaGFyc2V0ID1+IHMvInwnLy9nOwogICAgICAgICRDaGFyc2V0ID1+IHMvKC4rPyk7LiovJDEvZzsKICAgIH0KCiAgICBpZiAoICRDaGFyc2V0ICYmICEkU2VsZi0+VmFsaWRhdGVDaGFyc2V0KCBDaGFyc2V0ID0+ICRDaGFyc2V0ICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhlIHJlcXVpcmVkIE1pbWVUeXBlIHBhcnQKICAgIG15ICRNaW1lVHlwZSA9ICcnOwogICAgaWYgKCAkQ29udGVudFR5cGUgPX4gbS9eKFx3K1wvXHcrKS9pICkgewogICAgICAgICRNaW1lVHlwZSA9ICQxOwogICAgICAgICRNaW1lVHlwZSA9fiBzLyJ8Jy8vZzsKICAgIH0KCiAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVNaW1lVHlwZSggTWltZVR5cGUgPT4gJE1pbWVUeXBlICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9va3MgdmFsaWQKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0RGF0ZSgpCgpyZXBsYWNlcyB0aGUgdXNlciB2YWx1ZSB3aXRoIGEgc3lzdGVtIHZhbGlkIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcnLAogICAgKTsKCiAgICBvcgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzE5NzctMTItMTInLAogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMicsCgo9Y3V0CgpzdWIgUmVwbGFjZUlucHV0RGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMDUvMTgvMjAxMSIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezJ9KSAvIChcZHsyfSkgLyAoXGR7NH0pIFx6fXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMyAuICctJyAuICQxIC4gJy0nIC4gJDIgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIyMDExLTA1LTE4IgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9IFx6KSB9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQxIC4gJyAwMDowMDowMCc7CiAgICB9CgogICAgIyBDb252ZXJ0IHRoZSByYXcgZGF0YSB0byBhIHN5c3RlbSBkYXRldGltZSBvYmplY3QuCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFN0cmluZyA9PiAkVmFsdWUsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVGJyApOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0RGF0ZVRpbWUoKQoKcmVwbGFjZXMgdGhlIHVzZXIgdmFsdWUgd2l0aCBhIHN5c3RlbSB2YWxpZCB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5SZXBsYWNlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+UmVwbGFjZUlucHV0RGF0ZVRpbWUoCiAgICAgICAgVmFsdWUgPT4gJzE5NzctMTItMTIgMTI6MDA6MDAnLAogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMiAxMjowMDowMCc7Cgo9Y3V0CgpzdWIgUmVwbGFjZUlucHV0RGF0ZVRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSAoXGR7Mn0gOiBcZHsyfSA6IFxkezJ9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJDQ7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7Cn0KCj1oZWFkMiBSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygpCgpyZXBsYWNlcyB0aGUgdXNlciB2YWx1ZSB3aXRoIGEgc3lzdGVtIHZhbGlkIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nKAogICAgICAgIFZhbHVlID0+ICdzb21lIHZhbHVlJywKICAgICAgICBDbGFzcyA9PiAnU29tZSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MnCiAgICApOwoKcmV0dXJucwoKICAgICROZXdWYWx1ZSA9IDEyMwoKPWN1dAoKc3ViIFJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCB0aGUgdmFsdWVzIGZvciB0aGUgR2VuZXJhbCBjYXRhbG9nIGNsYXNzCiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0lucHV0fS0+e0NsYXNzfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gJEl0ZW1MaXN0TG9va3VweyRWYWx1ZX07Cn0KCj1oZWFkMiBJbnZlcnRSZXBsYWNlSW5wdXREYXRlKCkKCnJlcGxhY2VzIHRoZSBzeXN0ZW0gdmFsdWUgd2l0aCBhIHVzZXIgdmFsdWUuCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+SW52ZXJ0UmVwbGFjZUlucHV0RGF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMTItMTItMTk3NyAwMDowMDowMCcsCiAgICApOwoKcmV0dXJucwoKICAgICROZXdWYWx1ZSA9ICcxOTc3LTEyLTEyJywKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlSW5wdXREYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAkVmFsdWUgPX4gc3tcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9KSBbIF0gMDA6MDA6MDAgXHp9eyQxfXhtczsKCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgSW52ZXJ0UmVwbGFjZUlucHV0R2VuZXJhbENhdGFsb2coKQoKcmVwbGFjZXMgdGhlIHN5c3RlbSB2YWx1ZSB3aXRoIGEgdXNlciB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5JbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnc29tZSB2YWx1ZScKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBnZXQgdGhlIHZhbHVlcyBmb3IgdGhlIEdlbmVyYWwgY2F0YWxvZyBjbGFzcwogICAgbXkgJEl0ZW1MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJbnB1dH0tPntDbGFzc30sCiAgICApOwoKICAgICMgY3JlYXRlIGEgbG9rdXAgbGlzdAogICAgcmV0dXJuICRJdGVtTGlzdC0+eyRWYWx1ZX07Cn0KCj1oZWFkMiBDcmVhdGVBdHRhY2htZW50KCkKCmNyZWF0ZXMgYSBuZXcgYXR0YWNobWVudCBmb3IgdGhlIGdpdmVuIENvbmZpZ0l0ZW0uCgogICAgbXkgJFJlc3VsdCA9ICRDb21tb25PYmplY3QtPkNyZWF0ZUF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudCAgICAgID0+ICREYXRhLCAgICAgICAgICAgICAgICAgICAjIGZpbGUgY29udGVudCAoQmFzZTY0IGVuY29kZWQpCiAgICAgICAgQ29udGVudFR5cGUgID0+ICdzb21lIGNvbnRlbnQgdHlwZScsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICdzb21lIGZpbGVuYW1lJywKICAgICAgICBDb25maWdJdGVtSUQgPT4gNDU2LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICApOwoKcmV0dXJucwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcnl0aGluZyBpcyBvawogICAgfQoKb3IKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nCiAgICB9Cgo9Y3V0CgpzdWIgQ3JlYXRlQXR0YWNobWVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQXR0YWNobWVudCBDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDcmVhdGVBdHRhY2htZW50KCkgR290IG5vICROZWVkZWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAleyAkUGFyYW17QXR0YWNobWVudH0gfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgQ29udGVudCAgICAgID0+IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudH0gKSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcywKICAgIH07Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfQ2hhcnNldExpc3QoKQoKcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBjaGFyc2V0cy4KCiAgICBteSAkQ2hhcnNldExpc3QgPSAkQ29tbW9uT2JqZWN0LT5fQ2hhcnNldExpc3QoCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgJENoYXJzZXRMaXN0ID0gewogICAgICAgICMuLi4KICAgICAgICBpc28tODg1OS0xICA9PiAxLAogICAgICAgIGlzby04ODU5LTE1ID0+IDEsCiAgICAgICAgTWFjUm9tYW4gICAgPT4gMSwKICAgICAgICB1dGY4ICAgICAgICA9PiAxLAogICAgICAgICMuLi4KICAgIH0KCj1jdXQKCnN1YiBfQ2hhcnNldExpc3QgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15ICVDaGFyc2V0SGFzaCA9IG1hcAogICAgICAgIHsgJF8gPT4gMSB9CiAgICAgICAgRW5jb2RlLT5lbmNvZGluZ3MoJzphbGwnKTsKCiAgICByZXR1cm4gXCVDaGFyc2V0SGFzaDsKfQoKPWhlYWQyIF9DaGVja0F0dGFjaG1lbnQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBhdHRhY2htZW50IHBhcmFtZXRlciBpcyB2YWxpZC4KCiAgICBteSAkQXR0YWNobWVudENoZWNrID0gJE9wZXJhdGlvbk9iamVjdC0+X0NoZWNrQXR0YWNobWVudCgKICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LCAgICAgICAgICAgICAgICAgICMgYWxsIGF0dGFjaG1lbnQgcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICRBdHRhY2htZW50Q2hlY2sgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sKICAgIH0KCiAgICAkQXR0YWNobWVudENoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja0F0dGFjaG1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0YWNobWVudCA9ICRQYXJhbXtBdHRhY2htZW50fTsKCiAgICAjIGNoZWNrIGF0dGFjaG1lbnQgaXRlbSBpbnRlcm5hbGx5CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29udGVudCBDb250ZW50VHlwZSBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkQXR0YWNobWVudC0+eyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPiROZWVkZWQgIHBhcmFtZXRlciBpcyBtaXNzaW5nISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgQXR0YWNobWVudC0+Q29udGVudFR5cGUKICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gKSB7CgogICAgICAgICMgVGhlIE1JTUUgaGVhZGVyIGZpZWxkIENvbnRlbnQtVHlwZSBpcyBvbmx5IGluIHNvbWUgcGFydHMgY2FzZSBpbnNlbnNpdGl2ZSwKICAgICAgICAjIGJ1dCBsb3dlcmNhc2luZyB0aGUgd2hvbGUgc3RyaW5nIHNpbXBsaWZpZXMgdGhlIGhhbmRsaW5nIGluIE9UT0JPLgogICAgICAgICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID0gbGMgJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUNvbnRlbnRUeXBlKCBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSApICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBBdHRhY2htZW50LT5Db250ZW50VHlwZSBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgZXZlcnl0aGluZyBpcyBPSyB0aGVuIHJldHVybiBTdWNjZXNzCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBfQ2hlY2tWYWx1ZSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRWYWx1ZUNoZWNrID0gJENvbW1vbk9iamVjdC0+X0NoZWNrVmFsdWUoCiAgICAgICAgVmFsdWUgICA9PiAkVmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAjICRWYWx1ZSBjb3VsZCBiZSBhIHN0cmluZywgYSB0aW1lIHN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBuYW1lLCBvciBhIGludGVnZXIKICAgICAgICBJbnB1dCAgID0+ICRJbnB1dERlZmluaXRpb25IYXNoUmVmLCAgICAgICMgVGhlIGRlZmluaXRpb24gb2YgdGhlIGVsZW1lbnQgaW5wdXQgZXh0cmFjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBJdGVtIGRlZmluaXRpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIGVhY2ggdmFsdWUKICAgICAgICBJdGVtS2V5ID0+ICdzb21lIGtleScsICAgICAgICAgICAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHZhbHVlIGFzIHNlbnQgaW4gdGhlIFNPQVAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1ZXN0CiAgICAgICAgUGFyZW50ICA9PiAnc29lbSBwYXJlbnQga2V5LT4nLCAgICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgZm9sbG93ZWQgYnkgLT4gb3IgZW1wdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3Igcm9vdCBrZXkgaXRlbXMKICAgICk7CgpyZXR1cm5zOgoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LCiAgICB9CgpvcgoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja1ZhbHVlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmVudCAgPSAkUGFyYW17UGFyZW50fTsKICAgIG15ICRJdGVtS2V5ID0gJFBhcmFte0l0ZW1LZXl9OwoKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRQYXJhbXtJbnB1dH0tPntSZXF1aXJlZH0gJiYgJFBhcmFte0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJFBhcmFte1ZhbHVlfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgIC4gIiBpcyByZXF1aXJlZCBhbmQgaXMgbWlzc2luZyEiLAogICAgICAgIH07CiAgICB9CgogICAgaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ1RleHQnIHx8ICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnVGV4dEFyZWEnICkgewoKICAgICAgICAjIHJ1biBUZXh0IHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXRUZXh0KCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBleGNlZGVzIHRoZSBtYXhpdW0gbGVuZ3RoISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGUnICkgewoKICAgICAgICAjIHJ1biBEYXRlIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdEYXRlVGltZScgKSB7CgogICAgICAgICMgcnVuIERhdGVUaW1lIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlVGltZSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgRGF0ZVRpbWUgZm9ybWF0ISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgIyBydW4gQ3VzdG9tZXIgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBjdXN0b21lciEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdDdXN0b21lckNvbXBhbnknICkgewoKICAgICAgICAjIHJ1biBDdXN0b21lckNvbXBhbnkgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIgY29tcGFueSEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdJbnRlZ2VyJyApIHsKCiAgICAgICAgIyBydW4gSW50ZWdlciB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0SW50ZWdlciglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgSW50ZWdlciBvciBvdXQgb2YgcmFuZ2UhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnR2VuZXJhbENhdGFsb2cnICkgewoKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nICckUGFyYW17SW5wdXR9LT57Q2xhc3N9JyEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIFRoZSB0eXBlIGlzIGR1bW15LCBkbyBub3RoaW5nCiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgX1JlcGxhY2VWYWx1ZSgpCgpyZXBsYWNlIHVzZXIgdmFsdWVzIHdpdGggc3lzdGVtIHJlYWR5IHZhbHVlcy4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5fUmVwbGFjZVZhbHVlKAogICAgICAgIFZhbHVlICAgPT4gJFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgIyAkVmFsdWUgY291bGQgYmUgYSBzdHJpbmcsIGEgdGltZSBzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgbmFtZSwgb3IgYSBpbnRlZ2VyCiAgICAgICAgSW5wdXQgICA9PiAkSW5wdXREZWZpbml0aW9uSGFzaFJlZiwgICAgICAjIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBlbGVtZW50IGlucHV0IGV4dHJhY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZyb20gdGhlIENvbmZpZ3VyYXRpb24gSXRlbSBkZWZpbml0aW9uIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIHJvb3Qga2V5IGl0ZW1zCiAgICApOwoKcmV0dXJuczoKCiAgICAkTmV3VmFsdWUgPSAkQU5ld1ZhbHVlCgo9Y3V0CgpzdWIgX1JlcGxhY2VWYWx1ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IHRoZSBsaXN0IG9mIGlucHV0IHR5cGVzIHRoYXQgbmVlZHMgdG8gYmUgcmVwbGFjZWQKICAgIG15ICVSZXBsYWNlSW5wdXRUeXBlcyA9ICgKICAgICAgICBEYXRlICAgICAgICAgICA9PiAxLAogICAgICAgIERhdGVUaW1lICAgICAgID0+IDEsCiAgICAgICAgR2VuZXJhbENhdGFsb2cgPT4gMSwKICAgICk7CiAgICBpZiAoICEkUmVwbGFjZUlucHV0VHlwZXN7ICRQYXJhbXtJbnB1dH0tPntUeXBlfSB9ICkgewogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgIG15ICROZXdWYWx1ZTsKCiAgICBpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CgogICAgICAgICMgcnVuIERhdGUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXREYXRlKCVQYXJhbSk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewoKICAgICAgICAjIHJ1biBEYXRlVGltZSByZXBsYWNlCiAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPlJlcGxhY2VJbnB1dERhdGVUaW1lKCVQYXJhbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyglUGFyYW0pOwogICAgfQoKICAgIHJldHVybiAkTmV3VmFsdWU7Cn0KCj1oZWFkMiBfSW52ZXJ0UmVwbGFjZVZhbHVlKCkKCnJlcGxhY2UgaW50ZXJuYWwgdmFsdWVzIHdpdGggdXNlciB2YWx1ZXMuCgogICAgbXkgJE5ld1ZhbHVlID0gJE9wZXJhdGlvbk9iamVjdC0+X0ludmVydFJlcGxhY2VWYWx1ZSgKICAgICAgICBWYWx1ZSAgID0+ICRWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICMgJFZhbHVlIGNvdWxkIGJlIGEgc3RyaW5nLCBhIHRpbWUgc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzIG5hbWUsIG9yIGEgaW50ZWdlcgogICAgICAgIElucHV0ICAgPT4gJElucHV0RGVmaW5pdGlvbkhhc2hSZWYsICAgICAgIyBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgZWxlbWVudCBpbnB1dCBleHRyYWN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmcm9tIHRoZSBDb25maWd1cmF0aW9uIEl0ZW0gZGVmaW5pdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3IgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciByb290IGtleSBpdGVtcwogICAgKTsKCnJldHVybnM6CgogICAgJE5ld1ZhbHVlID0gJEFOZXdWYWx1ZQoKPWN1dAoKc3ViIF9JbnZlcnRSZXBsYWNlVmFsdWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCB0aGUgbGlzdCBvZiBpbnB1dCB0eXBlcyB0aGF0IG5lZWRzIHRvIGJlIHJlcGxhY2VkCiAgICBteSAlUmVwbGFjZUlucHV0VHlwZXMgPSAoCiAgICAgICAgRGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICBHZW5lcmFsQ2F0YWxvZyA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkUmVwbGFjZUlucHV0VHlwZXN7ICRQYXJhbXtJbnB1dH0tPntUeXBlfSB9ICkgewogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgIG15ICROZXdWYWx1ZTsKCiAgICBpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CgogICAgICAgICMgcnVuIERhdGUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlSW5wdXREYXRlKCVQYXJhbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyglUGFyYW0pOwogICAgfQoKICAgIHJldHVybiAkTmV3VmFsdWU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIE1JTUU6OkJhc2U2NDsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWd1cmF0aW9uIEl0ZW0gRGVsZXRlIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1EZWxldGUnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbURlbGV0ZSBPcGVyYXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgYWJsZSB0byByZXR1cm4Kb25lIG9yIG1vcmUgQ29uZmlnSXRlbSBlbnRyaWVzIGluIG9uZSBjYWxsLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgICAgID0+ICdzb21lIGFnZW50IGxvZ2luJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VyTG9naW4gb3IgQ3VzdG9tZXJVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIHJlcXVpcmVkCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICdzb21lIGN1c3RvbWVyIGxvZ2luJywKICAgICAgICAgICAgU2Vzc2lvbklEICAgICAgICAgPT4gMTIzLAoKICAgICAgICAgICAgUGFzc3dvcmQgICAgICAgICAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBvciBjdXN0b21lclVzZXJMb2dpbiBpcyBzZW50IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGFzc3dvcmQgaXMgcmVxdWlyZWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gJzMyLDMzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkLCBjb3VsZCBiZSBjb21hIHNlcGFyYXRlZCBJRHMgb3IgYW4gQXJyYXkKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWzEyMywgNDU2XSwgICAgICAgICAjIENvbmZpZ3VyYXRpb24gSXRlbSBJRHMgbnVtYmVyIGluIE9UT0JPOjpJVFNNIChTZXJ2aWNlIGRlc2sgc3lzdGVtKQogICAgICAgICAgICBFcnJvciA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgbm90IHJldHVybiBlcnJvcnMKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuRXJyb3JDb2RlJwogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgRGVzY3JpcHRpb24nCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICgkVXNlcklEKSA9ICRTZWxmLT5BdXRoKAogICAgICAgICVQYXJhbQogICAgKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXV0aG9yaXphdGlvbiBmYWlsaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJE5lZWRlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIG15ICRFcnJvck1lc3NhZ2UgPSAnJzsKCiAgICAjIGFsbCBuZWVkZWQgdmFyaWFibGVzCiAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfSApICkgewogICAgICAgIEBDb25maWdJdGVtSURzID0gc3BsaXQgL1xzKixccyovLCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9OwogICAgfQogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IEB7ICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogU3RydWN0dXJlIGZvciBDb25maWdJdGVtSUQgaXMgbm90IGNvcnJlY3QhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgQERlbGV0ZWRDb25maWdJdGVtSURzOwoKICAgICMgc3RhcnQgQ29uZmlnSXRlbSBsb29wCiAgICBDT05GSUdJVEVNOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgY2hlY2sgY3JlYXRlIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQWNjZXNzRGVuaWVkIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ2FuIG5vdCBkZWxldGUgY29uZmlndXJhdGlvbiBpdGVtISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgY29uZmlnaXRlbQogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGRlbGV0ZSBDb25maWdJdGVtIElEICcgLiAkQ29uZmlnSXRlbUlECiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uRGVsZXRlRXJyb3IiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQERlbGV0ZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwoKICAgIH0gICAgIyBmaW5pc2ggQ29uZmlnSXRlbSBsb29wCgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCBcQERlbGV0ZWRDb25maWdJdGVtSURzICkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IGRlbGV0ZSBDb25maWdJdGVtcyEnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBcQERlbGV0ZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemGet.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIE1JTUU6OkJhc2U2NDsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0IC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWd1cmF0aW9uIEl0ZW0gR2V0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICRTZWxmLT57T3BlcmF0aW9uTmFtZX0gPSAnQ29uZmlnSXRlbUdldCc7CgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1HZXQnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBDb25maWdJdGVtR2V0IE9wZXJhdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBhYmxlIHRvIHJldHVybgpvbmUgb3IgbW9yZSBDb25maWdJdGVtIGVudHJpZXMgaW4gb25lIGNhbGwuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luICAgICAgICAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgcmVxdWlyZWQKICAgICAgICAgICAgUGFzc3dvcmQgICAgICAgICAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBpcyBzZW50IHRoZW4gUGFzc3dvcmQgaXMgcmVxdWlyZWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gJzMyLDMzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkLCBjb3VsZCBiZSBjb21hIHNlcGFyYXRlZCBJRHMgb3IgYW4gQXJyYXkKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCAxIGFzIGRlZmF1bHQuIElmIGl0J3Mgc2V0IHdpdGggdGhlIHZhbHVlIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRhY2htZW50cyBmb3IgYXJ0aWNsZXMgd2lsbCBiZSBpbmNsdWRlZCBvbiBDb25maWdJdGVtIGRhdGEKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgPT4gJzIwMTAxMDI3MDAwMDAxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICA9PiAnc29tZSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJ3NvbWUgY2xhc3MnLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgTGFzdFZlcnNpb25JRCAgICAgID0+IDEyMywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICAgID0+ICdzb21lIGluY2lkZW50IHN0YXRlIHR5cGUnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICA9PiAnc29tZSBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgPT4gJ3NvbWUgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgID0+ICdzb21lIGRlcGxveW1lbnQgc3RhdGUgdHlwZScsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgICAgID0+ICcyMDEwLTEwLTI3IDIwOjE1OjAwJwogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWUgID0+ICRWYWx1ZSwKCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgICA9PiAieHh4eCIsICAgICAjIGFjdHVhbCBhdHRhY2htZW50IGNvbnRlbnRzLCBiYXNlNjQgZW5jb25kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICAgICAgICA9PiAiU3RkQXR0YWNobWVudC1UZXN0MS5wZGYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgICAgICAgID0+ICI0LjYgS0J5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWZlcmVuY2VzICAgICAgICA9PiAkUHJlZmVyZW5jZXNIYXNoUmVmLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIC4gLiAuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICEkUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1dlYnNlcnZpY2UuSW52YWxpZENvbmZpZ3VyYXRpb24nLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAoJFVzZXJJRCkgPSAkU2VsZi0+QXV0aCgKICAgICAgICAlUGFyYW0KICAgICk7CgogICAgaWYgKCAhJFVzZXJJRCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQXV0aEZhaWwiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF1dGhvcml6YXRpb24gZmFpbGluZyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBteSAkRXJyb3JNZXNzYWdlID0gJyc7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IHNwbGl0KCAvLC8sICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKTsKICAgIH0KICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9ICkgKSB7CiAgICAgICAgQENvbmZpZ0l0ZW1JRHMgPSBAeyAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uV3JvbmdTdHJ1Y3R1cmUiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbUlEIGlzIG5vdCBjb3JyZWN0ISIsCiAgICAgICAgKTsKICAgIH0KICAgIG15ICRBdHRhY2htZW50cyA9ICRQYXJhbXtEYXRhfS0+e0F0dGFjaG1lbnRzfSB8fCAwOwogICAgbXkgJFJldHVybkRhdGEgID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgbXkgQEl0ZW07CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHN0YXJ0IENvbmZpZ0l0ZW0gbG9vcAogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGNoZWNrIGNyZWF0ZSBwZXJtaXNzaW9ucwogICAgICAgIG15ICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkFjY2Vzc0RlbmllZCIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENhbiBub3QgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW0gZW50cnkKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtKSApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBDb25maWdJdGVtIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1vdmUgdW5uZWVkZWQgaXRlbXMKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9OwogICAgICAgIGRlbGV0ZSAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUlEfTsKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57RGVmaW5pdGlvbklEfTsKCiAgICAgICAgIyBzZXQgQ29uZmlnSXRlbSBlbnRyeSBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1CdW5kbGUgPSAkQ29uZmlnSXRlbTsKCiAgICAgICAgaWYgKCRBdHRhY2htZW50cykgewoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnREZXRhaWxzOwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRGaWxlbmFtZTsKCiAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIG5leHQgaWYgbm90IGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnQpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50fSA9IGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57Q29udGVudH0gKTsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnREZXRhaWxzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgQ29uZmlnSXRlbSBlbnRyeSBkYXRhCiAgICAgICAgICAgICRDb25maWdJdGVtQnVuZGxlLT57QXR0YWNobWVudH0gPSAnJzsKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQXR0YWNobWVudERldGFpbHMgKSApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtQnVuZGxlLT57QXR0YWNobWVudH0gPSBcQEF0dGFjaG1lbnREZXRhaWxzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZAogICAgICAgIHB1c2ggQEl0ZW0sICRDb25maWdJdGVtQnVuZGxlOwoKICAgIH0gICAgIyBmaW5pc2ggQ29uZmlnSXRlbSBsb29wCgogICAgaWYgKCAhc2NhbGFyIEBJdGVtICkgewogICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBDb25maWdJdGVtIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTm9Db25maWdJdGVtRGF0YSIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBDb25maWdJdGVtIGRhdGEgaW50byByZXR1cm4gc3RydWN0dXJlCiAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q29uZmlnSXRlbX0gPSAnJzsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCBcQEl0ZW0gKSApIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q29uZmlnSXRlbX0gPSBcQEl0ZW07CiAgICB9CgogICAgIyByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gJFJldHVybkRhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemUpsert.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtVXBzZXJ0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgICBxdyhwYWlycyk7CnVzZSBTY2FsYXI6OlV0aWwgcXcocmVmdHlwZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwc2VydCAtIEdlbmVyaWNJbnRlcmZhY2UgQ29uZmlndXJhdGlvbiBJdGVtIEFkZCBhbmQgVXBkYXRlIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIE9wZXJhdGlvbiBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1VcHNlcnQnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjokU2VsZi0+e09wZXJhdGlvbk5hbWV9Iik7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbVVwc2VydCBPcGVyYXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgYWJsZSB0byBhY2NlcHQKb25lIG9yIG1vcmUgQ29uZmlnSXRlbSBlbnRyaWVzIGluIG9uZSBjYWxsLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1aXJlZAogICAgICAgICAgICBQYXNzd29yZCAgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBVc2VyTG9naW4gaXMgc2VudCB0aGVuIFBhc3N3b3JkIGlzIHJlcXVpcmVkCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkCiAgICAgICAgICAgICAgICB7IC4uLiB9LAogICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICA9PiAnMjAxMDEwMjcwMDAwMDEnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICgkVXNlcklEKSA9ICRTZWxmLT5BdXRoKAogICAgICAgICVQYXJhbQogICAgKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXV0aG9yaXphdGlvbiBmYWlsaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBvcHRpb25hbCBhcnJheS9oYXNoZXMKICAgIGZvciBteSAkT3B0aW9uYWwgKHF3KER5bmFtaWNGaWVsZCBBdHRhY2htZW50KSkgewogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCAkUGFyYW17RGF0YX0tPnskT3B0aW9uYWx9CiAgICAgICAgICAgICYmICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57JE9wdGlvbmFsfSApCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+eyRPcHRpb25hbH0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkT3B0aW9uYWwgcGFyYW1ldGVyIGlzIG1pc3Npbmcgb3Igbm90IHZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJhbnNmb3JtIHNpbmdsZSBDSXMgdG8gYW4gYXJyYXkgcmVmZXJlbmNlCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSApICkgewogICAgICAgICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSA9IFsgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW19IF07CiAgICB9CgogICAgZm9yIG15ICRSZW1vdGVDSURhdGEgKCBAeyAkUGFyYW17RGF0YX17Q29uZmlnSXRlbX0gfSApIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUmVtb3RlQ0lEYXRhKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbSBpcyBub3QgY29ycmVjdCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFJlcXVpcmVkQXR0cmlidXRlcyA9IHF3KENsYXNzIERlcGxveW1lbnRTdGF0ZSBJbmNpZGVudFN0YXRlKTsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAoIHNvcnQgQFJlcXVpcmVkQXR0cmlidXRlcyApIHsKCiAgICAgICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRSZW1vdGVDSURhdGEtPnskTmVlZGVkfSApICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBOZWVkICROZWVkZWQgZm9yIGV2ZXJ5IENvbmZpZ0l0ZW0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgd2Vic2VydmljZSBjb25maWd1cmF0aW9uCiAgICBteSAkV2Vic2VydmljZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VHZXQoCiAgICAgICAgSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICAjIGdldCBvcGVyYXRpb24gY29uZmlnCiAgICBteSAkT3BlcmF0aW9uQ29uZmlnID0gJFdlYnNlcnZpY2UtPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkU2VsZi0+e09wZXJhdGlvbn0gfTsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICVDSUNsYXNzTWFwcGluZyA9ICgKICAgICAgICBJbmNpZGVudFN0YXRlICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIERlcGxveW1lbnRTdGF0ZSA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBidWlsZCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyBsb29rdXAKICAgIG15ICVERlJlZkxvb2t1cDsKICAgIG15ICVERkxlbnNMb29rdXA7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGRMaXN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICkgfHwgW107CgogICAgREZDT05GSUc6CiAgICBmb3IgbXkgJERGQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewoKICAgICAgICBuZXh0IERGQ09ORklHIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwoKICAgICAgICBpZiAoICRERkNvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0xlbnMnICkgewogICAgICAgICAgICAkREZMZW5zTG9va3VweyAkREZDb25maWctPntOYW1lfSB9ID0gJERGQ29uZmlnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkREZDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJERGUmVmTG9va3VweyAkREZDb25maWctPntOYW1lfSB9ID0gJERGQ29uZmlnOwogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIGR5bmFtaWMgZmllbGQgcmVmZXJlbmNlIGFuZCBsZW5zIHZhbHVlcyB0byBzZXQgdGhlbSBhZnRlciBjb25maWcgaXRlbSBhZGQgLyB1cGRhdGUKICAgIG15ICVBbGxERlNoaWZ0ZWRWYWx1ZXM7CgogICAgbXkgJUdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cDsKICAgIG15IEBDSXNIYW5kbGVkOwogICAgQ0k6CiAgICBmb3IgbXkgJFJlbW90ZUNJRGF0YSAoIEB7ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSB9ICkgewoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUmVtb3RlQ0lEYXRhKSApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCByZW1vdGUgQ0kgc3RydWN0dXJlIGZvdW5kLiBTa2lwcGluZyBpdGVtLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgbXkgJVJlcXVpcmVkQXR0cmlidXRlcyA9IG1hcCB7ICRfID0+ICRSZW1vdGVDSURhdGEtPnskX30gfSBxdyhDbGFzcyBEZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSk7CgogICAgICAgICMgZ2V0IElEcyBmb3IgQ2xhc3MsIERlcGwtIGFuZCBJbmNpU3RhdGUKICAgICAgICBmb3IgbXkgJEN1cnJlbnRDSSAoIHNvcnQga2V5cyAlQ0lDbGFzc01hcHBpbmcgKSB7CgogICAgICAgICAgICAjIGNyZWF0ZS9nZXQgbG9va3VwIGZvciBnZW5lcmFsIGNhdGFsb2cgaXRlbXMKICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nSXRlbTsKICAgICAgICAgICAgaWYgKCAkR2VuZXJhbENhdGFsb2dJdGVtTG9va3VweyAkQ0lDbGFzc01hcHBpbmd7JEN1cnJlbnRDSX0gfS0+eyAkUmVxdWlyZWRBdHRyaWJ1dGVzeyRDdXJyZW50Q0l9IH0gKSB7CiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dJdGVtID0gJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ0lDbGFzc01hcHBpbmd7JEN1cnJlbnRDSX0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgIUlzSGFzaFJlZldpdGhEYXRhKCRHZW5lcmFsQ2F0YWxvZ0l0ZW0pCiAgICAgICAgICAgICAgICAgICAgfHwgIUlzU3RyaW5nV2l0aERhdGEoICRHZW5lcmFsQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGxvb2tpbmcgdXAgJEN1cnJlbnRDSSAnJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfScuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRvIGxvb2t1cAogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9ID0gJEdlbmVyYWxDYXRhbG9nSXRlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkUmVxdWlyZWRBdHRyaWJ1dGVzeyAkQ3VycmVudENJIC4gJ0lEJyB9ID0gJEdlbmVyYWxDYXRhbG9nSXRlbS0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYXRlc3QgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUmVtb3RlQ0lEYXRhLT57Q2xhc3NJRH07CiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICAgICAkQ2xhc3NJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9IH07CiAgICAgICAgfQogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyB2YWxpZGF0ZSBkeW5hbWljIGZpZWxkcwogICAgICAgIERBVEE6CiAgICAgICAgZm9yIG15ICREYXRhICggcGFpcnMgJFJlbW90ZUNJRGF0YS0+JSogKSB7CiAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSAkRGF0YS0+QCo7CgogICAgICAgICAgICBuZXh0IERBVEEgdW5sZXNzICggJEtleSA9fiAvXkR5bmFtaWNGaWVsZF8vICk7CgogICAgICAgICAgICBpZiAoICRLZXkgPX4gL15EeW5hbWljRmllbGRfKD88UGxhaW5GaWVsZE5hbWU+W0EtWmEtejAtOS1dKykvICkgewogICAgICAgICAgICAgICAgbXkgJFBsYWluRmllbGROYW1lID0gJCt7UGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaXMgaW4gY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRQbGFpbkZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IER5bmFtaWNGaWVsZCAnJFBsYWluRmllbGROYW1lJyBpcyBub3QgcGFydCBvZiB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiZGVmaW5pdGlvbiBvZiBjbGFzcyAnJFJlbW90ZUNJRGF0YS0+e0NsYXNzfScgKENvbmZpZ0l0ZW0gJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCAkUmVtb3RlQ0lEYXRhLT57TmFtZX0gLy8gJycgKSAuICInKSEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JFBsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIHZhbHVlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBwb3NzaWJsZSBzdHJ1Y3R1cmVzIGFyZSBzdHJpbmcgYW5kIGFycmF5LCBubyBkYXRhIGluc2lkZSBpcyBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICFJc1N0cmluZygkVmFsdWUpICYmIHJlZiAkVmFsdWUgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogVmFsdWUgb2YgRHluYW1pY0ZpZWxkICckUGxhaW5GaWVsZE5hbWUnICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICJtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IChDb25maWdJdGVtICciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoICRSZW1vdGVDSURhdGEtPntOYW1lfSAvLyAnJyApIC4gIicpISIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBWYWx1ZSBvZiBEeW5hbWljRmllbGQgJyRQbGFpbkZpZWxkTmFtZScgaXMgaW52YWxpZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiKENvbmZpZ0l0ZW0gJyIgLiAoICRSZW1vdGVDSURhdGEtPntOYW1lfSAvLyAnJyApIC4gIicpISIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkSWRlbnRpZmllciA9ICRPcGVyYXRpb25Db25maWctPnsgJ0lkZW50aWZpZXInIC4gJFJlcXVpcmVkQXR0cmlidXRlc3tDbGFzc0lEfSB9OwogICAgICAgIGlmICggISRJZGVudGlmaWVyICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vdCBpbXBvcnRpbmcgaXRlbXMgaW4gY2xhc3MgJFJlcXVpcmVkQXR0cmlidXRlc3tDbGFzc30gLSBza2lwcGluZy4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDSXNIYW5kbGVkLCB7fTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhpcyBpdGVtIGV4aXN0cyAodXBkYXRlKSBvciBpcyBuZXcgKGNyZWF0ZSkKICAgICAgICBteSAkQ29uZmlnSXRlbUlEOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtID0gKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBRdWVyeUNvbmRpdGlvbiA9PiAwLAogICAgICAgICk7CiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggJElkZW50aWZpZXItPkAqICkgewoKICAgICAgICAgICAgIyBpZiBudW1iZXIgb3IgY29uZmlnIGl0ZW0gaWQgYXJlIGRlZmluZWQgYXMgaWRlbnRpZmllcnMsIHVzZSBvbmx5IHRoaXMKICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgaWYgKCAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NvbmZpZ0l0ZW1JRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRSZW1vdGVDSURhdGEtPntDb25maWdJdGVtSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICcnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxhc3QgQVRUUklCVVRFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnQ2xhc3NlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17Q2xhc3Nlc30gPSBbICRSZW1vdGVDSURhdGEtPntDbGFzc30gXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte05hbWV9ID0gJFJlbW90ZUNJRGF0YS0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnRGVwbFN0YXRlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17RGVwbFN0YXRlc30gPSBbICRSZW1vdGVDSURhdGEtPntEZXBsb3ltZW50U3RhdGV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlID1+IC9eRHluLyApIHsKICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXskQXR0cmlidXRlfSA9IHsKICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFJlbW90ZUNJRGF0YS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSAkQXR0cmlidXRlIGFzIElkZW50aWZpZXIgLSBza2lwcGluZy4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHt9OwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggIWRlZmluZWQgJENvbmZpZ0l0ZW1JRCApIHsKCiAgICAgICAgICAgICMgYXZvaWQgZXhlY3V0aW5nIGEgc2VhcmNoIHdpdGggZW1wdHkgc2VhcmNoIHBhcmFtcyAoZXhjbHVkaW5nICdSZXN1bHQgPT4gIkFSUkFZIicgZnJvbSBtZWFuaW5nZnVsIHBhcmFtcykKICAgICAgICAgICAgbXkgJFBlcmZvcm1TZWFyY2ggPSAwOwogICAgICAgICAgICBTRUFSQ0hQQVJBTUtFWToKICAgICAgICAgICAgZm9yIG15ICRTZWFyY2hQYXJhbUtleSAoIGtleXMgJVNlYXJjaFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VhcmNoUGFyYW1LZXkgbmUgJ1Jlc3VsdCcgJiYgJFNlYXJjaFBhcmFteyRTZWFyY2hQYXJhbUtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFBlcmZvcm1TZWFyY2ggPSAxOwoKICAgICAgICAgICAgICAgICAgICBsYXN0IFNFQVJDSFBBUkFNS0VZOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFBlcmZvcm1TZWFyY2gpIHsKCiAgICAgICAgICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKCVTZWFyY2hQYXJhbSk7CgogICAgICAgICAgICAgICAgaWYgKCBzY2FsYXIgQENvbmZpZ0l0ZW1JRHMgPiAxICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXJzID0gam9pbiggJzsnLCBtYXAgeyIkXyA9PiAkU2VhcmNoUGFyYW17JF99In0ga2V5cyAlU2VhcmNoUGFyYW0gKTsKCiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSBhbWJpZ3VvdXMgc2VhcmNoIHJlc3VsdCAtIHNraXBwaW5nLiBQYXJhbWV0ZXJzOiAkU2VhcmNoUGFyYW1ldGVyczsiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ0lzSGFuZGxlZCwge307CgogICAgICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWzBdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJFBlcm1pc3Npb247CiAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgJFBlcm1pc3Npb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBlcm1pc3Npb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tDbGFzc0lEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BY2Nlc3NEZW5pZWQiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDYW4gbm90IHdyaXRlIGNvbmZpZ3VyYXRpb24gaXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCAmJiAhJFJlbW90ZUNJRGF0YS0+e05hbWV9ICkgewogICAgICAgICAgICBteSAkTm90aWNlSW5mbyA9ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9ID8gIk51bWJlcjogJFJlbW90ZUNJRGF0YS0+e051bWJlcn07IiA6ICcnOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nICdOYW1lJyBwYXJhbWV0ZXIgZm9yIGNyZWF0aW5nIGEgQ0kuIFNraXBwaW5nIGl0ZW0uICROb3RpY2VJbmZvIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ0lzSGFuZGxlZCwge307CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0OwogICAgICAgIGlmICggZGVmaW5lZCAkUmVtb3RlQ0lEYXRhLT57QXR0YWNobWVudH0gKSB7CgogICAgICAgICAgICAjIGlzb2xhdGUgQXR0YWNobWVudCBwYXJhbWV0ZXIKICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgPSAkUmVtb3RlQ0lEYXRhLT57QXR0YWNobWVudH07CgogICAgICAgICAgICAjIGhvbW9nZW5hdGUgaW5wdXQgdG8gYXJyYXkKICAgICAgICAgICAgaWYgKCByZWYgJEF0dGFjaG1lbnQgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudExpc3QsICRBdHRhY2htZW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQEF0dGFjaG1lbnRMaXN0ID0gQHskQXR0YWNobWVudH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgQXR0YWNobWVudCBpbnRlcm5hbCBzdHJ1Y3R1cmUKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50SXRlbSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudEl0ZW0pICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+QXR0YWNobWVudCBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAkQXR0YWNobWVudEl0ZW0tPiUqICkgewogICAgICAgICAgICAgICAgICAgIGlmICggIXJlZnR5cGUgJEF0dGFjaG1lbnRJdGVtLT57JEF0dHJpYnV0ZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjcmVtb3ZlIGxlYWRpbmcgc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50SXRlbS0+eyRBdHRyaWJ1dGV9ID1+IHN7XEFccyt9e307CgogICAgICAgICAgICAgICAgICAgICAgICAjcmVtb3ZlIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudEl0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xzK1x6fXt9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNoZWNrIEF0dGFjaG1lbnQgYXR0cmlidXRlIHZhbHVlcwogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRDaGVjayA9ICRTZWxmLT5fQ2hlY2tBdHRhY2htZW50KAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gJEF0dGFjaG1lbnRJdGVtLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkQXR0YWNobWVudENoZWNrLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvciggJXskQXR0YWNobWVudENoZWNrfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNoaWZ0IGR5bmFtaWMgZmllbGQgcmVmZXJlbmNlIGFuZCBsZW5zIHZhbHVlcyBmcm9tIGNvbmZpZ2l0ZW0gZGF0YSB0byBzZXQgdGhlbSBhZnRlcndhcmRzCiAgICAgICAgbXkgJURGU2hpZnRlZFZhbHVlczsKICAgICAgICBERk5BTUU6CiAgICAgICAgZm9yIG15ICRERk5hbWUgKCBrZXlzICVERlJlZkxvb2t1cCwga2V5cyAlREZMZW5zTG9va3VwICkgewoKICAgICAgICAgICAgbmV4dCBERk5BTUUgdW5sZXNzIGRlZmluZWQgJFJlbW90ZUNJRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwoKICAgICAgICAgICAgJERGU2hpZnRlZFZhbHVlc3skREZOYW1lfSA9IGRlbGV0ZSAkUmVtb3RlQ0lEYXRhLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgfQoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJFcnJvciB3aGlsZSB1cGRhdGluZyBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tEZXBsb3ltZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0luY2lkZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igd2hpbGUgY3JlYXRpbmcgQ0kgd2l0aCBOYW1lICckUmVxdWlyZWRBdHRyaWJ1dGVze05hbWV9JywgQ2xhc3MgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9JyAoQ2xhc3NJRDogJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0nKS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJEFsbERGU2hpZnRlZFZhbHVlc3skQ29uZmlnSXRlbUlEfSA9IFwlREZTaGlmdGVkVmFsdWVzOwoKICAgICAgICAjIGhhbmRsZSBjb25maWcgaXRlbSBhdHRhY2htZW50cwogICAgICAgIGlmIChAQXR0YWNobWVudExpc3QpIHsKCiAgICAgICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRGaWxlbmFtZSAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGRlbGV0aW5nIGV4aXN0aW5nIGF0dGFjaG1lbnQgd2l0aCBOYW1lICckRmlsZW5hbWUnIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50TGlzdCkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIGFsbCBjb25maWcgaXRlbSBhdHRhY2htZW50cwoKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igd2hpbGUgYWRkaW5nIGF0dGFjaG1lbnQgd2l0aCBOYW1lICckQXR0YWNobWVudC0+e0ZpbGVuYW1lfScgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRC4iLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkUmVtb3RlQ0lEYXRhLT57TmFtZX0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHNldCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyB2YWx1ZXMgYWZ0ZXIgYWRkaW5nIC8gdXBkYXRpbmcgYWxsIGNvbmZpZyBpdGVtcwogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDSURGUGFpciAoIHBhaXJzICVBbGxERlNoaWZ0ZWRWYWx1ZXMgKSB7CgogICAgICAgIG15ICggJENvbmZpZ0l0ZW1JRCwgJERGVmFsdWVzICkgPSAkQ0lERlBhaXItPkAqOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJERGVmFsdWVzKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YSBmb3IgdmVyc2lvbiBpZAogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgZmlyc3QsIHNldCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSB2YWx1ZXMKICAgICAgICBERlJFRjoKICAgICAgICBmb3IgbXkgJERGUmVmTmFtZSAoIGtleXMgJURGUmVmTG9va3VwICkgewoKICAgICAgICAgICAgbmV4dCBERlJFRiB1bmxlc3MgZXhpc3RzICRERlZhbHVlcy0+eyRERlJlZk5hbWV9OwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGUmVmTG9va3VweyRERlJlZk5hbWV9LAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkREZWYWx1ZXMtPnskREZSZWZOYW1lfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNlY29uZCwgc2V0IGR5bmFtaWMgZmllbGQgbGVucyB2YWx1ZXMKICAgICAgICBERkxFTlM6CiAgICAgICAgZm9yIG15ICRERkxlbnNOYW1lICgga2V5cyAlREZMZW5zTG9va3VwICkgewoKICAgICAgICAgICAgbmV4dCBERkxFTlMgdW5sZXNzIGV4aXN0cyAkREZWYWx1ZXMtPnskREZMZW5zTmFtZX07CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkREZMZW5zTG9va3VweyRERkxlbnNOYW1lfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJERGVmFsdWVzLT57JERGTGVuc05hbWV9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBFeHRlcm5hbFNvdXJjZSAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7IENvbmZpZ0l0ZW0gPT4gXEBDSXNIYW5kbGVkIH0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtIENvbmZpZ0l0ZW1TZWFyY2ggT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkIChxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbVNlYXJjaCBPcGVyYXRpb24uIFRoaXMgd2lsbCByZXR1cm4gYSBDb25maWdJdGVtIElEIGxpc3QuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBVc2VyTG9naW4gPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgUGFzc3dvcmQgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgVXNlckxvZ2luIGlzIHNlbnQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGFzc3dvcmQgaXMgcmVxdWlyZWQKCiAgICAgICAgIyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwMDApCiAgICAgICAgTGltaXQgPT4gMTAwLAoKICAgICAgICAjIFVzZSBDb25maWdJdGVtU2VhcmNoIGFzIGEgY29uZmlnIGl0ZW0gZmlsdGVyIG9uIGEgc2luZ2xlIGNvbmZpZyBpdGVtLAogICAgICAgICMgb3IgYSBwcmVkZWZpbmVkIGNvbmZpZyBpdGVtIGxpc3QKICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IDEyMzQsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiBbMTIzNCwgMTIzNV0sCgogICAgICAgICMgY29uZmlnIGl0ZW0gbnVtYmVyIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgTnVtYmVyID0+ICclMTIzNTQ2JScsCiAgICAgICAgTnVtYmVyID0+IFsnJTEyMzU0NiUnLCAnJTEyMzY2NiUnXSwKCiAgICAgICAgIyBjb25maWcgaXRlbSBuYW1lIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgIyBXaGVuIENvbmRpdGlvbklubGluZSBpcyBzZXQgdGhlbiByZW1haW5pbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSAmJiBjb25kaXRpb24gYW5kCiAgICAgICAgIyBhbmQgdGhlIHNldHRpbmdzIG9mIENvbnRlbnRTZWFyY2hQcmVmaXggYW5kIENvbnRlbnRTZWFyY2hTdWZmaXggd2lsbCBiZSBob25vcmVkLgogICAgICAgIE5hbWUgPT4gJyVTb21lVGV4dCUnLAogICAgICAgIE5hbWUgPT4gWyclU29tZVRlc3QxJScsICclU29tZVRlc3QyJSddLAoKICAgICAgICBDbGFzc2VzICAgICAgICAgPT4gWydDb21wdXRlcicsICdOZXR3b3JrJ10gICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgICAgPT4gWzksIDgsIDcsIDZdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgRGVwbFN0YXRlcyAgICAgID0+IFsnUHJvZHVjdGlvbiddICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzICAgID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIEN1ckRlcGxTdGF0ZXMgICA9PiBbJ1Byb2R1Y3Rpb24nXSAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEN1ckRlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBJbmNpU3RhdGVzICAgICAgPT4gWydXYXJuaW5nJ10gICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gWzEsIDIsIDMsIDRdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3VySW5jaVN0YXRlcyAgID0+IFsnV2FybmluZyddICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VySW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIENyZWF0ZUJ5ICAgICAgICA9PiBbMSwgMiwgM10sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENoYW5nZUJ5ICAgICAgICA9PiBbMywgMiwgMV0sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVtcHR5ICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIHdpbGwgcmV0dXJuIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgYSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgc2V0IHRvIDAgdG8gc2VhcmNoIGZpZWxkcyB3aXRoIGEgdmFsdWUgcHJlc2VudC4KICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBMaWtlICAgICAgICAgICAgICA9PiAndmFsdWUqJywgICAgICAgICAgICAgICAgIyAiZXF1YWxzIiBvcGVyYXRvciB3aXRoIHdpbGRjYXJkIHN1cHBvcnQKICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gJzIwMDEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnMjAwMS0wMS0wMSAwMTowMTowMScsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+ICcyMDAyLTAyLTAyIDAyOjAyOjAyJywKICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzIwMDItMDItMDIgMDI6MDI6MDInLAogICAgICAgIH0sCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY3JlYXRlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoY29uZmlnIGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoY29uZmlnIGl0ZW0gb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNoYW5nZWQgdGltZSBhZnRlciAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIE9yZGVyQnkgYW5kIFNvcnRCeSAob3B0aW9uYWwpCiAgICAgICAgT3JkZXJCeSA9PiAnRG93bicsICAgIyBEb3dufFVwCiAgICAgICAgU29ydEJ5ICA9PiAnTnVtYmVyJywgIyBDb25maWdJdGVtfE51bWJlcnxOYW1lfERlcGxTdGF0ZXxJbmNpU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHxDdXJEZXBsU3RhdGV8Q3VySW5jaVN0YXRlfEFnZXxDcmVhdGVkfENoYW5nZWQKCiAgICAgICAgIyBPcmRlckJ5IGFuZCBTb3J0QnkgYXMgQVJSQVkgZm9yIHN1YiBzb3J0aW5nIChvcHRpb25hbCkKICAgICAgICBPcmRlckJ5ID0+IFsnRG93bicsICdVcCddLAogICAgICAgIFNvcnRCeSAgPT4gWydDb25maWdJdGVtJywgJ051bWJlciddLAogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbIDEsIDIsIDMsIDQgXSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPkluaXQoCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdXZWJzZXJ2aWNlLkludmFsaWRDb25maWd1cmF0aW9uJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICk7CiAgICB9CgogICAgIyBhdXRoZW50aWNhdGUgdXNlcgogICAgbXkgKCRVc2VySUQpID0gJFNlbGYtPkF1dGgoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaC5BdXRoRmFpbCcsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb25maWdJdGVtU2VhcmNoOiBBdXRob3JpemF0aW9uIGZhaWxpbmchIiwKICAgICkgaWYgISRVc2VySUQ7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gPSAkUGFyYW17RGF0YX0tPntMaW1pdH0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0KICAgICAgICB8fCA1MDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkUGFyYW17RGF0YX0tPntTb3J0Qnl9CiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFte0RhdGF9LT57T3JkZXJCeX0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBwYXJhbWV0ZXIgZnJvbSBkYXRhCiAgICBteSAlR2V0UGFyYW0gPSAkU2VsZi0+X0dldFBhcmFtcyggJXsgJFBhcmFte0RhdGF9IH0gKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkcwogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSAkU2VsZi0+X0dldER5bmFtaWNGaWVsZHMoICV7ICRQYXJhbXtEYXRhfSB9ICk7CgogICAgIyBwZXJmb3JtIGNvbmZpZ2l0ZW0gc2VhcmNoCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICBSZXN1bHQgICAgID0+ICdBUlJBWScsCiAgICAgICAgU29ydEJ5ICAgICA9PiAkU2VsZi0+e1NvcnRCeX0sCiAgICAgICAgT3JkZXJCeSAgICA9PiAkU2VsZi0+e09yZGVyQnl9LAogICAgICAgIExpbWl0ICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgUGVybWlzc2lvbiA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgaWYgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBcQENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4ge30sCiAgICB9OwoKfQoKPWhlYWQxIElOVEVSTkFMIElOVEVSRkFDRQoKPWhlYWQyIF9HZXRQYXJhbXMoKQoKZ2V0IHNlYXJjaCBwYXJhbWV0ZXJzLgoKICAgIG15ICVHZXRQYXJhbSA9IF9HZXRQYXJhbXMoCiAgICAgICAgJVBhcmFtcywgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIGNvbmZpZ2l0ZW0gcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICVHZXRQYXJhbSA9IHsKICAgICAgICBBbGxvd2VkUGFyYW1zID0+ICdXaXRoQ29udGVudCcsICMgcmV0dXJuIG5vdCBlbXB0eSBwYXJhbWV0ZXJzIGZvciBzZWFyY2gKICAgIH0KCj1jdXQKCnN1YiBfR2V0UGFyYW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgZm9yIG15ICRJdGVtICgKICAgICAgICBxdyhDb25maWdJdGVtSUQgTnVtYmVyIE5hbWUgQ2xhc3NlcyBDbGFzc0lEcyBEZXBsU3RhdGVzIERlcGxTdGF0ZUlEcwogICAgICAgIEN1ckRlcGxTdGF0ZXMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZXMgSW5jaVN0YXRlSURzIEN1ckluY2lTdGF0ZXMKICAgICAgICBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkgT3JkZXJCeSBTb3J0QnkpCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGdldCBzZWFyY2ggYXJyYXkgcGFyYW1zCiAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICkgewogICAgICAgICAgICBAVmFsdWVzID0gQHsgJFBhcmFteyRJdGVtfSB9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKSApIHsKICAgICAgICAgICAgQFZhbHVlcyA9ICggJFBhcmFteyRJdGVtfSApOwogICAgICAgIH0KICAgICAgICAkR2V0UGFyYW17JEl0ZW19ID0gXEBWYWx1ZXMgaWYgc2NhbGFyIEBWYWx1ZXM7CiAgICB9CgogICAgbXkgQFByZWZpeGVzID0gKAogICAgICAgICdDb25maWdJdGVtQ3JlYXRlVGltZScsCiAgICAgICAgJ0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZScsCiAgICApOwoKICAgIG15IEBQb3N0Zml4ZXMgPSAoCiAgICAgICAgJ09sZGVyTWludXRlcycsCiAgICAgICAgJ05ld2VyTWludXRlcycsCiAgICAgICAgJ09sZGVyRGF0ZScsCiAgICAgICAgJ05ld2VyRGF0ZScsCiAgICApOwoKICAgIGZvciBteSAkUHJlZml4IChAUHJlZml4ZXMpIHsKCiAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFteyRQcmVmaXh9ICkgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9ICRQYXJhbXskUHJlZml4fTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9fiBzL15ccysvL2c7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFBvc3RmaXggKEBQb3N0Zml4ZXMpIHsKICAgICAgICAgICAgbXkgJEl0ZW0gPSAkUHJlZml4IC4gJFBvc3RmaXg7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRJdGVtfSA9ICRQYXJhbXskSXRlbX07CgogICAgICAgICAgICAgICAgIyByZW1vdmUgd2hpdGUgc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskSXRlbX0gPX4gcy9ccyskLy9nOwogICAgICAgICAgICAgICAgJEdldFBhcmFteyRJdGVtfSA9fiBzL15ccysvL2c7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVHZXRQYXJhbTsKCn0KCj1oZWFkMiBfR2V0RHluYW1pY0ZpZWxkcygpCgpnZXQgc2VhcmNoIHBhcmFtZXRlcnMuCgogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSBfR2V0RHluYW1pY0ZpZWxkcygKICAgICAgICAlUGFyYW1zLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgY29uZmlnaXRlbSBwYXJhbWV0ZXJzCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSB7CiAgICAgICAgJ0FsbEFsbG93ZWRERicgPT4gJ1dpdGhEYXRhJywgICAjIHJldHVybiBub3QgZW1wdHkgcGFyYW1ldGVycyBmb3Igc2VhcmNoCiAgICB9Cgo9Y3V0CgpzdWIgX0dldER5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBjb25maWdpdGVtIHNlYXJjaAogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBjb25maWdpdGVtIG9iamVjdAogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgbXkgJUR5bmFtaWNGaWVsZHNSYXc7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgewogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRzUmF3eyAkUGFyYW17RHluYW1pY0ZpZWxkfS0+e05hbWV9IH0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgKSB7CiAgICAgICAgICAgICVEeW5hbWljRmllbGRzUmF3ID0gbWFwIHsgJF8tPntOYW1lfSA9PiAkXyB9IEB7ICRQYXJhbXtEeW5hbWljRmllbGR9IH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIENvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgd2ViIHNlcnZpY2UuCiAgICAgICAgZm9yIG15ICRQYXJhbWV0ZXJOYW1lICggc29ydCBrZXlzICVQYXJhbSApIHsKICAgICAgICAgICAgaWYgKCAkUGFyYW1ldGVyTmFtZSA9fiBte1xBIER5bmFtaWNGaWVsZF8gKCBbYS16QS1aXGRcLV0rICkgXHp9eG1zICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHNSYXd7JDF9ID0gJFBhcmFteyRQYXJhbWV0ZXJOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZAogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZQogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkc1Jhd3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZHNSYXd7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICk7CgogICAgICAgIG15ICVTZWFyY2hPcGVyYXRvcnMgPSAleyAkRHluYW1pY0ZpZWxkc1Jhd3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gfTsKCiAgICAgICAgZGVsZXRlICRTZWFyY2hPcGVyYXRvcnN7TmFtZX07CgogICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSBcJVNlYXJjaE9wZXJhdG9yczsKICAgIH0KCiAgICAjIGFsbG93IGZyZWUgZmllbGRzCgogICAgcmV0dXJuICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ar_SA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmFyX1NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfYqNmK2KfZhtin2Kog2KfZhNiq2LTYutmK2YQg2KfZhNi52KfZhdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfYpdi52K/Yp9iv2KfYqiDYqNmK2KfZhtin2Kog2KfZhNi32YTYqNin2Kog2KfZhNmI2KfYsdiv2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICfYpdi52K/Yp9iv2KfYqiDYqNmK2KfZhtin2Kog2KfZhNin2LPYqtis2KfYqNipINin2YTYtdin2K/YsdipJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn2KXYr9in2LHYqSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn2KrYutmK2YrYsSDYqti52LHZitmBINin2YTZgdim2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9iq2LrZitmK2LEg2KrYudix2YrZgSDYp9mE2K/ZiNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn2K3YstmFINmB2KbYp9iqIFJlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn2YfZhtinINmK2YXZg9mG2YMg2KfYs9iq2YrYsdin2K8g2K3YstmFINmB2KbYp9iqIFJlYWR5MkltcG9ydCDYp9mE2KrZiiDYqti52LHYtiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYo9mD2KvYsSDYtNmK2YjYudmL2Kcg2YTYr9mK2YbYpy4g2YrYsdis2Ykg2YXZhNin2K3YuNipINij2YYg2KjYudi2INin2YTYqtmH2YrYptipINin2YTYpdi22KfZgdmK2Kkg2YLYryDYqtmD2YjZhiDZhdi32YTZiNio2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ9iq2K3Yr9mK2Ksg2KfZhNmD2YrYp9mG2KfYqiDYp9mE2K3Yp9mE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ9in2LPYqtmK2LHYp9ivINit2LLZhSDZgdim2KfYqiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9mB2KbYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn2K/ZiNixINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9iq2LXZgdmK2Kkg2YTZhNmB2KbYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9it2K/YryDZgdim2Kkg2YXZhiDYp9mE2YLYp9im2YXYqSDZhNil2YbYtNin2KEg2LnZhti12LEg2KrZg9mI2YrZhiDYrNiv2YrYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfYp9mE2YHYptipJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn2KfZhNil2KzYsdin2KEg2KfZhNis2YXYp9i52Yog2YTYudmG2LXYsSDYp9mE2KrZh9mK2KbYqSBJVFNNSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNmG2LTYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9it2KfZhNipINin2YTYrdin2K/Yqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfYsdin2KjYtyDYpdmE2Ykg2KLYrtixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfYsdmC2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2LrZitixINi12KfZhNitISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfYsdmC2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNii2K7YsSDYp9mE2YXYsdin2K8g2KfZhNix2KjYtyDYqNmHLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9mH2YQg2KrYsdmK2K8g2K3Zgtin2Ysg2K3YsNmBINi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYp9ifJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9in2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9in2YTYp9iz2YUg2YLZitivINin2YTYp9iz2KrYrtiv2KfZhSDYqNin2YTZgdi52YQg2YXZhiDZgtio2YQg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYqNin2YTYsdmC2YUgKNin2YTYo9ix2YLYp9mFKSDYp9mE2KrYp9mE2YrYqTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfYsdmC2YUg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9ix2YLZhSDYpdi12K/Yp9ixINi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9ix2YLZhSDYp9mE2KXYtdiv2KfYsSDZhdiz2KrYrtiv2YUg2KjYp9mE2YHYudmEINmF2YYg2YLYqNmEINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KjYp9mE2LHZgtmFICjYp9mE2KPYsdmC2KfZhSkg2KfZhNiq2KfZhNmK2Kk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNit2KfYr9irJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICfYqtin2LHZitiuINi52YbYtdixINin2YTYqtmD2YjZitmGOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfYp9mE2YXYrdiq2YjZiSDYp9mE2KrYp9ix2YrYrtmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfYpdmG2LTYp9ihINin2YTZiNmC2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn2LnYsdi2INin2YTYqtmD2KjZitixJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9i52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YTZg9mEINi12YHYrdipJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINio2YrYp9mG2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfYrdiv2K8g2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YfYsNinJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn2KjYr9ihINin2YTYqNit2KsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfYt9ix2YrZgtipINi52LHYtiDYp9mE2LTYrNix2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9mF2LPYqtmI2Ykg2KfZhNi52YXZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9in2YTYqtmD2KjZitixL9in2YTYqti12LrZitixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ9iq2YUg2KfZhNmI2LXZiNmEINil2YTZiSDYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTZhdiz2KrZiNmJINin2YTYsdmI2KfYqNi3INmE2YAgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfZhdi52YTZiNmF2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixINin2YTYrdin2YTZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2KfZhNit2KfZhNmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9ii2K7YsSDYqti52K/ZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9ii2K7YsSDYqti62YrZitixINmF2YYg2YLYqNmEJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn2LnZhtin2LXYsSDYp9mE2KrZh9mK2KbYqSDYp9mE2K7Yp9i12Kkg2KjZgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9iz2YrYqtmFINin2LPYqtmK2LHYp9ivINin2YTZgdim2KfYqiDYp9mE2KrYp9mE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfYs9mK2KrZhSDYp9iz2KrZitix2KfYryDYp9mE2KPYr9mI2KfYsSDYp9mE2KrYp9mE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfZhNin2K3YuCDYo9mG2Ycg2LPZitiq2YUg2KPZiti22YvYpyDYpdmG2LTYp9ihINin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdmC2KfYqNmE2Kkg2YjZgdim2KfYqiBHZW5lcmFsQ2F0YWxvZyDYp9mE2LnYp9mF2Kkg2YjZhNmGINmK2YPZiNmGINmH2YbYp9mDINil2LLYp9mE2Kkg2KrZhNmC2KfYptmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn2YfZhCDYqtix2YrYryDYp9mE2YXYqtin2KjYudip2J8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn2KrYrdiq2KfYrCDYpdmE2Ykg2KPZhdir2YTYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn2KfZhNiq2LnYsdmK2YEg2YTYpyDZitmI2KzYryDYqtis2LLYptipIFlBTUwg2LXYp9mE2K3YqS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfZhti42LHYqSDYudin2YXYqTog2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfZhNmFINmK2KrZhSDYpdi52LfYp9ihINmF2LnYsdmBINi52YbYtdixINin2YTYqtmD2YjZitmGIChDb25maWdJdGVtSUQpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ9iq2K3Yqtin2Kwg2KXZhNmJINi52YbYtdixINiq2YPZiNmK2YYg2YXYrdiv2K8g2YjYp9it2K8g2LnZhNmJINin2YTYo9mC2YQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn2YTZitizINmE2K/ZitmDINit2YIg2KfZhNmI2LXZiNmEINmE2YTZg9iq2KfYqNipINil2YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2Kc6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfZhNmFINmK2KrZhSDYqti52LHZitmBINij2Yog2KrYudix2YrZgSDZhNmE2YHYptipICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgIiVzIiDYutmK2LEg2YXZiNis2YjYryDZgdmKINmC2KfYudiv2Kkg2KfZhNio2YrYp9mG2KfYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfYqti52LDYsSDYrdiw2YEg2YXYudix2YEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINil2LXYr9in2LEg2YQgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfZhNmFINmK2KrZhSDYpdi52LfYp9ihINmF2LnYsdmBINin2YTYqtmD2YjZitmGINij2Ygg2YXYudix2YEg2KfZhNiq2YPYsdin2LEg2KPZiCDZhdi52LHZgSDYp9mE2YHYptipISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2YXZhtitINij2Yog2KrYtdix2YrYrSDYr9iu2YjZhCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn2YTYpyDZitmF2YPZhiDYpdi42YfYp9ixINin2YTYs9is2YTYjCDZhNmFINmK2KrZhSDYpdi52LfYp9ihINmF2LnYsdmBINin2YTYqtmD2YjZitmGISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9mE2Kcg2YrZhdmD2YYg2LnYsdi2INin2YTYs9is2YTYjCDZhNmFINmK2KrZhSDZhdmG2K0g2K3ZgtmI2YIg2KfZhNmI2LXZiNmEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNis2K/ZitivICjYp9mE2YXYudix2YE9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfYp9mE2KXYtdiv2KfYsSDYp9mE2KzYr9mK2K8gKNin2YTZhdi52LHZgT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfYqtmFINiq2K3Yr9mK2Ksg2K3Yp9mE2Kkg2KfZhNmG2LTYsSAo2KzYr9mK2K89JXPYjCDZgtiv2YrZhT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn2KrZhSDYqtit2K/ZitirINit2KfZhNipINin2YTYrdin2K/YqyAo2KzYr9mK2K89JXPYjCDZgtiv2YrZhT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfYqtmFINit2LDZgSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiAo2KfZhNmF2LnYsdmBPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9iq2YXYqiDYpdi22KfZgdipINin2YTYp9ix2KrYqNin2Lcg2KXZhNmJICVzICjYp9mE2YbZiNi5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn2KrZhSDYrdiw2YEg2KfZhNin2LHYqtio2KfYtyDYpdmE2YkgJXMgKNin2YTZhtmI2Lk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfYqtmFINiq2K3Yr9mK2Ksg2KrYudix2YrZgSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiAo2KfZhNmF2LnYsdmBPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9iq2YUg2KrYrdiv2YrYqyDYp9mE2KfYs9mFICjYrNiv2YrYrz0lc9iMINmC2K/ZitmFPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ9iq2YUg2KrYrdiv2YrYqyDYp9mE2LPZhdipICVzINmF2YYgIiVzIiDYpdmE2YkgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfYqtmFINit2LDZgSDYp9mE2KXYtdiv2KfYsSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfZhNmFINmK2KrZhSDYpdi52LfYp9ihINmF2LnYsdmBINin2YTYqtmD2YjZitmGINij2Ygg2YXYudix2YEg2KfZhNil2LXYr9in2LEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9mE2Kcg2YrZhdmD2YYg2KXYuNmH2KfYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhtiMINmE2YUg2YrYqtmFINmF2YbYrSDYrdmC2YjZgiDZiNi12YjZhCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfZhdi52LHZkdmBINi52YbYtdixINin2YTYqtmD2YjZitmGICVzINi62YrYsSDZhdmI2KzZiNivINmB2Yog2YLYp9i52K/YqSDYp9mE2KjZitin2YbYp9iqISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9iq2YXYqiDYt9io2KfYudiq2YfYpyDYqNmI2KfYs9i32KkgJXMg2YHZiiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn2YXZjtix2KzZkNi5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn2YXYudix2ZHZgSDYp9mE2YHYptipINi62YrYsSDYtdin2YTYrSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfZhNmFINmK2KrZhSDYpdi52LfYp9ihINij2Yog2YXYudix2ZHZgSDZhNmE2YHYptipISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9mE2Kcg2KrZiNis2K8g2K3ZgtmI2YIg2YjYtdmI2YQg2YTZh9iw2Ycg2KfZhNmB2KbYqSDZhdi52LfYp9ipISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn2YTYpyDYqtmI2KzYryDZhtiq2YrYrNipISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ9mG2KrYp9im2Kwg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfZhNinINmK2YXZg9mGINil2LjZh9in2LEg2KfZhNi52YbYtdix2Iwg2YTYpyDYqtmI2KzYryDYrdmC2YjZgiDZiNi12YjZhCDZhNmAIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ9mE2YUg2YrYqtmFINin2YTYudir2YjYsSDYudmE2YkgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn2YTZhSDZitiq2YUg2KfZhNi52KvZiNixINi52YTZiSDYo9mKINil2LXYr9in2LHYp9iqISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9in2YTYqti02LrZitmE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn2KrYrdiw2YrYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9in2YTYrdin2K/Yqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn2K3Yp9mE2Kkg2KfZhNmG2LTYsSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9in2YTYrdin2YTYqSDYp9mE2LnYp9ix2LbYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYpyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9mE2Kcg2KrZiNis2K8g2LXZhNin2K3Zitin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn2KfZhNmB2YTYqtixINi62YrYsSDYtdin2YTYrSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ9io2KfYsdin2YXYsiDYp9mE2KjYrdirINi62YrYsSDYtdin2YTYrSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICfYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTZhdi52LHZiNi22KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn2YbZiNi5INit2KfZhNipINin2YTZhti02LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn2YbZiNi5INit2KfZhNipINin2YTYrdin2K/YqyDYp9mE2K3Yp9mE2YonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn2KjZitmGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfZgtmK2YjYryDYp9mE2YHYptipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9it2K/YryDZgdim2Kkg2YjYp9it2K/YqSDYo9mIINij2YPYq9ixINmE2KrZgtmK2YrYryDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTZgtin2KjZhNipINmE2YTYqtit2K/ZitivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfZgtmK2YjYryDYp9mE2YHYptipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfYrdiv2K8g2YHYptipINmI2KfYrdiv2Kkg2KPZiCDYo9mD2KvYsSDZhNiq2YLZitmK2K8g2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YLYp9io2YTYqSDZhNmE2KrYrdiv2YrYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ9iv2YrZhtin2YXZitmD2YogKNi52YbYtdixINin2YTYqtmD2YjZitmGKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn2KvYp9io2KogKNil2LXYr9in2LEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KXYrdin2YTYqSDYp9mE2YXYsdis2LnZitipINmE2YTYsdin2KjYtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfZhdinINil2LDYpyDZg9in2YYg2YfYsNinINin2YTYp9ix2KrYqNin2Lcg2YrZhti32KjZgiDYudmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KPZiCDYp9mE2YbYs9iu2Kkg2KfZhNir2KfYqNiq2Kkg2YXZhiDYp9mE2YPYp9im2YYg2KfZhNmF2LHYrNi52YouINmK2KrZhSDYpdis2LHYp9ihINit2LPYp9ioINit2KfZhNipINin2YTYrdin2K/YqyDYp9mE2K3Yp9mE2Yog2YHZgti3INi52YTZiSDYp9mE2LHZiNin2KjYtyDYp9mE2K/ZitmG2KfZhdmK2YPZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ9it2K/YryDYp9mE2LPZhdipINin2YTYqtmKINiz2YrYqtmFINin2YTYqNit2Ksg2LnZhiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmF2YYg2K7ZhNin2YTZh9inJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfYp9mE2KjZhtmK2Kkg2KfZhNij2LPYp9iz2YrYqSDYutmK2LEg2LXYp9mE2K3YqS4g2YrYsdis2Ykg2KrZgtiv2YrZhSDYqtis2LLYptipINmF2Lkg2KfZhNio2YrYp9mG2KfYqiDYqNiq2YbYs9mK2YIgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfZitmE2LLZhSDYqNiv2KEg2LPZhNiz2YTYqSBZQU1MINio2YAgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9iq2LnYsNixINmF2LPYrSDYp9mE2KzYr9mI2YQgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn2YTZhSDZitiq2YUg2KfZhNi52KvZiNixINi52YTZiSDYo9mKINit2YLZiNmEINiv2YrZhtin2YXZitmD2YrYqSDYsNin2Kog2LXZhNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn2KrYudiw2ZHYsSDYp9mE2KXYr9ix2KfYrCDZgdmKINin2YTYrNiv2YjZhCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9iq2YUg2KXYr9ix2KfYrCAwINi12YHZiNmBINmB2Yog2KfZhNis2K/ZiNmEIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTYudiv2K8g2LnZhti12LEg2YjYp9it2K8g2YPYrdivINij2YLYtdmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ9iz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn2K3Yr9irINiu2LfYoyDZgdmKINmF2LLYp9mF2YbYqSDYp9mE2KrYudix2YrZgdin2KouINmK2LHYrNmJINin2YTYqtit2YLZgiDZhdmGINin2YTYs9is2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn2YTYr9mK2YMg2KrYudix2YrZgdin2KogSVRTTUNvbmZpZ0l0ZW0g2LrZitixINmF2KrYstin2YXZhtipLiDZitix2KzZiSDZhti02LEg2KrYutmK2YrYsdin2Kog2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZiiDZhNmAIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn2YXZhtiq2YfZitipINin2YTYtdmE2KfYrdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfYp9mE2LXZitin2YbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9i32YrZkdin2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9mF2K7Yt9i3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9in2YTYpdi12YTYp9itJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfZhdiq2YLYp9i52K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KfZhNmF2LHYp9is2LnYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn2KfZhNin2K7Yqtio2KfYsS/YttmF2KfZhiDYp9mE2KzZiNiv2KknOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9mG2LjYsdipINi52KfZhdipINmI2KrYo9mD2YrYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfYp9iz2KrZitix2KfYryDYp9mE2YHYptin2Kov2KfZhNij2K/ZiNin2LEg2YjYp9mE2K3ZgtmI2YQg2KfZhNmF2LHYqtio2LfYqSDYqNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfYrdiv2Ksg2K7Yt9ijINij2KvZhtin2KEg2KfYs9iq2YrYsdin2K8g2KfZhNmB2KbYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtINmF2K7ZgdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDZhdi52LHZiNi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfZitiz2YXYrSDYqNi02LHZiNi3INio2K3YqyDZhdmI2LPYudipINmB2Yog2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuINio2KfYs9iq2K7Yr9in2YUg2YfYsNmHINin2YTZhdmK2LLYqSDZitmF2YPZhtmDINin2YTYqNit2Ksg2YXYq9mE2KfZiyDYudmGINin2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdi5INmH2LDYpyDYp9mE2YbZiNi5INmF2YYg2KfZhNi02LHZiNi3INmF2KvZhCAiKCrZhdmB2KrYp9itIDEqJirZhdmB2KrYp9itIDIqKSIg2KPZiCAiKCrZhdmB2KrYp9itIDEqfHzZhdmB2KrYp9itIDIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9mK2LPZhditINio2LTYsdmI2Lcg2KjYrdirINmF2YjYs9i52Kkg2YHZiiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4g2KjYp9iz2KrYrtiv2KfZhSDZh9iw2Ycg2KfZhNmF2YrYstipINmK2YXZg9mG2YMg2KfZhNio2K3YqyDYudmE2Ykg2LPYqNmK2YQg2KfZhNmF2KvYp9mEINi52YYg2KfYs9mFINi52YbYtdixINin2YTYqtmD2YjZitmGINmF2Lkg2YfYsNinINin2YTZhtmI2Lkg2YXZhiDYp9mE2LTYsdmI2Lcg2YXYq9mEICIoKtmF2YHYqtin2K0gMSomKtmF2YHYqtin2K0gMiopIiDYo9mIICIoKtmF2YHYqtin2K0gMSp8fNmF2YHYqtin2K0gMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn2KfZhNmF2K7YqNix2YrZhiDYp9mE2LPYsdmK2YrZhiDYp9mE2YXYudmK2YbZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ9in2YTZhdiu2KjYsdmK2YYg2KfZhNiz2LHZitmK2YYg2KfZhNmF2LnZitmG2YrZhiDZhNi02LHZg9ipINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9in2YTZhdiu2KjYsdmI2YYg2KfZhNiz2LHZitmI2YYg2KfZhNmF2K7Ytdi12YjZhiDZhNmE2YXYs9iq2K7Yr9mFINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAn2KXYudiv2KfYr9in2KogQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn2KrYrdmC2YIg2YXZhiDZiNis2YjYryDYp9iz2YUg2YHYsdmK2K8g2YHZgti3INiv2KfYrtmEINmG2YHYsyDZgdim2KkgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSDYo9mIINi52KfZhNmF2YrZi9inIChcJ9i52KfZhVwnKdiMINmF2YXYpyDZiti52YbZiiDYo9mGINmD2YQg2LnZhti12LEg2KrZg9mI2YrZhiDZhdmI2KzZiNivINmK2KTYrtiwINmB2Yog2KfZhNin2LnYqtio2KfYsSDYudmG2K8g2KfZhNio2K3YqyDYudmGINin2YTYqtmD2LHYp9ix2KfYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ9in2K7YqtixINmI2K3Yr9ipINmG2YXYt9mK2Kkg2YTZgdix2LYg2YbYuNin2YUg2KfZhNiq2LPZhdmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfYp9iu2KrYsSDZiNit2K/YqSDZhtmF2LfZitipINmE2YHYsdi2INmF2K7Yt9i3INij2LHZgtin2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ9in2K7YqtixINmI2K3Yr9ipINmG2YXYt9mK2Kkg2YTZgdix2LYg2YXYrti32Lcg2LPZhNiz2YTYqSDYp9mE2KXYtdiv2KfYsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfYp9iu2KrYsSDYp9mE2LPZhdin2Kog2YTYqti02LrZitmEINil2YbYtNin2KEg2KXYtdiv2KfYsSDYrNiv2YrYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn2KfYrtiq2LEg2KfZhNmB2KbYp9iqINin2YTZhdix2KfYryDYqti52YrZitmG2YfYpyDZhNmB2KbYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAn2YXYsdi02K3Yp9iqINi52YbYtdixINiq2YPZiNmK2YYg2KfZhNi52YXZiNivINmE2YAg2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYudmF2YjYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ9in2YTYo9i52YXYr9ipINin2YTYqtmKINmK2YXZg9mGINiq2LXZgdmK2KrZh9inINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuINmF2YTYp9it2LjYqTog2YrZj9iz2YXYrSDZgdmC2Lcg2KjYs9mF2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZiNin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfYudmG2KfYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICfYpdi22KfZgdipINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ9iq2LnYr9mK2YQg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YjYrdiv2Kkg2K3Yr9irINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTZhtmF2LfZitipINin2YTYqtmKINiq2KrZititINin2YTYqtiz2KzZitmEINmB2Yog2KfZhNiz2KzZhCDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfZiNit2K/YqSDYrdiv2Ksg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmG2YXYt9mK2Kkg2KfZhNiq2Yog2KrZgtmI2YUg2KjYqtit2K/ZitirINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KXZhNmJINiq2LnYsdmK2YHZh9inINin2YTYrdin2YTZii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfYqtin2LHZitiuINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfYt9io2KfYudipINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9iq2YPYqNmK2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn2LnYsdi2INi02KzYsdipINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn2KXYtdiv2KfYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfZhNmGINmK2KrZhSDYqtiu2LLZitmGINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YXZhiDYp9mE2YHYptin2Kog2KfZhNiq2KfZhNmK2Kkg2LnZhNmJINiu2KfYr9mFIEVsYXN0aWNzZWFyY2guINmE2KrYt9io2YrZgiDYsNmE2YMg2LnZhNmJIENJcyDYp9mE2K3Yp9mE2YrYqdiMINmK2KzYqCDYqti02LrZitmEINiq2LHYrdmK2YQgQ0kg2LnYqNixINmI2K3Yr9ipINin2YTYqtit2YPZhdiMINio2LnYryDYqti62YrZitixINmH2LDYpyDYp9mE2K7Zitin2LEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ9mE2YYg2YrYqtmFINiq2K7YstmK2YYg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYsNin2Kog2K3Yp9mE2KfYqiDYp9mE2YbYtNixINin2YTYqtin2YTZitipINi52YTZiSDYrtin2K/ZhSBFbGFzdGljc2VhcmNoLiDZhNiq2LfYqNmK2YIg2LDZhNmDINi52YTZiSBDSXMg2KfZhNit2KfZhNmK2KnYjCDZitis2Kgg2KrYtNi62YrZhCDYqtix2K3ZitmEIENJINi52KjYsSDZiNit2K/YqSDYp9mE2KrYrdmD2YXYjCDYqNi52K8g2KrYutmK2YrYsSDZh9iw2Kcg2KfZhNiu2YrYp9ixLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfYrdivINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfYrdivINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YPZhCDYtdmB2K3YqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9mC2KfYudiv2Kkg2KjZitin2YbYp9iqINil2K/Yp9ix2Kkg2KfZhNiq2YfZitim2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfZiNit2K/YqSDYqtmH2YrYptipINin2YTYudmG2LXYsSDYp9mE2YXYrNmF2ZHYuSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmF2YjYrNmHINin2YTYrtmE2YHZiiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn2KXZhti02KfYoSDYqti52LHZitmB2KfYqiDZhNi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YjYpdiv2KfYsdiq2YfYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfYpdmG2LTYp9ihINiq2LDYp9mD2LEg2YTYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YbZgtin2Lcg2LLZhdmG2YrYqSDZhdit2K/Yr9ipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfZitmF2YPZhiDZhNmE2LnZhdmE2KfYoSDYp9mE2KfYt9mE2KfYuSDYudmE2Ykg2KXYtdiv2KfYsdin2KogQ0kg2KfZhNiq2KfYsdmK2K7ZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfZitmF2YPZhiDZhNmE2LnZhdmE2KfYoSDYp9mE2KrYqNiv2YrZhCDZitiv2YjZitin2Ysg2KjZitmGINil2LXYr9in2LHYp9iqIENJINin2YTYqtin2LHZitiu2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfYp9mE2KjZitin2YbYp9iqINin2YTYp9mB2KrYsdin2LbZitipINmE2KfYs9iq2K7Yr9in2YXZh9inINmB2Yog2KfZhNiz2YXYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4g2YXYq9in2YQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD3Ys9mG2KnYmyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0Pdii2K7YsdibIElUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTLYmyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfYp9mE2KjZitin2YbYp9iqINin2YTYp9mB2KrYsdin2LbZitipINmE2KfYs9iq2K7Yr9in2YXZh9inINmB2Yog2KfZhNiz2YXYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9iq2LnYsdmK2YEg2KfZhNi52YXZhNmK2KfYqiDYp9mE2KrZiiDZitis2Kgg2KPZhiDZitiq2YjZgdixINio2YfYpyDYstixINin2YTYpdi52K/Yp9iv2KfYqiDZgdmKINmI2K/YrNipINmD2KfYptmGINin2YTYsdin2KjYtyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDYp9mE2LHYrNin2KEg2YXZhNin2K3YuNipINij2YbZhyDZitis2Kgg2KrYs9is2YrZhCDZhdmE2YHYp9iqIEpTINmIIENTUyDYp9mE2KrYp9mE2YrYqSDZhNmH2LDZhyDYp9mE2KXYrNix2KfYodin2Ko6IENvcmUuQ3VzdG9tTGlzdC5jc3PYjCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz2IwgQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz2IwgQ29yZS5BZ2VudC5UYWJsZUZpbHRlci5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ9iq2LnYsdmK2YEg2YXYrti32Lcg2YLYp9mE2Kg6OjrZhdis2YXZiNi52Kkg2KPYr9mI2KfYqiDZhNiz2YTYp9iz2YQg2KfZhNil2LXYr9in2LEuINmK2Y/Ys9iq2K7Yr9mFINmB2YLYtyDYpdiw2Kcg2KrZhSDYqti52YrZitmGINmI2K3Yr9ipINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2KXZhNmJIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ9iq2K3Yr9mK2K8g2YXYrNmF2YjYudipINmF2YYg2KfZhNi02LHZiNi3INin2YTYqtmKINmK2Y/Ys9mF2K0g2KjZhdmI2KzYqNmH2Kcg2YTZhNi52YXZitmEINio2LHYpNmK2Kkg2LnZhti12LEg2KrZg9mI2YrZhi4g2YrZhdmD2YYg2KrZgtmK2YrYryDYp9mE2LTYsdmI2Lcg2KfYrtiq2YrYp9ix2YrZi9inINi52YTZiSDZhdis2YXZiNi52KfYqiDZhdi52YrZhtipINmF2YYg2KfZhNi52YXZhNin2KEuINin2YTYp9iz2YUg2YfZiCDYp9mE2LPZhdipINin2YTYpdmE2LLYp9mF2YrYqSDYp9mE2YjYrdmK2K/YqS4g2KXYsNinINmE2YUg2YrYqtmFINil2LnYt9in2KEg2KPZiiDYrtmK2KfYsdin2Kog2KPYrtix2YnYjCDYs9iq2YPZiNmGINis2YXZiti5INi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YXYsdim2YrYqSDYqtit2Kog2KrZhNmDINin2YTZgdim2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYrdiw2YEg2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2KjYp9iz2KrYrtiv2KfZhSDYp9mE2YjYp9is2YfYqSDYp9mE2LnYp9mF2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTZhNit2LXZiNmEINi52YTZiSDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDYqNin2LPYqtiu2K/Yp9mFINin2YTZiNin2KzZh9ipINin2YTYudin2YXYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNmE2KjYrdirINmB2Yog2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2KjYp9iz2KrYrtiv2KfZhSDYp9mE2YjYp9is2YfYqSDYp9mE2LnYp9mF2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYqti52YrZitmGINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINio2KfYs9iq2K7Yr9in2YUg2KfZhNmI2KfYrNmH2Kkg2KfZhNi52KfZhdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfZitit2K/YryDZiNit2K/YqSDZhti42LHYqSDYudin2YXYqSDZhNil2LjZh9in2LEg2KfZhNi52LHYtiDYp9mE2LXYutmK2LEg2YTZgtin2KbZhdipINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINmF2Kcg2KXYsNinINmD2KfZhiDZitis2Kgg2KXYuNmH2KfYsSDYqtiz2YXZitin2Kog2YbZiNi5INin2YTYp9ix2KrYqNin2Lcg2YHZiiDYp9iq2LXYp9mE2KfYqiDYp9mE2LnZgtiv2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KrYudio2YrYsdin2Kog2KfZhNi52KfYr9mK2Kkg2KjYtNmD2YQg2YHYsdiv2Yog2YTZg9mEINmB2KbYqSDZhdmGINmB2KbYp9iqIENvbmZpZ0l0ZW0g2YTZhNiq2K3ZgtmCINmF2YYg2KfYs9mFINi52YbYtdixINin2YTYqtmD2YjZitmGINmI2KXYuNmH2KfYsSDYsdiz2KfYptmEINin2YTYrti32KMg2KfZhNmF2YLYp9io2YTYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2YXYqtin2K3YqSDZhdmGIENJINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINin2LnYqtmF2KfYr9mL2Kcg2LnZhNmJINmB2KbYqSBDSS4g2YrYrNioINij2YYg2YrYqtmD2YjZhiDZg9mEINil2K/Yrtin2YQg2YXZhiDYp9iz2YUg2KfZhNmB2KbYqSDZiNmF2LXZgdmI2YHYqSDZhdmGINin2YTYrdmC2YjZhCDYp9mE2YXYqtin2K3YqSDZhNmE2YHYptipINin2YTZhdmC2KfYqNmE2KkuINmK2KzYqCDYo9mGINiq2K3Yqtix2YUg2KXYr9iu2KfZhNin2Kog2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNmF2K7Yt9i3IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYs9mF2Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmK2Kkg2YTZgdix2LIg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZhtiq2YrYrNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2LPZhdipINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYp9mB2KrYsdin2LbZitipINmE2YHYsdiyINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YbYqtmK2KzYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfZitit2K/YryDYs9mF2Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmK2Kkg2YTZgdix2LIg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZhtiq2YrYrNipINio2K3YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmH2LDZhyDYp9mE2LnZhdmE2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYqtix2KrZitioINin2YTYp9mB2KrYsdin2LbZiiDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YbYqtmK2KzYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4g2YTYo9i52YTZiTog2KfZhNij2YLYr9mFINmB2Yog2KfZhNij2LnZhNmJLiDZhNij2LPZgdmEOiDYp9mE2KPYrdiv2Ksg2YHZiiDYp9mE2KPYudmE2YkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfZitit2K/YryDYqtix2KrZitioINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYp9mB2KrYsdin2LbZiiDZgdmKINmG2KrZitis2Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuINmE2KPYudmE2Yk6INin2YTYo9mC2K/ZhSDZgdmKINin2YTYo9i52YTZiS4g2YTYo9iz2YHZhDog2KfZhNij2K3Yr9irINmB2Yog2KfZhNij2LnZhNmJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNin2YHYqtix2KfYttmK2Kkg2KfZhNmF2LnYsdmI2LbYqSDZhdmGIENJcyDZgdmKINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9i52KrZhdin2K/Zi9inINi52YTZiSDZgdim2KkgQ0kuINmK2KzYqCDYo9mGINmK2KrZg9mI2YYg2YPZhCDYpdiv2K7Yp9mEINmF2YYg2KfYs9mFINin2YTZgdim2Kkg2YjZhdi12YHZiNmB2Kkg2YXZhiDYp9mE2K3ZgtmI2YQg2KfZhNmF2KrYp9it2Kkg2YTZhNmB2KbYqSDYp9mE2YXZgtin2KjZhNipLiDZitis2Kgg2KPZhiDYqtit2KrYsdmFINil2K/Yrtin2YTYp9iqINin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdiu2LfYtyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfZitit2K/YryDYudmF2YIg2KfZhNi52YTYp9mC2KfYqiDYp9mE2KfZgdiq2LHYp9i22Yog2KfZhNiw2Yog2LPZitiq2YUg2LnYsdi22YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmF2LnYsdmI2LbYqSDYp9mE2KfZgdiq2LHYp9i22YrYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYqNit2Ksg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmK2Kkg2KfZhNmF2LnYsdmI2LbYqSDZhNi02KfYtNipINio2K3YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4g2YXYq9in2YQ6ICLYp9mE2YXZgdiq2KfYrSIg2YrYrNioINij2YYg2YrYrdiq2YjZiiDYudmE2Ykg2KfYs9mFINin2YTYrdmC2YQg2KfZhNiv2YrZhtin2YXZitmD2Yog2YHZiiDZh9iw2Ycg2KfZhNit2KfZhNipIFwnWFwn2IwgItin2YTZhdit2KrZiNmJIiDZitis2Kgg2KPZhiDZitit2KrZiNmKINi52YTZiSDZgtmK2YXYqSDYp9mE2K3ZgtmEINin2YTYr9mK2YbYp9mF2YrZg9mKINit2LPYqCDZhtmI2Lkg2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitiMINin2YTZhti1OiBcJ9mG2LVcJ9iMINin2YTZgtin2KbZhdipINin2YTZhdmG2LPYr9mE2Kk6IFwnMVwn2Iwg2KfZhNiq2KfYsdmK2K4v2KfZhNmI2YLYqjogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hEeW5hbWljRmllbGRfWFQgVGltZVNsb3RTdGxvdFN0YXJ0TWludXRlPTAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YIFRpbWVTbG90U3RhcnRTZWNvbmQ9MDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1ggVGltZVNsb3RTdG9wWWVhcj0yMDEz2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YIFRpbWVTbG90U3RvcE1vbnRoPTAxIFNlYXJjaF9EeW5hbWljRmllbGRfWER5bmFtaWNGaWVsZF9YVCBUaW1lU2xvdFN0b3BEYXk9MjbYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIz2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU52JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OyIg2YggXCfYo9mIIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVF9UaW1lUG9pbnRGb3JtYXQ9d2Vla9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRfVGltZVBvaW50U3RhcnQ92YLYqNmE2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVCBUaW1lUG9pbnRWYWx1ZT03XCfYmyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNmD2KfYptmGINin2YTZgdix2LnZiiDYp9mE2KfZgdiq2LHYp9i22Yog2YTZhNmB2KbYqSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2YXYqtin2K3YqSDZhdmGIENJINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINin2LnYqtmF2KfYr9mL2Kcg2LnZhNmJINmB2KbYqSBDSS4g2YrYrNioINij2YYg2YrYqtmD2YjZhiDZg9mEINil2K/Yrtin2YQg2YXZhiDYp9iz2YUg2KfZhNmB2KbYqSDZiNmF2LXZgdmI2YHYqSDZhdmGINin2YTYrdmC2YjZhCDYp9mE2YXYqtin2K3YqSDZhNmE2YHYptipINin2YTZhdmC2KfYqNmE2KkuINmK2KzYqCDYo9mGINiq2K3Yqtix2YUg2KXYr9iu2KfZhNin2Kog2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNmF2K7Yt9i3IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2LHYqtmB2KfYuSDZhdmD2YjZhiDZhdit2LHYsSDYp9mE2YbYtSDYp9mE2YXZhtiz2YIuINit2K/YryDZgtmK2YXYqSDYsdmC2YXZitipICjYqNmD2LPZhCkg2KPZiCDZhtiz2KjYqSDZhdim2YjZitipICjZhtiz2KjZitipKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2LnYr9ivINin2YTYtdmB2YjZgSDZhNmF2K3YsdixINiq2LnYsdmK2YEgQ0kg2YHZiiDZiNin2KzZh9ipINin2YTZhdiz2KTZiNmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfZitmP2K3Yr9ivINiq2LHYqtmK2Kgg2KfZhNit2KfZhNin2Kog2KfZhNi52KfYsdi22Kkg2YXZhiDYp9mE2KPYudmE2YkgKNmF2KvZhCDYp9mE2K3ZhNmC2YrYqSkg2KXZhNmJINin2YTYo9iv2YbZiSAo2YXYq9mEINin2YTZiNi42YrZgdmK2KkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2KfZhNin2Kog2KfZhNmG2LTYsSDYsNin2Kog2KfZhNi12YTYqSDYp9mE2KrZiiDZitmF2YPZhiDYo9mGINiq2KTYq9ixINmB2YrZh9inINin2YTYqtiw2KfZg9ixINin2YTZhdix2KrYqNi32Kkg2LnZhNmJINit2KfZhNipINin2YTZhdiu2KjYsSDYp9mE2LPYsdmKLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2K8g2KfZhNio2K3YqyDZhNi02KfYtNipIEFnZW50SVRTTUNvbmZpZ2lnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYrdivINin2YTYqNit2Ksg2YTYtNin2LTYqSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2K8g2KfZhNio2K3YqyDZhNi02KfYtNipIEN1c3RvbWVySVRTTUNvbmZpZ2lnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYrdivINin2YTYqNit2Ksg2YTYtNin2LTYqSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2LjYp9mH2LHYqSDZhdmGIENJcyDZgdmKINi32LHZitmC2Kkg2KfZhNi52LHYtiDYp9mE2YXYudmC2K/YqSDZhNis2K/ZiNmEINin2YTYp9ix2KrYqNin2Lcg2YTYrNmF2YrYuSDZgdim2KfYqiBDSS4g2KXYsNinINmE2YUg2YrZg9mGINmH2YbYp9mDINil2K/Yrtin2YTYjCDZitiq2YUg2LnYsdi2INin2YTYo9i52YXYr9ipINin2YTYp9mB2KrYsdin2LbZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNmF2LnYsdmI2LbYqSDZhdmGIENJINmB2Yog2LfYsdmK2YLYqSDYp9mE2LnYsdi2INin2YTZhdi52YLYr9ipINmE2KzYr9mI2YQg2KfZhNin2LHYqtio2KfYt9iMINin2LnYqtmF2KfYr9in2Ysg2LnZhNmJINmB2KbYqSBDSS4g2YrYrNioINij2YYg2YrZg9mI2YYg2YPZhCDYpdiv2K7Yp9mEINmF2LPYqNmI2YLZi9inINio2KfYs9mFINin2YTZgdim2Kkg2YjZhtmC2LfYqtmK2YYgKNij2Yog2KfZhNmD2YXYqNmK2YjYqtixOjo6OjopLiDZh9mG2KfZgyDYudiv2K8g2YLZhNmK2YQg2YXZhiDYs9mF2KfYqiBDSS1BdHRyaWJ1dGVzINin2YTZhdi02KrYsdmD2Kkg2KjZitmGINis2YXZiti5IENJICjZhdir2KfZhCDZhNmB2KbYqSDYp9mE2YPZhdio2YrZiNiq2LE6INin2YTYrdin2LPZiNioOjrYp9mE2KfYs9mF2Iwg2KfZhNit2KfYs9mI2Kg6OkN1ckRlcGxTdGF0ZdiMINin2YTYrdin2LPZiNioOjpDcmVhdGVUaW1lKS4g2YTYpdi42YfYp9ixINiz2YXYp9iqIENJLUF0dHJpYnV0ZXMg2KfZhNmB2LHYr9mK2Kkg2YPZhdinINmH2Yog2YXYudix2YHYqSDZgdmKINiq2LnYsdmK2YEgQ0ktRGVmaW5pdGlvbtiMINmK2KzYqCDYp9iz2KrYrtiv2KfZhSDYp9mE2YXYrti32Lcg2KfZhNiq2KfZhNmKICjZhdir2KfZhCDZhNmB2KbYqSDYp9mE2YPZhdio2YrZiNiq2LEpOiDYp9mE2YPZhdio2YrZiNiq2LE6Otin2YTZgtix2LUg2KfZhNi12YTYqDo6MdiMINin2YTZg9mF2KjZitmI2KrYsTo62KfZhNmC2LHYtSDYp9mE2LXZhNioOjoxOjrYp9mE2LPYudipOjox2Iwg2KfZhNmD2YXYqNmK2YjYqtixOiDYp9mE2YLYsdi1INin2YTYtdmE2Kg6OjLYjCDYp9mE2YPZhdio2YrZiNiq2LE6INin2YTZgtix2LUg2KfZhNi12YTYqDo6Mjog2KfZhNiz2LnYqTo6MS4g2YHZiiDYrdin2YTYqSDYudiv2YUg2YjYrNmI2K8g2KXYr9iu2KfZhCDZhNmB2KbYqSBDSdiMINmK2KrZhSDYudix2LYg2KfZhNij2LnZhdiv2Kkg2KfZhNin2YHYqtix2KfYttmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNi52YbYp9i12LEg2KfZhNmF2KrYp9it2KkgItmE2YTYpdis2LHYp9ihIiDZgdmKINin2YTZhdiz2KrZiNmJINin2YTYq9in2YTYqyDZhdmGINio2YbZitipIEFDTCDZhNi52YbYtdixINiq2YPZiNmK2YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2LnZhtin2LXYsSDYp9mE2YXYqtmI2YHYsdipINmB2Yog2KfZhNmF2LPYqtmI2Ykg2KfZhNij2YjZhCDZhdmGINio2YbZitipIEFDTCDZhNi52YbYtdixINiq2YPZiNmK2YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNi52YbYp9i12LEg2KfZhNmF2KrZiNmB2LHYqSDZgdmKINin2YTZhdiz2KrZiNmJINin2YTYq9in2YbZiiDZhdmGINio2YbZitipIEFDTCDZhNi52YbYtdixINiq2YPZiNmK2YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn2YrYrdiv2K8g2YbZiNi5INin2YTYp9ix2KrYqNin2LcgKNin2YTZhdiz2YXZiSDZhdmGINmF2YbYuNmI2LEg2KfZhNiq2LDZg9ix2KkpINin2YTYsNmKINmK2YXZg9mGINij2YYg2YrYpNir2LEg2LnZhNmJINit2KfZhNipIENJINin2YTZhdix2KrYqNi3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINmG2YjYuSDYp9mE2KrYsNmD2LHYqSDYp9mE2KrZiiDZitmF2YPZhiDYo9mGINiq2KTYq9ixINi52YTZiSDYrdin2YTYqSDYp9mE2YXYrtio2LEg2KfZhNmF2LPYqtmC2YQg2KfZhNmF2LHYqtio2LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn2KrYrdiv2YrYqyDYp9mE2KrYudix2YrZgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn2K3YsNmBINi52YbYtdixINin2YTYqtmH2YrYptipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ9iv2YrYqNmE2LPYqtmK2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9mE2YjZhiDYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ9it2KfZhNipINin2YTZhti02LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn2YXZg9ix2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ9in2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNit2K/YqyDYp9mE2K3ZgtmEINin2YTYr9mK2YbYp9mF2YrZg9mKINin2YTYqtmKINiq2K3Yr9ivINiq2LnYsdmK2YHYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2LnZhNmJINij2YbZh9inINi62YrYsSDZhdiq2LLYp9mF2YbYqdiMINil2LDYpyDZg9in2YbYqiDYqtit2KrZiNmKINi52YTZiSDYrdmC2YjZhCDYr9mK2YbYp9mF2YrZg9mK2Kkg2YXYqti62YrYsdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNmF2LnYsdmI2LbYqSDZgdmKINi02KfYtNipINit2YLZhCDYpdiv2KfYsdipINiu2K/Zhdin2Kog2KrZg9mG2YjZhNmI2KzZitinINin2YTZhdi52YTZiNmF2KfYqiDZiNin2YTYp9iq2LXYp9mE2KfYqiDYp9mE2KXYttin2YHZiiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti42YfYsSDYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDZgdmKINi02KfYtNipINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTYqtmKINiq2LjZh9ixINmB2Yog2LTYp9i02Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9iq2YXZg9mK2YYg2YXZitiy2Kkg2KfZhNil2KzYsdin2KHYp9iqINin2YTZhdis2YXYudipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZhNmI2KfYrNmH2Kkg2KfZhNij2YXYp9mF2YrYqSDZhNmE2YjZg9mK2YQg2YTZhNi52YXZhCDYudmE2Ykg2KPZg9ir2LEg2YXZhiDYudmG2LXYsSDYqtmD2YjZitmGINmI2KfYrdivINmB2Yog2YPZhCDZhdix2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfYqtmF2YPZitmGINmF2YrYstipINin2YTYpdis2LHYp9ihINin2YTZhdis2YXYuSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2YLYtyDZhNmE2YXYrNmF2YjYudin2Kog2KfZhNmF2K/Ysdis2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ9mI2K3Yr9ipINin2YTYrdiv2Ksg2KfZhNmG2YXYt9mK2Kkg2YTYqti52YrZitmGINit2KfZhNipINin2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhtmKINi52YTZiSDYsdin2KjYtyDYqtiw2YPYsdipLdiq2YPZiNmK2YYt2LnZhti12LEt2KrZg9mI2YrZhi3Ysdin2KjYty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn2K3ZgtmI2YQg2YHZh9ix2LMg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhtiMINin2YTZhdiz2KrYrtiv2YXYqSDZhNmE2KjYrdirINi52YYg2KfZhNmG2LUg2KfZhNmD2KfZhdmELiDZitiq2YUg2KrYrtiy2YrZhiDYp9mE2K3ZgtmI2YQg2KPZiti22YvYp9iMINmI2YTZg9mG2YfYpyDZhNmK2LPYqiDYpdmE2LLYp9mF2YrYqSDZhNmE2YjYuNmK2YHYqSDYp9mE2LnYp9mF2KkuINmK2YXZg9mGINiq2LnYt9mK2YQg2KXYr9ix2KfYrCDYp9mE2YXYsdmB2YLYp9iqINi52YYg2LfYsdmK2YIg2KrYudmK2YrZhiDYp9mE2KXYr9iu2KfZhCDYpdmE2YkgMCDYo9mIINit2LDZgdmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn2KfZhNit2YLZiNmEINin2YTZhdiu2LLZhtipINmB2Yog2YHZh9ix2LMg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KrZiiDYqtmP2LPYqtiu2K/ZhSDZhNij2LTZitin2KEg2KPYrtix2Ykg2KXZhNmJINis2KfZhtioINi52YXZhNmK2KfYqiDYp9mE2KjYrdirINi52YYg2KfZhNmG2LUg2KfZhNmD2KfZhdmELiDZhNmE2YjYuNin2KbZgSDYp9mE2YPYp9mF2YTYqSDYrNmF2YrYuSDYp9mE2K3ZgtmI2YQg2KXZhNiy2KfZhdmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn2KrYs9is2YrZhCDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2KkgR2VuZXJpY0ludGVyZmFjZSDZhNi32KjZgtipINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn2KrYs9is2YrZhCDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2KkgR2VuZXJpY0ludGVyZmFjZSDZhNi32KjZgtipINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9iq2LPYrNmK2YQg2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipIEdlbmVyaWNJbnRlcmZhY2Ug2YTYt9io2YLYqSDZhdiz2KrYr9i52YogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiBJVFNNSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9mG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNit2KfYr9irJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitiq2LbZhdmGINit2KfZhNin2Kog2KfZhNmG2LTYsSDZgdmKINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitiq2LbZhdmGINit2KfZhNin2Kog2KfZhNit2YjYp9iv2Ksg2YHZiiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn2KfZhNit2K8g2KfZhNij2YLYtdmJINmE2LnYr9ivINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiq2Yog2LPZitiq2YUg2LnYsdi22YfYpyDZgdmKINmG2KrZitis2Kkg2YfYsNmHINin2YTYudmF2YTZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9in2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmE2KrYrdmC2YIg2YXZhiDYp9mE2YXYrNmF2YjYudipINin2YTZhdiz2KTZiNmE2Kkg2LnZhiDZgdim2Kkg2YXYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTZhNiq2K3ZgtmCINmF2YYg2KfZhNmF2KzZhdmI2LnYqSDYp9mE2YXYs9ik2YjZhNipINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2KXZhti02KfYoSDYpdit2LXYp9im2YrYp9iqINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9mI2K3Yr9ipINin2YTYp9iz2YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ9mI2K3Yr9ipINin2YTYo9ix2YLYp9mFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9i52K/YryDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYqtmKINiz2YrYqtmFINi52LHYttmH2Kcg2YHZiiDZg9mEINi12YHYrdipINmF2YYg2YbYqtin2KbYrCDYp9mE2KjYrdirINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9i52K/YryDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYqtmKINiz2YrYqtmFINi52LHYttmH2Kcg2YHZiiDZg9mEINi12YHYrdipINmF2YYg2YbYqtin2KbYrCDYp9mE2KjYrdirINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ9in2YTZg9in2KbZhtin2Kog2KfZhNiq2Yog2YrYrNioINin2YTYqNit2Ksg2LnZhtmH2KfYjCDZiNi52K/YryDYp9mE2KXYr9iu2KfZhNin2Kog2YjYp9mE2LPZhdin2Kog2KfZhNiq2Yog2YrYrNioINil2LjZh9in2LHZh9inLiDZitis2Kgg2KrYrtiy2YrZhiDYs9mF2KfYqiBDb25maWdJdGVtINio2LTZg9mEINi12LHZititINi52KjYsSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfZhti42LHYqSDYudin2YXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNmF2LnZhNmF2KfYqiDYp9mE2K7Yp9i12Kkg2KjZgdim2KfYqiDZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDZhdix2LTYrdin2Kog2KfZhNij2LnZhdiv2Kkg2YHZiiDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNi12LrZitixLiDZitix2KzZiSDZhdmE2KfYrdi42Kk6INiq2LnZitmK2YYgXCfZhti02LdcJyDYpdmE2YkgMCDYs9mK2YXZhti5INin2YTZiNmD2YTYp9ihINmB2YLYtyDZhdmGINiq2K3YsdmK2LEg2KXYudiv2KfYr9in2Kog2YfYsNmHINin2YTZhdis2YXZiNi52Kkg2YHZiiDYqtmB2LbZitmE2KfYqtmH2YUg2KfZhNi02K7YtdmK2KnYjCDZiNmE2YPZhtmHINiz2YrYs9mF2K0g2YTZhNmF2LPYpNmI2YTZitmGINio2KrYrdix2YrYsSDYpdi52K/Yp9iv2KfYqiDZhdiz2KrYrtiv2YUg2KLYrtixINmG2YrYp9io2KnZiyDYudmGINmF2LPYqtiu2K/ZhSDYotiu2LEuINin2LPYqtiu2K/ZhSBcJ1ByZWZlcmVuY2VHcm91cFwnINmE2YTYqtit2YPZhSDZgdmKINin2YTZhdmG2LfZgtipINin2YTYqtmKINmK2KzYqCDYo9mGINiq2LjZh9ixINmB2YrZh9inINmH2LDZhyDYp9mE2KXYudiv2KfYr9in2Kog2YHZiiDZiNin2KzZh9ipINin2YTZhdiz2KrYrtiv2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2YjZhiDYrdin2YTYp9iqINin2YTZhti02LEg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2K3Yp9mE2KfYqiDYp9mE2YbYtNixINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfYp9mE2YXYudmE2YXYp9iqINin2YTYrtin2LXYqSDYqNij2YXYq9mE2Kkg2YXYrNmF2YjYudin2Kog2KfZhNij2LDZiNmG2KfYqiDYp9mE2K7Yp9i12Kkg2KjYs9mF2KfYqiDYp9mE2YPYqtin2YTZiNisINin2YTYudin2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmI2K3Yr9ipINin2YTYp9iz2YUg2KfZhNmG2YXYt9mK2Kkg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmE2LHZgtmFINmE2YHYptin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTYtdmB2K3Yp9iqICjYp9mE2KrZiiDYqti42YfYsSDZgdmK2YfYpyDYudmG2KfYtdixINin2YTYqtmD2YjZitmGKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LfYsdmK2YLYqSDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmF2KzZhdmI2LnYqSDYo9iv2YjYp9iqINmC2KfZhNioINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2YXYtNi62YQg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ9mF2KzZhdmI2LnYqSDYp9mE2KXYsNmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2KXYrNix2KfYoSDYpdix2YHYp9mCINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudix2LYg2LTYrNix2Kkg2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2KrZg9io2YrYsSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYpdi22KfZgdipINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDYp9mE2YXYrNmF2LnYqSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYqtit2LHZitixINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudmG2LXYsSDYqtmD2YjZitmGINmF2K3ZgdmI2LjYp9iqIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZhNmE2LfYqNin2LnYqSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn2KfZhNin2YXYqtmK2KfYstin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNit2LDZgSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9i52YbYp9i12LEg2KrZg9mI2YrZhiDYp9mE2KjYrdirLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn2YLZhSDYqNiq2LnZitmK2YYg2K3Yp9mE2Kkg2KfZhNit2KfYr9irINmE2YXYrtio2LEg2KzZhtin2KbZiiDYqtmE2YLYp9im2YrYp9mLINi52YbYryDYsdio2Lcg2KrYsNmD2LHYqSDYqNmF2K7YqNixINis2YbYp9im2YouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrZgtmI2YUg2KjYqti52YrZitmGINit2KfZhNipINin2YTZhti02LEg2YHZiiDYp9mE2LTYp9i02Kkg2KfZhNmF2KzZhdi52Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitmC2YjZhSDYqNiq2LnZitmK2YYg2K3Yp9mE2Kkg2KfZhNit2KfYr9irINmB2Yog2KfZhNi02KfYtNipINin2YTZhdis2YXYudipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiu2KfYtSDYqNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32YvYpyDZgdmKINin2YTZgtin2KbZhdipINmK2LPZhditINio2LHYqNi3INi52YbYtdixINiq2YPZiNmK2YYg2YXYuSDZg9in2KbZhiDYotiu2LEg2YHZiiDYudix2LYg2KrZg9io2YrYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9il2LjZh9in2LEg2LHYp9io2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNmE2YjYtdmI2YQg2KXZhNmJINmF2K3ZgdmI2LjYp9iqINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32YvYpyDZgdmKINin2YTZgtin2KbZhdipINmE2YTZiNi12YjZhCDYpdmE2Ykg2YXYrdmB2YjYuNin2Kog2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YPYqNmK2LEg2KfZhNiu2KfYtSDYqNmHINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfYp9mLINmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYrdiw2YEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsS/Yp9mE2KrYtdi62YrYsSDYp9mE2K7Yp9i1INio2Ycg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ9il2LjZh9in2LEg2LHYp9io2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNi52LHYtiDYsdmI2KfYqNi3INi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YPYt9ix2YrZgtipINi52LHYtiDYp9mE2LTYrNix2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KXYuNmH2KfYsSDYp9ix2KrYqNin2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNiq2YPYsdin2LEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINmG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYtyDZgdmKINin2YTZgtin2KbZhdipINmE2KrZg9ix2KfYsSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmD2KjZitixINin2YTYrtin2LUg2KjZhyDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfYp9mLINmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYqtit2LHZitixINi52YbYtdixINiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YPYqNmK2LEv2KfZhNiq2LXYutmK2LEg2KfZhNiu2KfYtSDYqNmHINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYpdi42YfYp9ixINix2KfYqNi3INmB2Yog2KfZhNmC2KfYptmF2Kkg2YTZhNix2KzZiNi5INmB2Yog2LnYsdi2INiq2YPYqNmK2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9mL2Kcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNi32KjYp9i52Kkg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsS/Yp9mE2KrYtdi62YrYsSDYp9mE2K7Yp9i1INio2Ycg2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9in2Ysg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNiq2YPYqNmK2LEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINmG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDZhdit2YHZiNi42KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGICjYqtix2KrZitioINi52YPYs9mKKSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfYp9mE2YHYptipINin2YTYp9mB2KrYsdin2LbZitipINin2YTYqtmKINiq2LjZh9ix2Iwg2KXYsNinINmE2YUg2YrYqtmFINiq2K3Yr9mK2K8g2KPZiiDZgdim2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfZhdi52LHZkdmBINi52YbYtdixINin2YTYqtmD2YjZitmG2Iwg2LnZhNmJINiz2KjZitmEINin2YTZhdir2KfZhCBDb25maWdJdGVtI9iMIE15Q29uZmlnSXRlbSMuINin2YTYp9mB2KrYsdin2LbZiiDZh9mIIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn2YrZgtmI2YUg2KjYqti02LrZitmEINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2gg2KrZhNmC2KfYptmK2YvYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn2KrYudio2YrYsSDYs9mE2LPZhNipINin2YTYpdi12K/Yp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ9mI2K3Yr9ipINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn2YXYtNi62YQg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9mF2Kcg2KXYsNinINmD2KfZhiDZitmF2YPZhiDYqtis2YbYqCDYqtmG2YHZitiwIENvbmZpZ0l0ZW1BQ0wg2LnZhiDYt9ix2YrZgiDYp9mE2KrYrdmC2YIg2YXZhiDYqtio2LnZitin2Kog2KfZhNit2YLZiNmEINin2YTZhdiu2LLZhtipINmF2KTZgtiq2YvYpy4g2YrZhdmD2YYg2KPZhiDZitik2K/ZiiDYsNmE2YMg2KXZhNmJINiq2K3Ys9mK2YYg2KPZiNmC2KfYqiDYqtit2YXZitmEINin2YTZhtmF2KfYsNis2Iwg2YjZhNmD2YYg2YrYrNioINiq2LnYt9mK2YTZh9iMINil2LDYpyDZg9in2YYg2LPZitiq2YUg2KfYs9iq2K7Yr9in2YUg2YjYrdiv2KfYqiBBQ0xNb2R1bGVzINmE2YAgSVRTTUNvbmZpZ29uZmlnSXRlbS0g2YggRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ9mF2Kcg2YfZiiDYp9mE2YXYudmE2YjZhdin2Kog2KfZhNi52KfZhdipINin2YTYqtmKINiq2LjZh9ixINmB2Yog2KfZhNi52YbZiNin2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn2KfZhNmB2KbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfYudin2YTZhdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn2YXYpyDYqNi52K8g2KfZhNil2YbYqtin2KzZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfZhdinINmC2KjZhCDYp9mE2KXZhtis2KfYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn2YXZhtiq2KzYqSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcuNSDYqNmI2LXYqSAoNDQuNDUg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEg2KjZiNi12KkgKDUzLjM0INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LjI1INio2YjYtdipICg2Ni42OCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLjUg2KjZiNi12KkgKDgwLjAxINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ9it2KfZhdmEIDE5INio2YjYtdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMS43NSDYqNmI2LXYqSAoNC40NSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1INio2YjYtdipICg4OC45INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ9ix2YEgMjEg2KjZiNi12KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOC41INio2YjYtdipICg5Ny43OSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICfYsdmBIDIzINio2YjYtdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiDYqNmI2LXYqSAoNjAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiDYqNmI2LXYqSAoMTA2LjY4INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0Ny4yNSDYqNmI2LXYqSAoMTIwLjAyINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLjUg2KjZiNi12KkgKDguODkg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIuNSDYqNmI2LXYqSAoMTMzLjM1INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNSDYqNmI2LXYqSAoODAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Ny43NSDYqNmI2LXYqSAoMTQ2LjY4INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCDYqNmI2LXYqSAoOTAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyDYqNmI2LXYqSAoMTYwLjAyINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQg2KjZiNi12KkgKDEwMDAg2YXZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LjI1INio2YjYtdipICgxNzMuMzUg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNS4yNSDYqNmI2LXYqSAoMTMuMzQg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMuNSDYqNmI2LXYqSAoMTg2LjY5INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zINio2YjYtdipICgxMTAwINmF2YUpOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzguNzUg2KjZiNi12KkgKDIwMC4wMiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yINio2YjYtdipICgxMjAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCDYqNmI2LXYqSAoMjEzLjM2INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcg2KjZiNi12KfYqiAoMTcuNzgg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOC43NSDYqNmI2LXYqSAoMjIuMjMg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAuNSDYqNmI2LXYqSAoMjYuNjcg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLjI1INio2YjYtdipICgzMS4xMiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQg2KjZiNi12KkgKDM1LjU2INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNS43NSDYqNmI2LXYqSAoNDAuMDEg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfYp9mE2YXYrdin2LPYqNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn2KrYrti12YrYtSDYp9mE2LnZhtmI2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn2KfZhNmF2K/ZitixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ9mH2KfYqtmBINiq2YbYp9i42LHZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KzZh9in2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfYs9i52Kkg2KfZhNio2LfYp9ix2YrYqSAo2KLZhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn2YbZiNi5INin2YTYqNi32KfYsdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfYp9mE2KjZhtin2KEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9mI2KfYrNmH2Kkg2KfZhNit2KfZgdmE2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ9mI2K3Yr9ipINin2YTZhdi52KfZhNis2Kkg2KfZhNmF2LHZg9iy2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfZgdim2Kkg2YjYrdiv2Kkg2KfZhNmF2LnYp9mE2KzYqSDYp9mE2YXYsdmD2LLZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfYp9mE2LPYudipICjYutmK2LrYp9io2KfZitiqKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ9in2YTYs9i52Kkg2YTZg9mEINio2LfYp9mC2Kkg2LHYs9mI2YXYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTYqNi32KfZgtipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn2YLYp9ix2KYg2KfZhNio2LfYp9mC2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNio2LfYp9mC2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ9i02YfYp9iv2KfYqiDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn2KjYsdmG2KfZhdisINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfZgdim2Kkg2KfZhNi52YXZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ9i52YLYp9ix2Kgg2KfZhNiz2KfYudipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfYs9ix2LnYqSDYp9mE2LPYp9i52KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9i02YfYp9iv2KfYqiDYqtmI2YLZiti5INin2YTYsdmF2YjYsiDYp9mE2YXYtNmB2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn2YfYp9iq2YEg2KfZhNmF2KTYqtmF2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfYp9mE2KfYqtmB2KfZgtmK2Kkg2KfZhNin2LPYqti02KfYsdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ9in2KrYtdmEINio2YbYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn2KfYqti12YQg2KjYp9mE2YXZiNiy2LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfYpdiv2KfYsdipINin2YTYrdin2YjZitin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfYp9mE2LnZgtivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNi52YLYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ9mB2KrYsdipINin2YTYudmC2K8g2YXZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICfZgdiq2LHYqSDYp9mE2LnZgtivINit2KrZiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfZh9in2KrZgSDZhNin2LPZhNmD2YogKNmH2KfYqtmBIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ9mI2K3Yr9ipINin2YTYqtmD2YTZgdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn2LnYr9ivINin2YTYqtix2KfYrtmK2LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ9iq2KfYsdmK2K4g2KfZhNil2YbYtNin2KEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ9ix2YEg2YXYrti12LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag2YXYrdis2YjYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAn2K7Yp9iv2YUg2K7ZiNin2K/ZhSBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ9iq2KfYsdmK2K4g2KfZhNmB2KfYqtmI2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn2KrYp9ix2YrYriDYp9mE2LfZhNioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfYqtin2LHZitiuINin2YTYttmF2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfYqtin2LHZitiuINin2YTYpdi12K/Yp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfYs9i32K0g2KfZhNmF2YPYqtioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAn2YXZhtmB2LAg2KfZhNi52LHYtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9i02YfYp9iv2KfYqiDYqtmI2YLZiti5INin2YTZhdiz2KrZhtiv2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ9ix2YEgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAn2LTZh9in2K/Yp9iqINin2YTYqNix2YrYryDYp9mE2KXZhNmD2KrYsdmI2YbZiiAo2LTZh9in2K/Yp9iqIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn2LnZgtivINin2YTYudmF2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfYudmG2YjYp9mGIElQINin2YTZhtmH2KfYptmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn2YbZh9in2YrYqSDYp9mE2K/YudmFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn2KrYp9ix2YrYriDYp9mG2KrZh9in2KEg2KfZhNi12YTYp9it2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn2YXYrdix2YMg2KPZgtix2KfYtSDYtdmE2KjYqSDYrtin2LHYrNmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn2KzYr9in2LEg2KfZhNit2YXYp9mK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfYp9mE2KjYsdin2YXYrCDYp9mE2KvYp9io2KrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ9iq2K7YstmK2YYg2KfZhNi32KfZgtipINmB2Yog2K/ZiNmE2KfYqCDYp9mE2YXZiNin2LLZhtipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn2LnYp9mF2YQg2KfZhNi02YPZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn2KfYqtmB2KfZgtmK2Kkg2KfZhNin2YXYqtmK2KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9io2LHZhtin2YXYrCDZhdis2KfZhtmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ9mF2LnZhNmI2YXYp9iqINi52KfZhdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn2KjYt9in2YLYp9iqINin2YTYsdiz2YjZhdin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9io2LfYp9mC2Kkg2KfZhNix2LPZiNmF2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9in2YTYo9is2YfYstipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn2YbZhdmI2LDYrCDYp9mE2KPYrNmH2LLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfZiNiy2YYg2KfZhNij2KzZh9iy2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9iz2YXYp9i52Kkg2KfZhNix2KPYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ9io2LHZiNiq2YjZg9mI2YQgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn2KXYr9in2LHYqSDYp9mE2YfZiNmK2Kkg2YjYp9mE2YjYtdmI2YQgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9ix2YLZhSDYp9mE2YXYrtiy2YjZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZgdin2KrZiNix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfZhNmI2K3YqSDYp9mE2YXZgdin2KrZititJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ9i02KfYtNipIExDRCAo2LTYp9i02Kkg2KfZhNi52LHYtiDYp9mE2KjZhNmI2LHZitipINin2YTYs9in2KbZhNipKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAn2LTYp9i02KkgTEVEICjYp9mE2LXZhdin2YUg2KfZhNir2YbYp9im2Yog2KfZhNio2KfYudirINmE2YTYttmI2KEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ9in2YTZh9in2KrZgSDYp9mE2KPYsdi22YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn2YPZhdio2YrZiNiq2LEg2YXYrdmF2YjZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ9iu2Lcg2KfZhNi52LHYtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ9in2YTYt9io2YLYqSAxOiDYp9mE2LfYqNmC2Kkg2KfZhNmB2YrYstmK2KfYptmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn2KfZhNi32KjZgtipIDI6INi32KjZgtipINin2LHYqtio2KfYtyDYp9mE2KjZitin2YbYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfYp9mE2LfYqNmC2KkgMzog2LfYqNmC2Kkg2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ9in2YTYt9io2YLYqSAzOiDYt9io2YLYqSDYp9mE2LTYqNmD2KkgKNin2YTYtNio2YPYqSDYp9mE2YHYp9im2YLYqSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn2KfZhNi32KjZgtipIDQ6INi32KjZgtipINin2YTZhtmC2YQgNDog2LfYqNmC2Kkg2KfZhNmG2YLZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn2KfZhNi32KjZgtipIDU6INi32KjZgtipINin2YTYrNmE2LPYqSA1OiDYt9io2YLYqSDYp9mE2KzZhNiz2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn2KfZhNi32KjZgtipIDY6INi32KjZgtipINin2YTYudix2LYg2KfZhNiq2YLYr9mK2YXZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ9in2YTYt9io2YLYqSA3OiDYt9io2YLYqSDYp9mE2KrYt9io2YrZgtin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn2LnZgtivINin2YTYpdmK2KzYp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn2KfYqtmB2KfZgtmK2Kkg2KfZhNiq2LHYrtmK2LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9mF2YHYqtin2K0g2KfZhNiq2LHYrtmK2LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn2YbZiNi5INin2YTYqtix2K7Ziti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICfZgdiq2LHYqSDYp9mE2KrYsdiu2YrYtSDZhdmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAn2YHYqtix2Kkg2KfZhNiq2LHYrtmK2LUg2K3YqtmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfYqNi32KfYsdmK2Kkg2YTZitir2YrZiNmFINmB2YjYs9mB2KfYqiDYp9mE2K3Yr9mK2K8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfYqNi32KfYsdmK2Kkg2YTZitir2YrZiNmFINij2YrZiNmGICjZhNmK2KvZitmI2YUg2KPZitmI2YYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn2KfYqtmB2KfZgtmK2Kkg2KfZhNmC2LHYtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn2KrZgti5INmB2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn2K7YtyDYp9mE2LfZiNmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn2KfZhNi02LHZg9ipINin2YTZhdi12YbYudipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfYs9i52Kkg2KfZhNiq2K3ZhdmK2YQg2KfZhNmC2LXZiNmJIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfYp9mE2LDYp9mD2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2LDYp9mD2LHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn2LHZgSDYtdi62YrYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZh9in2KrZgSDYp9mE2YXYrdmF2YjZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfZhdmI2KjYp9mK2YQv2YXYttmF2ZHZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9in2YTYt9ix2KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9mI2LXZgSDYp9mE2LfYsdin2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn2K/ZgtipINin2YTYtNin2LTYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfYrdis2YUg2KfZhNi02KfYtNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn2KfZhNmB2KPYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ9mF2LnZhNmI2YXYp9iqINin2YTYtNio2YPYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn2YXYudmE2YjZhdin2Kog2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfYt9io2YLYqSDYp9mE2LTYqNmD2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfYqNi32KfYsdmK2Kkg2KfZhNmG2YrZg9mEINmI2KfZhNmD2KfYr9mF2YrZiNmFIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ9io2LfYp9ix2YrYqSDZh9mK2K/YsdmK2K8g2KfZhNmG2YrZg9mELdin2YTZhdi52K/ZhiAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn2KfYqtmB2KfZgtmK2Kkg2LnYr9mFINin2YTYpdmB2LXYp9itIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn2K/Zgdiq2LEg2KfZhNmF2YTYp9it2LjYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAn2LnYr9ivINmI2K3Yr9in2Kog2KfZhNmF2LnYp9mE2KzYqSDYp9mE2YXYsdmD2LLZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ9i52K/YryDZiNit2K/Yp9iqINiw2KfZg9ix2Kkg2KfZhNmI2LXZiNmEINin2YTYudi02YjYp9im2YogKFJBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn2LnYr9ivINio2LfYp9mC2KfYqiDYp9mE2LHYs9mI2YXYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfYtNin2LTYqSBPTEVEICjYp9mE2LXZhdin2YUg2KfZhNir2YbYp9im2Yog2KfZhNio2KfYudirINmE2YTYttmI2KEg2KfZhNi52LbZiNmKKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfYqtmD2KfZhNmK2YEg2KfZhNiq2LTYutmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTYt9mE2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfYo9iu2LHZiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn2KfZhNmF2K7Ysdis2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICfYsdmC2YUg2KfZhNiq2LnYsdmK2YEg2KfZhNi02K7YtdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn2LHZgtmFINin2YTYqti52LHZitmBINin2YTYtNiu2LXZiiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ9in2KrZgdin2YLZitipINin2YTYtNix2KfZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZh9in2KrZgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn2YbZiNi5INin2YTZh9in2KrZgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9in2YTZhtmI2Ykg2KfZhNmF2KfYr9mK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfYqtmI2LXZitmEINin2YTYt9in2YLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9iq2YUg2LTYsdin2KTZh9inINmF2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ9i52YXZgiDYp9mE2K3Yp9mF2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfZiNit2K/Yp9iqINin2YTYrdin2YXZhCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9in2YTYutix2YHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ9io2LfYp9mC2KkgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfYudmC2K8g2KfZhNio2YrYuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfZh9in2KrZgSDZiti52YXZhCDYqNin2YTYo9mC2YXYp9ixINin2YTYtdmG2KfYudmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn2KjYt9in2LHZitipINit2YXYtiDYp9mE2LHYtdin2LUg2KfZhNmF2K7YqtmI2YXYqSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ9in2YTYsdmC2YUg2KfZhNiq2LPZhNiz2YTZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfYqNix2YXYrNmK2KfYqiDYp9mE2K7Yp9iv2YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfYp9iq2YHYp9mC2YrYqSDYp9mE2K7Yr9mF2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfYqNi32KfZgtipINin2YTYrtiv2YXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNmF2YLYqNizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn2KfZhNio2LHZhdis2YrYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn2YXZg9io2LHYp9iqINin2YTYtdmI2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn2YLZitin2LPZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn2KjYr9ihINi52YbZiNin2YYgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ9in2YTYqtiu2LLZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn2YLYs9mFINin2YTYqtiu2LLZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn2LTYsdmD2Kkg2YHYsdi52YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn2KfZhNmF2YTYrti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn2KfZhNi52YXZitmEINin2YTYsdmC2YrZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn2KfZhNiu2YrZiNi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn2KfZhNi12KfYudmC2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ9il2KzZhdin2YTZiiDYsNin2YPYsdipINin2YTZiNi12YjZhCDYp9mE2LnYtNmI2KfYptmKINmE2KjYt9in2YLYqSDYp9mE2LHYs9mI2YXYp9iqIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfYpdis2YXYp9mE2Yog2LDYp9mD2LHYqSDYp9mE2YjYtdmI2YQg2KfZhNi52LTZiNin2KbZiiAo2KzZitis2KfYqNin2YrYqiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ9i02KfYtNipINiq2LnZhdmEINio2KfZhNmE2YXYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ9in2YTYqNix2KwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ9mF2YjYsti5IFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ9iz2YXYp9i52Kkg2LHYo9izINin2YTZiNin2YLYuSDYp9mE2KfZgdiq2LHYp9i22YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfZgdmK2LHYqti02YjYp9mE2YTZitmG2YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ9mH2KfYqtmBINi12YjYqtmKINi52KjYsSDYqNix2YjYqtmI2YPZiNmEINin2YTYpdmG2KrYsdmG2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ9mD2KfZhdmK2LHYpyDYp9mE2YjZitioJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/bg_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmJnX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQntCx0YnQuCDQtNCw0L3QvdC4INC30LAg0YDQsNCx0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LfQsCDQstGF0L7QtNGP0YnQuCDQtNCw0L3QvdC4INC30LAg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC30LAg0LjQt9GF0L7QtNGP0YnQuNGC0LUg0LTQsNC90L3QuCDQt9CwINC+0YLQs9C+0LLQvtGAJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRgtC1INC10LTQuNC90LjRhtC4IENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzRj9C90LAg0L3QsCDQtNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzRj9C90LAg0L3QsCDQtNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0YDQvtC70Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn0J/QsNC60LXRgtC4INC+0YIg0LrQu9Cw0YHQvtCy0LUgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn0KLRg9C6INC80L7QttC10YLQtSDQtNCwINC40LzQv9C+0YDRgtC40YDQsNGC0LUg0L/QsNC60LXRgtC4INC+0YIg0LrQu9Cw0YHQvtCy0LUgUmVhZHkySW1wb3J0LCDQutC+0LjRgtC+INC/0L7QutCw0LfQstCw0YIg0L3QsNC5LdC+0LHQuNGH0LDQudC90LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQnNC+0LvRjywg0L7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9C1INC80L7QttC1INC00LAg0YHQtSDQvdCw0LvQvtC20Lgg0LTQvtC/0YrQu9C90LjRgtC10LvQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAn0JDQutGC0YPQsNC70LjQt9C40YDQsNC90LUg0L3QsCDRgdGK0YnQtdGB0YLQstGD0LLQsNGJ0Lgg0YHRgtGA0YPQutGC0YPRgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNCw0L3QtSDQvdCwINC/0LDQutC10YLQuCDQvtGCINC60LvQsNGB0L7QstC1IFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAn0JrQu9Cw0YEg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9Cg0L7Qu9GPINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0LjQu9GC0YrRgCDQt9CwINC60LvQsNGB0L7QstC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LrQu9Cw0YEg0L7RgiDRgdC/0LjRgdGK0LrQsCwg0LfQsCDQtNCwINGB0YrQt9C00LDQtNC10YLQtSDQvdC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn0JPRgNGD0L/QvtCy0L4g0LTQtdC50YHRgtCy0LjQtSDQvdCwIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ9Cb0LjQvdC6INC60YrQvCDQtNGA0YPQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn0J3QtdCy0LDQu9C40LTQtdC9INC90L7QvNC10YAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ9Cd0L7QvNC10YDRitGCINC90LAg0LTRgNGD0LMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLCDRgSDQutC+0LnRgtC+INC00LAg0YHQtSDRgdCy0YrRgNC20LXRgtC1Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9Cd0LDQuNGB0YLQuNC90LAg0LvQuCDQuNGB0LrQsNGC0LUg0LTQsCDQuNC30YLRgNC40LXRgtC1INGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvNC10YLQviDQvdCwINGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn0JjQvNC10YLQviDQstC10YfQtSDRgdC1INC40LfQv9C+0LvQt9Cy0LAg0L7RgiDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCDRgdGK0YEg0YHQu9C10LTQvdC40Y8g0J3QvtC80LXRgCjQsCk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvdCwINCy0LXRgNGB0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQstC10YDRgdC40Y/RgtCwINC90LAg0YLQvtC30Lgg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn0J3QvtC80LXRgNGK0YIg0L3QsCDQstC10YDRgdC40Y/RgtCwINCy0LXRh9C1INGB0LUg0LjQt9C/0L7Qu9C30LLQsCDQvtGCINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRgdGK0YEg0YHQu9C10LTQvdC40Y8g0L3QvtC80LXRgCjQuCk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0JjRgdGC0L7RgNC40Y8g0L3QsCDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YI6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0YrQtNGK0YDQttCw0L3QuNC1INC90LAg0LjRgdGC0L7RgNC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNC1INC90LAg0YHRitC30LTQsNCy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ9Cj0LLQtdC70LjRh9C10L0g0LjQt9Cz0LvQtdC0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4INC90LAg0YHRgtGA0LDQvdC40YbQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDRgdCwINC90LDQvNC10YDQtdC90Lgg0LTQsNC90L3QuCDQt9CwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0YLQvtC30Lgg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0KHRgtCw0YDRgtC40YDQsNC50YLQtSDQotGK0YDRgdC10L3QtSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ9CU0YrRgNCy0L7QstC40LTQtdC9INC40LfQs9C70LXQtCDQt9CwIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfQndC40LLQviDQvdCwINC00YrQu9Cx0L7Rh9C40L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9Cj0LLQtdC70LjRh9Cw0LLQsNC90LUv0LjQt9C60LvRjtGH0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn0JzQsNC60YHQuNC80LDQu9C90L7RgtC+INC90LjQstC+INC90LAg0LLRgNGK0LfQutC40YLQtSDQtSDQtNC+0YHRgtC40LPQvdCw0YLQviDQt9CwIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQviDRgdGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQtdC60YPRidC+INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQn9C+0YHQu9C10LTQvdCwINC/0YDQvtC80Y/QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Cf0L7RgdC70LXQtNC90L4g0L/RgNC+0LzQtdC90LXQvSDQvtGCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn0JLQsNGI0LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Ci0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfQqdC1INCx0YrQtNCw0YIg0LjQvNC/0L7RgNGC0LjRgNCw0L3QuCDRgdC70LXQtNC90LjRgtC1INC60LvQsNGB0L7QstC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9Cp0LUg0LHRitC00LDRgiDQuNC80L/QvtGA0YLQuNGA0LDQvdC4INGB0LvQtdC00L3QuNGC0LUg0YDQvtC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn0J7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9C1INGJ0LUg0LHRitC00LDRgiDRgdGK0LfQtNCw0LTQtdC90Lgg0Lgg0YHRitC+0YLQstC10YLQvdC40YLQtSDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwINC4INC60LvQsNGB0L7QstC1IEdlbmVyYWxDYXRhbG9nINC4INC90Y/QvNCwINC00LAg0LjQvNCwINCw0LLRgtC+0LzQsNGC0LjRh9C90L4g0L/RgNC10LzQsNGF0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn0JjRgdC60LDRgtC1INC70Lgg0LTQsCDQv9GA0L7QtNGK0LvQttC40YLQtT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn0J3Rg9C20LTQsNC10YLQtSDRgdC1INC+0YIg0L/RgNC40LzQtdGA0L3QuCDQutC70LDRgdC+0LLQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn0JTQtdGE0LjQvdC40YbQuNGP0YLQsCDQvdC1INC1INCy0LDQu9C40LTQtdC9INGF0LXRiCDQvdCwIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn0J/RgNC10LPQu9C10LQ6IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvSBJRCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfQmNC80LDRgtC1INC90YPQttC00LAg0L7RgiDQv9C+0L3QtSDQtdC00LjQvSDQuNC30LHRgNCw0L0g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ9Cd0Y/QvNCw0YLQtSDQtNC+0YHRgtGK0L8g0LfQsCDQt9Cw0L/QuNGBINC00L4g0YLQvtC30Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn0J3QtSDQtSDQtNC10YTQuNC90LjRgNCw0L3QsCDQtNC10YTQuNC90LjRhtC40Y8g0LfQsCDQutC70LDRgSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGP0YIg0LXQu9C10LzQtdC90YIgIiVzIiDQvdC1INC1INC90LDQvNC10YDQtdC9INCyINCx0LDQt9Cw0YLQsCDQtNCw0L3QvdC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ9Cd0LUg0LzQvtC20LDRhSDQtNCwINC40LfRgtGA0LjRjyBJRCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGPINC10LvQtdC80LXQvdGCICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn0J3QtSDQtSDQvdCw0LzQtdGA0LXQvdCwINCy0LXRgNGB0LjRjyDQt9CwIElEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC1INC00LDQtNC10L0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC00YPQsdC70LjRgNCw0L0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC90LAg0LrQu9Cw0YEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfQndGP0LzQsCDQtNC+0YHRgtGK0L8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QutCw0LbQtSDRhdGA0L7QvdC+0LvQvtCz0LjRjywg0L3QtSDQtSDQtNCw0LTQtdC9IElEINC90LAg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QutCw0LbQtSDQuNGB0YLQvtGA0LjRjywg0L3QtSDRgdCwINC00LDQtNC10L3QuCDQv9GA0LDQstCwINC30LAg0LTQvtGB0YLRitC/ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn0J3QvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfQndC+0LLQsCDQstC10YDRgdC40Y8gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSDQtSDQsNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QviAo0L3QvtCy0L49JXMsINGB0YLQsNGA0L49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC90YbQuNC00LXQvdGC0LAg0LUg0LDQutGC0YPQsNC70LjQt9C40YDQsNC90L4gKNC90L7QstC+PSVzLCDRgdGC0LDRgNC+PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiAoSUQ9JXMpINC1INC40LfRgtGA0LjRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9CU0L7QsdCw0LLQtdC90LAg0LUg0LLRgNGK0LfQutCwINC60YrQvCAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9CS0YDRitC30LrQsNGC0LAg0LrRitC8ICVzICh0eXBlPSVzKSDQtSDQuNC30YLRgNC40YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn0JTQtdGE0LjQvdC40YbQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQtSDQsNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QsCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0JjQvNC10YLQviDQtSDQsNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QviAo0L3QvtCy0L49JXMsINGB0YLQsNGA0L49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn0JDRgtGA0LjQsdGD0YLRitGCICVzINC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDQvSDQvtGCIOKAniVz4oCcINC90LAg4oCeJXPigJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn0JLQtdGA0YHQuNGPICVzINC1INC40LfRgtGA0LjRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvSBJRCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQuNC70LggSUQg0L3QsCDQstC10YDRgdC40Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QutCw0LbQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC90LUg0YHQsCDQtNCw0LTQtdC90Lgg0L/RgNCw0LLQsCDQt9CwINC00L7RgdGC0YrQvyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJRCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiAlcyDQvdC1INC1INC90LDQvNC10YDQtdC9INCyINCx0LDQt9Cw0YLQsCDQtNCw0L3QvdC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfQvtGC0L/QtdGH0LDRgtCw0L3QviDQvtGCICVzINCyICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfQn9GA0LXQv9GA0LDRgtC60LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfQndC10LLQsNC70LjQtNC10L0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsCDQutC70LDRgSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC1INC00LDQtNC10L0g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsCDQutC70LDRgSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfQndGP0LzQsCDQtNCw0LTQtdC90Lgg0L/RgNCw0LLQsCDQt9CwINC00L7RgdGC0YrQvyDQt9CwINGC0L7Qt9C4INC60LvQsNGBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0JHQtdC3INGA0LXQt9GD0LvRgtCw0YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn0KDQtdC30YPQu9GC0LDRgtC4INC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfQndC1INC80L7QttC1INC00LAg0YHQtSDQv9C+0LrQsNC20LUg0LXQu9C10LzQtdC90YIsINC90LUg0YHQsCDQtNCw0LTQtdC90Lgg0L/RgNCw0LLQsCDQt9CwINC00L7RgdGC0YrQvyDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAn0J3QtSDQtSDQvdCw0LzQtdGA0LXQvSDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ9Cd0LUg0YHQsCDQvdCw0LzQtdGA0LXQvdC4INCy0LXRgNGB0LjQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfQvtC/0LXRgNCw0YLQuNCy0LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn0LLQvdC40LzQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9C40L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtdGC0L4g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCDQt9CwINGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0Y/QvNCwINGA0LDQt9GA0LXRiNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ9Ck0LjQu9GC0YrRgNGK0YIg0LUg0L3QtdCy0LDQu9C40LTQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn0J3QtdCy0LDQu9C40LTQvdC4INC/0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGC0YrRgNGB0LXQvdC1ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ9Cf0L7QutCw0LfQsNC90Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LXQutGD0Ykg0YLQuNC/INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0JzQtdC20LTRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjRjyDQvdCwINC60LvQsNGB0LAg0LfQsCDQtdC70LXQvNC10L3RgtCwINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JjQt9Cx0LXRgNC10YLQtSDQtdC00LjQvSDQuNC70Lgg0L/QvtCy0LXRh9C1INC60LvQsNGB0L7QstC1LCDQt9CwINC00LAg0L7Qs9GA0LDQvdC40YfQuNGC0LUg0LjQt9Cx0LjRgNCw0LXQvNC40YLQtSDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjRjyDQvdCwINC60LvQsNGB0LAg0LfQsCDQtdC70LXQvNC10L3RgtCwINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CY0LfQsdC10YDQtdGC0LUg0LXQtNC40L0g0LjQu9C4INC/0L7QstC10YfQtSDQutC70LDRgdC+0LLQtSwg0LfQsCDQtNCwINC+0LPRgNCw0L3QuNGH0LjRgtC1INC40LfQsdC40YDQsNC10LzQuNGC0LUg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfQlNC40L3QsNC80LjRh9C10L0gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfQodGC0LDRgtC40YfQtdC9ICjQstC10YDRgdC40Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ9Ci0LjQvyDQv9GA0LXQv9GA0LDRgtC60LAg0LrRitC8INCy0YDRitC30LrQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn0JTQsNC70Lgg0YLQsNC30Lgg0LLRgNGK0LfQutCwINGB0LUg0L7RgtC90LDRgdGPINC30LAgQ29uZmlnSXRlbSDQuNC70Lgg0LfQsCDRgdGC0LDRgtC40YfQvdCw0YLQsCDQstC10YDRgdC40Y8g0L3QsCDQvtCx0LXQutGC0LAsINC60YrQvCDQutC+0LnRgtC+INGB0LUg0L/RgNC10L/RgNCw0YnQsC4g0JjQt9GH0LjRgdC70Y/QstCw0L3QtdGC0L4g0L3QsCDRgtC10LrRg9GJ0L7RgtC+INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCDRgdC1INC40LfQstGK0YDRiNCy0LAg0YHQsNC80L4g0LfQsCDQtNC40L3QsNC80LjRh9C90Lgg0LLRgNGK0LfQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LDRgtGA0LjQsdGD0YLQsCwg0L/QviDQutC+0LnRgtC+INGJ0LUg0YHQtSDRgtGK0YDRgdGP0YIg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfQkdCw0LfQvtCy0LDRgtCwINGB0YLRgNGD0LrRgtGD0YDQsCDQvdC1INC1INCy0LDQu9C40LTQvdCwLiDQnNC+0LvRjywg0L/RgNC10LTQvtGB0YLQsNCy0LXRgtC1INGF0LXRiCDRgSDQtNCw0L3QvdC4INCy0YrQsiDRhNC+0YDQvNCw0YIgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfQmNC30LjRgdC60LLQsCDRgdC1INC90LjQt9GK0YIgWUFNTCDQtNCwINC30LDQv9C+0YfQstCwINGBIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC40LfRh9C40YHRgtC4INGC0LDQsdC70LjRhtCw0YLQsCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfQndC1INCx0Y/RhdCwINC+0YLQutGA0LjRgtC4INC/0L7QtNGF0L7QtNGP0YnQuCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0LLQvNGK0LrQvdC1INCyINGC0LDQsdC70LjRhtCw0YLQsCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9CS0LzRitC60L3QsNGC0LggMCDRgNC10LTQsCDQsiDRgtCw0LHQu9C40YbQsNGC0LAgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvQtdC9INCx0YDQvtC5INC90LAg0LXQtNC40L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn0JLQtdGA0YHQuNGPINCg0LXQtNC40YbQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICfQk9GA0LXRiNC60LAg0L/RgNC4INGB0LjQvdGF0YDQvtC90LjQt9C40YDQsNC90LXRgtC+INC90LAg0LTQtdGE0LjQvdC40YbQuNC40YLQtS4g0JzQvtC70Y8sINC/0YDQvtCy0LXRgNC10YLQtSDQtNC90LXQstC90LjQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ9CY0LzQsNGC0LUg0LTQtdGE0LjQvdC40YbQuNC4INC90LAgSVRTTUNvbmZpZ0l0ZW0sINC60L7QuNGC0L4g0L3QtSDRgdCwINGB0LjQvdGF0YDQvtC90LjQt9C40YDQsNC90LguINCc0L7Qu9GPLCDQstC90LXQtNGA0LXRgtC1INC/0YDQvtC80LXQvdC40YLQtSDQsiDQtNC40L3QsNC80LjRh9C90LjRgtC1INC/0L7Qu9C10YLQsCDQvdCwINCy0LDRiNC40Y8gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfQmNC30YLQtdC60LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Cf0L7QtNC00YDRitC20LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0LjQu9C+0YIt0LLQvtC00LDRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0J/Qu9Cw0L3QuNGA0LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQoNC10LzQvtC90YIv0JLRitC30YHRgtCw0L3QvtCy0Y/QstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0JjQt9C70Y/Qt9GK0Lsg0L7RgiDRg9C/0L7RgtGA0LXQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Cf0YDQtdCz0LvQtdC20LTQsNC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgi/QmtCw0YfQtdGB0YLQstC10L0g0LrQvtC90YLRgNC+0LsnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9Cf0YDQtdCz0LvQtdC0INC4INC/0L7RgtCy0YrRgNC20LTQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfQmNC80L/QvtGA0YLQuNGA0LDQvdC1INC90LAg0LrQu9Cw0YHQvtCy0LUv0YDQvtC70Lgg0Lgg0YHQstGK0YDQt9Cw0L3QuNGC0LUg0YEg0YLRj9GFINC/0L7Qu9C10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ9Cf0L4g0LLRgNC10LzQtSDQvdCwINC40LzQv9C+0YDRgtC40YDQsNC90LXRgtC+INC90LAg0LrQu9Cw0YHQsCDQtSDQstGK0LfQvdC40LrQvdCw0LvQsCDQs9GA0LXRiNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDQodC60YDQuNGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtINC/0L7QutCw0LfQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9Cf0L7Qt9Cy0L7Qu9GP0LLQsCDRgNCw0LfRiNC40YDQtdC90Lgg0YPRgdC70L7QstC40Y8g0LfQsCDRgtGK0YDRgdC10L3QtSDQv9GA0Lgg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4g0KEg0YLQsNC30Lgg0YTRg9C90LrRhtC40Y8g0LzQvtC20LXRgtC1INC00LAg0YLRitGA0YHQuNGC0LUg0L3QsNC/0YDQuNC80LXRgCDQuNC80LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YEg0YLQsNC60LjQstCwINGD0YHQu9C+0LLQuNGPINC60LDRgtC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQn9C+0LfQstC+0LvRj9Cy0LAg0YDQsNC30YjQuNGA0LXQvdC4INGD0YHQu9C+0LLQuNGPINC30LAg0YLRitGA0YHQtdC90LUg0LIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4g0KEg0YLQsNC30Lgg0YTRg9C90LrRhtC40Y8g0LzQvtC20LXRgtC1INC00LAg0YLRitGA0YHQuNGC0LUg0L3QsNC/0YDQuNC80LXRgCDQuNC80LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YEg0YLQsNC60LjQstCwINGD0YHQu9C+0LLQuNGPINC60LDRgtC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfQl9Cw0YfQuNGB0LvQtdC90LggS0UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS0Ug0LfQsNGH0LjRgdC70LXQvdC4INC90LAg0LrQvtC80L/QsNC90LjRj9GC0LAg0LrQu9C40LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn0JrQlSwg0LfQsNGH0LjRgdC70LXQvdC4INC90LAg0L/QvtGC0YDQtdCx0LjRgtC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ9Cd0LDRgdGC0YDQvtC50LrQsCDQvdCwIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNGP0LLQsNC50YLQtSDQt9CwINGD0L3QuNC60LDQu9C90L4g0LjQvNC1INGB0LDQvNC+INCyINGA0LDQvNC60LjRgtC1INC90LAg0LXQtNC40L0g0Lgg0YHRitGJINC60LvQsNGBINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCICjigJ7QutC70LDRgeKAnCkg0LjQu9C4INCz0LvQvtCx0LDQu9C90L4gKOKAntCz0LvQvtCx0LDQu9C10L3igJwpLCDQutC+0LXRgtC+INC+0LfQvdCw0YfQsNCy0LAsINGH0LUg0LLRgdC10LrQuCDRgdGK0YnQtdGB0YLQstGD0LLQsNGJINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDRgdC1INCy0LfQtdC80LAg0L/RgNC10LTQstC40LQsINC60L7Qs9Cw0YLQviDRgdC1INGC0YrRgNGB0Y/RgiDQtNGD0LHQu9C40LrQsNGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INC80L7QtNGD0Lsg0LfQsCDQvdCw0LvQsNCz0LDQvdC1INC90LAg0YHRhdC10LzQsCDQt9CwINC40LzQtdC90YPQstCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LzQvtC00YPQuyDQt9CwINC90LDQu9Cw0LPQsNC90LUg0L3QsCDRgdGF0LXQvNCwINC90LAg0L3QvtC80LXRgNCw0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQvNC+0LTRg9C7LCDQutC+0LnRgtC+INC00LAg0L3QsNC70LDQs9CwINGB0YXQtdC80LAg0YEg0L3QuNC3INC+0YIg0LLQtdGA0YHQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LDRgtGA0LjQsdGD0YLQuCwg0LrQvtC40YLQviDQtNCwINC30LDQtNC10LnRgdGC0LLQsNGCINGB0YrQt9C00LDQstCw0L3QtdGC0L4g0L3QsCDQvdC+0LLQsCDQstC10YDRgdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LrQsNGC0LXQs9C+0YDQuNC4LCDQutC+0LjRgtC+INC00LAg0L/RgNC40YHQstC+0LjRgtC1INC90LAg0YLQvtC30Lgg0LrQu9Cw0YEg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAn0KTQuNC70YLRgNC4INC30LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7Qu9C+0L3QsNGC0LAg0LfQsCBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn0JrQvtC70L7QvdC4LCDQutC+0LjRgtC+INC80L7Qs9Cw0YIg0LTQsCDRgdC1INGE0LjQu9GC0YDQuNGA0LDRgiDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLiDQl9Cw0LHQtdC70LXQttC60LA6INCg0LDQt9GA0LXRiNC10L3QuCDRgdCwINGB0LDQvNC+INCw0YLRgNC40LHRg9GC0Lgg0L3QsCDQtdC70LXQvNC10L3RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQuCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0JTQvtCx0LDQstGP0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGK0LHQuNGC0LjQtSDQt9CwINC60L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YIsINC60L7QudGC0L4g0L/QvtC30LLQvtC70Y/QstCwINC30LDQv9C40YHQstCw0L3QtSDQsiDRhdGA0L7QvdC+0LvQvtCz0LjRjyDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINGB0YrQsdC40YLQuNGPINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQutC+0LnRgtC+INCw0LrRgtGD0LDQu9C40LfQuNGA0LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC00L4g0YLQtdC60YPRidCw0YLQsCDQuNC8INC00LXRhNC40L3QuNGG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LjRgNCw0LnRgtC1INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfQn9C10YfQsNGCINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC1INC90LAg0LzQsNGJ0LDQsdCwINC90LAg0LXQu9C10LzQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfQmNC30LPQu9C10LQg0L3QsCDQtNGK0YDQstC+0YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfQktC10YDRgdC40Y8g0L3QsCDQtdC70LXQvNC10L3RgtCwIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0L7RgiDRgdC70LXQtNC90LjRgtC1INC60LvQsNGB0L7QstC1INC90Y/QvNCwINC00LAg0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiDQvdCwINGB0YrRgNCy0YrRgNCwIEVsYXN0aWNzZWFyY2guINCX0LAg0LTQsCDQv9GA0LjQu9C+0LbQuNGC0LUg0YLQvtCy0LAg0LrRitC8INGB0YrRidC10YHRgtCy0YPQstCw0YnQuCBDSSwg0LzQuNCz0YDQsNGG0LjRj9GC0LAg0L3QsCBDSSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YLQsNGA0YLQuNGA0LAg0YfRgNC10Lcg0LrQvtC90LfQvtC70LDRgtCwLCDRgdC70LXQtCDQutCw0YLQviDQv9GA0L7QvNC10L3QuNGC0LUg0YLQsNC30Lgg0L7Qv9GG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0YHRitGBINGB0LvQtdC00L3QuNGC0LUg0YHRitGB0YLQvtGP0L3QuNGPINC90LAg0LLQvdC10LTRgNGP0LLQsNC90LUg0L3Rj9C80LAg0LTQsCDRgdC1INGB0YrRhdGA0LDQvdGP0LLQsNGCINC90LAg0YHRitGA0LLRitGA0LAgRWxhc3RpY3NlYXJjaC4g0JfQsCDQtNCwINC/0YDQuNC70L7QttC40YLQtSDRgtC+0LLQsCDQutGK0Lwg0YHRitGJ0LXRgdGC0LLRg9Cy0LDRidC4IENJLCDQvNC40LPRgNCw0YbQuNGP0YLQsCDQvdCwIENJINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0YHRgtCw0YDRgtC40YDQsCDRh9GA0LXQtyDQutC+0L3Qt9C+0LvQsNGC0LAsINGB0LvQtdC0INC60LDRgtC+INC/0YDQvtC80LXQvdC40YLQtSDRgtCw0LfQuCDQvtC/0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQm9C40LzQuNGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQm9C40LzQuNGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC90LAg0YHRgtGA0LDQvdC40YbQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9CR0LDQt9CwINC00LDQvdC90Lgg0LfQsCDRg9C/0YDQsNCy0LvQtdC90LjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfQk9GA0YPQv9C+0LIg0LzQvtC00YPQuyDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQodGK0LfQtNCw0LLQsNC50YLQtSDQuCDRg9C/0YDQsNCy0LvRj9Cy0LDQudGC0LUg0LTQtdGE0LjQvdC40YbQuNC40YLQtSDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ9Ch0YrQt9C00LDQstCwINCx0LjQu9C10YLQuCDQt9CwIENvbmZpZ0l0ZW1zINCyINC+0L/RgNC10LTQtdC70LXQvdC4INC80L7QvNC10L3RgtC4INC+0YIg0LLRgNC10LzQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn0JrQu9C40LXQvdGC0LjRgtC1INC80L7Qs9Cw0YIg0LTQsCDQstC40LbQtNCw0YIg0LjRgdGC0L7RgNC40YfQtdGB0LrQuCDQstC10YDRgdC40Lgg0L3QsCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn0JrQu9C40LXQvdGC0LjRgtC1INC40LzQsNGCINCy0YrQt9C80L7QttC90L7RgdGCINGA0YrRh9C90L4g0LTQsCDQv9GA0LXQstC60LvRjtGH0LLQsNGCINC80LXQttC00YMg0LjRgdGC0L7RgNC40YfQtdGB0LrQuNGC0LUg0LLQtdGA0YHQuNC4INC90LAgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn0JTQsNC90L3QuCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtC40YLQviDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINCyINCw0YLRgNC40LHRg9GC0LAg0LfQsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQn9GA0LjQvNC10YA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn0JTQsNC90L3QuCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtC40YLQviDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINCyINCw0YLRgNC40LHRg9GC0LAg0LfQsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQn9GA0LjQvNC10YA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCw0LnRgtC1INC00LXQudGB0YLQstC40Y8sINC/0YDQuCDQutC+0LjRgtC+INC1INC90LDQu9C40YfQtdC9INCx0YPRgtC+0L0g0LfQsCDQvdCw0YHRgtGA0L7QudC60Lgg0LIg0L/RgNC40YHQv9C+0YHQvtCx0LvQtdC90LjQtdGC0L4g0LfQsCDRgdCy0YrRgNC30LDQvdC4INC+0LHQtdC60YLQuCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQnNC+0LvRjywg0L7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9C1INGC0LXQt9C4INC00LXQudGB0YLQstC40Y8g0YLRgNGP0LHQstCwINC00LAg0YHQsCDRgNC10LPQuNGB0YLRgNC40YDQsNC70Lgg0YHQu9C10LTQvdC40YLQtSBKUyDQuCBDU1Mg0YTQsNC50LvQvtCy0LU6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINC4IENvcmUuQWdlbnQgLkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCw0L3QtSDQvdCwINGB0YXQtdC80LAg0L3QsCBUZW1wbGF0ZTo6VG9vbGtpdCDQt9CwINC90LjQt9C+0LLQtSDQvdCwINCy0LXRgNGB0LjQuC4g0JjQt9C/0L7Qu9C30LLQsCDRgdC1INGB0LDQvNC+INCw0LrQviDQvNC+0LTRg9C70YrRgiBWZXJzaW9uIFN0cmluZyBNb2R1bGUg0LUg0LfQsNC00LDQtNC10L0g0L3QsCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCw0LnRgtC1INC90LDQsdC+0YAg0L7RgiDRg9GB0LvQvtCy0LjRjywg0L/RgNC4INC60L7QuNGC0L4g0L3QsCDQutC70LjQtdC90YLQsCDRgdC1INGA0LDQt9GA0LXRiNCw0LLQsCDQtNCwINCy0LjQttC00LAg0LTQsNC00LXQvSDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuINCj0YHQu9C+0LLQuNGP0YLQsCDQvNC+0LPQsNGCINC/0L4g0LbQtdC70LDQvdC40LUg0LTQsCDQsdGK0LTQsNGCINC+0LPRgNCw0L3QuNGH0LXQvdC4INC00L4g0L7Qv9GA0LXQtNC10LvQtdC90Lgg0LPRgNGD0L/QuCDQutC70LjQtdC90YLQuC4g0JjQvNC10YLQviDQtSDQtdC00LjQvdGB0YLQstC10L3QuNGP0YIg0LfQsNC00YrQu9C20LjRgtC10LvQtdC9INCw0YLRgNC40LHRg9GCLiDQkNC60L4g0L3QtSDRgdCwINC30LDQtNCw0LTQtdC90Lgg0LTRgNGD0LPQuCDQvtC/0YbQuNC4LCDQstGB0LjRh9C60Lgg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YnQtSDQsdGK0LTQsNGCINCy0LjQtNC40LzQuCDQsiDRgtCw0LfQuCDQutCw0YLQtdCz0L7RgNC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC90LXQvtCx0YXQvtC00LjQvNC40YLQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAgSVRTTSDRgSDQv9C+0LzQvtGJ0YLQsCDQvdCwINC+0LHRidC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQvdC10L7QsdGF0L7QtNC40LzQuNGC0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQv9C+0LvRg9GH0LDQstCw0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0Lgg0YEg0L/QvtC80L7RidGC0LAg0L3QsCDQvtCx0YnQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L3QtdC+0LHRhdC+0LTQuNC80LjRgtC1INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4INGBINC/0L7QvNC+0YnRgtCwINC90LAg0L7QsdGJ0LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCX0LDQtNGK0LvQttC40YLQtdC70L3QuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC30LDQtNCw0LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0YEg0L/QvtC80L7RidGC0LAg0L3QsCDQvtCx0YnQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQvNC+0LTRg9C7INC30LAg0L/RgNC10LPQu9C10LQsINC30LAg0LTQsCDQv9C+0LrQsNC20LUg0LzQsNC70YrQuiDQuNC30LPQu9C10LQg0L3QsCDRgdC/0LjRgdGK0Log0YEg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LTQsNC70Lgg0LXRgtC40LrQtdGC0LjRgtC1INC30LAg0YLQuNC/0LAg0L3QsCDQstGA0YrQt9C60LDRgtCwINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQstGK0LIg0LLRgNGK0LfQutC40YLQtSDQvdCwINCy0YrQt9C70LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDRgNC10LPRg9C70Y/RgNC90Lgg0LjQt9GA0LDQt9C4INC40L3QtNC40LLQuNC00YPQsNC70L3QviDQt9CwINCy0YHQtdC60Lgg0LrQu9Cw0YEg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC30LAg0LTQsCDQv9GA0L7QstC10YDQuCDQuNC80LXRgtC+INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0Lgg0LTQsCDQv9C+0LrQsNC20LUg0YHRitC+0YLQstC10YLQvdC40YLQtSDRgdGK0L7QsdGJ0LXQvdC40Y8g0LfQsCDQs9GA0LXRiNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvdCw0LvQuNGH0L3QuNGC0LUg0LrQvtC70L7QvdC4INC90LAgQ0kg0LIg0L/RgNC10LPQu9C10LTQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAgQ0kuINCS0YHQtdC60Lgg0LfQsNC/0LjRgSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YrRgdGC0L7QuCDQvtGCINC40LzQtSDQvdCwINC60LvQsNGBINC4INC80LDRgdC40LIg0L7RgiDQvdCw0LvQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0LfQsCDRgdGK0L7RgtCy0LXRgtC90LjRjyDQutC70LDRgS4g0JfQsNC/0LjRgdC40YLQtSDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YLRgNGP0LHQstCwINC00LAg0L7RgtCz0L7QstCw0YDRj9GCINC90LAg0YHRhdC10LzQsNGC0LAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LDRgtGA0LjQsdGD0YLQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC30LAg0YHQvtGA0YLQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LDRgtGA0LjQsdGD0YLQsCDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC30LAg0YHQvtGA0YLQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQsNGC0YDQuNCx0YPRgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCDRgtCw0LfQuCDQvtC/0LXRgNCw0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDRgNC10LTQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuINCd0LDQs9C+0YDQtTog0L3QsNC5LdGB0YLQsNGA0LjRj9GCINC+0YLQs9C+0YDQtS4g0J3QsNC00L7Qu9GDOiDQvdCw0Lkt0L3QvtCy0LjRj9GCINC+0YLQs9C+0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0YDQtdC00LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4g0J3QsNCz0L7RgNC1OiDQvdCw0Lkt0YHRgtCw0YDQuNGP0YIg0L7RgtCz0L7RgNC1LiDQndCw0LTQvtC70YM6INC90LDQuS3QvdC+0LLQuNGP0YIg0L7RgtCz0L7RgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQutC+0LvQvtC90LjRgtC1INC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0LjRgtC+INGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQvdCwIENJINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINCyINC30LDQstC40YHQuNC80L7RgdGCINC+0YIg0LrQu9Cw0YHQsCDQvdCwIENJLiDQktGB0LXQutC4INC30LDQv9C40YEg0YLRgNGP0LHQstCwINC00LAg0YHQtSDRgdGK0YHRgtC+0Lgg0L7RgiDQuNC80LUg0L3QsCDQutC70LDRgSDQuCDQvNCw0YHQuNCyINC+0YIg0L3QsNC70LjRh9C90LjRgtC1INC/0L7Qu9C10YLQsCDQt9CwINGB0YrQvtGC0LLQtdGC0L3QuNGPINC60LvQsNGBLiDQl9Cw0L/QuNGB0LjRgtC1INC30LAg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCDRgtGA0Y/QsdCy0LAg0LTQsCDQvtGC0LPQvtCy0LDRgNGP0YIg0L3QsCDRgdGF0LXQvNCw0YLQsCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfQntC/0YDQtdC00LXQu9GPINC00YrQu9Cx0L7Rh9C40L3QsNGC0LAg0L3QsCDQvtGC0L3QvtGI0LXQvdC40Y/RgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0LjRgtC+INGJ0LUg0YHQtSDQv9C+0LrQsNC30LLQsNGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0L7QutCw0LfQsNC90LjRjyDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQsNGC0YDQuNCx0YPRgiDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LfQsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40Y8g0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC30LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0J/RgNC40LzQtdGAOiAiS2V5IiAo0JrQu9GO0YcpINGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQtNGK0YDQttCwINC40LzQtdGC0L4g0L3QsCDQtNC40L3QsNC80LjRh9C90L7RgtC+INC/0L7Qu9C1INCyINGC0L7Qt9C4INGB0LvRg9GH0LDQuSAiWCIsICJDb250ZW50IiAo0KHRitC00YrRgNC20LDQvdC40LUpINGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQtNGK0YDQttCwINGB0YLQvtC50L3QvtGB0YLRgtCwINC90LAg0LTQuNC90LDQvNC40YfQvdC+0YLQviDQv9C+0LvQtSDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINGC0LjQv9CwINC90LAg0LTQuNC90LDQvNC40YfQvdC+0YLQviDQv9C+0LvQtSwgVGV4dCAo0KLQtdC60YHRgik6ICJhIHRleHQiICjRgtC10LrRgdGCKSwgRHJvcGRvd24gKNC/0LDQtNCw0YnQvik6ICIxIiAoMSksIERhdGUvVGltZSAo0JTQsNGC0LAv0YfQsNGBKTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0Lgg0LjQu9C4IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PdGB0LXQtNC80LjRhtCwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD3Qn9GA0LXQtNC4OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LTQvtCx0LXQutGC0LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0L3QsCDQutC70LDRgdCwIOKAnklUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGC4oCcLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvdCw0LvQuNGH0L3QuNGC0LUg0LrQvtC70L7QvdC4INC90LAgQ0kg0LIg0L/RgNC10LPQu9C10LTQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAgQ0kuINCS0YHQtdC60Lgg0LfQsNC/0LjRgSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YrRgdGC0L7QuCDQvtGCINC40LzQtSDQvdCwINC60LvQsNGBINC4INC80LDRgdC40LIg0L7RgiDQvdCw0LvQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0LfQsCDRgdGK0L7RgtCy0LXRgtC90LjRjyDQutC70LDRgS4g0JfQsNC/0LjRgdC40YLQtSDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YLRgNGP0LHQstCwINC00LAg0L7RgtCz0L7QstCw0YDRj9GCINC90LAg0YHRhdC10LzQsNGC0LAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQstC40YHQvtGH0LjQvdCw0YLQsCDQvdCwINC60L7QvNC/0L7QvdC10L3RgtCwINC90LAg0YDQtdC00LDQutGC0L7RgNCwINC30LAg0LHQvtCz0LDRgiDRgtC10LrRgdGCINC30LAg0YLQvtC30Lgg0LXQutGA0LDQvS4g0JLRitCy0LXQtNC10YLQtSDRh9C40YHQu9C+ICjQv9C40LrRgdC10LvQuCkg0LjQu9C4INC/0YDQvtGG0LXQvdGC0L3QsCDRgdGC0L7QudC90L7RgdGCICjQvtGC0L3QvtGB0LjRgtC10LvQvdCwKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQsdGA0L7RjyDQvdCwINGA0LXQtNC+0LLQtdGC0LUg0LfQsCDRgNC10LTQsNC60YLQvtGA0LAg0L3QsCDQmtCVINC00LXRhNC40L3QuNGG0LjQuCDQsiDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNGB0LrQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDRgNC10LTQsCDQvdCwINC40L3RhtC40LTQtdC90YLQvdC40YLQtSDRgdGK0YHRgtC+0Y/QvdC40Y8g0L7RgiDQstC40YHQvtC60L4gKNC90LDQv9GALiDQutGA0LjRgtC40YfQvdC+KSDQtNC+INC90LjRgdC60L4gKNC90LDQv9GALiDRhNGD0L3QutGG0LjQvtC90LDQu9C90L4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0YHRitC+0YLQstC10YLQvdC40YLQtSDRgdGK0YHRgtC+0Y/QvdC40Y8g0L3QsCDQstC90LXQtNGA0Y/QstCw0L3QtSwg0L/RgNC4INC60L7QuNGC0L4g0YHQstGK0YDQt9Cw0L3QuNGC0LUg0LHQuNC70LXRgtC4INC80L7Qs9Cw0YIg0LTQsCDQv9C+0LLQu9C40Y/Rj9GCINC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INCyINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y8g0L3QsCDQsNCz0LXQvdGC0LAgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40LXRgtC+INC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC+0LPRgNCw0L3QuNGH0LXQvdC40LXRgtC+INC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40YLQtSDQutC+0LvQvtC90Lgg0L7RgiDQmtCVINCyINC60L7QvNC/0LvQtdC60YHQvdC40Y8g0LjQt9Cz0LvQtdC0INC90LAg0YLQsNCx0LvQuNGG0LDRgtCwINC30LAg0LLRgNGK0LfQutC4INC30LAg0LLRgdC40YfQutC4INC60LvQsNGB0L7QstC1INCa0JUuINCQ0LrQviDQvdGP0LzQsCDQt9Cw0L/QuNGBLCDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC70L7QvdC40YLQtSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/QvtC60LDQt9Cw0L3QuNGC0LUg0LrQvtC70L7QvdC4INC+0YIg0JrQlSDQsiDRgdC70L7QttC90LjRjyDQuNC30LPQu9C10LQg0L3QsCDRgtCw0LHQu9C40YbQsNGC0LAg0YEg0LLRgNGK0LfQutC4LCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAg0L3QsCDQmtCVLiDQktGB0LXQutC4INC30LDQv9C40YEg0YLRgNGP0LHQstCwINC00LAg0LjQvNCwINC/0YDQtdGE0LjQutGBINGBINC40LzQtdGC0L4g0L3QsCDQutC70LDRgdCwINC4INC00LLQvtC50L3QviDQtNCy0L7QtdGC0L7Rh9C40LUgKNGCLtC1LiDQutC+0LzQv9GO0YLRitGAIDo6KS4g0JjQvNCwINC90Y/QutC+0LvQutC+INCa0JUt0LDRgtGA0LjQsdGD0YLQsCwg0LrQvtC40YLQviDRgdCwINC+0LHRidC4INC30LAg0LLRgdC40YfQutC4INCa0JUgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0LTQsCDRgdC1INC/0L7QutCw0LbQsNGCINC+0YLQtNC10LvQvdC4INCa0JUt0LDRgtGA0LjQsdGD0YLQuCwg0LrQsNC60YLQviDRgdCwINC00LXRhNC40L3QuNGA0LDQvdC4INCyINCa0JUt0LTQtdGE0LjQvdC40YbQuNGP0YLQsCwg0YLRgNGP0LHQstCwINC00LAg0YHQtSDQuNC30L/QvtC70LfQstCwINGB0LvQtdC00L3QsNGC0LAg0YHRhdC10LzQsCAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHQsCBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQkNC60L4g0L3Rj9C80LAg0LfQsNC/0LjRgSDQt9CwINCa0JUg0LrQu9Cw0YEsINGC0L7Qs9Cw0LLQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC70L7QvdC40YLQtSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuCDQtdC70LXQvNC10L3RgtC4INGB0LAg0LTQvtGB0YLRitC/0L3QuCDQt9CwICLQlNC10LnRgdGC0LLQuNC1IiDQsiDRgtGA0LXRgtC+0YLQviDQvdC40LLQviDQvdCwINGB0YLRgNGD0LrRgtGD0YDQsNGC0LAgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lgg0LXQu9C10LzQtdC90YLQuCDRgdCwINC90LDQu9C40YfQvdC4INCyINC/0YrRgNCy0L7RgtC+INC90LjQstC+INC90LAg0YHRgtGA0YPQutGC0YPRgNCw0YLQsCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lgg0LXQu9C10LzQtdC90YLQuCDRgdCwINC90LDQu9C40YfQvdC4INCy0YrQsiDQstGC0L7RgNC+0YLQviDQvdC40LLQviDQvdCwINGB0YLRgNGD0LrRgtGD0YDQsNGC0LAgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LrQvtC5INGC0LjQvyDQstGA0YrQt9C60LAgKNC90LDQt9C+0LLQsNC9INC+0YIg0LPQu9C10LTQvdCwINGC0L7Rh9C60LAg0L3QsCDQsdC40LvQtdGC0LApINC80L7QttC1INC00LAg0L/QvtCy0LvQuNGP0LUg0L3QsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0YHQstGK0YDQt9Cw0L0g0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuSDRgtC40L8g0LHQuNC70LXRgiDQvNC+0LbQtSDQtNCwINC/0L7QstC70LjRj9C1INC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINGB0LLRitGA0LfQsNC9INCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn0JDQutGC0YPQsNC70LjQt9Cw0YbQuNGPINC90LAg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9CY0LfRgtGA0LjQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGCINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9Cm0LLRj9GCINC30LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINCy0L3QtdC00YDRj9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9Cd0LDQv9GA0LDQstC4INC60L7Qv9C40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0YHRitCx0LjRgtC40Y8g0YEg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0LrQvtC50YLQviDQvNCw0YDQutC40YDQsCDQtNC10YTQuNC90LjRhtC40LjRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC60LDRgtC+INC90LXRgdC40L3RhdGA0L7QvdC40LfQuNGA0LDQvdC4LCDQsNC60L4g0YHRitC00YrRgNC20LDRidC40YLQtSDQs9C4INC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YHQtSDQv9GA0L7QvNC10L3Rj9GCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0L/QvtC60LDQt9Cw0L3QuCDQsiDQtdC60YDQsNC90LAg0LfQsCDQtNC+0L/RitC70L3QuNGC0LXQu9C90Lgg0L/QvtC70LXRgtCwINC90LAgSVRTTSDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0L/QvtC60LDQt9Cw0L3QuCDQsiDQtdC60YDQsNC90LAg0LfQsCDQv9GA0LXQs9C70LXQtCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAsINC/0L7QutCw0LfQsNC90Lgg0LIg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0KDQsNC30YDQtdGI0LDQstCwINGE0YPQvdC60YbQuNGP0YLQsCDQt9CwINCz0YDRg9C/0L7QstC+INC00LXQudGB0YLQstC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LfQsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsCDQtNCwINGA0LDQsdC+0YLQuCDQstGK0YDRhdGDINC/0L7QstC10YfQtSDQvtGCINC10LTQuNC9INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQvdCw0LLQtdC00L3RitC2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsCDRhNGD0L3QutGG0LjRj9GC0LAg0LfQsCDQs9GA0YPQv9C+0LLQviDQtNC10LnRgdGC0LLQuNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINGB0LDQvNC+INC30LAg0LjQt9Cx0YDQvtC10L3QuNGC0LUg0LPRgNGD0L/QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQvdCwINGB0YrQsdC40YLQuNC1INC30LAg0LfQsNC00LDQstCw0L3QtSDQt9CwINGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQt9CwINCy0YDRitC30LrQsCDQt9CwINCx0LjQu9C10YIt0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfQn9C+0LvQtdGC0LAg0L7RgiDQuNC90LTQtdC60YHQsCDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQuNC30L/QvtC70LfQstCw0L3QuCDQt9CwINC/0YrQu9C90L7RgtC10LrRgdGC0L7QstC+INGC0YrRgNGB0LXQvdC1LiDQn9C+0LvQtdGC0LDRgtCwINGB0YrRidC+INGB0LUg0YHRitGF0YDQsNC90Y/QstCw0YIsINC90L4g0L3QtSDRgdCwINC30LDQtNGK0LvQttC40YLQtdC70L3QuCDQt9CwINGG0Y/Qu9C+0YHRgtC90LDRgtCwINGE0YPQvdC60YbQuNC+0L3QsNC70L3QvtGB0YIuINCS0LrQu9GO0YfQstCw0L3QtdGC0L4g0L3QsCDQv9GA0LjQutCw0YfQtdC90Lgg0YTQsNC50LvQvtCy0LUg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQt9Cw0LHRgNCw0L3QtdC90L4g0YfRgNC10Lcg0LfQsNC00LDQstCw0L3QtSDQvdCwINGB0YLQvtC50L3QvtGB0YIgMCDQuNC70Lgg0LjQt9GC0YDQuNCy0LDQvdC1INC90LAg0LfQsNC/0LjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn0J/QvtC70LXRgtCwLCDRgdGK0YXRgNCw0L3Rj9Cy0LDQvdC4INCyINC40L3QtNC10LrRgdCwINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC60L7QuNGC0L4g0YHQtSDQuNC30L/QvtC70LfQstCw0YIg0LfQsCDQtNGA0YPQs9C4INGG0LXQu9C4LCDQvtGB0LLQtdC9INC30LAg0L/RitC70L3QvtGC0LXQutGB0YLQvtCy0L4g0YLRitGA0YHQtdC90LUuINCX0LAg0L/RitC70L3QsNGC0LAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+0YHRgiDQstGB0LjRh9C60Lgg0L/QvtC70LXRgtCwINGB0LAg0LfQsNC00YrQu9C20LjRgtC10LvQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LjRgNCw0L3QtSDQvdCwINC80L7QtNGD0LsgR2VuZXJpY0ludGVyZmFjZSDQt9CwINGB0LvQvtGPINC30LAg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LjRgNCw0L3QtSDQvdCwINC80L7QtNGD0LsgR2VuZXJpY0ludGVyZmFjZSDQt9CwINGB0LvQvtGPINC30LAg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNC40YDQsNC90LUg0L3QsCDQvNC+0LTRg9C7IEdlbmVyaWNJbnRlcmZhY2Ug0LfQsCDRgdC70L7RjyDQt9CwINC40LfQstC40LrQstCw0L3QtSDQvdCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J/RgNC10LPQu9C10LQg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LLQsCDRgdGK0YHRgtC+0Y/QvdC40Y8g0L3QsCDQstC90LXQtNGA0Y/QstCw0L3QtSDQsiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQstCwINGB0YrRgdGC0L7Rj9C90LjRjyDQvdCwINC40L3RhtC40LTQtdC90YLQuCDQsiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70LXQvSDQsdGA0L7QuSDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC40YLQviDQtNCwINCx0YrQtNCw0YIg0L/QvtC60LDQt9Cw0L3QuCDQsiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtCw0LfQuCDQvtC/0LXRgNCw0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQv9GA0L7QstC10YDQutCwINC90LAg0LPRgNGD0L/QsNGC0LAsINC+0YLQs9C+0LLQsNGA0Y/RidCwINC30LAg0LTQsNC00LXQvSDQutC70LDRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINCz0YDRg9C/0LDRgtCwLCDQvtGC0LPQvtCy0L7RgNC90LAg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQuyDQt9CwINCz0LXQvdC10YDQuNGA0LDQvdC1INC90LAg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60Lgg0LTQsNC90L3QuCDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9CY0LzQtSDQvdCwINC80L7QtNGD0LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0J3QvtC80LXRgCDQvdCwINC80L7QtNGD0LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7QuSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC40YLQviDQtNCwINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQvdCwINCy0YHRj9C60LAg0YHRgtGA0LDQvdC40YbQsCDQvtGCINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0Lkg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC60L7QuNGC0L4g0LTQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0L3QsCDQstGB0Y/QutCwINGB0YLRgNCw0L3QuNGG0LAg0L3QsCDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn0J7QsdC10LrRgtC4LCDQutC+0LjRgtC+INC00LAg0YHQtSDRgtGK0YDRgdGP0YIsINC60L7Qu9C60L4g0LfQsNC/0LjRgdC4INC4INC60L7QuCDQsNGC0YDQuNCx0YPRgtC4INC00LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCLiDQkNGC0YDQuNCx0YPRgtC40YLQtSDQvdCwIENvbmZpZ0l0ZW0g0YLRgNGP0LHQstCwINC40LfRgNC40YfQvdC+INC00LAg0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiDRh9GA0LXQtyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC60LDRgtC10LPQvtGA0LjQuNGC0LUg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRhNC40LvRgtGA0LjRgtC1INC90LAg0LrQvtC70L7QvdC40YLQtSDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LzQsNC70LrQuNGPINC10LvQtdC80LXQvdGCINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0JzQvtC70Y8sINC+0LHRitGA0L3QtdGC0LUg0LLQvdC40LzQsNC90LjQtTog0LfQsNC00LDQstCw0L3QtdGC0L4g0L3QsCDRgdGC0L7QudC90L7RgdGCICLQkNC60YLQuNCy0LXQvSIg0L3QsCAwINGJ0LUg0L/QvtC/0YDQtdGH0Lgg0YHQsNC80L4g0L3QsCDQsNCz0LXQvdGC0LjRgtC1INC00LAg0YDQtdC00LDQutGC0LjRgNCw0YIg0L3QsNGB0YLRgNC+0LnQutC40YLQtSDQvdCwINGC0LDQt9C4INCz0YDRg9C/0LAg0LIg0LvQuNGH0L3QuNGC0LUg0YHQuCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjywg0L3QviDQstGB0LUg0L/QsNC6INGJ0LUg0L/QvtC30LLQvtC70Lgg0L3QsCDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC40YLQtSDQtNCwINGA0LXQtNCw0LrRgtC40YDQsNGCINC90LDRgdGC0YDQvtC50LrQuNGC0LUg0L7RgiDQuNC80LXRgtC+INC90LAg0LTRgNGD0LMg0L/QvtGC0YDQtdCx0LjRgtC10LsuINCY0LfQv9C+0LvQt9Cy0LDQudGC0LUgXCdQcmVmZXJlbmNlR3JvdXBcJyAo0JPRgNGD0L/QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjyksINC30LAg0LTQsCDQutC+0L3RgtGA0L7Qu9C40YDQsNGC0LUg0LIg0LrQvtGPINC+0LHQu9Cw0YHRgiDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC70YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBINC00LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCINGC0LXQt9C4INC90LDRgdGC0YDQvtC50LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0LjRgtC1INC30LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1INGB0LUg0L7RhtCy0LXRgtGP0LLQsNGCINCyINC40LfQs9C70LXQtNCwINGBINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGPINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRitGB0YLQvtGP0L3QuNGP0YLQsCDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1INCyINC40LfQs9C70LXQtNCwINGBINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGPINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC/0YDQuNC80LXRgNC90LjRgtC1INGA0LDQt9GA0LXRiNC40YLQtdC70L3QuCDQs9GA0YPQv9C4INC+0YIg0LDRgtGA0LjQsdGD0YLQuNGC0LUg0L3QsCDQvtCx0YnQuNGPINC60LDRgtCw0LvQvtCzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC80L7QtNGD0LvQsCDQvdCwINC40LzQtdC90LDRgtCwINC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC90LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y/RgtCwINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQvNC+0LTRg9C70LAg0LfQsCDQvdC+0LzQtdGA0LAg0L3QsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtGA0LDQvdC40YbQuNGC0LUgKNCyINC60L7QuNGC0L4g0YHQtSDQv9C+0LrQsNC30LLQsNGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGC0LUg0LXQu9C10LzQtdC90YLQuCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC80L7QtNGD0LvQsCDQt9CwINC90LjQtyDQvtGCINCy0LXRgNGB0LjQuCDQt9CwINC60LvQsNGB0L7QstC10YLQtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGPINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LzQvtC00YPQu9CwINC90LAg0L3QsNCx0L7RgNCwINC+0YIg0LjQvdGB0YLRgNGD0LzQtdC90YLQuCDQt9CwINGI0LDQsdC70L7QvdC4INC30LAg0L3QuNC3INC+0YIg0LLQtdGA0YHQuNC4INC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC90LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y/RgtCwINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC30LDQtNC10LnRgdGC0LLQsNC90LUg0L3QsCDQstC10YDRgdC40Y/RgtCwINC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC30LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9CwINGA0LDQt9GA0LXRiNC10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC00LXQudGB0YLQstC40LXRgtC+INC30LAg0L/RgNC40LrQsNGH0LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0LIg0LrQu9C40LXQvdGC0YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0YEg0LTRitGA0LLQvtCy0LjQtNC90LjRjyDQuNC30LPQu9C10LQg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDQv9GA0LDQstCwINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0LfQsCDQvNCw0YnQsNCx0LjRgNCw0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC00L7QsdCw0LLRj9C90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDRgSDQtdC70LXQvNC10L3RgtC40YLQtSDQt9CwINCz0YDRg9C/0L7QstCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRjyDQvdCwIElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINGA0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC/0LXRh9Cw0YIg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30YLRgNC40LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfQotGK0YDRgdC10L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0JfQsNC00LDQudGC0LUg0LDQstGC0L7QvNCw0YLQuNGH0L3QviDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQvdGG0LjQtNC10L3RgiDQvdCwINCa0JUsINC60L7Qs9Cw0YLQviDQsdC40LvQtdGC0YrRgiDQtSDRgdCy0YrRgNC30LDQvSDRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LLQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0LIg0LPRgNGD0L/QvtCy0LjRjyDQtdC60YDQsNC9INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0LfQsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQt9CwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQstCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC90YbQuNC00LXQvdGC0LAg0LIg0LPRgNGD0L/QvtCy0LjRjyDQtdC60YDQsNC9INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQutC+0LXRgtC+INC/0L7Qt9Cy0L7Qu9GP0LLQsCDRgdCy0YrRgNC30LLQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0YEg0LTRgNGD0LMg0L7QsdC10LrRgiDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00L7RgdGC0YrQvyDQtNC+INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvtCx0YnQuNGPINC/0YDQtdCz0LvQtdC0INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00L7RgdGC0YrQvyDQtNC+INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LjRgNCw0L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDRg9Cy0LXQu9C40YfQtdC9INC40LfQs9C70LXQtCDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC/0L7QutCw0LfQstCw0L3QtSDQvdCwINCy0YDRitC30LrQuNGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LrQsNGC0L4g0LTRitGA0LLQvtCy0LjQtNC10L0g0LjQt9Cz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQtNGD0LHQu9C40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L/RgNC4INC/0YDQtdCz0LvQtdC00LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0LTRg9Cx0LvQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDRgNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQstGA0YrRidCw0L3QtSDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0L7RgtC/0LXRh9Cw0YLQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LjRgNCw0L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINGD0LLQtdC70LjRh9Cw0LLQsNC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDRhdGA0L7QvdC+0LvQvtCz0LjRj9GC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiAo0LIg0L7QsdGA0LDRgtC10L0g0YDQtdC0KSDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0Y/RgtC+INGB0LUg0L/QvtC60LDQt9Cy0LAsINCw0LrQviDQvdC1INC1INC40LfQsdGA0LDQvdCwINGC0LDQutCw0LLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YrRgiDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgiwg0L3QsNC/0YAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQn9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQtSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ9CX0LDQtNC10LnRgdGC0LLQsCDQsNCy0YLQvtC80LDRgtC40YfQvdC+INC40LfQstC40LrQstCw0L3QtdGC0L4g0L3QsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LXRgNGB0LjRjyDQodGC0YDQuNC90LMg0LjQt9GA0LDQt9GP0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JLQtdGA0YHQuNGPINCh0YLRgNGD0L3QtdC9INC80L7QtNGD0LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn0JLQtdGA0YHQuNGPIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9CU0LDQu9C4INC40LfQv9GK0LvQvdC10L3QuNC10YLQviDQvdCwIENvbmZpZ0l0ZW1BQ0wg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQuNC30LHQtdCz0L3QsNGC0L4g0YfRgNC10Lcg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC60LXRiNC40YDQsNC90LjRgtC1INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L3QsCDQv9C+0LvQtdGC0LDRgtCwLiDQotC+0LLQsCDQvNC+0LbQtSDQtNCwINC/0L7QtNC+0LHRgNC4INCy0YDQtdC80LXRgtC+INC30LAg0LfQsNGA0LXQttC00LDQvdC1INC90LAg0YTQvtGA0LzRg9C70Y/RgNC40YLQtSwg0L3QviDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQtNC10LDQutGC0LjQstC40YDQsNC90L4sINCw0LrQviBBQ0xNb2R1bGVzINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINC30LAgSVRTTUNvbmZpZ0l0ZW0tINC4IEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfQmtC+0Y8g0L7QsdGJ0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8g0LUg0L/QvtC60LDQt9Cw0L3QsCDQsiDQt9Cw0LPQu9Cw0LLQuNC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfQutC70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YLQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LXQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC40L3Rh9CwICg0NCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSDQuNC90YfQsCAoNTMsMzQg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUg0LjQvdGH0LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQuNC90YfQsCAoODAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkt0LjQvdGH0L7QsiDRgdGC0LXQu9Cw0LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC40L3Rh9CwICg0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUg0LjQvdGH0LAgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LjQvdGH0L7QsiDQsdCw0LPQsNC20L3QuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDQuNC90YfQsCAoOTcsNzkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMt0LjQvdGH0L7QstCwINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LjQvdGH0LAgKDYwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg0LjQvdGH0LAgKDEwNiw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUg0LjQvdGH0LAgKDEyMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1INC40L3Rh9CwICg4LDg5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUg0LjQvdGH0LAgKDEzMywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUg0LjQvdGH0LAgKDgwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUg0LjQvdGH0LAgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LjQvdGH0LAgKDkwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMg0LjQvdGH0LAgKDE2MCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0INC40L3Rh9CwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQuNC90YfQsCAoMTczLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUg0LjQvdGH0LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LjQvdGH0LAgKDE4Niw2OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDQuNC90YfQsCAoMTEwMCDQvNC8KTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1INC40L3Rh9CwICgyMDAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiDQuNC90YfQsCAoMTIwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg0LjQvdGH0LAgKDIxMywzNiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INC40L3Rh9CwICgxNyw3OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1INC40L3Rh9CwICgyMiwyMyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1INC40L3Rh9CwICgyNiw2NyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUg0LjQvdGH0LAgKDMxLDEyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDQuNC90YfQsCAoMzUsNTYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1INC40L3Rh9CwICg0MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9Ch0YfQtdGC0L7QstC+0LTRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cg0LDQt9C/0YDQtdC00LXQu9C10L3QuNC1INC90LAg0LDQtNGA0LXRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfQkNC90LDQu9C+0LPQvtCyINGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0YPRgNC10LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ9Ca0LDQv9Cw0YbQuNGC0LXRgiDQvdCwINCx0LDRgtC10YDQuNGP0YLQsCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQsdCw0YLQtdGA0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9Ch0LPRgNCw0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn0JjQvdGC0LXRgNGE0LXQudGBINC90LAg0YjQuNC90LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQn9GA0L7RhtC10YHQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC90LAg0L/RgNC+0YbQtdGB0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfQmtCw0L/QsNGG0LjRgtC10YIgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ9Ca0LDQv9Cw0YbQuNGC0LXRgiDQvdCwINCz0YDQsNGE0LjRh9C90LAg0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQutCw0YDRgtCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ9Cn0LXRgtC10YYg0L3QsCDQutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ9Ci0LjQvyDQutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfQmtC70LjQtdC90YLRgdC60Lgg0YHQtdGA0YLQuNGE0LjQutCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfQmtC70LjQtdC90YLRgdC60Lgg0YHQvtGE0YLRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC90LAg0LrQu9C40LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn0KfQsNGB0L7QstC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn0KHQutC+0YDQvtGB0YIg0L3QsCDRh9Cw0YHQvtCy0L3QuNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Lgg0LfQsCDQv9C+0LTQv9C40YHQstCw0L3QtSDQvdCwINC60L7QtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn0JrQvtC90YTQtdGA0LXQvdGC0LXQvSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC60L7QvdGB0YPQu9GC0LjRgNCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn0KHQstGK0YDQttC10YLQtSDRgdC1INGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfQodCy0YrRgNC20LXRgtC1INGB0LUg0YEg0LTQuNGB0YLRgNC40LHRg9GC0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RgtC10LnQvdC10YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfQktC40LQg0L3QsCDQtNC+0LPQvtCy0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn0KHRgNC+0Log0L3QsCDQtNC+0LPQvtCy0L7RgNCwINC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn0KHRgNC+0Log0L3QsCDQtNC+0LPQvtCy0L7RgNCwINC00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn0JHQtdC30LbQuNGH0LXQvSDRgtC10LvQtdGE0L7QvSAoREVDVCDRgtC10LvQtdGE0L7QvSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn0KDQsNC30YXQvtC00L3QsCDQtdC00LjQvdC40YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ9CR0YDQvtC5INC90LAg0LvQuNGG0LXQvdC30LjRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfQlNCw0YLQsCDQvdCwINGB0YrQt9C00LDQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn0J/QvtGC0YDQtdCx0LjRgtC10LvRgdC60Lgg0YHRgtC10LvQsNC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQINCX0LDQv9Cw0LfQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy3RgdGK0YDQstGK0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ9CU0LDRgtCwINC90LAg0YTQsNC60YLRg9GA0LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfQlNCw0YLQsCDQvdCwINC/0L7RgNGK0YfQutCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn0JTQsNGC0LAg0L3QsCDQuNC30LTQsNCy0LDQvdC1INC90LAg0LPQsNGA0LDQvdGG0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn0JTQsNGC0LAg0L3QsCDQuNC30LTQsNCy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfQndCw0YHRgtC+0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtC4INC30LAg0L/QvtC00L/QuNGB0LLQsNC90LUg0L3QsCDQtNC+0LrRg9C80LXQvdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Lgg0LfQsCDQtdC70LXQutGC0YDQvtC90L3QsCDQv9C+0YnQsCAoUy9NSU1FINGB0LXRgNGC0LjRhNC40LrQsNGC0LgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ9Ci0YDRg9C00L7QsiDQtNC+0LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ9Ca0YDQsNC10L0gSVAg0LDQtNGA0LXRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ9Ca0YDQsNC5INC90LAg0L/QvtC00LrRgNC10L/QsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfQlNCw0YLQsCDQvdCwINC40LfRgtC40YfQsNC90LUg0L3QsCDQstCw0LvQuNC00L3QvtGB0YLRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfQktGK0L3RiNC10L0g0YLQstGK0YDQtCDQtNC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ9CX0LDRidC40YLQvdCwINGB0YLQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfQpNGK0YDQvNGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ9Ch0YrRhdGA0LDQvdC10L3QuNC1INC90LAg0LXQvdC10YDQs9C40Y8g0YfRgNC10Lcg0LzQsNGF0L7QstC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfQpNCw0LrRgtC+0YAg0L3QsCDRhNC+0YDQvNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0YTRgNCw0L3Rh9Cw0LnQtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXQt9C/0LvQsNGC0L3QviDRgNCw0LfQv9GA0L7RgdGC0YDQsNC90Y/QstCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn0J7QsdGJ0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfQk9GA0LDRhNC40YfQvdC4INC60LDRgNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9CT0YDQsNGE0LjRh9C90LAg0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9Cl0LDRgNC00YPQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn0JzQvtC00LXQuyDQvdCwINGF0LDRgNC00YPQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn0KLQtdCz0LvQviDQvdCwINGF0LDRgNC00YPQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9Ch0LvRg9GI0LDQu9C60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDQv9GA0L7RgtC+0LrQvtC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC90LAg0LjQtNC10L3RgtC40YfQvdC+0YHRgtGC0LAg0Lgg0LTQvtGB0YLRitC/0LAgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9CY0L3QstC10L3RgtCw0YDQtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0L3QsCDRhNCw0LrRgtGD0YDQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQmtC70LDQstC40LDRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qg0LzQvtC90LjRgtC+0YAgKNC00LjRgdC/0LvQtdC5INGBINGC0LXRh9C90Lgg0LrRgNC40YHRgtCw0LvQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCDQvNC+0L3QuNGC0L7RgCAo0YHQstC10YLQu9C+0LjQt9C70YrRh9Cy0LDRiSDQtNC40L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn0KHRgtCw0YbQuNC+0L3QsNGA0LXQvSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfQn9GA0LXQvdC+0YHQuNC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn0JPQtdC+0LPRgNCw0YTRgdC60LAg0YjQuNGA0LjQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn0KHQu9C+0LkgMTog0KTQuNC30LjRh9C10YHQutC4INGB0LvQvtC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9Ch0LvQvtC5IDI6INCh0LvQvtC5INC30LAg0LLRgNGK0LfQutCwINGBINC00LDQvdC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ9Ch0LvQvtC5IDM6INCc0YDQtdC20L7QsiDRgdC70L7QuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfQodC70L7QuSAzOiDQnNGA0LXQttC+0LIg0YHQu9C+0LkgKNGB0YPQv9C10YDQvNGA0LXQttCwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICfQodC70L7QuSA0OiDQotGA0LDQvdGB0L/QvtGA0YLQtdC9INGB0LvQvtC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfQodC70L7QuSA1OiDQodC70L7QuSDQvdCwINGB0LXRgdC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ9Ch0LvQvtC5IDY6INCh0LvQvtC5INC90LAg0L/RgNC10LTRgdGC0LDQstGP0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ9Ch0LvQvtC5IDc6INCh0LvQvtC5INC90LAg0L/RgNC40LvQvtC20LXQvdC40LXRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC70LjQt9C40L3Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC70LjRhtC10L3Qtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAn0JrQu9GO0Ycg0LfQsCDQu9C40YbQtdC90LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn0JLQuNC0INC70LjRhtC10L3Qtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn0J/QtdGA0LjQvtC0INC90LAg0LvQuNGG0LXQvdC30LAg0L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ9Ch0YDQvtC6INC90LAg0LvQuNGG0LXQvdC30LAg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn0JHQsNGC0LXRgNC40Y8g0L7RgiDQu9C40YLQuNC10LLQvi3QttC10LvQtdC30LXQvSDRhNC+0YHRhNCw0YIgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfQm9C40YLQuNC10LLQvi3QudC+0L3QvdCwIChMaS1pb24pINCx0LDRgtC10YDQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0LfQsNC10LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9Cd0LDQvNC40YDQsCDRgdC1INCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ9CU0YrQu9C20LjQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn0J/RgNC+0LjQt9Cy0L7QtNC40YLQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfQnNCw0LrRgdC40LzQsNC70LXQvSDQutCw0L/QsNGG0LjRgtC10YIg0L3QsCDQvdCw0YLQvtCy0LDRgNCy0LDQvdC1IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfQn9Cw0LzQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn0KLQuNC/INC/0LDQvNC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn0JzQvtCx0LjQu9C10L0g0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfQnNC+0LHQuNC70L3QuC/QstCz0YDQsNC00LXQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9Ce0L/QuNGB0LDQvdC40LUg0L3QsCDQvNC+0LTQtdC70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn0KDQtdC30L7Qu9GO0YbQuNGPINC90LAg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfQoNCw0LfQvNC10YAg0L3QsCDQvNC+0L3QuNGC0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn0JzQuNGI0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn0JzRgNC10LbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQt9CwINC80YDQtdC20LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQt9CwINC80YDQtdC20LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfQnNGA0LXQttC+0LLQviDQvdC40LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ9Cd0LjQutC10Lst0LrQsNC00LzQuNC10LLQsCAoTmlDZCkg0LHQsNGC0LXRgNC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfQndC40LrQtdC7LdC80LXRgtCw0LvRhdC40LTRgNC40LTQvdCwIChOaU1IKSDQsdCw0YLQtdGA0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQvdC10YDQsNC30LrRgNC40LLQsNC90LUg0L3QsCDQuNC90YTQvtGA0LzQsNGG0LjRjyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ9CR0LXQu9C10LbQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICfQkdGA0L7QuSDQv9GA0L7RhtC10YHQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAn0JHRgNC+0Lkg0LzQvtC00YPQu9C4IFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfQkdGA0L7QuSDQs9GA0LDRhNC40YfQvdC4INC60LDRgNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQg0LzQvtC90LjRgtC+0YAgKNC+0YDQs9Cw0L3QuNGH0LXQvSDRgdCy0LXRgtC+0LjQt9C70YrRh9Cy0LDRiSDQtNC40L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn0J7Qv9C10YDQsNGC0LjQstC90Lgg0YDQsNC30YXQvtC00LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvdCwINC/0L7RgNGK0YfQutCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ9CU0YDRg9Cz0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9CY0LfRhdC+0LTQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICfQn9CY0J0gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQv9Cw0YDRgtC90YzQvtGA0YHRgtCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfQotC10LvQtdGE0L7QvdC10L0g0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0YLQtdC70LXRhNC+0L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9Ck0LjQt9C40YfQtdGB0LrQuCDRj9C00YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ9CU0L7RgdGC0LDQstC60LAg0L3QsCDQtdC90LXRgNCz0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9CX0LDQutGD0L/QtdC90L4g0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ9CU0YrQu9Cx0L7Rh9C40L3QsCDQvdCwINGB0YLQtdC70LDQttCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn0JXQtNC40L3QuNGG0Lgg0LfQsCDRgdGC0LXQu9Cw0LYgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfQodGC0LDRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDQutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyDRgdC10YDRgtC40YTQuNC60LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn0JTQvtCz0L7QstC+0YAg0LfQsCDQv9GA0L7QtNCw0LbQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ9Ch0LDRgtC10LvQuNGC0LXQvSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfQl9Cw0L/QtdGH0LDRgtCw0L3QsCDQvtC70L7QstC90L4t0LrQuNGB0LXQu9C40L3QvdCwINCx0LDRgtC10YDQuNGPIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn0KHQtdGA0LjQtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAn0KHQvtGE0YLRg9C10YAg0LfQsCDRgdGK0YDQstGK0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINGD0YHQu9GD0LPQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ9Ch0LXRgNCy0LjQt9C10L0g0LXRgtC40LrQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ9Ci0LjQvyDQs9C90LXQt9C00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfQodC+0YTRgtGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ9CS0LjRgdC+0LrQvtCz0L7QstC+0YDQuNGC0LXQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9Ch0YLQsNC90LTQsNGA0YLQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfQndCw0YfQsNC70LXQvSBJUCDQsNC00YDQtdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfQodGK0YXRgNCw0L3QtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ9Cg0LDQt9C00LXQuyDQt9CwINGB0YrRhdGA0LDQvdC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn0JTRitGJ0LXRgNC90L4g0LTRgNGD0LbQtdGB0YLQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfQoNC10LfRjtC80LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfQotGK0L3RitC6INC60LvQuNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn0J3QuNGI0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfQntCx0YnQsCDQvtC/0LXRgNCw0YLQuNCy0L3QsCDQv9Cw0LzQtdGCINC90LAg0LPRgNCw0YTQuNGH0L3QsNGC0LAg0LrQsNGA0YLQsCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0L4gUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ9Cc0L7QvdC40YLQvtGAINGB0YrRgSDRgdC10L3Qt9C+0YDQtdC9INC10LrRgNCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfQmtGD0LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCINC60L7QvdGG0LXQvdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ9Ch0LvRg9GI0LDQu9C60Lgg0LfQsCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQINGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfQo9C10LEg0LrQsNC80LXRgNCwJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/ca_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUmVhbG1lbnQgZGVzaXRqYSBlbGltaW5hciBhcXVlc3QgaW52b2NhZG9yPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1RlbXBzIGRlIGNyZWFjacOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRlIHpvb20nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdFeGVjdXRhciByZWNlcmNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyw6huY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdBdGVuY2nDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gdMOpIFBlcm3DrXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Jlc3VtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmbDrWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnRm9ybXVsYXJpIGRlIHJlc3VsdGF0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0Fjb3JkIGRlIE5pdmVsbCBkZSBTZXJ2ZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0VzdMOgbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/cs_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNzX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdPYmVjbsOpIHByb3Zvem7DrSDDumRhamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ05hc3RhdmVuw60gcHJvIHDFmcOtY2hvesOtIGRhdGEgcG/FvmFkYXZrxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdOYXN0YXZlbsOtIHBybyBvZGNob3rDrSBkYXRhIG9kcG92xJtkw60nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdTcHLDoXZhIEtvbmZpZ3VyYcSNbsOtY2ggUG9sb8W+ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdabcSbbmEgZGVmaW5pY2UgdMWZw61keSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnWm3Em25hIGRlZmluaWNlIHJvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdTdmF6a3kgdMWZw61kIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1pkZSBtxa/FvmV0ZSBpbXBvcnRvdmF0IHN2YXpreSB0xZnDrWQgUmVhZHkySW1wb3J0LCBrdGVyw6kgcMWZZWRzdGF2dWrDrSBuYcWhZSBuZWpvYnZ5a2xlasWhw60gcG9sb8W+a3kga29uZmlndXJhY2UuIFZlem3Em3RlIHByb3PDrW0gbmEgdsSbZG9tw60sIMW+ZSBtxa/FvmUgYsO9dCB2ecW+YWRvdsOhbmEgZGFsxaHDrSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQWt0dWFsaXphY2Ugc3TDoXZhasOtY8OtY2ggc3ViamVrdMWvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0IHN2YXprxa8gdMWZw61kIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnVMWZw61kYSBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnUm9sZSBwb2xvxb5reSBrb25maWd1cmFjZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWcuIFBvbG/FvmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyIHBybyB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoY2V0ZS1saSB2eXR2b8WZaXQgbm92b3UgcG9sb8W+a3Uga29uZmlndXJhY2UsIHZ5YmVydGUgemUgc2V6bmFtdSB0xZnDrWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1TFmcOtZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdIcm9tYWRuw6EgYWtjZSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1N0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdiBJbmNpZGVudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnT2RrYXogbmEgZGFsxaHDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmVzcHLDoXZuw6kgxI3DrXNsbyBrb25maWd1cmHEjW7DrSBwb2xvxb5reSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnxIzDrXNsbyBqaW7DqSBwb2xvxb5reSBrb25maWd1cmFjZSwgc2Uga3Rlcm91IHNlIG3DoSBwcm9wb2ppdC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdPcHJhdmR1IGNoY2V0ZSB0dXRvIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlIG9kc3RyYW5pdD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSm3DqW5vIHTDqXRvIEtvbmZpZy4gUG9sb8W+a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07DoXpldiBqZSBqacW+IHBvdcW+w612w6FuIHBvbG/FvmtvdSBDb25maWdJdGVtcyBzIG7DoXNsZWR1asOtY8OtbSDEjcOtc2xlbSAoxI3DrXNseSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxIzDrXNsbyB2ZXJ6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxIzDrXNsbyB2ZXJ6ZSB0w6l0byBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ8SMw61zbG8gdmVyemUgamUgamnFviBwb3XFvml0byB2IHBvbG/FvmNlIENvbmZpZ0l0ZW1zIHMgbsOhc2xlZHVqw61jw61tIMSNw61zbGVtICjEjcOtc2x5KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdiBJbmNpZGVudHUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmllIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdPYnNhaCBoaXN0b3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRG9iYSB2eXR2b8WZZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQxZlpYmzDrcW+ZW7DrSB6b2JyYXplbsOtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ1BvbG/Fvmt5IGtvbmZpZ3VyYWNlIG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZWJ5bGEgbmFsZXplbmEgxb7DoWRuw6EgZGF0YSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWeWJlcnRlIHR1dG8gcG9sb8W+a3Uga29uZmlndXJhY2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGl0IHZ5aGxlZMOhdsOhbsOtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnWm9icmF6ZW7DrSBzdHJvbXUgcHJvIHBvbG/Fvmt1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfDmnJvdmXFiCBobG91Ymt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUMWZaWJsw63FvmVuw60vb2Rkw6FsZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdQcm8gQ29uZmlnSXRlbSBieWxvIGRvc2HFvmVubyBtYXhpbcOhbG7DrSDDunJvdm7EmyBvZGthesWvISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvbG/FvmthIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjZSBvIHBvbG/FvmNlIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxuw60gU3RhdiBOYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxuw60gU3RhdiBJbmNpZGVudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnUG9zbGVkbsOtIHptxJtuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQb3NsZWRuw60gem3Em25hIG9kJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVmHFoWUgcG9sb8W+a3kgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnVnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0J1ZG91IGltcG9ydG92w6FueSBuw6FzbGVkdWrDrWPDrSB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0J1ZG91IGltcG9ydG92w6FueSBuw6FzbGVkdWrDrWPDrSByb2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1bFoWltbsSbdGUgc2ksIMW+ZSBidWRvdSB2eXR2b8WZZW5hIHRha8OpIG9kcG92w61kYWrDrWPDrSBkeW5hbWlja8OhIHBvbGUgYSB0xZnDrWR5IEdlbmVyYWxDYXRhbG9nIGEgbmVkb2pkZSBrIGplamljaCBhdXRvbWF0aWNrw6ltdSBvZHN0cmFuxJtuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ2hjZXRlIHBva3JhxI1vdmF0Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQb3TFmWVidWpldGUgcMWZw61rbGFkb3bDqSB0xZnDrWR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmljZSBuZW7DrSBwbGF0bsO9IGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQxZllaGxlZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbsOtIHphZMOhbm8gxb7DoWRuw6kgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdMWZZWJ1amV0ZSBhbGVzcG/FiCBqZWRudSB2eWJyYW5vdSBwb2xvxb5rdSBrb25maWd1cmFjZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdLIHTDqXRvIGtvbmZpZ3VyYcSNbsOtIHBvbG/FvmNlIG5lbcOhdGUgcHLDoXZvIHrDoXBpc3U6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdQcm8gdMWZw61kdSAlcyBuZWJ5bGEgZGVmaW5vdsOhbmEgxb7DoWRuw6EgZGVmaW5pY2UhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmHEjW7DrSBwb2xvxb5rYSAiJXMiIG5lYnlsYSB2IGRhdGFiw6F6aSBuYWxlemVuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZWZpbnVqZSBwb8SNZXQgxZnDoWRrxa8gZWRpdG9ydSBkZWZpbmljZSBDSSB2IHJvemhyYW7DrSBzcHLDoXZjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1BybyBDb25maWdJdGVtSUQgJXMgbmVieWxhIG5hbGV6ZW5hIMW+w6FkbsOhIHZlcnplISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW7DrSB1dmVkZW5vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgYW5pIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdQxZnDrXN0dXAgbmVuw60gdW1vxb5uxJtuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZWx6ZSB6b2JyYXppdCBoaXN0b3JpaSwgbmVuw60gemFkw6FubyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVsemUgem9icmF6aXQgaGlzdG9yaWksIG5lanNvdSBkw6FuYSDFvsOhZG7DoSBwxZnDrXN0dXBvdsOhIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdsO9IHBydmVrIGtvbmZpZ3VyYWNlIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdsOhIHZlcnplIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF2IG5hc2F6ZW7DrSBha3R1YWxpem92w6FuIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdiBpbmNpZGVudHUgYWt0dWFsaXpvdsOhbiAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIG9kc3RyYW7Em24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdQxZlpZMOhbiBvZGtheiBuYSAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09ka2F6IG5hICVzICh0eXBlPSVzKSBvZHN0cmFuxJtuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmljZSBwb2xvxb5reSBDb25maWdJdGVtIGFrdHVhbGl6b3bDoW5hIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOw6F6ZXYgYWt0dWFsaXpvdsOhbiAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dCAlcyBha3R1YWxpem92w6FuIHogIiVzIiBuYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnplICVzIG9kc3RyYW7Em25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05lbsOtIHV2ZWRlbm8gxb7DoWRuw6kgQ29uZmlnSXRlbUlEIGFuaSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbHplIHpvYnJheml0IHBvbG/Fvmt1IGtvbmZpZ3VyYWNlLCBuZWpzb3UgemFkw6FuYSDFvsOhZG7DoSBwxZnDrXN0dXBvdsOhIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbmVieWxvIHYgZGF0YWLDoXppIG5hbGV6ZW5vISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndnl0acWhdMSbbm8gJXMgbmEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1BhcmFtZXRyeSBzdHLDoW5layAobmEga3RlcsO9Y2ggc2Ugem9icmF6dWrDrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuw60gdXZlZGVubyDFvsOhZG7DqSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1BybyB0dXRvIHTFmcOtZHUgbmVqc291IGTDoW5hIMW+w6FkbsOhIHDFmcOtc3R1cG92w6EgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnxb3DoWRuw70gdsO9c2xlZGVrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1bDvXNsZWRreSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmVsemUgem9icmF6aXQgcG9sb8W+a3UsIG5lanNvdSB6YWTDoW5hIMW+w6FkbsOhIHDFmcOtc3R1cG92w6EgcHLDoXZhIHBybyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdQb2xvxb5rYSBDb25maWdJdGVtIG5lYnlsYSBuYWxlemVuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmVieWx5IG5hbGV6ZW55IMW+w6FkbsOpIHZlcnplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3Byb3Zvem7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndmFyb3bDoW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ1ZlcnplICVzIG9kc3RyYW7Em25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF2IE5hc2F6ZW7DrSB0w6l0byBLb25maWcuIFBvbG/Fvmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdiBJbmNpZGVudHUgdMOpdG8gS29uZmlnLiBQb2xvxb5reSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ8W9w6FkbsOpIHBvdm9sZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ciBqZSBuZXBsYXRuw70hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdIbGVkw6Fuw60gcGFyYW1zIGplIG5lcGxhdG7DqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdab2JyYXplbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cCBzdGF2dSBuYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIGFrdHXDoWxuw61obyBzdGF2dSBpbmNpZGVudHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWV6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT21lemVuw60gdMWZw61keSBwcm8gcG9sb8W+a3Uga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDvWLEm3JlbSBqZWRuw6kgbmVibyB2w61jZSB0xZnDrWQgb21lesOtdGUgdnliw61yYXRlbG7DqSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09tZXplbsOtIHTFmcOtZHkgcHJvIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YsSbcmVtIGplZG7DqSBuZWJvIHbDrWNlIHTFmcOtZCBvbWV6w610ZSB2eWLDrXJhdGVsbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWNrw6kgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHZlcnplKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXAgb2RrYXp1IE9ka2F6b3bDoW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdaZGEgc2UgdGVudG8gb2RrYXogdnp0YWh1amUgbmEgQ29uZmlnSXRlbSBuZWJvIHN0YXRpY2tvdSB2ZXJ6aSBvZGthenVqw61jw61obyBvYmpla3R1LiBWw71wb8SNZXQgYWt0dcOhbG7DrWhvIHN0YXZ1IGluY2lkZW50dSBzZSBwcm92w6Fkw60gcG91emUgdSBkeW5hbWlja8O9Y2ggb2RrYXrFry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWeWJlcnRlIGF0cmlidXQsIHBvZGxlIGt0ZXLDqWhvIHNlIGJ1ZG91IGhsZWRhdCBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1rDoWtsYWRuw60gc3RydWt0dXJhIG5lbsOtIHBsYXRuw6EuIFBvc2t5dG7Em3RlIGhhc2ggcyBkYXR5IHZlIGZvcm3DoXR1IFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnxZhldMSbemVjIFlBTUwgbXVzw60gemHEjcOtbmF0IHpuYWtlbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZXBvZGHFmWlsbyBzZSB2ecSNaXN0aXQgdGFidWxrdSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZWJ5bGEgbmFsZXplbmEgxb7DoWRuw6EgcmVsZXZhbnRuw60gZHluYW1pY2vDoSBwb2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVsemUgdmxvxb5pdCBkbyB0YWJ1bGt5IGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVmxvxb5lbm8gMCDFmcOhZGvFryBkbyB0YWJ1bGt5IGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXggcG/EjWV0IGplZG7DqSBQb2xvxb5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJ6ZSDFmGV0xJt6ZWMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnQ2h5YmEgcMWZaSBzeW5jaHJvbml6YWNpIGRlZmluaWMuIFprb250cm9sdWp0ZSBwcm9zw61tIHByb3Rva29sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ03DoXRlIGRlZmluaWNlIElUU01Db25maWdJdGVtLCBrdGVyw6kgbmVqc291IHN5bmNocm9uaXpvdsOhbnkuIE5hc2HEj3RlIHptxJtueSBkeW5hbWlja8O9Y2ggcG9sw60gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdQcm9wYWRudXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ8OaZHLFvmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnxZjDrWTDrWPDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnTmFwbMOhbm92w6Fubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdPcHJhdmEvT2Jub3ZlbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdNaW1vIHByb3Zveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQxZllaGxlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9Lb250cm9sYSBrdmFsaXR5JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQxZllaGxlZCBhIHBvdHZyemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0IHTFmcOtZC9yb2zDrSBhIGplamljaCBzb3V2aXNlasOtY8OtY2ggcG9sw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQxZlpIGltcG9ydHUgdMWZw61keSBkb8WhbG8gayBjaHlixJsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa3J5dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBWeW9icmF6ZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw63FmWVuw6kgcG9kbcOtbmt5IHZ5aGxlZMOhdsOhbsOtIHYga29uZmlndXJhxI1uw61jaCBwb2xvxb5rw6FjaCByb3pocmFuw60gYWdlbnRhLiBQb21vY8OtIHTDqXRvIGZ1bmtjZSBtxa/FvmV0ZSB2eWhsZWTDoXZhdCBuYXDFmS4gbsOhemV2IGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHMgcG9kbcOtbmthbWkgdHlwdSAiKCprZXkxKiYmKmtleTIqKSIgbmVibyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Vtb8W+xYh1amUgcm96xaHDrcWZZW7DqSBwb2Rtw61ua3kgdnlobGVkw6F2w6Fuw60gdiBrb25maWd1cmHEjW7DrW0gdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4gUG9tb2PDrSB0w6l0byBmdW5rY2UgbcWvxb5ldGUgdnlobGVkw6F2YXQgbmFwxZkuIG7DoXpldiBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBzIHBvZG3DrW5rYW1pIHR5cHUgIigqa2V5MSomJiprZXkyKikiIG5lYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQxZlpxZlhemVuw6kgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0kgcMWZaWTEm2xlbsOpIHNwb2xlxI1ub3N0aSB6w6FrYXpuw61rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHDFmWnFmWF6ZW7DqSB1xb5pdmF0ZWxpIHrDoWthem7DrWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdOYXN0YXZlbsOtIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1prb250cm9sdWp0ZSBqZWRpbmXEjW7DvSBuw6F6ZXYgcG91emUgdiByw6FtY2kgc3Rlam7DqSB0xZnDrWR5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIG5lYm8gZ2xvYsOhbG7EmyAoImdsb2JhbCIpLCBjb8W+IHpuYW1lbsOhLCDFvmUgcMWZaSBobGVkw6Fuw60gZHVwbGljaXQgc2UgYmVyZSB2IMO6dmFodSBrYcW+ZMO9IGV4aXN0dWrDrWPDrSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnWnZvbHRlIG1vZHVsIHBybyB2eW51Y2Vuw60gc2Now6ltYXR1IHBvam1lbm92w6Fuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWeWJlcnRlIG1vZHVsIHBybyB2eW51Y2Vuw60gxI3DrXNlbG7DqWhvIHNjaMOpbWF0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnWnZvbHRlIG1vZHVsIHBybyB2eW51Y2Vuw60gc2Now6ltYXR1IMWZZXTEm3pjZSB2ZXJ6w60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVnliZXJ0ZSBhdHJpYnV0eSwga3RlcsOpIHNwdXN0w60gdnl0dm/FmWVuw60gbm92w6kgdmVyemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1Z5YmVydGUga2F0ZWdvcmllLCBrdGVyw6kgY2hjZXRlIHDFmWnFmWFkaXQgdMOpdG8gdMWZw61kxJsgcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJ5IHNsb3VwY292w71jaCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHBybyBwxZllaGxlZCBwb2xvxb5layBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU2xvdXBjZSwga3RlcsOpIGx6ZSBmaWx0cm92YXQgdiBwxZllaGxlZHUga29uZmlndXJhxI1uw61jaCBwb2xvxb5layByb3pocmFuw60gYWdlbnRhLiBQb3puw6Fta2E6IFBvdm9sZW55IGpzb3UgcG91emUgYXRyaWJ1dHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layBhIGR5bmFtaWNrw6EgcG9sZSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnUG9sb8W+a3kga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1DFmWlkw6Fuw60gcG9sb8W+a3kga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnw5pwcmF2YSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLCBrdGVyw70gdW1vxb7FiHVqZSBwcm90b2tvbG92w6Fuw60gZG8gaGlzdG9yaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWssIGt0ZXLDvSBha3R1YWxpenVqZSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBwb2RsZSBqZWppY2ggYWt0dcOhbG7DrSBkZWZpbmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpZSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnVGlzayBrb25maWd1cmHEjW7DrSBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdQxZlpYmzDrcW+ZW7DrSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdTdHJvbW92w6kgem9icmF6ZW7DrSBwb2xvxb5layBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdWZXJ6ZSBwb2xvxb5reSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ1BvbG/Fvmt5IENvbmZpZ0l0ZW1zIG7DoXNsZWR1asOtY8OtY2ggdMWZw61kIG5lYnVkb3UgbmEgc2VydmVydSBFbGFzdGljc2VhcmNoIHVsb8W+ZW55LiBDaGNldGUtbGkgdHV0byBtb8W+bm9zdCBwb3XFvsOtdCBuYSBleGlzdHVqw61jw60gQ0ksIGplIHTFmWViYSBwbyB6bcSbbsSbIHTDqXRvIG1vxb5ub3N0aSBzcHVzdGl0IG1pZ3JhY2kgQ0kgcHJvc3TFmWVkbmljdHbDrW0ga29uem9seS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnUG9sb8W+a3kgQ29uZmlnSXRlbXMgcyBuw6FzbGVkdWrDrWPDrW1pIHN0YXZ5IG5hc2F6ZW7DrSBuZWJ1ZG91IG5hIHNlcnZlcnUgRWxhc3RpY3NlYXJjaCB1bG/FvmVueS4gQ2hjZXRlLWxpIHR1dG8gbW/Fvm5vc3QgcG91xb7DrXQgbmEgZXhpc3R1asOtY8OtIENJLCBqZSB0xZllYmEgcG8gem3Em27EmyB0w6l0byBtb8W+bm9zdGkgc3B1c3RpdCBtaWdyYWNpIENJIHByb3N0xZllZG5pY3R2w61tIGtvbnpvbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFjZSBPbWV6ZW7DrSBwb2xvxb5layBuYSBzdHLDoW5rdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiw6F6ZSBwcm8gc3Byw6F2dSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0hyb21hZG7DvSBtb2R1bCBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhxI1uw60gcG9sb8W+a2EgdnlobGVkw6F2w6Fuw60gYmFja2VuZG92w6lobyBzbcSbcm92YcSNZSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVnl0dsOhxZlldCBhIHNwcmF2b3ZhdCBkZWZpbmljZSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdWeXR2w6HFmcOtIHRpcHkgcHJvIHBvbG/Fvmt5IENvbmZpZ0l0ZW1zIHYgdXLEjWl0w71jaCDEjWFzb3bDvWNoIGJvZGVjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnWsOha2F6bsOtY2kgc2kgbW9ob3UgcHJvaGzDqWRub3V0IGhpc3Rvcmlja8OpIHZlcnplIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdaw6FrYXpuw61jaSBtYWrDrSBtb8W+bm9zdCBydcSNbsSbIHDFmWVww61uYXQgbWV6aSBoaXN0b3JpY2vDvW1pIHZlcnplbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnVsO9Y2hvesOtIMO6ZGFqZSwga3RlcsOpIHNlIHBvdcW+aWrDrSBuYSBvYnJhem92Y2UgcHJvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnVsO9Y2hvesOtIMO6ZGFqZSwga3RlcsOpIHNlIHBvdcW+aWrDrSBuYSBvYnJhem92Y2UgcHJvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbnVqdGUgQWtjZSwgdSBrdGVyw71jaCBqZSB2ZSB3aWRnZXR1IHByb3BvamVuw71jaCBvYmpla3TFryBrIGRpc3BvemljaSB0bGHEjcOtdGtvIG5hc3RhdmVuw60gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvem9yxYh1amVtZSwgxb5lIHR5dG8gQWtjZSBtdXPDrSBtw610IHphcmVnaXN0cm92YW7DqSBuw6FzbGVkdWrDrWPDrSBzb3Vib3J5IEpTIGEgQ1NTOiBVSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluaWNlIHNjaMOpbWF0dSBzYWR5IFRlbXBsYXRlOjpUb29sa2l0IHBybyDFmWV0xJt6Y2UgdmVyesOtLiBQb3XFvsOtdsOhIHNlIHBvdXplIHYgcMWZw61wYWTEmywgxb5lIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIG5hc3RhdmVuIG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmludWp0ZSBzYWR1IHBvZG3DrW5laywgemEga3RlcsO9Y2ggamUgesOha2F6bsOta292aSBwb3ZvbGVubyB6b2JyYXppdCBwb2xvxb5rdSBrb25maWd1cmFjZS4gUG9kbcOtbmt5IGx6ZSB2b2xpdGVsbsSbIG9tZXppdCBuYSB1csSNaXTDqSBza3VwaW55IHrDoWthem7DrWvFry4gSmVkaW7DvW0gcG92aW5uw71tIGF0cmlidXRlbSBqZSBuw6F6ZXYuIFBva3VkIG5lanNvdSB6YWTDoW55IMW+w6FkbsOpIGRhbMWhw60gbW/Fvm5vc3RpLCBidWRvdSB2IGRhbsOpIGthdGVnb3JpaSB2aWRpdGVsbsOpIHbFoWVjaG55IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBrIG9kc3RyYcWIb3bDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHBvbW9jw60gb2JlY27DqWhvIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIFBvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHrDrXNrw6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSBwb21vY8OtIG9iZWNuw6lobyByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTSBwb21vY8OtIG9iZWNuw6lobyByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgbmFzdGF2ZW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHBvbW9jw60gb2JlY27DqWhvIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW51amUgbW9kdWwgcMWZZWhsZWR1IHBybyB6b2JyYXplbsOtIG1hbMOpaG8gem9icmF6ZW7DrSBzZXpuYW11IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ1VyxI11amUsIHpkYSBzZSB2IHByb3BvamVuw60gdXpsxa8gbXVzw60gem9icmF6b3ZhdCBwb3Bpc2t5IHR5cHUgcHJvcG9qZW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmludWplIHJlZ3Vsw6FybsOtIHbDvXJhenkgamVkbm90bGl2xJsgcHJvIGthxb5kb3UgdMWZw61kdSBDb25maWdJdGVtIHBybyBrb250cm9sdSBuw6F6dnUgQ29uZmlnSXRlbSBhIHpvYnJhemVuw60gcMWZw61zbHXFoW7DvWNoIGNoeWJvdsO9Y2ggenByw6F2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIGRvc3R1cG7DqSBzbG91cGNlIENJIHYgcMWZZWhsZWR1IHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOhdmlzbG9zdGkgbmEgdMWZw61kxJsgQ0kuIEthxb5kw6EgcG9sb8W+a2Egc2UgbXVzw60gc2tsw6FkYXQgeiBuw6F6dnUgdMWZw61keSBhIHBvbGUgZG9zdHVwbsO9Y2ggcG9sw60gcHJvIHDFmcOtc2x1xaFub3UgdMWZw61kdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c8OtIHJlc3Bla3RvdmF0IHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBhdHJpYnV0IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHBybyB0xZnDrWTEm27DrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIGF0cmlidXQgcG9sb8W+a3kga29uZmlndXJhY2UgcHJvIHTFmcOtZMSbbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHZlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBhdHJpYnV0IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHBybyB0xZnDrWTEm27DrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdMOpdG8gb3BlcmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBwb8WZYWTDrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiByb3pocmFuw60gYWdlbnRhLiBOYWhvcnU6IG5lanN0YXLFocOtIG5haG/FmWUuIERvbMWvOiBuZWpub3bEm2rFocOtIG5haG/FmWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gcG/FmWFkw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdmUgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uIE5haG9ydTogbmVqc3RhcsWhw60gbmFob8WZZS4gRG9sxa86IG5lam5vdsSbasWhw60gbmFob8WZZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsOpIHNsb3VwY2UgQ0kgdiBwxZllaGxlZHUgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6F2aXNsb3N0aSBuYSB0xZnDrWTEmyBDSS4gS2HFvmTDoSBwb2xvxb5rYSBzZSBtdXPDrSBza2zDoWRhdCB6IG7DoXp2dSB0xZnDrWR5IGEgcG9sZSBkb3N0dXBuw71jaCBwb2zDrSBwcm8gcMWZw61zbHXFoW5vdSB0xZnDrWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzw60gcmVzcGVrdG92YXQgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbnVqZSB2w71jaG96w60gaGxvdWJrdSB2enRhaMWvLCBrdGVyw6kgc2UgbWFqw60gem9icmF6aXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsO9IGF0cmlidXQgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgcHJvIG9icmF6b3ZrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsO9IGF0cmlidXQgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgcHJvIG9icmF6b3ZrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4gUMWZw61rbGFkOiAiS2V5IiBtdXPDrSBtw610IG7DoXpldiBkeW5hbWlja8OpaG8gcG9sZSB2IHRvbXRvIHDFmcOtcGFkxJsgIlgiLCAiQ29udGVudCIgbXVzw60gbcOtdCBob2Rub3R1IGR5bmFtaWNrw6lobyBwb2xlIHYgesOhdmlzbG9zdGkgbmEgdHlwdSBkeW5hbWlja8OpaG8gcG9sZSwgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYSBuZWJvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXTDvWRlbjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UMWZZWQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gcG9kb2JqZWt0IHTFmcOtZHkgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHNsb3VwY2UgQ0kgdiBwxZllaGxlZHUgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6F2aXNsb3N0aSBuYSB0xZnDrWTEmyBDSS4gS2HFvmTDoSBwb2xvxb5rYSBzZSBtdXPDrSBza2zDoWRhdCB6IG7DoXp2dSB0xZnDrWR5IGEgcG9sZSBkb3N0dXBuw71jaCBwb2zDrSBwcm8gcMWZw61zbHXFoW5vdSB0xZnDrWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzw60gcmVzcGVrdG92YXQgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w73FoWt1IGtvbXBvbmVudHkgdGV4dG92w6lobyBlZGl0b3J1IHBybyB0dXRvIG9icmF6b3ZrdS4gWmFkZWp0ZSDEjcOtc2xvIChwaXhlbHkpIG5lYm8gcHJvY2VudHXDoWxuw60gaG9kbm90dSAocmVsYXRpdm7DrSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxI1ldCDFmcOhZGvFryBlZGl0b3J1IGRlZmluaWNlIENJIHYgcm96aHJhbsOtIHNwcsOhdmNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8WZYWTDrSBpbmNpZGVudG7DrWNoIHN0YXbFryBvZCB2eXNva8OpaG8gKG5hcMWZLiBjcmljaXRhbCkgcG8gbsOtemvDvSAobmFwxZkuIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmludWplIHDFmcOtc2x1xaFuw6kgc3RhdnkgbmFzYXplbsOtLCB2ZSBrdGVyw71jaCBtb2hvdSBwcm9wb2plbsOpIHRpcHkgb3ZsaXZuaXQgc3RhdiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBvbWV6ZW7DrSB2eWhsZWTDoXbDoW7DrSBwcm8gb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnlobGVkw6F2w6Fuw60gcHJvIG9icmF6b3ZrdSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIG9tZXplbsOtIHZ5aGxlZMOhdsOhbsOtIHBybyBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWhsZWTDoXbDoW7DrSBwcm8gb2JyYXpvdmt1IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmludWplIHpvYnJhemVuw6kgc2xvdXBjZSBDSSB2IGtvbXBsZXhuw61tIHpvYnJhemVuw60gdGFidWxreSBvZGthesWvIHBybyB2xaFlY2hueSB0xZnDrWR5IENJLiBQb2t1ZCBuZW7DrSBrIGRpc3BvemljaSDFvsOhZG7DoSBwb2xvxb5rYSwgem9icmF6w60gc2UgdsO9Y2hvesOtIHNsb3VwY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdGaWx0ciBwcm8gdMWZw61keSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDqSBwb2xvxb5reSBqc291IGsgZGlzcG96aWNpIHBybyAiQWN0aW9uIiB2ZSB0xZlldMOtIMO6cm92bmkgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDqSBwb2xvxb5reSBqc291IGsgZGlzcG96aWNpIHYgcHJ2bsOtIMO6cm92bmkgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw6kgcG9sb8W+a3kganNvdSBrIGRpc3BvemljaSB2ZSBkcnVow6kgw7pyb3ZuaSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDvSB0eXAgcHJvcG9qZW7DrSAocG9qbWVub3ZhbsO9IHogcG9obGVkdSB0aXB1KSBtxa/FvmUgb3ZsaXZuaXQgc3RhdiBwcm9wb2plbsOpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDvSB0eXAgdGlwdSBtxa/FvmUgb3ZsaXZuaXQgc3RhdiBwcm9wb2plbsOpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FrdHVhbGl6YWNlIGRlZmluaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdPZHN0cmFuxJtuw60gcG9sb8W+a3kga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdCYXJ2YSBzdGF2dSBuYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2FjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIHVkw6Fsb3N0w60gZHluYW1pY2vDvWNoIHBvbMOtLCBrdGVyw70gb3puYcSNw60gZGVmaW5pY2UgcG9sb8W+ZWsga29uZmlndXJhY2UgamFrbyBuZXN5bmNocm9uaXpvdmFuw6ksIHBva3VkIHNlIHptxJtuw60gZHluYW1pY2vDoSBwb2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY2vDoSBwb2xlIHpvYnJhemVuw6EgbmEgb2JyYXpvdmNlIGRvZGF0ZcSNbsO9Y2ggcG9sw60gSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6EgcG9sZSB6b2JyYXplbsOhIG5hIG9icmF6b3ZjZSBwxZllaGxlZHUga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OhIHBvbGUgem9icmF6ZW7DoSBuYSBvYnJhem92Y2UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdQb3ZvbHVqZSBmdW5rY2kgaHJvbWFkbsOpIGFrY2Uga29uZmlndXJhxI1uw60gcG9sb8W+a3kgcHJvIGZyb250ZW5kIGFnZW50YSwgYWJ5IGJ5bG8gbW/Fvm7DqSBwcmFjb3ZhdCBzIHbDrWNlIG5lxb4gamVkbm91IGtvbmZpZ3VyYcSNbsOtIHBvbG/FvmtvdSBuYWplZG5vdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1Bvdm9sw60gZnVua2NpIGhyb21hZG7DqSBha2NlIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHBvdXplIHBybyB1dmVkZW7DqSBza3VwaW55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIHBybyBuYXN0YXZlbsOtIGNvbmZpZ2l0ZW0tc3RhdHVzIG5hIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1BvbGUgaW5kZXh1IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLCBrdGVyw6Egc2UgcG91xb7DrXZhasOtIHBybyBmdWxsdGV4dG92w6kgdnlobGVkw6F2w6Fuw60uIFBvbGUganNvdSByb3ZuxJvFviB1bG/FvmVuYSwgYWxlIHBybyBjZWxrb3ZvdSBmdW5rxI1ub3N0IG5lanNvdSBwb3Zpbm7DoS4gWmFocm51dMOtIHDFmcOtbG9oIGx6ZSB6YWvDoXphdCBuYXN0YXZlbsOtbSBwb2xvxb5reSBuYSBob2Rub3R1IDAgbmVibyBqZWrDrW0gb2RzdHJhbsSbbsOtbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGUgdWxvxb5lbsOhIHYgaW5kZXh1IHBvbG/FvmVrIGtvbmZpZ3VyYWNlLCBrdGVyw6Egc2Uga3JvbcSbIGZ1bGx0ZXh0b3bDqWhvIHZ5aGxlZMOhdsOhbsOtIHBvdcW+w612YWrDrSBpIGsgamluw71tIMO6xI1lbMWvbS4gUHJvIMO6cGxub3UgZnVua8SNbm9zdCBqc291IHbFoWVjaG5hIHBvbGUgcG92aW5uw6EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjZSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcm8gdnJzdHZ1IHZ5dm9sw6F2YcSNZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjZSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcm8gdnJzdHZ1IHZ5dm9sw6F2YcSNZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2UgbW9kdWx1IEdlbmVyaWNJbnRlcmZhY2UgcHJvIHZyc3R2dSB2eXZvbMOhdmHEjWUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQxZllaGxlZCBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHJudWplIHN0YXZ5IG5hc2F6ZW7DrSBkbyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWhybnVqZSBzdGF2eSBpbmNpZGVudMWvIGRvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltw6FsbsOtIHBvxI1ldCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLCBrdGVyw6kgc2Ugem9icmF6w60gdmUgdsO9c2xlZGt1IHTDqXRvIG9wZXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgcHJvIGtvbnRyb2x1IHNrdXBpbnkgb2Rwb3bEm2Ruw6kgemEgdMWZw61kdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCBwcm8ga29udHJvbHUgc2t1cGlueSBvZHBvdsSbZG7DqSB6YSBwb2xvxb5rdSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCBwcm8gZ2VuZXJvdsOhbsOtIHN0YXRpc3RpayBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ07DoXpldiBtb2R1bHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ8SMw61zZWxuw70gbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/EjWV0IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWssIGt0ZXLDqSBzZSBtYWrDrSB6b2JyYXppdCBuYSBrYcW+ZMOpIHN0csOhbmNlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvxI1ldCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLCBrdGVyw6kgc2UgbWFqw60gem9icmF6aXQgbmEga2HFvmTDqSBzdHLDoW5jZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0eSwga3RlcsOpIHNlIG1hasOtIHZ5aGxlZGF0LCBrb2xpayB6w6F6bmFtxa8gYSBrdGVyw6kgYXRyaWJ1dHkgc2UgbWFqw60gem9icmF6aXQuIEF0cmlidXR5IENvbmZpZ0l0ZW0gbXVzw60gYsO9dCBleHBsaWNpdG7EmyB1bG/FvmVueSBwcm9zdMWZZWRuaWN0dsOtbSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQxZllaGxlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8ga2F0ZWdvcmllIHTFmcOtZCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHBybyBmaWx0cnkgc2xvdXBjxa8gcMWZZWhsZWR1IG1hbMO9Y2gga29uZmlndXJhxI1uw61jaCBwb2xvxb5lay4gVXBvem9ybsSbbsOtOiBOYXN0YXZlbsOtIGhvZG5vdHkgIkFrdGl2bsOtIiBuYSAwIHBvdXplIHphYnLDoW7DrSBhZ2VudMWvbSB1cHJhdm92YXQgbmFzdGF2ZW7DrSB0w6l0byBza3VwaW55IHYgamVqaWNoIG9zb2Juw61jaCBwcmVmZXJlbmPDrWNoLCBhbGUgc3Byw6F2Y8WvbSBzdMOhbGUgdW1vxb5uw60gdXByYXZvdmF0IG5hc3RhdmVuw60gam3DqW5lbSBqaW7DqWhvIHXFvml2YXRlbGUuIFBvbW9jw60gXCdQcmVmZXJlbmNlR3JvdXBcJyBtxa/FvmV0ZSDFmcOtZGl0LCB2ZSBrdGVyw6kgb2JsYXN0aSBzZSBtYWrDrSB0YXRvIG5hc3RhdmVuw60gdiB1xb5pdmF0ZWxza8OpbSByb3pocmFuw60gem9icmF6b3ZhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIHN0YXZ5IG5hc2F6ZW7DrSBzZSB2eWJhcnbDrSB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8gc3RhdnkgbmFzYXplbsOtIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBza3VwaW55IHBybyBwxZnDrWtsYWQgb3Byw6F2bsSbbsOtIG9iZWNuw71jaCBhdHJpYnV0xa8ga2F0YWxvZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgbW9kdWx1IG7DoXp2xa8gcHJvIHTFmcOtZHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHVsdSDEjcOtc2VsIHBybyB0xZnDrWR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHN0csOhbmVrIChuYSBrdGVyw71jaCBzZSB6b2JyYXp1asOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHVsdSDFmWV0xJt6Y2UgdmVyemUgcHJvIHTFmcOtZHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBtb2R1bHUgxaFhYmxvbnkgxZlldMSbemNlIHZlcnplIHNhZHkgbsOhc3Ryb2rFryBwcm8gdMWZw61keSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8gc3BvdcWhdMSbxI0gdmVyemUgcHJvIHTFmcOtZHkgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdTa3VwaW5hIG9wcsOhdm7Em27DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBha2NlIHDFmWlwb2plbsOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBybyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBybyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSB6b2JyYXplbsOtIHN0cm9tdSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSB6dsSbdMWhZW7DrSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZGtheiBuYSAlcyAodHlwZT0lcykgb2RzdHJhbsSbbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBvbG/Fvmt5IGhyb21hZG7DqSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwcm8gw7pwcmF2dSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwb2xvxb5reSBrb25maWd1cmFjZSBoaXN0b3JpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBvYnJhem92a3kgcyBwb2xvxb5rb3Uga29uZmlndXJhY2UgdGlza3UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgb2RzdHJhbsSbbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Z5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGlja8OpIG5hc3RhdmVuw60gc3RhdnUgaW5jaWRlbnR1IENJLCBrZHnFviBqZSB0aWtldCBwcm9wb2plbiBzIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3RhdsOtIHN0YXYgbmFzYXplbsOtIG5hIG9icmF6b3ZjZSBocm9tYWRuw6kgcG9sb8W+a3kga29uZmlndXJhY2Ugcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFzdGF2w60gc3RhdiB1ZMOhbG9zdGkgbmEgb2JyYXpvdmNlIGhyb21hZG7DqSBwb2xvxb5reSBrb25maWd1cmFjZSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UsIGt0ZXLDvSB1bW/FvsWIdWplIHByb3Bvaml0IGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt1IHMgamluw71tIG9iamVrdGVtIHYgem9icmF6ZW7DrSB6dsSbdMWhZW7DrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gcMWZw61zdHVwIGsgaGlzdG9yaWkga29uZmlndXJhxI1uw60gcG9sb8W+a3kgdiBwxZllaGxlZHUga29uZmlndXJhxI1uw61jaCBwb2xvxb5layByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlIHBybyBwxZnDrXN0dXAgayBoaXN0b3JpaSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIG9kc3RyYW7Em27DrSBwb2xvxb5reSBrb25maWd1cmFjZSB2IGplasOtbSB6dsSbdMWhZW7DqW0gem9icmF6ZW7DrSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gem9icmF6ZW7DrSBvZGthesWvIG5hIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHZlIHN0cm9tb3bDqW0gem9icmF6ZW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlIHBybyBkdXBsaWtvdsOhbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gZHVwbGlrb3bDoW7DrSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gw7pwcmF2dSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gbsOhdnJhdCB6cMSbdCBkbyB6b2JyYXplbsOtIHp2xJt0xaFlbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gdGlzayBrb25maWd1cmHEjW7DrSBwb2xvxb5reSB2IGplasOtbSB6dsSbdMWhZW7DqW0gem9icmF6ZW7DrSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIHDFmWlibMOtxb5lbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gaGlzdG9yaWkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layAodiBvcGHEjW7DqW0gcG/FmWFkw60pIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVsO9Y2hvesOtIGthdGVnb3JpZSwga3RlcsOhIHNlIHpvYnJhesOtLCBwb2t1ZCBuZW7DrSB2eWJyw6FuYSDFvsOhZG7DoS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa8OhdG9yIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5LCBuYXDFmS4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFbDvWNob3rDrSBqZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpY2t5IHNwb3XFoXTDrSBpbnZva8OhdG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyemUgxZhldMSbemNvdsO9IHbDvXJheic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNb2R1bCBWZXJzaW9uIFN0cmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdTcG91xaF0xJvEjSB2ZXJ6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnWmRhIHNlIGx6ZSB2eWhub3V0IHByb3ZlZGVuw60gQ29uZmlnSXRlbUFDTCBrb250cm9sb3UgesOhdmlzbG9zdMOtIHBvbMOtIHVsb8W+ZW7DvWNoIHYgbWV6aXBhbcSbdGkuIFRvIG3Fr8W+ZSB6bGVwxaFpdCDEjWFzeSBuYcSNw610w6Fuw60gZm9ybXVsw6HFmcWvLCBhbGUgbXVzw60gdG8gYsO9dCB6YWvDoXrDoW5vLCBwb2t1ZCBzZSBtYWrDrSBwb3XFvsOtdmF0IEFDTE1vZHVseSBwcm8gdHlweSBJVFNNQ29uZmlnSXRlbS0gYSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS3RlcsOpIG9iZWNuw6kgaW5mb3JtYWNlIGpzb3UgdXZlZGVueSB2IHrDoWhsYXbDrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICd0xZnDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LDoWxuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2bsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwxZllZHByb2R1a8SNbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXZuw60nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcGFsY2UgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwYWxjxa8gKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwYWxjZSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwYWxjZSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5cGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwYWxjZSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwYWxjxa8gKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBwYWxjZSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwYWxjZSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcGFsY8WvICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwYWxjZSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHBhbGNlICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBhbGNlICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwYWxjZSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcGFsY2UgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBhbGNlICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwYWxjxa8gKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwYWxjZSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBhbGNlICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcGFsY2UgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHBhbGNlICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBhbGNlICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHBhbGNlICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcGFsY2UgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwYWxjxa8gKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwYWxjxa8gKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IHBhbGNlICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBwYWxjZSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwYWxjZSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwYWxjxa8gKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgcGFsY2UgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ8OaxI1ldG5pY3R2w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdQxZlpZMSbbG92w6Fuw60gYWRyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1NwcsOhdmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ292w70gdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cCBzcG90xZllYmnEjWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhY2l0YSBiYXRlcmllIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWRvdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1JvemhyYW7DrSBzYsSbcm5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ1TFmcOtZGEgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0YSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYWNpdGEgbmEgZ3JhZmlja291IGthcnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnxIzDrXNsbyBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ8SMdGXEjWthIGthcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1R5cCBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50c2vDqSBjZXJ0aWZpa8OhdHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50c2vDvSBzb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUga2xpZW50xa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgcHJvIHBvZGVwaXNvdsOhbsOtIGvDs2R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbsOtIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdTbWxvdXZhIG8gcG9yYWRlbnN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IG5hIGRpc3RyaWJ1dG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1NwcsOhdmEga29udGVqbmVyxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdTbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXAgc21sb3V2eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0RvYmEgdHJ2w6Fuw60gc21sb3V2eSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdEb2JhIHRydsOhbsOtIHNtbG91dnkgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmV6ZHLDoXRvdsO9IHRlbGVmb24gKHRlbGVmb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnTsOha2xhZG92w6EgamVkbm90a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdQb8SNZXQgbGljZW5jw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIHZ5dHZvxZllbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdWbGFzdG7DrSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgdnlocmF6ZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2ZXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXR1bSB2eXN0YXZlbsOtIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIG9iamVkbsOhdmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSB6w6FydWt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIHZ5ZMOhbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdTdG9sbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgcHJvIHBvZGVwaXNvdsOhbsOtIGRva3VtZW50xa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbG92w6kgY2VydGlmaWvDoXR5IChjZXJ0aWZpa8OhdHkgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdQcmFjb3Zuw60gc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0tvbmNvdsOhIElQIGFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1Vrb27EjWVuw60gcG9kcG9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdHVtIHZ5cHLFoWVuw60gcGxhdG5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm7DrSBwZXZuw70gZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0Jyw6FuYSBmaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU2tsYWRvdsOhbsOtIGVuZXJnaWUgdiBzZXRydmHEjW7DrWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybcOhdG92w70gZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaHDrXpvdsOhIHNtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdPYmVjbsOpIGluZm9ybWFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpY2vDqSBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlja8OhIGthcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBoYXJkd2FydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIbW90bm9zdCBoYXJkd2FydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnTsOhaGxhdm7DrSBzb3VwcmF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva29sIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1NwcsOhdmEgaWRlbnRpdCBhIHDFmcOtc3R1cHUgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudMOhcm7DrSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfEjMOtc2xvIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbMOhdmVzbmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAoZGlzcGxlaiB6IHRla3V0w71jaCBrcnlzdGFsxa8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoc3bEm3RlbG7DoSBkaW9kYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnUGV2bsOhIHRlbGVmb25uw60gbGlua2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTW9iaWxuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdaZW3Em3Bpc27DoSDFocOtxZlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ1Zyc3R2YSAxOiBGeXppY2vDoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnVnJzdHZhIDI6IFZyc3R2YSBkYXRvdsOpaG8gc3BvamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ1Zyc3R2YSAzOiBTw63FpW92w6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ1Zyc3R2YSAzOiBTw63FpW92w6EgdnJzdHZhIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnVnJzdHZhIDQ6IFRyYW5zcG9ydG7DrSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ1Zyc3R2YSA1OiBSZWxhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnVnJzdHZhIDY6IFByZXplbnRhxI1uw60gdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnVnJzdHZhIDc6IEFwbGlrYcSNbsOtIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdOw6FqZW1uw60gc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VuxI1uw60gc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW7EjW7DrSBrbMOtxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0RvYmEgcGxhdG5vc3RpIGxpY2VuY2Ugb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdEb2JhIHBsYXRub3N0aSBsaWNlbmNlIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtLcW+ZWxlem8tZm9zZsOhdG92w6EgYmF0ZXJpZSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGhpdW0taW9udG92w6EgKExpLWlvbikgYmF0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ1NtbG91dmEgbyBwxa9qxI1jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTmFjaMOhesOtIHNlIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnWmVtxJtwaXNuw6EgZMOpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVsO9cm9iY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltw6FsbsOtIHphdMOtxb5pdGVsbm9zdCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnUGFtxJvFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cCBwYW3Em3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ8SMw61zbG8gbW9iaWxuw61obyB0ZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbG7DrS92bG/FvmVuw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ1BvcGlzIG1vZGVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSb3psacWhZW7DrSBtb25pdG9ydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZWxpa29zdCBtb25pdG9ydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ015xaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1PDrcWlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjZSBvIHPDrXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2UgbyBzw610aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnU8OtxaVvdsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2wta2FkbWlvdsOhIChOaUNkKSBiYXRlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlrbC1tZXRhbGh5ZHJpZG92w6EgKE5pTUgpIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnRG9ob2RhIG8gbWzEjWVubGl2b3N0aSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUG/EjWV0IHByb2Nlc29yxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUG/EjWV0IG1vZHVsxa8gUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ1BvxI1ldCBncmFmaWNrw71jaCBrYXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChvcmdhbmlja8OhIGRpb2RhIGVtaXR1asOtY8OtIHN2xJt0bG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1Byb3Zvem7DrSBuw6FrbGFkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdPYmplZG5hY8OtIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdKaW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVsO9c3R1cHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcGFydG5lcnN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm7DrSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXAgdGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXppY2vDoSBqw6FkcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdEb2TDoXZrYSBlbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnWmFrb3VwZW5vIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0hsb3Via2Egc3RvamFudSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1N0b2phbm92w6kgamVkbm90a3kgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdNw61zdG5vc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1Byb2Rlam7DrSBzbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRuw60gdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdVemF2xZllbsOhIG9sb3bEm27DoSBiYXRlcmllIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU8OpcmlvdsOpIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyb3bDvSBzb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NtbG91dmEgbyBwb3NreXRvdsOhbsOtIHNsdcW+ZWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aXNuw60gxaF0w610ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwIHrDoXN1dmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnRS1tYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnUmVwcm9kdWt0b3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdQb8SNw6F0ZcSNbsOtIElQIGFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnw5psb8W+acWhdMSbJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnw5psb8W+bsO9IG9kZMOtbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0RjZcWZaW7DoSBzcG9sZcSNbm9zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU291aHJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGVua8O9IGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVmzDoWtuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdDZWxrb3bDoSBwYW3Em8WlIFJBTSBncmFmaWNrw6kga2FydHkgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0NlbGtvdsOhIHBhbcSbxaUgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0RvdHlrb3bDvSBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVsSbxb4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1JvemJvxI1vdmHEjSBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdOw6FobGF2bsOtIHNvdXByYXZhIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Vib3bDoSBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/da_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmVsbGUgZHJpZnRzZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSW5kc3RpbGxpbmdlciBmb3IgaW5kZ8OlZW5kZSBmb3Jlc3DDuHJnc2Vsc2RhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdJbmRzdGlsbGluZ2VyIGZvciB1ZGfDpWVuZGUgc3ZhcmRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBzdHlyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnU2tpZnQga2xhc3NlZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnw4ZuZHJpbmcgYWYgcm9sbGVkZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0LWtsYXNzZWJ1bmR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdIZXIga2FuIGR1IGltcG9ydGVyZSBSZWFkeTJJbXBvcnQta2xhc3NlYnVuZHRlciwgZGVyIHZpc2VyIHZvcmVzIG1lc3QgYWxtaW5kZWxpZ2Uga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEJlbcOmcmssIGF0IGRlciBrYW4gdsOmcmUgYmVob3YgZm9yIHlkZXJsaWdlcmUga29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnT3BkYXRlciBla3Npc3RlcmVuZGUgZW5oZWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGVyIFJlYWR5MkFkb3B0LWtsYXNzZWJ1bmR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWctZWxlbWVudGtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlnLWVsZW1lbnRldHMgcm9sbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ29uZmlnSXRlbUlEICVzIGZpbmRlcyBpa2tlIGkgZGF0YWJhc2VuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6ZsZyBlbiBrbGFzc2UgZnJhIGxpc3RlbiBmb3IgYXQgb3ByZXR0ZSBldCBueXQgQ29uZmlnIEl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEZXBsb3ltZW50IHRpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW5jaWRlbnQgdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0aWwgZW4gYW5kZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ1VneWxkaWd0IG51bW1lciBww6Uga29uZmlndXJhdGlvbnNlbGVtZW50ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bW1lcmV0IHDDpSBldCBhbmRldCBrb25maWd1cmF0aW9uc2VsZW1lbnQsIGRlciBza2FsIGxpbmtlcyB0aWwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQ/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ05hdm5ldCBww6UgZGVubmUgQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hdm5ldCBlciBhbGxlcmVkZSBpIGJydWcgYWYgQ29uZmlnSXRlbXMgbWVkIGbDuGxnZW5kZSBudW1tZXIoZSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbnNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb25zbnVtbWVyIGZvciBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uc251bW1lcmV0IGVyIGFsbGVyZWRlIGkgYnJ1ZyBhZiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcihlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RlcGxveW1lbnQgdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudCB0aWxzdGFuZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWsgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ09wcmV0dGVsc2VzdGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1pvb20tdmlzbmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdLb25maWd1cmVyIGVsZW1lbnRlciBwci4gc2lkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gZGF0YSBvbSBrb25maWd1cmF0aW9uc2VsZW1lbnRldCBmdW5kZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOmbGcgZGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnS8O4ciBzw7hnbmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHRpbCBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRHliZGVuaXZlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGluZC91ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYWtzLiBsaW5rbml2ZWF1IG7DpWV0IGZvciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdOdXbDpnJlbmRlIGRlcGxveW1lbnQgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdOdXbDpnJlbmRlIEluY2lkZW50IHRpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1NpZHN0IMOmbmRyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnU2lkc3Qgw6ZuZHJldCBhZic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0RpbmUgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbS1zw7hnbmluZyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDuGxnZW5kZSBrbGFzc2VyIHZpbCBibGl2ZSBpbXBvcnRlcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDuGxnZW5kZSByb2xsZXIgdmlsIGJsaXZlIGltcG9ydGVyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnQmVtw6ZyaywgYXQgZGVyIG9nc8OlIG9wcmV0dGVzIHRpbHN2YXJlbmRlIGR5bmFtaXNrZSBmZWx0ZXIgb2cgR2VuZXJhbENhdGFsb2cta2xhc3Nlciwgb2cgYXQgZGVyIGlra2Ugc2tlciBub2dlbiBhdXRvbWF0aXNrIGZqZXJuZWxzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWaWwgZHUgZm9ydHPDpnR0ZT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQnJ1ZyBmb3IgZWtzZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uZW4gZXIgaWtrZSBlbiBneWxkaWcgWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdEZXIgZXIgaWtrZSBhbmdpdmV0IG5vZ2V0IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdEdSBza2FsIGJydWdlIG1pbmRzdCDDqXQgdmFsZ3Qga29uZmlndXJhdGlvbnNlbGVtZW50ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0R1IGhhciBpa2tlIHNrcml2ZWFkZ2FuZyB0aWwgZGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50OiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnRGVyIGJsZXYgaWtrZSBkZWZpbmVyZXQgbm9nZW4gZGVmaW5pdGlvbiBmb3Iga2xhc3NlbiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZy1lbGVtZW50ZXQgIiVzIiBibGV2IGlra2UgZnVuZGV0IGkgZGF0YWJhc2VuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0RlZmluZXJlciBhbnRhbGxldCBhZiByw6Zra2VyIGZvciBDSS1kZWZpbml0aW9uc2VkaXRvcmVuIGkgYWRtaW5pc3RyYXRpb25zZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0luZ2VuIHZlcnNpb24gZnVuZGV0IGZvciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGFuZ2l2ZXQgbm9nZXQgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBlbGxlciBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnRGVyIGdpdmVzIGluZ2VuIGFkZ2FuZyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBoaXN0b3JpaywgZGEgZGVyIGlra2UgZXIgYW5naXZldCBub2dldCBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBoaXN0b3JpaywgaW5nZW4gYWRnYW5nc3JldHRpZ2hlZGVyIGdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnl0IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTnkgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW1wbGVtZW50ZXJpbmdzc3RhdHVzIG9wZGF0ZXJldCAobnk9JXMsIGdhbW1lbD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSMOmbmRlbHNlc3N0YXR1cyBvcGRhdGVyZXQgKG55PSVzLCBnYW1tZWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIHRpbCAlcyAodHlwZT0lcykgdGlsZsO4amV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIHRpbCAlcyAodHlwZT0lcykgc2xldHRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbS1kZWZpbml0aW9uIG9wZGF0ZXJldCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmF2biBvcGRhdGVyZXQgKG55dD0lcywgZ2FtbWVsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyBvcGRhdGVyZXQgZnJhICIlcyIgdGlsICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGFuZ2l2ZXQgbm9nZXQgQ29uZmlnSXRlbUlEIGVsbGVyIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBrb25maWd1cmF0aW9uc2VsZW1lbnQsIGluZ2VuIGFkZ2FuZ3NyZXR0aWdoZWRlciBnaXZldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgZmluZGVzIGlra2UgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICd1ZHNrcmV2ZXQgYWYgJXMgcMOlICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdVZ3lsZGlndCBrbGFzc2UtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgYW5naXZldCBub2dldCBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGdpdmV0IGFkZ2FuZ3NyZXR0aWdoZWRlciB0aWwgZGVubmUga2xhc3NlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW50ZXQgcmVzdWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O4Z2VyZXN1bHRhdGVyIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGlra2UgdmlzZSBlbGVtZW50LCBpbmdlbiBhZGdhbmdzcmV0dGlnaGVkZXIgdGlsIENvbmZpZ0l0ZW0gZXIgZ2l2ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gaWtrZSBmdW5kZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0luZ2VuIHZlcnNpb25lciBmdW5kZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmFyc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaMOmbmRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXBsb3ltZW50IHRpbHN0YW5kIGZvciBkZW5uZSBDb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0luY2lkZW50IHRpbHN0YW5kIGZvciBkZW5uZSBDb25maWcgSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0luZ2VuIHRpbGxhZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyZXQgZXIgdWd5bGRpZ3QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTw7hnZXBhcmFtZXRyZSB1Z3lsZGlnZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdWaXN0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGFmIHVkcnVsbmluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOdXbDpnJlbmRlIGjDpm5kZWxzZXN0aWxzdGFuZCBUeXBlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lbGxlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVncsOmbnNuaW5nZXIgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWw6ZsZyBlbiBlbGxlciBmbGVyZSBrbGFzc2VyIGZvciBhdCBiZWdyw6Zuc2UgdmFsZ2JhcmUga29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlZ3LDpm5zbmluZ2VyIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDpmxnIGVuIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIGF0IGJlZ3LDpm5zZSB2YWxnYmFyZSBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaXNrIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGlzayAodmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwZSBhZiBsaW5raGVudmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPbSBkZXR0ZSBsaW5rIGfDpmxkZXIgZm9yIENvbmZpZ0l0ZW0gZWxsZXIgZGVuIHN0YXRpc2tlIHZlcnNpb24gYWYgZGV0IHJlZmVyZXJlbmRlIG9iamVrdC4gQmVyZWduaW5nIGFmIGFrdHVlbCBow6ZuZGVsc2VzdGlsc3RhbmQgdWRmw7hyZXMga3VuIHDDpSBkeW5hbWlza2UgbGlua3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVsOmbGcgZGVuIGF0dHJpYnV0LCBzb20ga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgc2thbCBzw7hnZXMgZWZ0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2lzc3RydWt0dXJlbiBlciBpa2tlIGd5bGRpZy4gQW5naXYgdmVubGlnc3QgZW4gaGFzaCBtZWQgZGF0YSBpIFlBTUwtZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RldCBlciBuw7hkdmVuZGlndCBhdCBzdGFydGUgWUFNTC1zdHJlbmdlbiBtZWQgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnS3VubmUgaWtrZSByZW5zZSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdEZXIgYmxldiBpa2tlIGZ1bmRldCBub2dlbiByZWxldmFudGUgZHluYW1pc2tlIGZlbHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0t1bm5lIGlra2UgaW5kc8OmdHRlIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbmRzYXQgMCByw6Zra2VyIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltdW0gYW50YWwgYWYgZXQgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uc3N0cmVuZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdGZWpsIHZlZCBzeW5rcm9uaXNlcmluZyBhZiBkZWZpbml0aW9uZXJuZS4gVGplayB2ZW5saWdzdCBsb2dnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnRHUgaGFyIElUU01Db25maWdJdGVtLWRlZmluaXRpb25lciwgc29tIGlra2UgZXIgc3lua3JvbmlzZXJlZGUuIEltcGxlbWVudGVyIHZlbmxpZ3N0IGRpbmUgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2tlIGZlbHTDpm5kcmluZ2VyLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVWRsw7hiZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdWZWRsaWdlaG9sZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwZXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVyc2lvbmVyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnQW5tZWxkZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnT3ZlcnNpZ3Qgb2cgYmVrcsOmZnRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydCBhZiBrbGFzc2VyL3JvbGxlciBvZyBkZXJlcyByZWxhdGVyZWRlIGZlbHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0RlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBrbGFzc2VpbXBvcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNranVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gdmlzdCBww6UgYmlsbGVkZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhZGVyIHVkdmlkZWRlIHPDuGdlYmV0aW5nZWxzZXIgdmVkIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLiBNZWQgZGVubmUgZnVua3Rpb24ga2FuIGR1IGYuZWtzLiBzw7hnZSBlZnRlciBuYXZuZXQgcMOlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBtZWQgYmV0aW5nZWxzZXIgc29tICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhZGVyIHVkdmlkZWRlIHPDuGdlYmV0aW5nZWxzZXIgaSBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4gTWVkIGRlbm5lIGZ1bmt0aW9uIGthbiBkdSBmLmVrcy4gc8O4Z2UgaSBuYXZuZXQgcMOlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBtZWQgYmV0aW5nZWxzZXIgc29tICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1RpbGRlbHRlIENJXCdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSVwnZXIgdGlsZGVsdCBrdW5kZXZpcmtzb21oZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSVwnZXIgdGlsZGVsdCBrdW5kZWJydWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1pbmRzdGlsbGluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdUamVrIGt1biBmb3IgZXQgdW5pa3QgbmF2biBpbmRlbiBmb3IgZGVuIHNhbW1lIENvbmZpZ0l0ZW0ta2xhc3NlIChcJ2NsYXNzXCcpIGVsbGVyIGdsb2JhbHQgKFwnZ2xvYmFsXCcpLCBodmlsa2V0IGJldHlkZXIsIGF0IGFsbGUgZWtzaXN0ZXJlbmRlIENvbmZpZ0l0ZW1zIHRhZ2VzIGkgYmV0cmFndG5pbmcsIG7DpXIgZGVyIGxlZGVzIGVmdGVyIGR1YmxldHRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1bDpmxnIGV0IG1vZHVsIHRpbCBhdCBow6VuZGjDpnZlIGV0IG5hdm5lc2tlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWw6ZsZyBldCBtb2R1bCB0aWwgYXQgaMOlbmRow6Z2ZSBldCBudW1tZXJza2VtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVsOmbGcgZXQgbW9kdWwgdGlsIGF0IGjDpW5kaMOmdmUgZW4gdmVyc2lvbnNzdHJlbmdvcmRuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1bDpmxnIGRlIGF0dHJpYnV0dGVyLCBkZXIgc2thbCB1ZGzDuHNlIG9wcmV0dGVsc2VuIGFmIGVuIG55IHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1bDpmxnIGthdGVnb3JpZXIsIGRlciBza2FsIHRpbGRlbGVzIGRlbm5lIGtsYXNzZSBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2xvbm5lLWtvbmZpZ3VyYXRpb25zZWxlbWVudGZpbHRyZSB0aWwgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9ubmVyLCBkZXIga2FuIGZpbHRyZXJlcyBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4gQmVtw6ZyazogS3VuIENvbmZpZyBJdGVtLWF0dHJpYnV0dGVyIG9nIGR5bmFtaXNrZSBmZWx0ZXIgKER5bmFtaWNGaWVsZF9OYW1lWCkgZXIgdGlsbGFkdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1RpbGbDuGoga29uZmlnLWVsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnUmVkaWdlciBrb25maWd1cmF0aW9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0taMOmbmRlbHNlc21vZHVsLCBkZXIgbXVsaWdnw7hyIGxvZ25pbmcgdGlsIGhpc3RvcmlrIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudC1tb2R1bCwgZGVyIG9wZGF0ZXJlciBjb25maWcgaXRlbXMgdGlsIGRlcmVzIGFrdHVlbGxlIGRlZmluaXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXJlciBlbGVtZW50ZXRzIGhpc3RvcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdQcmludCBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnR6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0tdHLDpnZpc25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIGkgZsO4bGdlbmRlIGtsYXNzZXIgdmlsIGlra2UgYmxpdmUgZ2VtdCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIGF0IGFudmVuZGUgZGV0dGUgcMOlIGVrc2lzdGVyZW5kZSBDSVwnZXIgc2thbCBDSS1taWdyZXJpbmdlbiBrw7hyZXMgdmlhIGtvbnNvbGxlbiwgZWZ0ZXIgYXQgZGVubmUgaW5kc3RpbGxpbmcgZXIgw6ZuZHJldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWVkIGbDuGxnZW5kZSBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGUgdmlsIGlra2UgYmxpdmUgZ2VtdCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIGF0IGFudmVuZGUgZGV0dGUgcMOlIGVrc2lzdGVyZW5kZSBDSVwnZXIgc2thbCBDSS1taWdyZXJpbmdlbiBrw7hyZXMgdmlhIGtvbnNvbGxlbiwgZWZ0ZXIgYXQgZGVubmUgaW5kc3RpbGxpbmcgZXIgw6ZuZHJldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnR3LDpm5zZSBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmF0aW9uIEVsZW1lbnRncsOmbnNlIHByLiBzaWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhc2UgZm9yIGtvbmZpZ3VyYXRpb25zc3R5cmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBidWxrLW1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmF0aW9uc2VsZW1lbnQgc8O4ZyBiYWNrZW5kLXJvdXRlciBmb3IgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnT3ByZXQgb2cgYWRtaW5pc3RyZXIgZGVmaW5pdGlvbmVybmUgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnT3ByZXR0ZXIgYmlsbGV0dGVyIHRpbCBDb25maWdJdGVtcyBww6UgYmVzdGVtdGUgdGlkc3B1bmt0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0t1bmRlciBrYW4gc2UgaGlzdG9yaXNrZSBDSS12ZXJzaW9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0t1bmRlcm5lIGhhciBtdWxpZ2hlZCBmb3IgbWFudWVsdCBhdCBza2lmdGUgbWVsbGVtIGhpc3Rvcmlza2UgQ0ktdmVyc2lvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0YSwgZGVyIHNrYWwgYnJ1Z2VzIHDDpSBhdHRyaWJ1dHRlbiBmb3Igc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLiBFa3NlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEsIGRlciBza2FsIGJydWdlcyBww6UgYXR0cmlidXR0ZW4gZm9yIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4gRWtzZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmVyIGhhbmRsaW5nZXIsIGh2b3IgZW4gaW5kc3RpbGxpbmdza25hcCBlciB0aWxnw6ZuZ2VsaWcgaSBkZSBsaW5rZWRlIG9iamVrdGVycyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gQmVtw6ZyaywgYXQgZGlzc2UgaGFuZGxpbmdlciBza2FsIGhhdmUgcmVnaXN0cmVyZXQgZsO4bGdlbmRlIEpTLSBvZyBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIG9nIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZXIgZXQgVGVtcGxhdGU6OlRvb2xraXQtc2tlbWEgdGlsIHZlcnNpb25zc3RyZW5nZS4gQnJ1Z2VzIGt1biwgaHZpcyBWZXJzaW9uIFN0cmluZyBNb2R1bGUgZXIgc2F0IHRpbCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmVyIGV0IHPDpnQgYmV0aW5nZWxzZXIsIHVuZGVyIGh2aWxrZSBlbiBrdW5kZSBoYXIgbG92IHRpbCBhdCBzZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQuIEJldGluZ2Vsc2VybmUga2FuIGV2ZW50dWVsdCBiZWdyw6Zuc2VzIHRpbCBiZXN0ZW10ZSBrdW5kZWdydXBwZXIuIE5hdm4gZXIgZGVuIGVuZXN0ZSBvYmxpZ2F0b3Jpc2tlIGF0dHJpYnV0LiBIdmlzIGRlciBpa2tlIGVyIGFuZ2l2ZXQgYW5kcmUgbXVsaWdoZWRlciwgdmlsIGFsbGUga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdsOmcmUgc3lubGlnZSB1bmRlciBkZW4gcMOlZ8OmbGRlbmRlIGthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBzbGV0dGUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBoZW50ZSBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHZlZCBoasOmbHAgYWYgZGVuIGdlbmVyaXNrZSBncsOmbnNlZmxhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IHPDuGdlIGkgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBpbmRzdGlsbGUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZXQgb3ZlcnNpZ3RzbW9kdWwgdGlsIGF0IHZpc2UgZGVuIGxpbGxlIHZpc25pbmcgYWYgZW4gbGlzdGUgb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBvbSBsaW5rdHlwZWV0aWtldHRlcm5lIHNrYWwgdmlzZXMgaSBub2RlZm9yYmluZGVsc2VybmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgcmVndWzDpnJlIHVkdHJ5ayBpbmRpdmlkdWVsdCBmb3IgaHZlciBDb25maWdJdGVtLWtsYXNzZSBmb3IgYXQga29udHJvbGxlcmUgQ29uZmlnSXRlbS1uYXZuZXQgb2cgZm9yIGF0IHZpc2UgdGlsc3ZhcmVuZGUgZmVqbG1lZGRlbGVsc2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSB0aWxnw6ZuZ2VsaWdlIGtvbG9ubmVyIG1lZCBDSVwnZXIgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgYWZow6ZuZ2lndCBhZiBDSS1rbGFzc2VuLiBIdmVyIHBvc3Qgc2thbCBiZXN0w6UgYWYgZXQga2xhc3NlbmF2biBvZyBldCBhcnJheSBhZiB0aWxnw6ZuZ2VsaWdlIGZlbHRlciBmb3IgZGVuIHRpbHN2YXJlbmRlIGtsYXNzZS4gRHluYW1pc2tlIGZlbHRpbmRnYW5nZSBza2FsIG92ZXJob2xkZSBza2VtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRrb25maWd1cmF0aW9uc2VsZW1lbnRhdHRyaWJ1dHRlbiBmb3Igc29ydGVyaW5nIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGtvbmZpZ3VyYXRpb25zZWxlbWVudGF0dHJpYnV0dGVuIGZvciBzb3J0ZXJpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGtvbmZpZ3VyYXRpb25zZWxlbWVudGF0dHJpYnV0dGVuIGZvciBzb3J0ZXJpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXQgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGRlbm5lIGhhbmRsaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcsOma2tlZsO4bGdlbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLiBPcDogw6ZsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcsOma2tlZsO4bGdlbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLiBPcDogw6ZsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIGtvbG9ubmVyLCBkZXIgc29tIHN0YW5kYXJkIHZpc2VzIGZvciBDSVwnZXIgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGFmaMOmbmdpZ3QgYWYgQ0kta2xhc3Nlbi4gSHZlciBwb3N0IHNrYWwgYmVzdMOlIGFmIGV0IGtsYXNzZW5hdm4gb2cgZXQgYXJyYXkgYWYgdGlsZ8OmbmdlbGlnZSBmZWx0ZXIgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2UuIER5bmFtaXNrZSBmZWx0aW5kZ2FuZ2Ugc2thbCBvdmVyaG9sZGUgc2tlbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmVyZXIgZGVuIHN0YW5kYXJkcmVsYXRpb25zZHliZGUsIGRlciBza2FsIHZpc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGVuIHZpc3RlIHN0YW5kYXJkYXR0cmlidXQgZm9yIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHDDpSBza8Omcm1lbiB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGVuIHN0YW5kYXJkIHZpc3RlIHPDuGdlYXR0cmlidXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHDDpSBza8Omcm1lbiB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiS2V5IiBza2FsIGhhdmUgbmF2bmV0IHDDpSBkZXQgZHluYW1pc2tlIGZlbHQsIGkgZGV0dGUgdGlsZsOmbGRlIFwnWFwnLCAiQ29udGVudCIgc2thbCBoYXZlIHbDpnJkaWVuIGFmIGRldCBkeW5hbWlza2UgZmVsdCBhZmjDpm5naWd0IGFmIGRlbiBkeW5hbWlza2UgZmVsdHR5cGUsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgb2cgZWxsZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkdW5kZXJvYmpla3RldCBpIGtsYXNzZW4gXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHRpbGfDpm5nZWxpZ2Uga29sb25uZXIgbWVkIENJXCdlciBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBhZmjDpm5naWd0IGFmIENJLWtsYXNzZW4uIEh2ZXIgcG9zdCBza2FsIGJlc3TDpSBhZiBldCBrbGFzc2VuYXZuIG9nIGV0IGFycmF5IGFmIHRpbGfDpm5nZWxpZ2UgZmVsdGVyIGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3NlLiBEeW5hbWlza2UgZmVsdGluZGdhbmdlIHNrYWwgb3ZlcmhvbGRlIHNrZW1hZXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGjDuGpkZW4gZm9yIFJpY2ggVGV4dCBFZGl0b3Ita29tcG9uZW50ZW4gZm9yIGRlbm5lIHNrw6ZybS4gSW5kdGFzdCB0YWwgKHBpeGVscykgZWxsZXIgcHJvY2VudHbDpnJkaSAocmVsYXRpdikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBhbnRhbGxldCBhZiByw6Zra2VyIGZvciBDSS1kZWZpbml0aW9uc2VkaXRvcmVuIGkgYWRtaW5pc3RyYXRpb25zZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHLDpmtrZWbDuGxnZW4gYWYgaMOmbmRlbHNlc3RpbHN0YW5kZSBmcmEgaMO4aiAoZi5la3MuIGNyaWNpdGFsKSB0aWwgbGF2IChmLmVrcy4gZnVua3Rpb25lbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHJlbGV2YW50ZSBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGUsIGh2b3IgdGlsa255dHRlZGUgdGlja2V0cyBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3IgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS1za8Omcm1lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSB2aXN0ZSBrb2xvbm5lciBhZiBDSVwnZXIgaSBkZW4ga29tcGxla3NlIHZpc25pbmcgYWYgbGlua3RhYmVsbGVuLCBhZmjDpm5naWd0IGFmIENJLWtsYXNzZW4uIEh2ZXIgcG9zdCBza2FsIGluZGxlZGVzIG1lZCBrbGFzc2VucyBuYXZuIG9nIGRvYmJlbHQga29sb24gKGYuZWtzLiBDb21wdXRlcjo6KS4gRGVyIGVyIG5vZ2xlIGbDpSBDSS1hdHRyaWJ1dHRlciwgc29tIGVyIGbDpmxsZXMgZm9yIGFsbGUgQ0lcJ2VyIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gRm9yIGF0IHZpc2UgaW5kaXZpZHVlbGxlIENJLWF0dHJpYnV0dGVyIHNvbSBkZWZpbmVyZXQgaSBDSS1kZWZpbml0aW9uZW4gc2thbCBmw7hsZ2VuZGUgc2tlbWEgYnJ1Z2VzIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBIdmlzIGRlciBpa2tlIGVyIG5vZ2VuIHBvc3QgZm9yIGVuIENJLWtsYXNzZSwgdmlzZXMgc3RhbmRhcmRrb2xvbm5lcm5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgaHZpbGtlIGVsZW1lbnRlciBkZXIgZXIgdGlsZ8OmbmdlbGlnZSBmb3IgXCdIYW5kbGluZ1wnIHDDpSB0cmVkamUgbml2ZWF1IGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZSBlbGVtZW50ZXIgZGVyIGVyIHRpbGfDpm5nZWxpZ2UgcMOlIGbDuHJzdGUgbml2ZWF1IGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2UgZWxlbWVudGVyIGRlciBlciB0aWxnw6ZuZ2VsaWdlIHDDpSBhbmRldCBuaXZlYXUgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZW4gdHlwZSBsaW5rIChuYXZuZ2l2ZXQgZnJhIHRpY2tldC1wZXJzcGVrdGl2ZXQpIGRlciBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBsaW5rZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2VuIHR5cGUgdGlja2V0IGRlciBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBsaW5rZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnT3BkYXRlcmluZyBhZiBkZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTbGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0ZhcnZlIHDDpSBpbXBsZW1lbnRlcmluZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnSMOmbmRlbHNlc21vZHVsIGZvciBkeW5hbWlza2UgZmVsdGVyLCBkZXIgbWFya2VyZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZGVmaW5pdGlvbmVyIHNvbSB1c3lua3JvbmlzZXJlZGUsIGh2aXMgZGUgaW5kZWhvbGRlciBkeW5hbWlza2UgZmVsdGVyLCBkZXIgw6ZuZHJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0ZXIsIGRlciB2aXNlcyBpIGRlbiBla3N0cmEgSVRTTS1mZWx0c2vDpnJtIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdGVyLCBkZXIgdmlzZXMgaSBvdmVyc2lndHNza8Omcm1lbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0ZXIsIGRlciB2aXNlcyBpIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZlcmVyIGZ1bmt0aW9uZW4gdGlsIG1hc3NlaGFuZGxpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIHPDpSBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZWpkZSBww6UgbWVyZSBlbmQgw6l0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBhZCBnYW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgcmVsZXZhbnRlIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSwgaHZvciB0aWxrbnl0dGVkZSB0aWNrZXRzIGthbiBww6V2aXJrZSBzdGF0dXMgZm9yIGV0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdIw6ZuZGVsc2VzbW9kdWwgdGlsIGF0IHPDpnR0ZSBjb25maWdpdGVtLXN0YXR1cyBww6UgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmVsdGVyIGkga29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGluZGVrcywgZGVyIGJydWdlcyB0aWwgZnVsZHRla3N0c8O4Z25pbmcuIEZlbHRlciBnZW1tZXMgb2dzw6UsIG1lbiBlciBpa2tlIG9ibGlnYXRvcmlza2UgZm9yIGRlbiBvdmVyb3JkbmVkZSBmdW5rdGlvbmFsaXRldC4gSW5rbHVkZXJpbmcgYWYgdmVkaMOmZnRlZGUgZmlsZXIga2FuIGRlYWt0aXZlcmVzIHZlZCBhdCBzw6Z0dGUgcG9zdGVuIHRpbCAwIGVsbGVyIHNsZXR0ZSBkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGZWx0ZXIgZ2VtdCBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBpbmRla3MsIHNvbSBicnVnZXMgdGlsIGFuZHJlIHRpbmcgZW5kIGZ1bGR0ZWtzdHPDuGduaW5nLiBGb3IgYXQgZsOlIGZ1bGQgZnVua3Rpb25hbGl0ZXQgZXIgYWxsZSBmZWx0ZXIgb2JsaWdhdG9yaXNrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYWYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCB0aWwgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmxhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhZiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIHRpbCBDb25maWdJdGVtRmV0Y2gtaW52b2thdG9ybGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhZiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIHRpbCBDb25maWdJdGVtRmV0Y2gtaW52b2thdG9ybGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJzaWd0IG92ZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdIw6ZuZGVsc2Vzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmVyIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSBpIHPDuGduaW5nZW4gZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lua2x1ZGVyZXIgaMOmbmRlbHNlc3RpbHN0YW5kZSBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudC1zw7hnbmluZ2VuIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYWtzaW1hbHQgYW50YWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGRlciBza2FsIHZpc2VzIGkgcmVzdWx0YXRldCBhZiBkZW5uZSBoYW5kbGluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB0aWwgYXQga29udHJvbGxlcmUgZGVuIGdydXBwZSwgZGVyIGVyIGFuc3ZhcmxpZyBmb3IgZW4ga2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHRpbCBhdCBrb250cm9sbGVyZSBkZW4gZ3J1cHBlLCBkZXIgZXIgYW5zdmFybGlnIGZvciBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgdGlsIGF0IGdlbmVyZXJlIHN0YXRpc3RpayBvdmVyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmF2biBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVybW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW50YWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGRlciBza2FsIHZpc2VzIHDDpSBodmVyIHNpZGUgYWYgZXQgc8O4Z2VyZXN1bHRhdCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW50YWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGRlciBza2FsIHZpc2VzIHDDpSBodmVyIHNpZGUgYWYgZXQgc8O4Z2VyZXN1bHRhdCBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0ZXIsIGRlciBza2FsIHPDuGdlcyBlZnRlciwgaHZvciBtYW5nZSBwb3N0ZXIgb2cgaHZpbGtlIGF0dHJpYnV0dGVyLCBkZXIgc2thbCB2aXNlcy4gQ29uZmlnSXRlbS1hdHRyaWJ1dHRlciBza2FsIGVrc3BsaWNpdCBnZW1tZXMgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJibGlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBrYXRlZ29yaWVybmUgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIGtvbG9ubmVmaWx0cmVuZSBpIG92ZXJzaWd0ZW4gb3ZlciBzbcOlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLiBCZW3DpnJrOiBIdmlzIFwnQWt0aXZcJyBzw6Z0dGVzIHRpbCAwLCBmb3JoaW5kcmVyIGRldCBrdW4gYWdlbnRlciBpIGF0IHJlZGlnZXJlIGluZHN0aWxsaW5nZXJuZSBmb3IgZGVubmUgZ3J1cHBlIGkgZGVyZXMgcGVyc29ubGlnZSBwcsOmZmVyZW5jZXIsIG1lbiBkZXQgZ2l2ZXIgc3RhZGlnIGFkbWluaXN0cmF0b3JlciBtdWxpZ2hlZCBmb3IgYXQgcmVkaWdlcmUgaW5kc3RpbGxpbmdlcm5lIHDDpSBlbiBhbmRlbiBicnVnZXJzIHZlZ25lLiBCcnVnIFwnUHJlZmVyZW5jZUdyb3VwXCcgdGlsIGF0IHN0eXJlLCBpIGh2aWxrZXQgb21yw6VkZSBkaXNzZSBpbmRzdGlsbGluZ2VyIHNrYWwgdmlzZXMgaSBicnVnZXJncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdWRydWxuaW5nc3RpbHN0YW5kZW5lcyBmYXJ2ZSBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdWRydWxuaW5nc3RpbHN0YW5kZSBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIGVrc2VtcGxlcm5lIHDDpSB0aWxsYWRlbHNlc2dydXBwZXIgZm9yIGRlIGdlbmVyZWxsZSBrYXRhbG9nYXR0cmlidXR0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHRpbCBuYXZuZW1vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBhZiBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIG51bW1lcm1vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBzaWRlcm5lIChodm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVybmUgdmlzZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIHZlcnNpb25zc3RyZW5nbW9kdWxldCBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50a2xhc3NlciBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciB2ZXJzaW9uc3VkbMO4c2VyZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHByw6ZmZXJlbmNldmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdUaWxsYWRlbHNlc2dydXBwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyB2ZWRow6ZmdG5pbmdzaGFuZGxpbmcgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2UgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRza8Omcm1lbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBtZWQgdHLDpnZpc25pbmcgYWYgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHpvb21za8Omcm1lbiBmb3IgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgVGlsZsO4aiBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IG1lZCBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYnVsayBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IFJlZGlnZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBtZWQgaGlzdG9yaWsgZm9yIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgVWRza3JpdiBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ07DuGR2ZW5kaWdlIHJldHRpZ2hlZGVyIGZvciBhdCBzbGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU8O4ZyBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnSW5kc3RpbCBhdXRvbWF0aXNrIGjDpm5kZWxzZXNzdGF0dXMgZm9yIGVuIENJLCBuw6VyIGVuIHRpY2tldCBlciBsaW5rZXQgdGlsIGVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luZHN0aWxsZXIgaW1wbGVtZW50ZXJpbmdzdGlsc3RhbmRlbiBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBidWxrc2vDpnJtIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmRzdGlsbGVyIGjDpm5kZWxzZXN0aWxzdGFuZGVuIGkga29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGJ1bGtza8Omcm0gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiwgZGVyIGfDuHIgZGV0IG11bGlndCBhdCBmb3JiaW5kZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgbWVkIGV0IGFuZGV0IG9iamVrdCBpIHpvb212aXNuaW5nZW4gYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgZsOlIGFkZ2FuZyB0aWwgaGlzdG9yaWtrZW4gZm9yIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgZsOlIGFkZ2FuZyB0aWwgaGlzdG9yaWtrZW4gZm9yIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbnMgem9vbXZpc25pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgYXQgc2xldHRlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYWYgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiBmb3IgYXQgdmlzZSBsaW5rcyB0aWwga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgc29tIGVuIHRyw6Z2aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGR1cGxpa2VyZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGR1cGxpa2VyZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSB6b29tdmlzbmluZ2VuIGFmIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIHJlZGlnZXJpbmcgYWYgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgYWdlbnRncsOmbnNlZmxhZGVucyB6b29tdmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IGfDpSB0aWxiYWdlIGkgem9vbXZpc25pbmdlbiBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRldCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCBhdCB1ZHNrcml2ZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHpvb212aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IHpvb21lIGluZCBww6UgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBrb25maWd1cmF0aW9uc2VsZW1lbnRldHMgaGlzdG9yaWsgKGkgb212ZW5kdCByw6Zra2Vmw7hsZ2UpIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdTdGFuZGFyZGthdGVnb3JpZW4sIHNvbSB2aXNlcywgaHZpcyBpbmdlbiBlciB2YWxndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3JlbiBmb3IgZXQga29uZmlndXJhdGlvbnNlbGVtZW50LCBmLmVrcy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFN0YW5kYXJkIGVyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVWRsw7hzZXIgYXV0b21hdGlzayBDb25maWdJdGVtRmV0Y2ggaW52b2tlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbiBTdHJpbmctdWR0cnlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIHVkbMO4c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdPbSB1ZGbDuHJlbHNlbiBhZiBDb25maWdJdGVtQUNMIGthbiB1bmRnw6VzIHZlZCBhdCB0amVra2UgY2FjaGVsYWdyZWRlIGZlbHRhZmjDpm5naWdoZWRlci4gRGV0dGUga2FuIGZvcmJlZHJlIGluZGzDpnNuaW5nc3RpZGVuIGZvciBmb3JtdWxhcmVyLCBtZW4gc2thbCBkZWFrdGl2ZXJlcywgaHZpcyBBQ0xNb2R1bGVzIHNrYWwgYnJ1Z2VzIHRpbCBJVFNNQ29uZmlnSXRlbS0gb2cgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0h2aWxrZSBnZW5lcmVsbGUgb3BseXNuaW5nZXIgdmlzZXMgaSBvdmVyc2tyaWZ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdEZXRhbGplciBvbSB2ZXJzaW9uIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDUzLDM0IGNtICgyMSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10b21tZXIgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgdG9tbWVyIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdG9tbWVyICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgdG9tbWVyIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgdG9tbWVyICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiAxMDYsNjggY20gKDQyIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHRvbW1lciAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHRvbW1lciAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogMTQ2LDY4IGNtICg1Nyw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCB0b21tZXIgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHRvbW1lciAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgdG9tbWVyICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHRvbW1lciAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiB0b21tZXIgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCB0b21tZXIgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogMTcsNzggY20gKDcgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAzNSw1NiBjbSAoMTQgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSZWduc2thYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ1RpbGRlbGluZyBhZiBhZHJlc3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2cgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cGUgYXBwYXJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlrYXBhY2l0ZXQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJpdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J5Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1cy1ncsOmbnNlZmxhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUta2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0ZXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFjaXRldCBwci4gZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0bMOmc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0tvcnR0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnQtY2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0tsaWVudHNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0t1bmRla2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnVXJmcmVrdmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVXJldHMgaGFzdGlnaGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2Rlc2lnbmVyaW5nc2NlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyZW5jZXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdLb25zdWxlbnRhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgZGlzdHJpYnV0w7hyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnSMOlbmR0ZXJpbmcgYWYgY29udGFpbmVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdLb250cmFrdHR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdLb250cmFrdHBlcmlvZGUgZnJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0tvbnRyYWt0cGVyaW9kZSBpbmR0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVHLDpWRsw7hzIHRlbGVmb24gKERFQ1QtdGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnT21rb3N0bmluZ3NlbmhlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0FudGFsIGxpY2Vuc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdPcHJldHRlbHNlc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0JydWdlcmRlZmluZXJldCBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0byBmb3IgZmFrdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0byBmb3IgYmVzdGlsbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0byBmb3IgZ2FyYW50aXN0aWxsZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRvIGZvciB1ZGdpdmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50c2lnbmVyaW5nc2NlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLW1haWwtY2VydGlmaWthdGVyIChTL01JTUUtY2VydGlmaWthdGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdBbnPDpnR0ZWxzZXNrb250cmFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ1NsdXQgSVAtYWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1NsdXQgbWVkIHN0w7h0dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdVZGzDuGJzZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRWtzdGVybiBoYXJkZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTdmluZ2hqdWwgdGlsIGVuZXJnaWxhZ3JpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2VhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdHZW5lcmVsIGluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSGFyZHdhcmUtbW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSGFyZHdhcmUtdsOmZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUC1wcm90b2tvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZXRzLSBvZyBhZGdhbmdzc3R5cmluZyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0Zha3R1cmFudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0YXR1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qtc2vDpnJtIChmbHlkZW5kZSBrcnlzdGFsc2vDpnJtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELXNrw6ZybSAobHlzZW1pdHRlcmVuZGUgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0Zhc3RuZXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0JyZWRkZWdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYWcgMTogRnlzaXNrIGxhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYWcgMjogRGF0YWxpbmstbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWcgMzogTmV0dsOmcmtzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhZyAzOiBOZXR2w6Zya3NsYWcgKHN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYWcgNDogVHJhbnNwb3J0bGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYWcgNTogU2Vzc2lvbnNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGFnIDY6IFByw6ZzZW50YXRpb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFnIDc6IEFwcGxpa2F0aW9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdMZWplYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5zYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnNuw7hnbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5zdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zcGVyaW9kZSBmcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbnNwZXJpb2RlIGluZHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1qZXJuZm9zZmF0IChMaUZlUE80KS1iYXR0ZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpdW0taW9uLWJhdHRlcmkgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMw6VuZWFmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnQmVsaWdnZW5kZSBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0zDpm5nZGVncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnUHJvZHVjZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW1hbCBiZWxhc3RuaW5nc2thcGFjaXRldCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnSHVrb21tZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ0h1a29tbWVsc2VzdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9pbmRsZWpyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsYmVza3JpdmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnU2vDpnJtZW5zIG9wbMO4c25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnU2vDpnJtc3TDuHJyZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ011cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0dsOmcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0dsOmcmtzaW5mbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gb20gbmV0dsOmcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHbDpnJrc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1jYWRtaXVtLWJhdHRlcmkgKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsLW1ldGFsaHlkcmlkLWJhdHRlcmkgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FmdGFsZSBvbSBoZW1tZWxpZ2hvbGRlbHNlIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90ZXNib2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdBbnRhbCBDUFVcJ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0FudGFsIFJBTS1tb2R1bGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0FudGFsIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtc2vDpnJtIChvcmdhbmlzayBseXNlbWl0dGVyZW5kZSBkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnRHJpZnRzb21rb3N0bmluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ0Jlc3RpbGxpbmdzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQW5kZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1VkZ2FuZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOLUtPREUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc2thYnNhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9ubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9udHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Z5c2lza2Uga2VybmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3Ryw7htZm9yc3luaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnS8O4YnQgcMOlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdTdGF0aXZldHMgZHliZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrLWVuaGVkZXIgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdWw6ZyZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUy1jZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYWxnc2tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdGb3JzZWdsZXQgYmx5c3lyZWJhdHRlcmkgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXItc29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZS10YWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnU3Rpa2tvbnRha3R0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdIw7hqdHRhbGVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnT3BiZXZhcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ09wYmV2YXJpbmdzcGFydGl0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRGF0dGVyc2Vsc2thYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FtbWVuZmF0bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1R5bmQga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdUcsOlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUb3JkZW5ib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFmaWtrb3J0ZXRzIHNhbWxlZGUgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gaSBhbHQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnQmVyw7hyaW5nc2bDuGxzb20gc2vDpnJtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVMOlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1odWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1oZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/de_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGxnZW1laW5lIEJldHJpZWJzZGF0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0VpbnN0ZWxsdW5nZW4gZsO8ciBlaW5nZWhlbmRlIEFuZm9yZGVydW5nc2RhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnRWluc3RlbGx1bmdlbiBmw7xyIGF1c2dlaGVuZGUgQW50d29ydGRhdGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnQ29uZmlnSXRlbS1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnS2xhc3Nlbi1EZWZpbml0aW9uIMOkbmRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ1JvbGxlbmRlZmluaXRpb24gw6RuZGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1LbGFzc2VuYsO8bmRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hpZXIga8O2bm5lbiBTaWUgUmVhZHkySW1wb3J0LUtsYXNzZW5iw7xuZGVsIGltcG9ydGllcmVuLCBkaWUgdW5zZXJlIGdlYnLDpHVjaGxpY2hzdGVuIEtvbmZpZ3VyYXRpb25zcHVua3RlIHplaWdlbi4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGVpbmlnZSB6dXPDpHR6bGljaGUgS29uZmlndXJhdGlvbmVuIGVyZm9yZGVybGljaCBzZWluIGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ1ZvcmhhbmRlbmUgRW50aXTDpHRlbiBha3R1YWxpc2llcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQtS2xhc3NlbmLDvG5kZWwgaW1wb3J0aWVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWdJdGVtLUtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0tUm9sbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIGbDvHIgS2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdXw6RobGVuIFNpZSBlaW5lIEtsYXNzZSBhdXMgZGVyIExpc3RlIGF1cyB1bSBlaW4gbmV1ZXMgQ29uZmlnIEl0ZW0genUgZXJzdGVsbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBTYW1tZWxha3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdadSBlaW5lbSBhbmRlcmVuIHZlcmtuw7xwZmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVbmfDvGx0aWdlIENvbmZpZ3VyYXRpb24gSXRlbSBOdW1tZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0RpZSBOdW1tZXIgZGVzIHp1IHZlcmtuw7xwZmVuZGVuIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnV29sbGVuIFNpZSBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtIHdpcmtsaWNoIGzDtnNjaGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXIgTmFtZSBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtZSB3aXJkIGJlcmVpdHMgdm9uIGRlbiBDb25maWd1cmF0aW9uIEl0ZW1zIG1pdCBkZW4gZm9sZ2VuZGVuIE51bW1lcm4gdmVyd2VuZGV0OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb25zbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWZXJzaW9uc251bW1lciBkaWVzZXMgS29uZmlndXJhdGlvbnNlbGVtZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0RpZSBWZXJzaW9uc251bW1lciB3aXJkIGJlcmVpdHMgdm9uIGRlbiBDb25maWdJdGVtcyBtaXQgZGVuIGZvbGdlbmRlbiBOdW1tZXJuIHZlcndlbmRldDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWUgdm9uIENvbmZpZ3VyYXRpb24gSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnw4RuZGVydW5nc3ZlcmxhdWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0Vyc3RlbGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ0RldGFpbGFuc2ljaHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtcyBwcm8gU2VpdGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tlaW5lIENvbmZpZyBJdGVtLURhdGVuIGdlZnVuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0NvbmZpZyBJdGVtIGF1c3fDpGhsZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTdWNoZSBhdXNmw7xocmVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZsO8ciBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1RpZWZlIEViZW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnVmVyZ3LDtsOfZXJuL1ZlcmtsZWluZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heGltYWxlIFZlcmtuw7xwZnVuZ3NlYmVuZSBmw7xyIENvbmZpZ0l0ZW0gZXJyZWljaHQhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1ZWxsZXIgVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHVlbGxlciBWb3JmYWxsc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0IHZvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0locmUgQ29uZmlnIEl0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZyBJdGVtLVN1Y2hlJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGllIGZvbGdlbmRlbiBLbGFzc2VuIHdlcmRlIGltcG9ydGllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGllIGZvbGdlbmRlbiBSb2xsZW4gd2VyZGVuIGltcG9ydGllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnQmVhY2h0ZW4gU2llLCBkYXNzIGF1Y2ggZW50c3ByZWNoZW5kZSBkeW5hbWlzY2hlIEZlbGRlciB1bmQgR2VuZXJhbENhdGFsb2ctS2xhc3NlbiBlcnN0ZWxsdCB3ZXJkZW4gdW5kIGVzIGtlaW5lIGF1dG9tYXRpc2NoZSBMw7ZzY2h1bmcgZ2lidC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdNw7ZjaHRlbiBTaWUgZm9ydGZhaHJlbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQmVuw7Z0aWdlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uIGlzdCBrZWluIGfDvGx0aWdlcyBZQU1MLUhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5xiZXJzaWNodDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIElEIGbDvHIgZGFzIENvbmZpZ3VyYXRpb24gSXRlbSBhbmdlZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnU2llIGJlbsO2dGlnZW4gd2VuaWdzdGVucyBlaW4gYXVzZ2V3w6RobHRlcyBDb25maWd1cmF0aW9uIEl0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnU2llIGhhYmVuIGtlaW5lIFNjaHJlaWItQmVyZWNodGlndW5nZW4gZsO8ciBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2VpbmUgRGVmaW5pdGlvbiBmw7xyIEtsYXNzZSAlcyBkZWZpbmllcnQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gIiVzIiBpbiBEYXRlbmJhbmsgbmljaHQgZ2VmdW5kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnRXMgd2FyIG5pY2h0IG3DtmdsaWNoLCBkaWUgQ29uZmlndXJhdGlvbiBJdGVtLUlEICVzIHp1IGzDtnNjaGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnS2VpbmUgVmVyc2lvbiBmw7xyIENvbmZpZ3VyYXRpb24gSXRlbS1JRCAlcyBnZWZ1bmRlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlELCBEdXBsaWthdHMtSUQgb2RlciBLbGFzc2VuLUlEIGFuZ2VnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0tlaW4gWnVncmlmZiBnZXfDpGhydCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2FubiBIaXN0b3JpZSBuaWNodCBhbnplaWdlbiwga2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlEIMO8YmVybWl0dGVsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW5uIEhpc3RvcmllIG5pY2h0IGFuemVpZ2VuLCBrZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tSUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV1ZXMgQ29uZmlndXJhdGlvbiBJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05ldWUgVmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMgYWt0dWFsaXNpZXJ0IChuZXU9JXMsIGFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVm9yZmFsbHN0YXR1cyBha3R1YWxpc2llcnQgKG5ldT0lcywgYWx0PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBnZWzDtnNjaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdWZXJrbsO8cGZ1bmcgenUgJXMgKFR5cD0lcykgaGluenVnZWbDvGd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdWZXJrbsO8cGZ1bmcgenUgJXMgKFR5cD0lcykgZ2Vsw7ZzY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtLURlZmluaXRpb24gYWt0dWFsaXNpZXJ0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1lIGFrdHVhbGlzaWVydCAobmV1PSVzLCBhbHQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXQgJXMgYWt0dWFsaXNpZXJ0IHZvbiAiJXMiIG5hY2ggIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIGdlbMO2c2NodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICdEYXRlaSAiJXMiIGhvY2hnZWxhZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnRGF0ZWkgIiVzIiBlbnRmZXJudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIENvbmZpZ3VyYXRpb24gSXRlbS1JRCBvZGVyIFZlcnNpb25zLUlEIGFuZ2VnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGthbm4gbmljaHQgYW5nZXplaWd0IHdlcmRlbiwga2VpbmUgWnVncmlmZnNyZWNodGUgdmVyZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLUlEICVzIGluIERhdGVuYmFuayBuaWNodCBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2dlZHJ1Y2t0IHZvbiAlcyBhbSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbnonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdVbmfDvGx0aWdlIEtsYXNzZW4tSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgS2xhc3Nlbi1JRCDDvGJlcm1pdHRlbHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnS2VpbmUgWnVncmlmZnNyZWNodGUgZsO8ciBkaWVzZSBLbGFzc2UgdmVyZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdLZWluIEVyZ2VibmlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0NvbmZpZyBJdGVtLVN1Y2hlcmdlYm5pc3NlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdLYW5uIGRhcyBFbGVtZW50IG5pY2h0IGFuemVpZ2VuLCBrZWluZSBadWdyaWZmc3JlY2h0ZSBmw7xyIGRhcyBDb25maWdJdGVtIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWcgSXRlbSBuaWNodCBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnS2VpbmUgVmVyc2lvbmVuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdXYXJudW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVm9yZmFsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVyIFZlcndlbmR1bmdzc3RhdHVzIGRpZXNlcyBDb25maWcgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXIgVm9yZmFsbHN0YXR1cyBkaWVzZXMgQ29uZmlnIEl0ZW1zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnS2VpbmUgQmVyZWNodGlndW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciB1bmfDvGx0aWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTdWNocGFyYW1ldGVyIHVuZ8O8bHRpZyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdBbmdlemVpZ3RlIENvbmZpZ3VyYXRpb24gSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnQWt0dWVsbGVyIFZvcmZhbGxzc3RhdHVzLVR5cCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdad2lzY2hlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlbmVpbnNjaHLDpG5rdW5nZW4gZsO8ciBkYXMgS29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1fDpGhsZW4gU2llIGVpbmUgb2RlciBtZWhyZXJlIEtsYXNzZW4gYXVzLCB1bSBkaWUgYXVzd8OkaGxiYXJlbiBDb25maWcgSXRlbXMgZWluenVzY2hyw6Rua2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdWZXJ3ZW5kdW5nc3N0YXR1cy1FaW5zY2hyw6Rua3VuZ2VuIGbDvHIgZGFzIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnRWluZW4gb2RlciBtZWhyZXJlIFZlcndlbmR1bmdzc3RhdHVzIGF1c3fDpGhsZW4gdW0gYXVzd8OkaGxiYXJlIENvbmZpZyBJdGVtcyBlaW56dXNjaHLDpG5rZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzY2ggKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNjaCAoVmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGluay1SZWZlcmVuemllcnVuZ3NhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQW5nYWJlLCBvYiBzaWNoIGRpZXNlciBMaW5rIGF1ZiBkYXMgQ29uZmlnSXRlbSBvZGVyIGRpZSBzdGF0aXNjaGUgVmVyc2lvbiBkZXMgcmVmZXJlbnppZXJlbmRlbiBPYmpla3RzIGJlemllaHQuIERpZSBCZXJlY2hudW5nIGRlcyBha3R1ZWxsZW4gVm9yZmFsbHNzdGF0dXMgd2lyZCBudXIgYmVpIGR5bmFtaXNjaGVuIExpbmtzIGR1cmNoZ2Vmw7xocnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnV8OkaGxlbiBTaWUgZGFzIEF0dHJpYnV0IGF1cywgbmFjaCBkZW0gZGllIEtvbmZpZ3VyYXRpb25zZWxlbWVudGUgZHVyY2hzdWNodCB3ZXJkZW4gc29sbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICdTY2hsw7xzc2VsIGRlciBleHRlcm5lbiBRdWVsbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICdXw6RobGVuIFNpZSBkaWUgQW56ZWlnZWFydCBhdXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJ0FrdGl2aWVyZW4gU2llIGRpZXNlIE9wdGlvbiwgdW0gV2VydGUgYWxzIEJhdW0gYW56dXplaWdlbiwgZ3J1cHBpZXJ0IG5hY2ggQ29uZmlnSXRlbXMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2lzc3RydWt0dXIgaXN0IG5pY2h0IGfDvGx0aWcuIEJpdHRlIGdlYmVuIFNpZSBlaW5lbiBIYXNoIG1pdCBEYXRlbiBpbSBZQU1MLUZvcm1hdCBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdEZXIgQmVnaW5uIGRlciBZQU1MLVplaWNoZW5rZXR0ZSBtaXQgXCctLS1cJyBpc3QgZXJmb3JkZXJsaWNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdEaWUgVGFiZWxsZSBjb25maWdpdGVtX2xpbmsga29ubnRlIG5pY2h0IGdlbMO2c2NodCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdFcyB3dXJkZW4ga2VpbmUgcmVsZXZhbnRlbiBkeW5hbWlzY2hlbiBGZWxkZXIgZ2VmdW5kZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdLb25udGUgbmljaHQgaW4gZGllIFRhYmVsbGUgY29uZmlnaXRlbV9saW5rIGVpbmdlZsO8Z3Qgd2VyZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcwIFplaWxlbiBpbiBkaWUgVGFiZWxsZSBjb25maWdpdGVtX2xpbmsgZWluZ2Vmw7xndCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbWFsZSBBbnphaGwgZWluZXMgRWxlbWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICdNYXhpbWFsZSBBbnphaGwgdm9uIEVsZW1lbnRlbiBlaW5lcyBEeW5hbWlzY2hlbiBGZWxkcyB2b20gVHlwIOKAnlNldOKAnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgZWluZXMgRWxlbWVudHMgaW5uZXJoYWxiIGVpbmVzIER5bmFtaXNjaGVuIEZlbGRzIHZvbSBUeXAgIlNldCInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdGZWhsZXIgYmVpbSBTeW5jaHJvbmlzaWVyZW4gZGVyIERlZmluaXRpb25lbi4gQml0dGUgcHLDvGZlbiBTaWUgZGFzIFByb3Rva29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdTaWUgaGFiZW4gSVRTTUNvbmZpZ0l0ZW0tRGVmaW5pdGlvbmVuLCBkaWUgbmljaHQgc3luY2hyb25pc2llcnQgc2luZC4gQml0dGUgc3RlbGxlbiBTaWUgSWhyZSBkeW5hbWlzY2hlbiBJVFNNQ29uZmlnSXRlbS1GZWxkw6RuZGVydW5nZW4gYmVyZWl0Lic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQWJnZWxhdWZlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0luIFdhcnR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdGJldHJpZWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0dlcGxhbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnSW4gUmVwYXJhdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdBdcOfZXIgRGllbnN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1VudGVyIFJldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RUyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5xiZXJibGljayB1bmQgQmVzdMOkdGlndW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydCB2b24gS2xhc3Nlbi9Sb2xsZW4gdW5kIGlocmVuIHp1Z2Vow7ZyaWdlbiBGZWxkZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnQmVpbSBLbGFzc2VuaW1wb3J0IGlzdCBlaW4gRmVobGVyIGF1ZmdldHJldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVmVyc3RlY2t0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBBYmdlYmlsZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJ0VpbmUgWnVvcmRudW5nIGRlciBpbnRlcm5lbiBGZWxkbmFtZW4sIGRpZSBpbiBkZW4gUHJvemVzc21hbmFnZW1lbnQgw5xiZXJnYW5nc2FrdGlvbmVuIENvbmZpZ0l0ZW1BZGQgdW5kIC1VcGRhdGUgdmVyd2VuZGV0IHdlcmRlbi4gRGllIFNjaGzDvHNzZWwgc2luZCBkaWUgTmFtZW4gZGVyIEZlbGRlciBpbm5lcmhhbGIgZGVyIFNldHMgbWl0IGRlbSBPYmpla3R0eXAg4oCeVGlja2V04oCcLCBkaWUgenVyIEVyc3RlbGx1bmcvQWt0dWFsaXNpZXJ1bmcgZGVyIENJcyBnZW51dHp0IHdlcmRlbi4gRGllIFdlcnRlIHNpbmQgZGllIE5hbWVuIGRlciBGZWxkZXIgaW5uZXJoYWxiIGRlciBTZXRzIG1pdCBkZW0gT2JqZWt0dHlwIOKAnklUU01Db25maWdJdGVt4oCcLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdFcm3DtmdsaWNodCBlcndlaXRlcnRlIFN1Y2hiZWRpbmd1bmdlbiBiZWkgZGVyIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNvYmpla3RlbiBpbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuIE1pdCBkaWVzZXIgRnVua3Rpb24ga8O2bm5lbiBTaWUgei4gQi4gZGVuIE5hbWVuIGRlcyBLb25maWd1cmF0aW9uc2VpbnRyYWdzIG1pdCBzb2xjaGVuIEJlZGluZ3VuZ2VuIHdpZSAiKCprZXkxKiYmKmtleTIqKSIgb2RlciAiKCprZXkxKnx8KmtleTIqKSIgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdFcm3DtmdsaWNodCBlcndlaXRlcnRlIFN1Y2hiZWRpbmd1bmdlbiBiZWkgZGVyIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNlaW50csOkZ2VuIGluIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlLiBNaXQgZGllc2VyIEZ1bmt0aW9uIGvDtm5uZW4gU2llIHouIEIuIGRlbiBOYW1lbiBlaW5lcyBLb25maWd1cmF0aW9uc2VpbnRyYWdzIG1pdCBCZWRpbmd1bmdlbiB3aWUgIigqa2V5MSomJiprZXkyKikiIG9kZXIgIigqa2V5MSp8fCprZXkyKikiIHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnWnVnZXdpZXNlbmUgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJ1p1IGVpbmVtIGJlc3RpbW10ZW4gWmVpdHB1bmt0IGVpbiBUaWNrZXQgZsO8ciBDb25maWdJdGVtcyBlcnN0ZWxsZW4sIHdlbm4gZGllIGtvbmZpZ3VyaWVydGVuIEFuZm9yZGVydW5nZW4gZXJmw7xsbHQgc2luZC4gRGVyIFplaXRwdW5rdCB3aXJkIGR1cmNoIGRlbiBXZXJ0IGRlcyB1bnRlciAiVGltZUNJS2V5IiBkZXMgQ29uZmlnSXRlbXMga29uZmlndXJpZXJ0ZW4gRHluYW1pc2NoZW4gRmVsZHMgdm9tIFR5cCAiRGF0dW0iIGJlc3RpbW10IHVuZCBkdXJjaCAiVGltZU1vZGlmaWVyIiBtb2RpZml6aWVydC4gTGV0enRlcmVyIGthbm4gZW50d2VkZXIgbnVyIGVpbmUgWmFobCBzZWluLCBvZGVyIGVpbiBWb3J6ZWljaGVuICgrLy0pLCBlaW5lIFphaGwgdW5kIGVpbmUgRWluaGVpdCAoZC9oL20pOiAiNyIgZW50c3ByaWNodCAiKzdkIi4gRGFzIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpcmQgdmVyd2VuZGV0LCB1bSBlcnN0ZWxsdGUgVGlja2V0cyB6dSBtYXJraWVyZW4gLSBlcyBtdXNzIGV4aXN0aWVyZW4uIERpZSBGbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+LCB3b2JlaSBYIHNvd29obCBOQU1FLCBhbHMgYXVjaCBOVU1CRVIgdW5kIERBVEUgc2VpbiBrYW5uLCB3ZXJkZW4gZHVyY2ggZGllIGVudHNwcmVjaGVuZGVuIFdlcnRlIGluICJUaWNrZXQtPlRleHQiIGVyc2V0enQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJ0F0dHJpYnV0ZSBmw7xyIGRpZSBMaXplbnp6w6RobHVuZywgd29iZWkg4oCeVG90YWxMaWNlbnNlc0RG4oCcLCDigJ5BdmFpbGFibGVMaWNlbnNlc0RG4oCcIHVuZCDigJ5MaWNlbnNlUmVmZXJlbmNlREbigJwgZGllIE5hbWVuIGRlciBkeW5hbWlzY2hlbiBGZWxkZXIgc2luZCwgZGllIHp1ciBOYWNodm9sbHppZWhiYXJrZWl0IGRlciB2ZXJibGVpYmVuZGVuIExpemVuemVuIHZlcndlbmRldCB3ZXJkZW4uIEZhbGxzIHZlcndlbmRldCwgd2VyZGVuIG51ciBkaWUgVmVyd2VuZHVuZ3NzdGF0dXMgaW4g4oCeVmFsaWREZXBsU3RhdGVz4oCcIGJlcsO8Y2tzaWNodGlndC4gV2VubiBlaW4gU2Nod2VsbHdlcnQgaW4g4oCeTWluaW11bUxpY2Vuc2Vz4oCcIGRlZmluaWVydCBpc3QsIHdpcmQgYXV0b21hdGlzY2ggZWluIFRpY2tldCBlcnN0ZWxsdCwgd2VubiB3ZW5pZ2VyIExpemVuemVuIHZlcmbDvGdiYXIgc2luZC4gRGF6dSBtdXNzIGRhcyBEeW5hbWlzY2hlIEZlbGQgdm9tIFR5cCAiS29udHJvbGxrw6RzdGNoZW4iIOKAnlRpY2tldC0+RHluYW1pY0ZpZWxk4oCcIGV4aXN0aWVyZW4uIERpZSBUYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gKHdvYmVpIFggc293b2hsIE5BTUUsIGFscyBhdWNoIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgb2RlciBMSUNFTlNFU19NSU4gc2VpbiBrYW5uKSB3ZXJkZW4gaW0g4oCeVGlja2V0LT5UZXh04oCcIGR1cmNoIGRpZSBlbnRzcHJlY2hlbmRlbiBXZXJ0ZSBlcnNldHp0OiBkZW4gQ29uZmlnIEl0ZW0gTmFtZW4sIGRpZSBOdW1tZXIsIGRpZSB2ZXJmw7xnYmFyZW4gTGl6ZW56ZW4gdW5kIGRpZSBtaW5pbWFsZSBBbnphaGwgYW4gdmVyZsO8Z2JhcmVuIExpemVuemVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ1p1bSBLdW5kZW4genVnZXdpZXNlbmUgQ29uZmlndXJhdGlvbnMgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdadW0gS3VuZGVuYmVudXR6ZXIgenVnZXdpZXNlbmUgQ29uZmlndXJhdGlvbnMgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItRWluc3RlbGx1bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUHLDvGZ0IE5hbWVuIGF1ZiBFaW5kZXV0aWdrZWl0IGlubmVyaGFsYiBkZXIgc2VsYmVuIENvbmZpZ3VyYXRpb24gSXRlbS1LbGFzc2Ugb2RlciBnbG9iYWwsIGQuaC4gZXMgd2VyZGVuIGFsbGUgQ29uZmlndXJhdGlvbiBJdGVtcyBqZWdsaWNoZXIgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBiZWkgZGVyIFByw7xmdW5nIGF1ZiBlaW5lbiBlaW5kZXV0aWdlbiBOYW1lbiBiZXLDvGNrc2ljaHRpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdXw6RobGVuIFNpZSBlaW4gTW9kdWwsIHVtIGVpbiBCZW5lbm51bmdzc2NoZW1hIHp1IGVyendpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1fDpGhsZW4gU2llIGVpbiBNb2R1bCwgdW0gZWluIE51bW1lcm5zY2hlbWEgenUgZXJ6d2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdXw6RobGVuIFNpZSBlaW4gTW9kdWwsIHVtIGVpbiBWZXJzaW9uc2tldHRlbnNjaGVtYSB6dSBlcnp3aW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnV8OkaGxlbiBTaWUgQXR0cmlidXRlLCB1bSBkaWUgRXJzdGVsbHVuZyBlaW5lciBuZXVlbiBWZXJzaW9uIGF1c3p1bMO2c2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdXw6RobGVuIFNpZSBLYXRlZ29yaWVuIGF1cywgZGllIFNpZSBkaWVzZXIgS29uZmlndXJhdGlvbnNlbGVtZW50a2xhc3NlIHp1b3JkbmVuIG3DtmNodGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnRmFyYmRlZmluaXRpb25lbiBmw7xyIGRpZSDDtmZmZW50bGljaGUgT2JlcmZsw6RjaGUgKC9wdWJsaWMucGwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdTcGFsdGVua29uZmlndXJhdGlvbnNmaWx0ZXIgZsO8ciBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU3BhbHRlbiwgZGllIGluIGRlciBDb25maWcgSXRlbSDDnGJlcnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZSBnZWZpbHRlcnQgd2VyZGVuIGvDtm5uZW4uIEhpbndlaXM6IE51ciBDb25maWcgSXRlbSBBdHRyaWJ1dGUgdW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIHNpbmQgZXJsYXVidC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGhpbnp1ZsO8Z2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBiZWFyYmVpdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICdFcmVpZ25pc21vZHVsIHZvbiBDb25maWcgSXRlbXMsIGRhcyBkaWUgTGl6ZW56esOkaGx1bmcgZsO8ciBlaW4gYmVzdGltbXRlcyBDb25maWcgSXRlbSBha3RpdmllcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIEl0ZW0tRXZlbnQtTW9kdWwsIGRhcyBkaWUgUHJvdG9rb2xsaWVydW5nIGRlciBIaXN0b3JpZSBpbSBBZ2VudGVuLUludGVyZmFjZSBlcm3DtmdsaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnLUVsZW1lbnQtRXJlaWduaXNtb2R1bCwgZGFzIENvbmZpZy1FbGVtZW50ZSBhdWYgaWhyZSBha3R1ZWxsZSBEZWZpbml0aW9uIGFrdHVhbGlzaWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tSGlzdG9yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBkcnVja2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1EZXRhaWxhbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0tU3RydWt0dXJhbnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkZXIgZm9sZ2VuZGVuIEtsYXNzZW4gd2VyZGVuIG5pY2h0IGF1ZiBkZW0gRWxhc3RpY3NlYXJjaC1TZXJ2ZXIgZ2VzcGVpY2hlcnQuIFVtIGRpZXMgYXVmIGJlc3RlaGVuZGUgQ0lzIGFuenV3ZW5kZW4sIG11c3MgZGllIENJLU1pZ3JhdGlvbiDDvGJlciBkaWUgS29uc29sZSBhdXNnZWbDvGhydCB3ZXJkZW4sIG5hY2hkZW0gZGllc2UgT3B0aW9uIGdlw6RuZGVydCB3dXJkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWl0IGRlbiBmb2xnZW5kZW4gQmVyZWl0c3RlbGx1bmdzenVzdMOkbmRlbiB3ZXJkZW4gbmljaHQgYXVmIGRlbSBFbGFzdGljc2VhcmNoLVNlcnZlciBnZXNwZWljaGVydC4gVW0gZGllcyBhdWYgYmVzdGVoZW5kZSBDSXMgYW56dXdlbmRlbiwgbXVzcyBkaWUgQ0ktTWlncmF0aW9uIMO8YmVyIGRpZSBLb25zb2xlIGF1c2dlZsO8aHJ0IHdlcmRlbiwgbmFjaGRlbSBkaWVzZSBPcHRpb24gZ2XDpG5kZXJ0IHd1cmRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1MaW1pdCBwcm8gU2VpdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tU2FtbWVsYWt0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIEl0ZW0gU3VjaC1CYWNrZW5kIE5hdmlnYXRpb24gZGVzIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnS29uZmlndXJpZXJlIGRpZSBTcGFsdGVuLCBkaWUgaW0gS3VuZGVuaW50ZXJmYWNlIGbDvHIgZGllIEFuemVpZ2Ugdm9uIFp1Z3JpZmZzYmVkaW5ndW5nZW4gdmVyZsO8Z2JhciBzaW5kLCB3ZW5uIGRpZSBlbnRzcHJlY2hlbmRlbiBTcGFsdGVuIGbDvHIgWnVncmlmZnNiZWRpbmd1bmdlbiBuaWNodCBleHBsaXppdCBrb25maWd1cmllcnQgc2luZC4gRGllc2UgRWluc3RlbGx1bmcgZGllbnQgYWxzIFLDvGNrZmFsbG9wdGlvbiBmw7xyIGRpZSBhbmRlcmVuIEVpbnN0ZWxsdW5nZW4genUgZGVuIFNwYWx0ZW5laW5zdGVsbHVuZ2VuIGbDvHIgWnVncmlmZnNiZWRpbmd1bmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmllcmUgZGllIFNwYWx0ZW4sIGRpZSBpbiBkZXIgS3VuZGVub2JlcmZsw6RjaGUgaW4gZGVyIEFuc2ljaHQgZGVyIGVudHNwcmVjaGVuZGVuIEJlcmVjaHRpZ3VuZ3NiZWRpbmd1bmcgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0RpZSBEZWZpbml0aW9uZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbS1MaW1pdCBlcnN0ZWxsZW4gdW5kIHZlcndhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdFcnpldWd0IFRpY2tldHMgZsO8ciBDb25maWdJdGVtcyB6dSBiZXN0aW1tdGVuIFplaXRwdW5rdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLdW5kZW4ga8O2bm5lbiBoaXN0b3Jpc2NoZSBDSS1WZXJzaW9uZW4gZWluc2VoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0t1bmRlbiBoYWJlbiBkaWUgTcO2Z2xpY2hrZWl0LCBtYW51ZWxsIHp3aXNjaGVuIGhpc3RvcmlzY2hlbiBDSS1WZXJzaW9uZW4genUgd2VjaHNlbG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRlbiwgZGllIGF1ZiBkZW0gQXR0cmlidXQgZsO8ciBkZW4gU3VjaGJpbGRzY2hpcm0gZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGUgdmVyd2VuZGV0IHdlcmRlbiBzb2xsZW4uIEJlaXNwaWVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0ZW4sIGRpZSBmw7xyIGRhcyBBdHRyaWJ1dCBmw7xyIGRlbiBTdWNoYmlsZHNjaGlybSBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGxlbi4gQmVpc3BpZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmllcmVuIFNpZSBBY3Rpb25zLCBpbiBkZW5lbiBpbSBWZXJrbsO8cGZ0ZS1PYmpla3RlLVdpZGdldCBlaW4gRWluc3RlbGx1bmdlbi1Lbm9wZiB2ZXJmw7xnYmFyIHNlaW4gc29sbCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBCaXR0ZSBiZWFjaHRlbiBTaWUsIGRhc3MgZsO8ciBkaWVzZSBBY3Rpb25zIGRpZSBmb2xnZW5kZW4gSlMtIHVuZCBDU1MtRGF0ZWllbiByZWdpc3RyaWVydCBzZWluIG3DvHNzZW46IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHVuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllcnQgZWluIFRlbXBsYXRlOjpUb29sa2l0LVNjaGVtYSBmw7xyIFZlcnNpb25zc3RyaW5ncy4gV2lyZCBudXIgdmVyd2VuZGV0LCB3ZW5uIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBhdWYgVGVtcGxhdGVUb29sa2l0IGVpbmdlc3RlbGx0IGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVyZSBlaW5lIFJlaWhlIHZvbiBCZWRpbmd1bmdlbiwgdW50ZXIgZGVuZW4gZWluIENvbmZpZyBJdGVtIMO2ZmZlbnRsaWNoIHNpY2h0YmFyIGlzdC4gRGVyIE5hbWUgaXN0IGRhcyBlaW56aWdlIFBmbGljaHRhdHRyaWJ1dC4gV2VubiBrZWluZSB3ZWl0ZXJlbiBPcHRpb25lbiBhbmdlZ2ViZW4gc2luZCwgc2luZCBhbGxlIENvbmZpZyBJdGVtcyBpbiBkaWVzZXIgS2F0ZWdvcmllIHNpY2h0YmFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVyZW4gU2llIGVpbmUgUmVpaGUgdm9uIEJlZGluZ3VuZ2VuLCB1bnRlciBkZW5lbiBlaW4gS3VuZGUgZWluIEtvbmZpZ3VyYXRpb25zb2JqZWt0IHNlaGVuIGRhcmYuIERpZSBCZWRpbmd1bmdlbiBrw7ZubmVuIG9wdGlvbmFsIGF1ZiBiZXN0aW1tdGUgS3VuZGVuZ3J1cHBlbiBiZXNjaHLDpG5rdCB3ZXJkZW4uIERlciBOYW1lIGlzdCBkYXMgZWluemlnZSBvYmxpZ2F0b3Jpc2NoZSBBdHRyaWJ1dC4gV2VubiBrZWluZSBhbmRlcmVuIE9wdGlvbmVuIGFuZ2VnZWJlbiB3ZXJkZW4sIHNpbmQgYWxsZSBLb25maWd1cmF0aW9uc29iamVrdGUgdW50ZXIgZGllc2VyIEthdGVnb3JpZSBzaWNodGJhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYmVuw7Z0aWd0ZW4gQmVyZWNodGlndW5nZW4genVtIEzDtnNjaGVuIHZvbiBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbXMgZHVyY2ggZGFzIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBiZW7DtnRpZ3RlbiBCZXJlY2h0aWd1bmdlbiwgdW0gSVRTTS1Db25maWd1cmF0aW9uIEl0ZW1zIMO8YmVyIGRhcyBHZW5lcmljIEludGVyZmFjZSBhYnp1cnVmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGJlbsO2dGlndGVuIEJlcmVjaHRpZ3VuZ2VuLCB1bSBuYWNoIElUU00tQ29uZmlndXJhdGlvbiBJdGVtcyBtaXQgZGVtIEdlbmVyaWMgSW50ZXJmYWNlIHp1IHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgZXJmb3JkZXJsaWNoZW4gQmVyZWNodGlndW5nZW4genVtIEVpbnN0ZWxsZW4gdm9uIElUU00tS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gw7xiZXIgZGllIGdlbmVyaXNjaGUgU2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyDDnGJlcnNpY2h0c21vZHVsIHVtIGRpZSAiS2xlaW4iLUFuc2ljaHQgZWluZXIgQ29uZmlndXJhdGlvbiBJdGVtcy1MaXN0ZSBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIG9iIGRpZSBCZXNjaHJpZnR1bmdlbiBkZXIgVmVyYmluZHVuZ3N0eXBlbiBpbiBkZW4gS25vdGVudmVyYmluZHVuZ2VuIGFuZ2V6ZWlndCB3ZXJkZW4gbcO8c3Nlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCByZWd1bMOkcmUgQXVzZHLDvGNrZSBpbmRpdmlkdWVsbCBmw7xyIGplZGVzIENvbmZpZ3VyYXRpb24gSXRlbSwgdW0gZGVuIE5hbWVuIGRlcyBDb25maWd1cmF0aW9uIEl0ZW0genUgw7xiZXJwcsO8ZmVuIHVuZCBlbnRzcHJlY2hlbmRlIEZlaGxlcm1lbGR1bmdlbiBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgdmVyZsO8Z2JhcmVuIFNwYWx0ZW4gZGVyIENJcyBpbiBkZXIgS29uZmlndXJhdGlvbnPDvGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDSS1LbGFzc2UuIEplZGVyIEVpbnRyYWcgbXVzcyBhdXMgZWluZW0gS2xhc3Nlbm5hbWVuIHVuZCBlaW5lbSBBcnJheSB2b24gdmVyZsO8Z2JhcmVuIEZlbGRlcm4gZsO8ciBkaWUgZW50c3ByZWNoZW5kZSBLbGFzc2UgYmVzdGVoZW4uIER5bmFtaXNjaGUgRmVsZGVpbnRyw6RnZSBtw7xzc2VuIGRhcyBTY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSBlaW5oYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgS29uZmlndXJhdGlvbnNlcmdlYm5pc3NlcyBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgU3VjaGVyZ2Vibmlzc2VzIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlIG5hY2ggS29uZmlnLUVsZW1lbnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUtvbmZpZ3VyYXRpb25zYXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgS29uZmlndXJhdGlvbnMtU3VjaGVyZ2Vibmlzc2VzIGRpZXNlciBPcGVyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdMZWd0IGRpZSBTdGFuZGFyZHJlaWhlbmZvbGdlIGRlciBLb25maWd1cmF0aW9uc29iamVrdGUgaW4gZGVuIFN1Y2hlcmdlYm5pc3NlbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUgZmVzdC4gVXA6IMOkbHRlc3RlciBFaW50cmFnIG9iZW4uIE5hY2ggdW50ZW46IGRhcyBuZXVlc3RlIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkcmVpaGVuZm9sZ2UgZGVyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSBpbiBkZW4gU3VjaGVyZ2Vibmlzc2VuIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlLiBPYmVuOiDDpGx0ZXN0ZXIgRWludHJhZyBnYW56IG9iZW4uIFVudGVuOiBuZXVlc3RlIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3RlbiBTcGFsdGVuIGRlciBDSXMgaW4gZGVyIEtvbmZpZ3VyYXRpb25zw7xiZXJzaWNodCBpbiBBYmjDpG5naWdrZWl0IHZvbiBkZXIgQ0ktS2xhc3NlLiBKZWRlciBFaW50cmFnIG11c3MgYXVzIGVpbmVtIEtsYXNzZW5uYW1lbiB1bmQgZWluZW0gQXJyYXkgdm9uIHZlcmbDvGdiYXJlbiBGZWxkZXJuIGbDvHIgZGllIGVudHNwcmVjaGVuZGUgS2xhc3NlIGJlc3RlaGVuLiBEeW5hbWlzY2hlIEZlbGRlaW50csOkZ2UgbcO8c3NlbiBkYXMgU2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgZWluaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdMZWd0IGRpZSBTdGFuZGFyZHRpZWZlIGRlciBCZXppZWh1bmdlbiBmZXN0LCBkaWUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndGUgU3VjaGF0dHJpYnV0IGbDvHIgZGllIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNvYmpla3Rlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndGUgU3VjaGF0dHJpYnV0IGbDvHIgZGllIFN1Y2htYXNrZSBkZXMgS29uZmlndXJhdGlvbnNvYmpla3RzLiBCZWlzcGllbDogIktleSIgbXVzcyBkZW4gTmFtZW4gZGVzIGR5bmFtaXNjaGVuIEZlbGRlcyBlbnRoYWx0ZW4sIGluIGRpZXNlbSBGYWxsIFwnWFwnLCAiQ29udGVudCIgbXVzcyBkZW4gV2VydCBkZXMgZHluYW1pc2NoZW4gRmVsZGVzIGVudGhhbHRlbiwgYWJow6RuZ2lnIHZvbSBUeXAgZGVzIGR5bmFtaXNjaGVuIEZlbGRlcywgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB1bmQgb2RlciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLVVudGVyb2JqZWt0IGRlciBLbGFzc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSB2ZXJmw7xnYmFyZW4gU3BhbHRlbiBkZXIgQ0lzIGluIGRlciBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQgaW4gQWJow6RuZ2lna2VpdCB2b24gZGVyIENJLUtsYXNzZS4gSmVkZXIgRWludHJhZyBtdXNzIGF1cyBlaW5lbSBLbGFzc2VubmFtZW4gdW5kIGVpbmVtIEFycmF5IHZvbiB2ZXJmw7xnYmFyZW4gRmVsZGVybiBmw7xyIGRpZSBlbnRzcHJlY2hlbmRlIEtsYXNzZSBiZXN0ZWhlbi4gRHluYW1pc2NoZSBGZWxkZWludHLDpGdlIG3DvHNzZW4gZGFzIFNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIGVpbmhhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBIw7ZoZSBkZXIgUmljaFRleHQtRWRpdG9yIEtvbXBvbmVudGUuIEdlYmVuIFNpZSBlaW5lbiBaYWhsZW4tIChQaXhlbCkgb2RlciBQcm96ZW50d2VydCAocmVsYXRpdikgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgQW56YWhsIGRlciBaZWlsZW4gZsO8ciBkZW4gRWRpdG9yIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGVmaW5pdGlvbiBpbSBBZG1pbmlzdHJhdG9yLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBSZWloZW5mb2xnZSBkZXIgVm9yZmFsbHN0YXR1cyB2b24gaG9jaCAoYnNwdy4ga3JpdGlzY2gpIG5hY2ggbmllZHJpZyAoYnNwdy4gZnVua3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IHJlbGV2YW50ZSBWZXJ3ZW5kdW5nc3N0YXR1cywgaW4gZGVuZW4gdmVya27DvHBmdGUgVGlja2V0cyBkZW4gU3RhdHVzIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgYmVlaW5mbHVzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3VjaGxpbWl0IGbDvHIgZGllIElUU00gQ29uZmlndXJhdGlvbi1BbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3VjaGxpbWl0IGbDvHIgZGllIENvbmZpZ3VyYXRpb24gSXRlbXMtU3VjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdWNoZ3JlbnplIGbDvHIgZGVuIEJpbGRzY2hpcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdMZWd0IGRpZSBTdWNoZ3JlbnplIGbDvHIgZGVuIEJpbGRzY2hpcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBmZXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW4gZGVyIEtvbXBsZXhhbnNpY2h0IGRlciBWZXJrbsO8cGZ1bmdzdGFiZWxsZSBmw7xyIGFsbGUgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZW4uIFdlbm4gZXMga2VpbmVuIEVpbnRyYWcgZ2lidCwgd2VyZGVuIGRpZSBTdGFuZGFyZHNwYWx0ZW4gYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGluIGRlciBLb21wbGV4YW5zaWNodCBkZXIgVmVya27DvHBmdW5nc3RhYmVsbGUgYWJow6RuZ2lnIHZvbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZS4gRGVmaW5pZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodCBpbiBBYmjDpG5naWdrZWl0IHZvbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZS4gSmVkZW0gRWludHJhZyBtw7xzc2VuIGRlciBLbGFzc2VubmFtZSB1bmQgRG9wcGVscHVua3RlIHZvcmFuZ2VzdGVsbHQgd2VyZGVuICh6LkIuIENvbXB1dGVyOjo6KS4gRXMgZ2lidCBlaW5pZ2UgQ29uZmlndXJhdGlvbiBJdGVtLUF0dHJpYnV0ZSwgZGllIGFsbGVuIENvbmZpZ3VyYXRpb24gSXRlbXMgZ2VtZWluc2FtIHNpbmQgKEJlaXNwaWVsIGbDvHIgZGllIEtsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVW0gZWluemVsbmUgQ29uZmlndXJhdGlvbiBJdGVtLUF0dHJpYnV0ZSwgd2llIHNpZSBpbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLURlZmluaXRpb24gZGVmaW5pZXJ0IHNpbmQsIGRhcnp1c3RlbGxlbiwgbXVzcyBkYXMgZm9sZ2VuZGUgU2NoZW1hIHZlcndlbmRldCB3ZXJkZW4gKEJlaXNwaWVsIGbDvHIgZGllIEtsYXNzZSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpLYXBheml0w6R0OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6S2FwYXppdMOkdDo6MS4gV2VubiBlcyBrZWluZW4gRWludHJhZyBmw7xyIGVpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBnaWJ0LCB3ZXJkZW4gZGllIFN0YW5kYXJkc3BhbHRlbiBhbmdlemVpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgRWxlbWVudGUgaW4gZGVyIGRyaXR0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIGbDvHIgIkFjdGlvbiIgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0xlZ3QgZmVzdCwgd2VsY2hlIEVsZW1lbnRlIGluIGRlciBlcnN0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIHZlcmbDvGdiYXIgc2luZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgRWxlbWVudGUgaW4gZGVyIHp3ZWl0ZW4gRWJlbmUgZGVyIElUU00gQ29uZmlnIEl0ZW0gQUNMLVN0cnVrdHVyIHZlcmbDvGdiYXIgc2luZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgQXJ0IHZvbiBMaW5rIChhdXMgZGVyIFRpY2tldHBlcnNwZWt0aXZlIGJlbmFubnQpIGRlbiBTdGF0dXMgZWluZXMgdmVybGlua3RlbiBDSSBiZWVpbmZsdXNzZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcnQsIHdlbGNoZXIgVHlwIHZvbiBUaWNrZXQgZGVuIFN0YXR1cyBlaW5lcyB2ZXJrbsO8cGZ0ZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBiZWVpbmZsdXNzZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpc2llcnVuZyBkZXIgRGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGzDtnNjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRmFyYmUgVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpemllcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pc2NoZXMgRmVsZC1FcmVpZ25pc21vZHVsLCBkYXMgS29uZmlndXJhdGlvbnNkZWZpbml0aW9uZW4gYWxzIG5pY2h0IG1laHIgc3luY2hyb24gbWFya2llcnQsIHdlbm4gc2ljaCBkaWUgZGFyaW4gZW50aGFsdGVuZW4gZHluYW1pc2NoZW4gRmVsZGVyIMOkbmRlcm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaWUgYW5nZXplaWd0ZW4gRHluYW1pc2NoZW4gRmVsZGVyIGluIGRlciBBbnNpY2h0ICJ6dXPDpHR6bGljaGUgSVRTTS1GZWxkZXIiIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIEZlbGRlciwgZGllIGluIGRlciDDnGJlcnNpY2h0c21hc2tlIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNjaGUgRmVsZGVyLCBkaWUgaW4gZGVyIFN1Y2htYXNrZSBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUgZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZpZXJ0IGRpZSBGdW5rdGlvbiAiU2FtbWVsYWt0aW9uIiBmw7xyIGRhcyBBZ2VudGVuLUZyb250ZW5kLCB1bSB6dXIgZ2xlaWNoZW4gWmVpdCBhbiBtZWhyZXJlbiBDb25maWd1cmF0aW9uIEl0ZW1zIGFyYmVpdGVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmllcnQgZGllIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIG51ciBmw7xyIGRpZSBnZWxpc3RldGVuIEdydXBwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0VpbiBFcmVpZ25pc21vZHVsIGRhcyBiZWltIFZlcmtuw7xwZmVuIHZvbiBUaWNrZXRzIG1pdCBDb25maWd1cmF0aW9uIEl0ZW1zIGRlbiBTdGF0dXMgZGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgdmVyw6RuZGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmVsZGVyIGRlcyBLb25maWd1cmF0aW9uc2VsZW1lbnRpbmRleCwgZGllIGbDvHIgZGllIFZvbGx0ZXh0c3VjaGUgdmVyd2VuZGV0IHdlcmRlbi4gRmVsZGVyIHdlcmRlbiBlYmVuZmFsbHMgZ2VzcGVpY2hlcnQsIHNpbmQgYWJlciBmw7xyIGRpZSBHZXNhbXRmdW5rdGlvbmFsaXTDpHQgbmljaHQgendpbmdlbmQgZXJmb3JkZXJsaWNoLiBEaWUgQXVmbmFobWUgdm9uIEFuaMOkbmdlbiBrYW5uIGRlYWt0aXZpZXJ0IHdlcmRlbiwgaW5kZW0gZGVyIEVpbnRyYWcgYXVmIDAgZ2VzZXR6dCBvZGVyIGdlbMO2c2NodCB3aXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnSW0gSW5kZXggZGVyIEtvbmZpZ3VyYXRpb25zZWxlbWVudGUgZ2VzcGVpY2hlcnRlIEZlbGRlciwgZGllIG5lYmVuIGRlciBWb2xsdGV4dHN1Y2hlIGF1Y2ggZsO8ciBhbmRlcmUgWndlY2tlIHZlcndlbmRldCB3ZXJkZW4uIEbDvHIgZGllIHZvbGxzdMOkbmRpZ2UgRnVua3Rpb25hbGl0w6R0IHNpbmQgYWxsZSBGZWxkZXIgb2JsaWdhdG9yaXNjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLU1vZHVscmVnaXN0cmllcnVuZyBmw7xyIGRpZSBDb25maWdJdGVtRmV0Y2gtQXVmcnVmZXJzY2hpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtTW9kdWxyZWdpc3RyaWVydW5nIGbDvHIgZGllIENvbmZpZ0l0ZW1GZXRjaC1BdWZydWZlcnNjaGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtTW9kdWxyZWdpc3RyaWVydW5nIGbDvHIgZGllIENvbmZpZ0l0ZW1GZXRjaC1BdWZydWZlcnNjaGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnRWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00gQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnVm9yZmFsbFp1c3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NjaGxpZcOfdCBCZXJlaXRzdGVsbHVuZ3N6dXN0w6RuZGUgaW4gZGllIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTY2hsaWXDn3QgVm9yZmFsbHN6dXN0w6RuZGUgaW4gZGllIEtvbmZpZ3VyYXRpb25zc3VjaGUgZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICdFdmVudC1Nb2R1bCB6dXIgTGl6ZW56esOkaGx1bmcgdm9uIENvbmZpZyBJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCBkZXIgS29uZmlndXJhdGlvbnNvYmpla3RlLCBkaWUgaW0gRXJnZWJuaXMgZGllc2VyIE9wZXJhdGlvbiBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6dXIgw5xiZXJwcsO8ZnVuZyBkZXIgR3J1cHBlLCBkaWUgZsO8ciBlaW5lIEtsYXNzZSB2ZXJhbnR3b3J0bGljaCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwsIHVtIGRpZSBHcnVwcGUgenUgw7xiZXJwcsO8ZmVuLCBkaWUgZsO8ciBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIHZlcmFudHdvcnRsaWNoIGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB6dW0gR2VuZXJpZXJlbiB2b24gSVRTTS1Db25maWd1cmF0aW9uIEl0ZW0tU3RhdGlzdGlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVyIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuemFobCBkZXIgS29uZmlndXJhdGlvbnNwdW5rdGUsIGRpZSBhdWYgamVkZXIgU2VpdGUgZWluZXMgU3VjaGVyZ2Vibmlzc2VzIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIGRlciBLb25maWd1cmF0aW9uc3B1bmt0ZSwgZGllIGF1ZiBqZWRlciBTZWl0ZSBlaW5lcyBTdWNoZXJnZWJuaXNzZXMgaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGUsIG5hY2ggZGVuZW4gZ2VzdWNodCB3ZXJkZW4gc29sbCwgd2llIHZpZWxlIEVpbnRyw6RnZSB1bmQgd2VsY2hlIEF0dHJpYnV0ZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4gQ29uZmlnSXRlbS1BdHRyaWJ1dGUgbcO8c3NlbiBleHBsaXppdCDDvGJlciBFbGFzdGljc2VhcmNoIGdlc3BlaWNoZXJ0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw5xiZXJzaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBLYXRlZ29yaWVuIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU3BhbHRlbmZpbHRlciBkZXIga2xlaW5lbiBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQuIEJpdHRlIGJlYWNodGVuIFNpZTogV2VubiBTaWUgXCdBY3RpdmVcJyBhdWYgMCBzZXR6ZW4sIGvDtm5uZW4gQWdlbnRlbiBkaWUgRWluc3RlbGx1bmdlbiBkaWVzZXIgR3J1cHBlIG51ciBpbiBpaHJlbiBwZXJzw7ZubGljaGVuIFByw6RmZXJlbnplbiBiZWFyYmVpdGVuLCBBZG1pbmlzdHJhdG9yZW4ga8O2bm5lbiBqZWRvY2ggd2VpdGVyaGluIGRpZSBFaW5zdGVsbHVuZ2VuIGVpbmVzIGFuZGVyZW4gQmVudXR6ZXJzIGJlYXJiZWl0ZW4uIFZlcndlbmRlbiBTaWUgXCdQcmVmZXJlbmNlR3JvdXBcJywgdW0genUgc3RldWVybiwgaW4gd2VsY2hlbSBCZXJlaWNoIGRpZXNlIEVpbnN0ZWxsdW5nZW4gaW4gZGVyIEJlbnV0emVyb2JlcmZsw6RjaGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdGlvbiB2b24gRmFyYmVuIGbDvHIgVmVyd2VuZHVuZ3NzdGF0dXMgaW4gZGVuIHBlcnPDtm5saWNoZW4gRWluc3RlbGx1bmdlbiBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBWZXJ3ZW5kdW5nc3N0YXR1cyBpbiBkZW4gcGVyc8O2bmxpY2hlbiBFaW5zdGVsbHVuZ2VuIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgenVncmlmZnNiZXJlY2h0aWd0ZW4gQmVpc3BpZWxncnVwcGVuIGRlciBHZW5lcmFsIENhdGFsb2ctQXR0cmlidXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRhcyBOYW1lbnNtb2R1bCBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0a2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkYXMgTnVtbWVybm1vZHVsIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIFNlaXRlbiwgaW4gZGVuZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkYXMgVmVyc2lvbnNzdHJpbmdtb2R1bCBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0a2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGFzIFZlcnNpb25zdHJpbmctVGVtcGxhdGUtVG9vbGtpdC1Nb2R1bCBmw7xyIENvbmZpZy1JdGVtLUtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkZW4gVmVyc2lvbnMtVHJpZ2dlciBmw7xyIENvbmZpZy1JdGVtLUtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0JlcmVjaHRpZ3VuZ3NncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuIGbDvHIgZGllIFZlcndlbmR1bmcgZGVyIElUU00tS29uZmlndXJhdGlvbnNvYmpla3QtQW5ow6RuZ2Vha3Rpb24gaW4gZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVyIEtvbmZpZ3VyYXRpb24gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVyIFN1Y2hlIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4genVyIFZlcndlbmR1bmcgZGVzIElUU00tU3VjaGJpbGRzY2hpcm1zIGbDvHIgS29uZmlndXJhdGlvbnNlbGVtZW50ZSBpbiBkZXIgS3VuZGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuIGbDvHIgZGllIFZlcndlbmR1bmcgZGVyIElUU00tS29uZmlndXJhdGlvbnNiYXVtYW5zaWNodCBpbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBEZXRhaWxhbnNpY2h0IHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1bSBIaW56dWbDvGdlbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiB6dXIgVmVyd2VuZHVuZyBkZXMgSVRTTS1Lb25maWd1cmF0aW9uc2JpbGRzY2hpcm1zIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVtIEJlYXJiZWl0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBIaXN0b3JpZW4tQW5zaWNodCB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1bSBEcnVja2VuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gQ29uZmlndXJhdGlvbiBJdGVtcyBsw7ZzY2hlbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbXMgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU2V0dHp0IGRlbiBWb3JmYWxsc3RhdHVzIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgYXV0b21hdGlzY2gsIHdlbm4gZWluIFRpY2tldCBtaXQgZWluZW0gQ29uZmlndXJhdGlvbiBJdGVtIHZlcmtuw7xwZnQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXR6dCBkZW4gVmVyd2VuZHVuZ3NzdGF0dXMgaW4gZGVyIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIGbDvHIgQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0enQgZGVuIFZlcndlbmR1bmdzc3RhdHVzIGbDvHIgZGllIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIGbDvHIgQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgVmVya27DvHBmdW5nIGltIE1lbsO8LCBkaWUgZXMgZXJsYXVidCBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIG1pdCBlaW5lbSBhbmRlcmVuIE9iamVrdCBpbiBkZXIgRGV0YWlsYW5zaWNodCBkZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgenUgdmVya27DvHBmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGRpZSBWZXJrbsO8cGZ1bmcgenVyIEhpc3RvcmllIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGV0YWlsYW5zaWNodCBkaWUgVmVya27DvHBmdW5nIHp1ciBIaXN0b3JpZSBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gTMO2c2NoZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgYW4sIHVtIGRpZSBMaW5rcyB6dSBkZW4gS29uZmlndXJhdGlvbnNlbGVtZW50ZW4gaW4gZWluZXIgQmF1bWFuc2ljaHQgYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHVwbGl6aWVyZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkaWUgVmVya27DvHBmdW5nIHp1bSBEdXBsaXppZXJlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkaWUgVmVya27DvHBmdW5nIHp1bSBCZWFyYmVpdGVuIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgRGV0YWlsYW5zaWNodCBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW0gZWluZSBWZXJrbsO8cGZ1bmcgenVtIFp1csO8Y2tnZWhlbiBhdWYgZGllIHZvcmhlcmlnZSBBbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHJ1Y2tlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgVmVya27DvHBmdW5nIGltIE1lbsO8IGRlciBBbnNpY2h0ICJDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodCIsIHVtIHp1ciBEZXRhaWxhbnNpY2h0IGRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIHp1IGdlbGFuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBkaWUgQ29uZmlndXJhdGlvbiBJdGVtLUhpc3RvcmllICh1bWdla2VocnRlIFJlaWhlbmZvbGdlKSBpbSBBZ2VudGVuLUludGVyZmFjZSBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRGllIFN0YW5kYXJka2F0ZWdvcmllLCBkaWUgYW5nZXplaWd0IHdpcmQsIHdlbm4ga2VpbmUgS2F0ZWdvcmllIGF1c2dld8OkaGx0IGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0RlciBJZGVudGlmaWthdG9yIGbDvHIgZWluIENvbmZpZ3VyYXRpb24gSXRlbSwgYnNwdy4gIkNvbmZpZ0l0ZW0jIiAsICJNZWluQ29uZmlnSXRlbSMiLiBEZXIgU3RhbmRhcmQgaXN0ICJDb25maWdJdGVtIyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICdUaXRlbCBkZXIgw5xiZXJzaWNodCBkZXIgw7ZmZmVudGxpY2hlbiBPYmVyZmzDpGNoZSAoL3B1YmxpYy5wbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnVGl0ZWwgZGVyIFN1Y2hlIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlICgvcHVibGljLnBsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdMw7ZzdCBhdXRvbWF0aXNjaCBkZW4gQXVmcnVmIHZvbiBDb25maWdJdGVtRmV0Y2ggYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZy1BdXNkcnVjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZy1Nb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIEF1c2zDtnNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdEZWZpbmllcnQsIG9iIEZlbGRlciBhdXRvbWF0aXNjaCBiZWbDvGxsdCAoMSksIHVuZCBvYiBhdXRvbWF0aXNjaCBiZWbDvGxsdGUgRmVsZGVyIGluIGRlbiBUaWNrZXRmb3JtdWxhcmVuIGF1c2dlYmxlbmRldCB3ZXJkZW4gc29sbGVuICgyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnT2IgZGllIEF1c2bDvGhydW5nIHZvbiBDb25maWdJdGVtQUNMIGR1cmNoIMOcYmVycHLDvGZ1bmcgdm9uIHp3aXNjaGVuZ2VzcGVpY2hlcnRlbiBGZWxkYWJow6RuZ2lna2VpdGVuIHZlcm1pZWRlbiB3ZXJkZW4ga2Fubi4gRGllcyBrYW5uIGRpZSBMYWRlemVpdGVuIHZvbiBGb3JtdWxhcmVuIHZlcmJlc3Nlcm4sIG11c3MgYWJlciBkZWFrdGl2aWVydCB3ZXJkZW4sIHdlbm4gQUNMTW9kdWxlIGbDvHIgSVRTTUNvbmZpZ0l0ZW0tIHVuZCBGb3JtLVJldHVyblR5cGVzIHZlcndlbmRldCB3ZXJkZW4gc29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnRGllIGFsbGdlbWVpbmVuIEluZm9ybWF0aW9uZW4gd2VyZGVuIGluIGRlciBLb3BmemVpbGUgYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ0tsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdHbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdQb3N0LXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnUHJlLXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnUHJvZHVrdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IFpvbGwgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBab2xsICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgWm9sbCAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBab2xsICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktWm9sbC1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBab2xsICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IFpvbGwgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLVpvbGwtR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgWm9sbCAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLVpvbGwtR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgWm9sbCAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgWm9sbCAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgWm9sbCAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IFpvbGwgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgWm9sbCAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgWm9sbCAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgWm9sbCAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgWm9sbCAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgWm9sbCAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IFpvbGwgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBab2xsICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgWm9sbCAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgWm9sbCAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBab2xsICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IFpvbGwgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBab2xsICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgWm9sbCAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IFpvbGwgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IFpvbGwgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IFpvbGwgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgWm9sbCAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBab2xsICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IFpvbGwgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICdBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0J1Y2hoYWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICdCdWNoaGFsdHVuZ3NpbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmVzc3p1d2Vpc3VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnVmVyd2FsdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ2VzIFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICdBcGFjaGUtTGl6ZW56JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnR2Vyw6R0ZXR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnQlNELUxpemVueiAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlla2FwYXppdMOkdCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0Fra3UtVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnR2Viw6R1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1cy1TY2huaXR0c3RlbGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJ0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLUtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXppdMOkdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYXppdMOkdCBwcm8gR3JhZmlra2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYXJ0ZW5udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYXJ0ZW5sZXNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLYXJ0ZSBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0t1bmRlbi1aZXJ0aWZpa2F0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLdW5kZW4tU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2xpZW50LUthdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdUYWt0cmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVGFrdGZyZXF1ZW56JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDb2RlIFNpZ25pbmctWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuenRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdCZXJhdHVuZ3N2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IFZlcnRyaWVic3BhcnRuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdDb250YWluZXItVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1ZlcnRyYWdzYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnVmVydHJhZ3NkYXVlciB2b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnVmVydHJhZ3NkYXVlciBiaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnU2NobnVybG9zZXMgVGVsZWZvbiAoREVDVC1UZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLb3N0ZW50csOkZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQW56YWhsIGRlciBMaXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRXJzdGVsbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJ0NyZWF0aXZlIENvbW1vbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdCZW51dHplcmRlZmluaWVydGVzIEdlc3RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2aWVydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLVNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0dW0gZGVyIFJlY2hudW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXR1bSBkZXIgQmVzdGVsbHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0dW0gZGVyIELDvHJnc2NoYWZ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIGRlciBWZXLDtmZmZW50bGljaHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9rdW1lbnRlbnNpZ25hdHVyLVplcnRpZmlrYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICdFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1NYWlsLVplcnRpZmlrYXRlIChTL01JTUUtWmVydGlmaWthdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICdFaW5nZWJldHRldGUgU0lNIChlU0lNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQXJiZWl0c3ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmQtSVAtQWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0VuZGUgZGVyIFVudGVyc3TDvHR6dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVmVyZmFsbHNkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuZXMgRmVzdHBsYXR0ZW5sYXVmd2Vyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTY2h3dW5ncmFkLUVuZXJnaWVzcGVpY2hlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1mYWt0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZXZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnR1BMIChHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0FsbGdlbWVpbmUgSW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpa2thcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR3YXJlLU1vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIYXJkd2FyZSBHZXdpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdLb3BmaMO2cmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtUHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXTDpHRzLSB1bmQgWnVncmlmZnNtYW5hZ2VtZW50IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnUmVjaG51bmdzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELU1vbml0b3IgKEZsw7xzc2lna3Jpc3RhbGxhbnplaWdlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELU1vbml0b3IgKExpY2h0IGVtaXR0aWVyZW5kZSBEaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmVzdG5ldHp0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0JyZWl0ZW5ncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnU2NoaWNodCAxOiBQaHlzaWthbGlzY2hlIFNjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnU2NoaWNodCAyOiBEYXRlbnZlcmJpbmR1bmdzc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnU2NoaWNodCAzOiBOZXR6d2Vya3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnU2NoaWNodCAzOiBOZXR6d2Vya3NjaGljaHQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdTY2hpY2h0IDQ6IFRyYW5zcG9ydHNjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ1NjaGljaHQgNTogU2l0enVuZ3NzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1NjaGljaHQgNjogUHLDpHNlbnRhdGlvbnNzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnU2NoaWNodCA3OiBBbndlbmR1bmdzc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdQYWNodHZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaXplbnp2ZXJlaW5iYXJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJ0xpemVuemFuemFobCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpemVuenNjaGzDvHNzZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGl6ZW56LVR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGl6ZW56emVpdHJhdW0gdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGl6ZW56ZGF1ZXIgYmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtLUVpc2VuLVBob3NwaGF0LUFra3UgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbmVuLUFra3UgKExpLUlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdEYXJsZWhlbnN2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBbmdlc2llZGVsdCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMw6RuZ2VuZ3JhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdIZXJzdGVsbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbWFsZSBUcmFnZsOkaGlna2VpdCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnU3BlaWNoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdTcGVpY2hlciBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnTWljcm8tU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnSGFuZHludW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRWluZ2ViZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdCZXNjaHJlaWJ1bmcgZGVzIE1vZGVsbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvci1BdWZsw7ZzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3IgR3LDtsOfZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01hdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICdOYW5vLVNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0endlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0endlcmstSW5mb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHp3ZXJrLUluZm9ybWF0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHp3ZXJrc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1NZXRhbGxoeWRyaWQtQWtrdSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnVmVydHJhdWxpY2hrZWl0c3ZlcmVpbmJhcnVuZyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQW56YWhsIGRlciBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0FuemFobCBkZXIgUkFNLU1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdBbnphaGwgZGVyIEdyYWZpa2thcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1Nb25pdG9yIChPcmdhbmlzY2hlIExldWNodGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdCZXRyaWVic2tvc3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0ZWxsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnU29uc3RpZ2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdBdXNnw6RuZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNjaGFmdHNhYmtvbW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICdVbmJlZnJpc3RldGUgTGl6ZW56ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnVGVsZWZvbiAvIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnUnVmbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9uIFR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ1BoeXNpa2FsaXNjaGUgS2VybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHJvbWxpZWZlcnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnUHVibGljIERvbWFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdHZWthdWZ0IGJlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjay1UaWVmZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JlZ2FsZWluaGVpdGVuIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUmF1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1LYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdLYXVmdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdGVudGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdWZXJzY2hsb3NzZW5lIEJsZWktU8OkdXJlLUJhdHRlcmllIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICdTaXR6cGxhdHpsaXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW5udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyLVNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnRGllbnN0bGVpc3R1bmdzdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UtVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJ1NoYXJld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ0J1Y2hzZSBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1JlZG5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQtSVAtQWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnU3RvcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1NwZWljaGVyLVBhcnRpdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICdBYm9ubmVtZW50LWJhc2llcnRlIExpemVuemVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdOaWVkZXJsYXNzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdadXNhbW1lbmZhc3N1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUaGluIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVGhyZWFkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFmaWtrYXJ0ZW4tUkFNIGluc2dlc2FtdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIGluc2dlc2FtdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbi1Nb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVHVybSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLUh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLUhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICdWaXJ0dWVsbGVyIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLVRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnVm9sdW1lbmxpemVuemVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/el_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfOk861zr3Ouc66zqwgz4PPhM6/zrnPh861zq/OsSDOu861zrnPhM6/z4XPgc6zzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfOoc+FzrjOvM6vz4POtc65z4IgzrPOuc6xIM61zrnPg861z4HPh8+MzrzOtc69zrEgzrTOtc60zr/OvM6tzr3OsSDOsc6vz4TOt8+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ86hz4XOuM68zq/Pg861zrnPgiDOs865zrEgzrTOtc60zr/OvM6tzr3OsSDOtc6+zrXPgc+Hz4zOvM61zr3Ot8+CIM6xz4DOrM69z4TOt8+DzrfPgic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ86bzrXOuc+Ezr/Phc+BzrPOuc66z4wgz4PPjc+Dz4TOt868zrEgzrTOuc6xzrrOv868zrnPg8+Ezq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfOkc67zrvOsc6zzq4gzr/Pgc65z4POvM6/z40gzrrOu86sz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICfOkc67zrvOsc6zzq4gzr/Pgc65z4POvM6/z40gz4HPjM67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ86Uzq3Pg868zrXPgiDOus67zqzPg861z4nOvSBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfOlc60z44gzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM61zrnPg86xzrPOrM6zzrXPhM61IM60zq3Pg868zrXPgiDOus67zqzPg861z4nOvSBSZWFkeTJJbXBvcnQgz4DOv8+FIM+AzrHPgc6/z4XPg865zqzOts6/z4XOvSDPhM6xIM+AzrnOvyDPg8+Fzr3Ot864zrnPg868zq3Ovc6xIM+Dz4TOv865z4fOtc6vzrEgz4HPhc64zrzOr8+DzrXPic69LiDOoM6xz4HOsc66zrHOu86/z43OvM61IM+DzrfOvM61zrnPjs+Dz4TOtSDPjM+EzrkgzrXOvc60zq3Ph861z4TOsc65IM69zrEgzrHPgM6xzrnPhM6/z43Ovc+EzrHOuSDOus6sz4DOv865zrXPgiDPgM+Bz4zPg864zrXPhM61z4Igz4HPhc64zrzOr8+DzrXOuc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfOlc69zrfOvM6tz4HPic+Dzrcgz4XPhs65z4PPhM6szrzOtc69z4nOvSDOv869z4TOv8+Ezq7PhM+Jzr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICfOlc65z4POsc6zz4nOs86uIM+AzrHOus6tz4TPic69IM66zrvOrM+DzrXPic69IFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ29uZmlnIEl0ZW0gQ2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ86hz4zOu86/z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ86mzq/Ou8+Ez4HOvyDOs865zrEgz4TOrM6+zrXOuc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrzOuc6xIM66zrvOrM+DzrcgzrHPgM+MIM+EzrcgzrvOr8+Dz4TOsSDOs865zrEgzr3OsSDOtM63zrzOuc6/z4XPgc6zzq7Pg861z4TOtSDOrc69zrEgzr3Orc6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfOpM6szr7Otyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ86czrHOts65zrrOriDOtc69zq3Pgc6zzrXOuc6xIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnzprOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ86azrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnzqPPjc69zrTOtc+DzrzOv8+CIM+DzrUgzqzOu867zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ86czrcgzq3Os866z4XPgc6/z4IgzrHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ86fIM6xz4HOuc64zrzPjM+CIM61zr3PjM+CIM6szrvOu86/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOtSDPhM6/IM6/z4DOv86vzr8gzrjOsSDPg8+Fzr3OtM61zrjOtc6vLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ86Uzq/Ous+Ez4XOvyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOpM6/IM+Mzr3Ov868zrEgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ86kzr8gz4zOvc6/zrzOsSDPh8+BzrfPg865zrzOv8+Azr/Ouc61zq/PhM6xzrkgzq7OtM63IM6xz4DPjCDPhM6xIENvbmZpZ0l0ZW1zIM68zrUgz4TOv869IM6xzrrPjM67zr/Phc64zr8gzrHPgc65zrjOvM+MKC3Ov8+Fz4IpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM6tzrrOtM6/z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOkc+BzrnOuM68z4zPgiDOrc66zrTOv8+DzrfPgiDOsc+Fz4TOv8+NIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ86fIM6xz4HOuc64zrzPjM+CIM6tzrrOtM6/z4POt8+CIM+Hz4HOt8+DzrnOvM6/z4DOv865zrXOr8+EzrHOuSDOrs60zrcgzrHPgM+MIM+EzrEgQ29uZmlnSXRlbXMgzrzOtSDPhM6/zr0oz4TOv8+Fz4IpIM6xzrrPjM67zr/Phc64zr8oLc6/z4XPgikgzrHPgc65zrjOvM+MKC3Ov8+Fz4IpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnzprOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ86azrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ86Zz4PPhM6/z4HOuc66z4wgz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+COiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfOmc+Dz4TOv8+Bzq/OsSDOoM61z4HOuc61z4fPjM68zrXOvc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfOp8+Bz4zOvc6/z4IgzrTOt868zrnOv8+Fz4HOs86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfOoM+Bzr/Oss6/zrvOriDOts6/z4XOvCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgzqPPhM6/zrnPh861zq/OsSDOsc69zqwgz4POtc67zq/OtM6xJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfOlM61zr0gzrLPgc6tzrjOt866zrHOvSDOtM61zrTOv868zq3Ovc6xIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrHPhc+Ez4wgz4TOvyDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfOlc66z4TOrc67zrXPg863IM6xzr3Osc62zq7PhM63z4POt8+CJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgzrPOuc6xIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfOlc+Azq/PgM61zrTOvyDOss6szrjOv8+Fz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfOnM61zrPOrc64z4XOvc+DzrcvzqPOvM6vzrrPgc+Fzr3Pg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ86Vz4DOr8+EzrXPhc6+zrcgzrzOrc6zzrnPg8+Ezr/PhSDOtc+AzrnPgM6tzrTOv8+FIM+Dz4XOvc60zq3Pg861z4nOvSDOs865zrEgz4TOvyBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ86jz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ86kz4HOrc+Hzr/Phc+DzrEgzrrOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnzqTPgc6tz4fOv8+Fz4POsSDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ86kzrXOu861z4XPhM6xzq/OsSDOsc67zrvOsc6zzq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnzqTOtc67zrXPhc+EzrHOr86xIM6xzrvOu86xzrPOriDOsc+Az4wnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfOpM6xIENvbmZpZ0l0ZW1zIM+DzrHPgic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfOkc69zrHOts6uz4TOt8+DzrcgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ86YzrEgzrXOuc+DzrHPh864zr/Pjc69IM6/zrkgzrHOus+MzrvOv8+FzrjOtc+CIM66zrvOrM+DzrXOuc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ86YzrEgzrXOuc+DzrHPh864zr/Pjc69IM6/zrkgzrHOus+MzrvOv8+FzrjOv865IM+Bz4zOu86/zrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnzqPOt868zrXOuc+Oz4PPhM61IM+Mz4TOuSDOuM6xIM60zrfOvM65zr/Phc+BzrPOt864zr/Pjc69IM61z4DOr8+DzrfPgiDPhM6xIM6xzr3PhM6vz4PPhM6/zrnPh86xIM60z4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSDOus6xzrkgzr/OuSDOus67zqzPg861zrnPgiBHZW5lcmFsQ2F0YWxvZyDOus6xzrkgzrTOtc69IM+Fz4DOrM+Bz4fOtc65IM6xz4XPhM+MzrzOsc+EzrcgzrHPhs6xzq/Pgc61z4POty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfOmM6tzrvOtc+EzrUgzr3OsSDPgM+Bzr/Ph8+Jz4HOrs+DzrXPhM61Oyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfOp8+BzrXOuc6szrbOtc+Dz4TOtSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnzp8gzr/Pgc65z4POvM+Mz4IgzrTOtc69IM61zq/Ovc6xzrkgzq3Os866z4XPgc6/z4IgzrrOsc+EzrHOus61z4HOvM6xz4TOuc+DzrzPjM+CIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnzpXPgM65z4POus+Mz4DOt8+Dzrc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzq3Ph861zrkgzrTOv864zrXOryBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnzqfPgc61zrnOrM62zrXPg8+EzrUgz4TOv8+FzrvOrM+HzrnPg8+Ezr/OvSDOrc69zrEgzrXPgM65zrvOtc6zzrzOrc69zr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ86UzrXOvSDOrc+HzrXPhM61IM+Az4HPjM+DzrLOsc+DzrcgzrXOs86zz4HOsc+Gzq7PgiDPg861IM6xz4XPhM+MIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+COiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnzpTOtc69IM6tz4fOtc65IM6/z4HOuc+Dz4TOtc6vIM6/z4HOuc+DzrzPjM+CIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ86kzr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CICIlcyIgzrTOtc69IM6yz4HOrc64zrfOus61IM+Dz4TOtyDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnzpTOtc69IM68z4DPjM+BzrXPg861IM69zrEgzrTOuc6xzrPPgc6sz4jOtc65IM+Ezr8gY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ86UzrXOvSDOss+Bzq3OuM63zrrOtSDOrc66zrTOv8+DzrcgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzrTOr869zrXPhM6xzrkgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDOriBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IM66zrHOvM6vzrEgz4DPgc+Mz4POss6xz4POtyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCwgzrTOtc69IM60zq/Ovc61z4TOsc65IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDOuc+Dz4TOv8+BzrnOus+MLCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ86dzq3OvyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ86dzq3OsSDOrc66zrTOv8+DzrcgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4Igzr/OvM6szrTOtc+CIM60zrnOus6xzrnPic68zqzPhM+Jzr0gz4TOv8+FIM+AzrHPgc6xzrTOtc6vzrPOvM6xz4TOv8+CIM+Ez4nOvSDOs861zr3Ouc66z47OvSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+Ozr0gzrrOsc+EzrHOu8+MzrPOv8+FLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfOlc69zrfOvM6tz4HPic+DzrcgzrrOsc+EzqzPg8+EzrHPg863z4Igz4DOtc+BzrnPg8+EzrHPhM65zrrOv8+NIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgzrTOuc6xzrPPgc6sz4bOt866zrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfOoM+Bzr/Pg8+Ezq3OuM63zrrOtSDPg8+Nzr3OtM61z4POvM6/z4Igz4DPgc6/z4IgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfOlM65zrHOs8+BzrHPhs6uIM+Dz4XOvc60zq3Pg868zr/PhSDPgM+Bzr/PgiAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ86fIM6/z4HOuc+DzrzPjM+CIENvbmZpZ0l0ZW0gzrXOvc63zrzOtc+Bz47OuM63zrrOtSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnzozOvc6/zrzOsSDOtc69zrfOvM61z4HPic68zq3Ovc6/IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDPg8+Ezr/Ouc+HzrXOr86/LCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiDOs865zrEgz4TOvyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfOiM66zrTOv8+DzrcgJXMgzrTOuc6xzrPPgc6sz4bOt866zrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IENvbmZpZ0l0ZW1JRCDOriBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ86UzrXOvSDOvM+Azr/Pgc61zq8gzr3OsSDOtc68z4bOsc69zrnPg8+EzrXOryDPhM6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiwgzrTOtc69IM6tz4fOv8+Fzr0gzrTOv864zrXOryDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnzqTOvyBDb25maWdJdGVtSUQgJXMgzrTOtc69IM6yz4HOrc64zrfOus61IM+Dz4TOtyDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfPhM+Fz4DPic68zq3Ovc6/IM6xz4DPjCAlcyDPg8+Ezr8gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ86czrcgzq3Os866z4XPgc6/IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc6/zr3PhM6xzrkgzrTOuc66zrHOuc+OzrzOsc+EzrEgz4DPgc+Mz4POss6xz4POt8+CIM6zzrnOsSDOsc+Fz4TOriDPhM63zr0gzrrOu86sz4POtyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ86azrHOvc6tzr3OsSDOsc+Azr/PhM6tzrvOtc+DzrzOsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfOkc+Azr/PhM61zrvOrc+DzrzOsc+EzrEgzrHOvc6xzrbOrs+EzrfPg863z4IgzrHOvc+EzrnOus61zrnOvM6tzr3Ov8+FIENvbmZpZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gz4PPhM6/zrnPh861zq/OvywgzrTOtc69IM6tz4fOv8+Fzr0gzrTOv864zrXOryDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnzqTOvyBDb25maWdJdGVtIM60zrXOvSDOss+Bzq3OuM63zrrOtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnzpTOtc69IM6yz4HOrc64zrfOus6xzr0gzrXOus60z4zPg861zrnPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfOu861zrnPhM6/z4XPgc6zzrnOus+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfPgM+Bzr/Otc65zrTOv8+Azr/Or863z4POtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ8+AzrXPgc65z4PPhM6xz4TOuc66z4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86XIM66zrHPhM6sz4PPhM6xz4POtyDOsc69zqzPgM+Ez4XOvs63z4IgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOlyDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM6xz4XPhM6/z40gz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnzpTOtc69IM+Fz4DOrM+Bz4fOtc65IM6szrTOtc65zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnzqbOr867z4TPgc6/IM6szrrPhc+Bzr8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfOn865IM+AzrHPgc6xzrzOrc+Ez4HOv8+Fz4IgzrHOvc6xzrbOrs+EzrfPg863z4IgzrXOr869zrHOuSDOrM66z4XPgc61z4IhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnzpXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM66zrHPhM6sz4PPhM6xz4POt8+CIM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfOpM+Bzq3Ph86/zr0gz4DOtc+BzrnPg8+EzrHPhM65zrrPjCDOpM+Nz4DOv8+CIM66zrHPhM6sz4PPhM6xz4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ86czrXPhM6xzr7PjSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnzqDOtc+BzrnOv8+BzrnPg868zr/OryDOus67zqzPg863z4IgzrPOuc6xIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfOlc+AzrnOu86tzr7PhM61IM68zq/OsSDOriDPgM61z4HOuc+Dz4PPjM+EzrXPgc61z4IgzrrOu86sz4POtc65z4IgzrPOuc6xIM69zrEgz4DOtc+BzrnOv8+Bzq/Pg861z4TOtSDPhM6xIM61z4DOuc67zq3Ovs65zrzOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ86gzrXPgc65zr/Pgc65z4POvM6/zq8gzrrOu86sz4POt8+CIM6zzrnOsSDPhM6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ86Vz4DOuc67zq3Ovs+EzrUgzrzOr86xIM6uIM+AzrXPgc65z4PPg8+Mz4TOtc+BzrXPgiDOus67zqzPg861zrnPgiDOs865zrEgzr3OsSDPgM61z4HOuc6/z4HOr8+DzrXPhM61IM+EzrEgzrXPgM65zrvOrc6+zrnOvM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ86Uz4XOvc6xzrzOuc66z4wgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKM6IzrrOtM6/z4POtyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOsc69zrHPhs6/z4HOrM+CIM+Dz4XOvc60zq3Pg868zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfOlc6szr0gzrHPhc+Ezq4gzrcgz4PPjc69zrTOtc+DzrcgzrnPg8+Hz43Otc65IM6zzrnOsSDPhM6/IENvbmZpZ0l0ZW0gzq4gz4TOtyDPg8+EzrHPhM65zrrOriDOrc66zrTOv8+Dzrcgz4TOv8+FIM6xzr3PhM65zrrOtc65zrzOrc69zr/PhSDOsc69zrHPhs6/z4HOrM+CLiDOnyDPhc+Azr/Ou86/zrPOuc+DzrzPjM+CIM+EzrfPgiDPhM+Bzq3Ph86/z4XPg86xz4IgzrrOsc+EzqzPg8+EzrHPg863z4Igz4PPhc68zrLOrM69z4TOv8+CIM61zrrPhM61zrvOtc6vz4TOsc65IM68z4zOvc6/IM+DzrUgzrTPhc69zrHOvM65zrrOrc+CIM+Dz4XOvc60zq3Pg861zrnPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfOlc+AzrnOu86tzr7PhM61IM+Ezr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOvM61IM6yzqzPg863IM+Ezr8gzr/PgM6/zq/OvyDOuM6xIM6zzq/Ovc61z4TOsc65IM63IM6xzr3Osc62zq7PhM63z4POtyDPhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ86XIM6yzrHPg865zrrOriDOtM6/zrzOriDOtM61zr0gzrXOr869zrHOuSDOrc6zzrrPhc+BzrcuIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrTPjs+Dz4TOtSDOrc69zrEgaGFzaCDOvM61IM60zrXOtM6/zrzOrc69zrEgz4POtSDOvM6/z4HPhs6uIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnzpHPgM6xzrnPhM61zq/PhM6xzrkgzrcgzq3Ovc6xz4HOvs63IM+EzrfPgiDPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqzPgiBZQU1MIM68zrUgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnzpTOtc69IM6uz4TOsc69IM60z4XOvc6xz4TOriDOtyDOtc66zrrOsc64zqzPgc65z4POtyDPhM6/z4Ugz4DOr869zrHOus6xIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ86UzrXOvSDOss+Bzq3OuM63zrrOsc69IM+Dz4fOtc+EzrnOus6sIM60z4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ86UzrXOvSDOrs+EzrHOvSDOtM+Fzr3Osc+Ezq4gzrcgzrXOuc+DzrHOs8+JzrPOriDPg8+Ezr/OvSDPgM6vzr3Osc66zrEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfOlc65z4POrs+HzrjOt8+DzrHOvSAwIM6zz4HOsc68zrzOrc+CIM+Dz4TOv869IM+Azq/Ovc6xzrrOsSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnzpzOrc6zzrnPg8+Ezr/PgiDOsc+BzrnOuM68z4zPgiDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnzqPPhc68zrLOv867zr/Pg861zrnPgc6sIM6tzrrOtM6/z4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ86jz4bOrM67zrzOsSDPg8+FzrPPh8+Bzr/Ovc65z4POvM6/z40gz4TPic69IM6/z4HOuc+DzrzPjs69LiDOlc67zq3Os86+z4TOtSDPhM6/IM6xz4HPh861zq/OvyDOus6xz4TOsc6zz4HOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfOiM+HzrXPhM61IM6/z4HOuc+DzrzOv8+Nz4IgSVRTTUNvbmZpZ0l0ZW0gz4DOv8+FIM60zrXOvSDOtc6vzr3Osc65IM+Dz4XOs8+Hz4HOv869zrnPg868zq3Ovc6/zrkuIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrHOvc6xz4DPhM+Nzr7PhM61IM+EzrnPgiDOsc67zrvOsc6zzq3PgiDPhM+Jzr0gzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ86bzrXOuc+Ezr/Pjc+BzrPOt8+DzrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfOo8+Fzr3PhM6uz4HOt8+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfOoM65zrvPjM+Ezr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnzqDPgc6/zrPPgc6xzrzOvM6xz4TOuc+DzrzOrc69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnzpXPgM65z4POus61z4XOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnzqPPhc69z4TOsc6+zrnOv8+Nz4fOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ86Rzr3Osc+DzrrPjM+AzrfPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfOlM6/zrrOuc68zq4vUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ86Vz4DOuc+DzrrPjM+AzrfPg863IM66zrHOuSDOtc+AzrnOss61zrLOsc6vz4nPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ86VzrnPg86xzrPPic6zzq4gzrrOu86sz4POtc+Jzr0vz4HPjM67z4nOvSDOus6xzrkgz4TPic69IM+Dz4fOtc+EzrnOus+Ozr0gz4DOtc60zq/Pic69IM+Ezr/Phc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnzqDPgc6/zq3Ous+Fz4jOtSDPg8+GzqzOu868zrEgzrrOsc+Ezqwgz4TOt869IM61zrnPg86xzrPPic6zzq4gz4TOt8+CIM66zrvOrM+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIM6az4HPhc+Gz4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIM6VzrzPhs6xzr3Or862zrXPhM6xzrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ86Vz4DOuc+Ez4HOrc+AzrXOuSDOtc66z4TOtc+EzrHOvM6tzr3Otc+CIM+Dz4XOvc64zq7Ous61z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Az4HOrM66z4TOv8+BzrEuIM6czrUgzrHPhc+Ezq4gz4TOtyDOtM+Fzr3Osc+Ez4zPhM63z4TOsSDOvM+Azr/Pgc61zq/PhM61IM69zrEgzrHOvc6xzrbOt8+Ezq7Pg861z4TOtSDPgC7Phy4gz4TOvyDPjM69zr/OvM6xIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM61IM+Ezq3PhM6/zrnOv8+FIM61zq/OtM6/z4XPgiDPg8+Fzr3OuM6uzrrOtc+CIM+Mz4DPic+CICIoKmtleTEqJiYqa2V5MiopIiDOriAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ86Vz4DOuc+Ez4HOrc+AzrXOuSDOtc66z4TOtc+EzrHOvM6tzr3Otc+CIM+Dz4XOvc64zq7Ous61z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86xz4TPjs69LiDOnM61IM6xz4XPhM6uIM+EzrcgzrTPhc69zrHPhM+Mz4TOt8+EzrEgzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM6xzr3Osc62zrfPhM6uz4POtc+EzrUgz4Auz4cuIM+Ezr8gz4zOvc6/zrzOsSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOtSDPhM6tz4TOv865zr/PhSDOtc6vzrTOv8+Fz4Igz4PPhc69zrjOrs66zrXPgiDPjM+Az4nPgiAiKCprZXkxKiYmKmtleTIqKSIgzq4gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfOlc66z4fPic+BzrfOuM6tzr3PhM6xIENJcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSXMgz4DOv8+FIM6xzr3Osc+Ezq/OuM61zr3PhM6xzrkgz4PPhM63zr0gzrXPhM6xzrnPgc61zq/OsS3PgM61zrvOrM+EzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgz4DOv8+FIM6tz4fOv8+Fzr0gzrXOus+Hz4nPgc63zrjOtc6vIM+DzrUgz4fPgc6uz4PPhM63IM+AzrXOu86sz4TOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnzqHPhc64zrzOr8+DzrXOuc+CIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ86VzrvOrc6zzr7PhM61IM6zzrnOsSDOrc69zrEgzrzOv869zrHOtM65zrrPjCDPjM69zr/OvM6xIM68z4zOvc6/IM61zr3PhM+Mz4Igz4TOt8+CIM6vzrTOuc6xz4IgzrrOu86sz4POt8+CIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykgzq4gz4POtSDPgM6xzrPOus+Mz4POvM65zr8gzrXPgM6vz4DOtc60zr8gKFwnZ2xvYmFsXCcpLCDPgM+BzqzOs868zrEgz4DOv8+FIM+DzrfOvM6xzq/Ovc61zrkgz4zPhM65IM66zqzOuM61IM+Fz4DOrM+Bz4fOv869IENvbmZpZ0l0ZW0gzrvOsc68zrLOrM69zrXPhM6xzrkgz4XPgM+Mz4jOtyDOus6xz4TOrCDPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM6xzr3PhM65zrPPgc6sz4bPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnzpXPgM65zrvOrc6+z4TOtSDOvM65zrEgzrXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+EzrfOvSDOtc+AzrnOss6/zrvOriDOtc69z4zPgiDPg8+Hzq7OvM6xz4TOv8+CIM6/zr3Ov868zrHPhM6/zrTOv8+Dzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnzpXPgM65zrvOrc6+z4TOtSDOvM65zrEgzrXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+EzrfOvSDOtc+AzrnOss6/zrvOriDOtc69z4zPgiDOsc+BzrnOuM68zrfPhM65zrrOv8+NIM+Dz4XPg8+Ezq7OvM6xz4TOv8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM68zrnOsSDOtc69z4zPhM63z4TOsSDOs865zrEgz4TOt869IM61z4DOuc6yzr/Ou86uIM61zr3PjM+CIM+Dz4fOrs68zrHPhM6/z4Igz4PPhc68zrLOv867zr/Pg861zrnPgc6sz4IgzrXOus60z4zPg861z4nOvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgzrPOuc6xIM69zrEgzrXOvc61z4HOs86/z4DOv865zq7Pg861z4TOtSDPhM63IM60zrfOvM65zr/Phc+BzrPOr86xIM68zrnOsc+CIM69zq3Osc+CIM6tzrrOtM6/z4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM66zrHPhM63zrPOv8+Bzq/Otc+CIM6zzrnOsSDOvc6xIM6xzr3Osc64zq3Pg861z4TOtSDPg861IM6xz4XPhM6uIM+EzrfOvSDOus6xz4TOt86zzr/Pgc6vzrEgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnzqbOr867z4TPgc6xIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPg8+Ezq7Ou863z4IgzrPOuc6xIM+EzrfOvSDOlc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfOo8+Ezq7Ou861z4Igz4DOv8+FIM68z4DOv8+Bzr/Pjc69IM69zrEgz4bOuc67z4TPgc6xz4HOuc+Dz4TOv8+Nzr0gz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuIM6jzrfOvM61zq/Pic+Dzrc6IM6Vz4DOuc+Ez4HOrc+Azr/Ovc+EzrHOuSDOvM+Mzr3OvyDPhM6xIM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrrOsc65IM+EzrEgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfOo8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ86gz4HOv8+DzrjOrs66zrcgz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnzpXPgM61zr7Otc+BzrPOsc+Dzq/OsSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOnM6/zr3OrM60zrEgz4PPhc68zrLOrM69z4TPic69IM+Dz4TOv865z4fOtc6vzr/PhSDPgc+NzrjOvM65z4POt8+CIM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Azr/PhSDOtc+AzrnPhM+Bzq3PgM61zrkgz4TOt869IM66zrHPhM6xzrPPgc6xz4bOriDPg8+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ86czr/Ovc6szrTOsSDPg8+FzrzOss6szr3PhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM61zr3Ot868zrXPgc+Ozr3Otc65IM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOv869IM+Ez4HOrc+Hzr/Ovc+EzrEgzr/Pgc65z4POvM+MIM+Ezr/Phc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ86Izr7Ov860zr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfOlc66z4TPjc+Az4nPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ86hz43OuM68zrnPg863IM62zr/Phc68IM6xzr3PhM65zrrOtc65zrzOrc69zr/PhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfOlM61zr3OtM+BzrnOus6uIM+Az4HOv86yzr/Ou86uIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSDOiM66zrTOv8+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnzqTOsSBDb25maWdJdGVtcyDPhM+Jzr0gzrHOus+MzrvOv8+FzrjPic69IM66zrvOrM+DzrXPic69IM60zrXOvSDOuM6xIM6xz4DOv864zrfOus61z43Ov869z4TOsc65IM+Dz4TOvyDOtM65zrHOus6/zrzOuc+Dz4TOriBFbGFzdGljc2VhcmNoLiDOk865zrEgzr3OsSDOtc+GzrHPgc68zr/Pg8+EzrXOryDOsc+Fz4TPjCDPg861IM+Fz4DOrM+Bz4fOv869z4TOsSBDSSwgzrcgzrzOtc+EzqzOss6xz4POtyBDSSDPgM+Bzq3PgM61zrkgzr3OsSDOtc66z4TOtc67zrXPg8+EzrXOryDOvM6tz4PPiSDPhM63z4IgzrrOv869z4PPjM67zrHPgiwgzrzOtc+Ezqwgz4TOt869IM6xzrvOu86xzrPOriDOsc+Fz4TOrs+CIM+EzrfPgiDOtc+AzrnOu86/zrPOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfOpM6xIENvbmZpZ0l0ZW1zIM68zrUgz4TOuc+CIM6xzrrPjM67zr/Phc64zrXPgiDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM6xzr3OrM+Az4TPhc6+zrfPgiDOtM61zr0gzrjOsSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDPg8+Ezr8gzrTOuc6xzrrOv868zrnPg8+Ezq4gRWxhc3RpY3NlYXJjaC4gzpPOuc6xIM69zrEgzrXPhs6xz4HOvM6/z4PPhM61zq8gzrHPhc+Ez4wgz4POtSDPhc+AzqzPgc+Hzr/Ovc+EzrEgQ0lzLCDOtyDOvM61z4TOrM6yzrHPg863IENJIM+Az4HOrc+AzrXOuSDOvc6xIM61zrrPhM61zrvOtc+Dz4TOtc6vIM68zq3Pg8+JIM+EzrfPgiDOus6/zr3Pg8+MzrvOsc+CLCDOvM61z4TOrCDPhM63zr0gzrHOu867zrHOs86uIM6xz4XPhM6uz4Igz4TOt8+CIM61z4DOuc67zr/Os86uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ86Mz4HOuc6/IM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfOjM+BzrnOvyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOsc69zqwgz4POtc67zq/OtM6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnzpLOrM+DzrcgzrTOtc60zr/OvM6tzr3Pic69IM60zrnOsc+HzrXOr8+BzrnPg863z4IgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ86jz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM6xzrbOuc66zq7PgiDOvM6/zr3OrM60zrHPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOv865z4fOtc6vzr8gzrHOvc6xzrbOrs+EzrfPg863z4IgYmFja2VuZCByb3V0ZXIgz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ86UzrfOvM65zr/Phc+BzrPOr86xIM66zrHOuSDOtM65zrHPh861zq/Pgc65z4POtyDPhM+Jzr0gzr/Pgc65z4POvM+Ozr0gzrPOuc6xIM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ86UzrfOvM65zr/Phc+BzrPOtc6vIM61zrnPg865z4TOrs+BzrnOsSDOs865zrEgQ29uZmlnSXRlbXMgz4POtSDPg8+FzrPOus61zrrPgc65zrzOrc69zrEgz4fPgc6/zr3Ouc66zqwgz4POt868zrXOr86xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfOn865IM+AzrXOu86sz4TOtc+CIM68z4DOv8+Bzr/Pjc69IM69zrEgzrTOv8+Fzr0gzrnPg8+Ezr/Pgc65zrrOrc+CIM61zrrOtM+Mz4POtc65z4IgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ86fzrkgz4DOtc67zqzPhM61z4Igzq3Ph86/z4XOvSDPhM63IM60z4XOvc6xz4TPjM+EzrfPhM6xIM69zrEgzrXOvc6xzrvOu86sz4PPg86/zr3PhM6xzrkgz4fOtc65z4HOv866zq/Ovc63z4TOsSDOvM61z4TOsc6+z40gz4TPic69IM65z4PPhM6/z4HOuc66z47OvSDOtc66zrTPjM+DzrXPic69IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ86gz4HOv861z4DOuc67zrXOs868zq3Ovc6xIM60zrXOtM6/zrzOrc69zrEgz4DOv8+FIM64zrEgz4fPgc63z4POuc68zr/PgM6/zrnOv8+Nzr3PhM6xzrkgz4PPhM6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLiDOoM6xz4HOrM60zrXOuc6zzrzOsTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfOoM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OsSDOtM61zrTOv868zq3Ovc6xIM+Azr/PhSDOuM6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zr/Pjc69z4TOsc65IM+Dz4TOvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4gzqDOsc+BzqzOtM61zrnOs868zrE6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfOn8+BzrnPg868z4zPgiDOlc69zrXPgc6zzrXOuc+Ozr0gz4zPgM6/z4Ugzq3Ovc6xIM66zr/Phc68z4DOryDPgc+FzrjOvM6vz4POtc+Jzr0gzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zr8gz4PPhM6/IHdpZGdldCDPhM+Jzr0gz4PPhc69zrTOtc60zrXOvM6tzr3Pic69IM6xzr3PhM65zrrOtc65zrzOrc69z4nOvSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDOo863zrzOtc65z47Pg8+EzrUgz4zPhM65IM6xz4XPhM6tz4Igzr/OuSDOlc69zq3Pgc6zzrXOuc61z4Igz4DPgc6tz4DOtc65IM69zrEgzq3Ph86/z4XOvSDOus6xz4TOsc+Hz4nPgc6vz4POtc65IM+EzrEgzrHOus+MzrvOv8+FzrjOsSDOsc+Bz4fOtc6vzrEgSlMgzrrOsc65IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgzrrOsc65IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ86fz4HOuc+DzrzPjM+CIM61zr3PjM+CIM+Dz4fOrs68zrHPhM6/z4IgVGVtcGxhdGU6OlRvb2xraXQgzrPOuc6xIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrc+CIM6tzrrOtM6/z4POt8+CLiDOp8+BzrfPg865zrzOv8+Azr/Ouc61zq/PhM6xzrkgzrzPjM69zr8gzrHOvSDOtyDOtc69z4zPhM63z4TOsSBWZXJzaW9uIFN0cmluZyBNb2R1bGUgzq3Ph861zrkgzr/Pgc65z4PPhM61zq8gz4POtSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfOn8+Bzq/Pg8+EzrUgzq3Ovc6xIM+Dz43Ovc6/zrvOvyDPg8+Fzr3OuM63zrrPjs69IM+Fz4DPjCDPhM65z4Igzr/PgM6/zq/Otc+CIM61z4DOuc+Ez4HOrc+AzrXPhM6xzrkgz4POtSDOrc69zrHOvSDPgM61zrvOrM+Ezrcgzr3OsSDOtM61zrkgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4gzp/OuSDPg8+Fzr3OuM6uzrrOtc+CIM68z4DOv8+Bzr/Pjc69IM+Az4HOv86xzrnPgc61z4TOuc66zqwgzr3OsSDPgM61z4HOuc6/z4HOuc+Dz4TOv8+Nzr0gz4POtSDOv8+BzrnPg868zq3Ovc61z4Igzr/OvM6szrTOtc+CIM+AzrXOu86xz4TPjs69LiDOpM6/IM+Mzr3Ov868zrEgzrXOr869zrHOuSDPhM6/IM68z4zOvc6/IM+Fz4DOv8+Hz4HOtc+Jz4TOuc66z4wgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjC4gzpXOrM69IM60zrXOvSDOtM6/zrjOv8+Nzr0gzqzOu867zrXPgiDOtc+AzrnOu86/zrPOrc+CLCDPjM67zrEgz4TOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrjOsSDOtc6vzr3Osc65IM6/z4HOsc+Ezqwgz4PPhM6/IM+AzrvOsc6vz4POuc6/IM6xz4XPhM6uz4Igz4TOt8+CIM66zrHPhM63zrPOv8+Bzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrEgzrHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDOtM65zrHOs8+BzrHPhs6uIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gzrzOtSDPh8+Bzq7Pg863IM+EzrfPgiDOs861zr3Ouc66zq7PgiDOtM65zrXPgM6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrEgzrHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDOu86uz4jOtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM68zrUgz4fPgc6uz4POtyDPhM63z4IgzrPOtc69zrnOus6uz4IgzrTOuc61z4DOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6xIM6xz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDOvM61IM+Hz4HOrs+Dzrcgz4TOt8+CIM6zzrXOvc65zrrOrs+CIM60zrnOtc+AzrHPhs6uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOsSDOsc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM6/zr0gzrrOsc64zr/Pgc65z4POvM+MIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gzrzOtSDPh8+Bzq7Pg863IM+EzrfPgiDOs861zr3Ouc66zq7PgiDOtM65zrXPgM6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfOn8+Bzq/Ots61zrkgzrzOuc6xIM61zr3PjM+EzrfPhM6xIM61z4DOuc+DzrrPjM+AzrfPg863z4IgzrPOuc6xIM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+EzrfPgiDOvM65zrrPgc6uz4Igz4DPgc6/zrLOv867zq7PgiDOvM65zrHPgiDOu86vz4PPhM6xz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDOtc6szr0gzr/OuSDOtc+EzrnOus6tz4TOtc+CIM+Ez43PgM6/z4Ugz4PPhc69zrTOrc+DzrzOv8+FIM+Az4HOrc+AzrXOuSDOvc6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrnPgiDPg8+Fzr3OtM6tz4POtc65z4IgzrrPjM68zrLPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM66zrHOvc6/zr3Ouc66zq3PgiDOtc66z4bPgc6sz4POtc65z4Igzr7Otc+Hz4nPgc65z4PPhM6sIM6zzrnOsSDOus6szrjOtSDOus67zqzPg863IENvbmZpZ0l0ZW0gzrPOuc6xIM+Ezr/OvSDOrc67zrXOs8+Hzr8gz4TOv8+FIM6/zr3PjM68zrHPhM6/z4Igz4TOv8+FIENvbmZpZ0l0ZW0gzrrOsc65IM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+Ez4nOvSDOsc69z4TOr8+Dz4TOv865z4fPic69IM68zrfOvc+FzrzOrM+Ez4nOvSDPg8+GzqzOu868zrHPhM6/z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtM65zrHOuM6tz4POuc68zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6xzr3OrM67zr/Os86xIM68zrUgz4TOt869IM66zrHPhM63zrPOv8+Bzq/OsSBDSS4gzprOrM64zrUgzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4DPgc6tz4DOtc65IM69zrEgzrHPgM6/z4TOtc67zrXOr8+EzrHOuSDOsc+Az4wgzq3Ovc6xIM+Mzr3Ov868zrEgzrrOu86sz4POt8+CIM66zrHOuSDOrc69zrHOvSDPgM6vzr3Osc66zrEgzrTOuc6xzrjOrc+DzrnOvM+Jzr0gz4DOtc60zq/Pic69IM6zzrnOsSDPhM63zr0gzrHOvc+Ezq/Pg8+Ezr/Ouc+HzrcgzrrOu86sz4POty4gzp/OuSDOus6xz4TOsc+Hz4nPgc6vz4POtc65z4IgzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM+Bzq3PgM61zrkgzr3OsSDPhM63z4HOv8+Nzr0gz4TOvyDPg8+Hzq7OvM6xIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM+Dz4TOv865z4fOtc6vzr8gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gzrPOuc6xIM+EzrfOvSDPhM6xzr7Ouc69z4zOvM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOv8+FIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM63z4IgzrTOuc6xz4PPjc69zrTOtc+DzrfPgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDPg8+Ezr/Ouc+HzrXOr86/IM+AzrHPgc6xzrzOrc+Ez4HPic69IM6zzrnOsSDPhM63zr0gz4TOsc6+zrnOvc+MzrzOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Ezr/PhSDOsc+Azr/PhM61zrvOrc+DzrzOsc+Ezr/PgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgz4PPhM6/zrnPh861zq/OvyDPgM6xz4HOsc68zq3PhM+Bz4nOvSDOs865zrEgz4TOt869IM+EzrHOvs65zr3PjM68zrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM6/z4UgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6/z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM6xz4XPhM6uz4Igz4TOt8+CIM67zrXOuc+Ezr/Phc+BzrPOr86xz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOt869IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc63IM+DzrXOuc+Bzqwgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Dz4TOvyDOsc+Azr/PhM6tzrvOtc+DzrzOsSDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4DPgc6szrrPhM6/z4HOsS4gVXA6IM+Ezr8gz4DOsc67zrHOuc+Mz4TOtc+Bzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLiDOms6sz4TPiTogz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrfOvSDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OtyDPg861zrnPgc6sIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPg8+Ezr8gzrHPgM6/z4TOrc67zrXPg868zrEgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4gzqDOrM69z4k6IM+Ezr8gz4DOsc67zrHOuc+Mz4TOtc+Bzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLiDOms6sz4TPiTogz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4PPhM63zr0gzrrOv8+Bz4XPhs6uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3Otc+CIM61zrzPhs6xzr3Ouc62z4zOvM61zr3Otc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrHOvc6szrvOv86zzrEgzrzOtSDPhM63zr0gzrrOsc+EzrfOs86/z4HOr86xIENJLiDOms6szrjOtSDOus6xz4TOsc+Hz47Pgc63z4POtyDPgM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/PhM61zrvOtc6vz4TOsc65IM6xz4DPjCDOrc69zrEgz4zOvc6/zrzOsSDOus67zqzPg863z4IgzrrOsc65IM6tzr3Osc69IM+Azq/Ovc6xzrrOsSDOtM65zrHOuM6tz4POuc68z4nOvSDPgM61zrTOr8+Jzr0gzrPOuc6xIM+EzrfOvSDOsc69z4TOr8+Dz4TOv865z4fOtyDOus67zqzPg863LiDOn865IM66zrHPhM6xz4fPic+Bzq7Pg861zrnPgiDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrfPgc6/z43OvSDPhM6/IM+Dz4fOrs68zrEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gzrLOrM64zr/PgiDPg8+Hzq3Pg861z4nOvSDPgM6/z4UgzrjOsSDOtc68z4bOsc69zq/Ots61z4TOsc65Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDOtc68z4bOsc69zrnOts+MzrzOtc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDOtc68z4bOsc69zrnOts+MzrzOtc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6gzrHPgc6szrTOtc65zrPOvM6xOiAiS2V5IiDPgM+Bzq3PgM61zrkgzr3OsSDOrc+HzrXOuSDPhM6/IM+Mzr3Ov868zrEgz4TOv8+FIM60z4XOvc6xzrzOuc66zr/PjSDPgM61zrTOr86/z4Ugz4PPhM63zr0gz4DPgc6/zrrOtc65zrzOrc69zrcgz4DOtc+Bzq/PgM+Ez4nPg863IFwnWFwnLCAiQ29udGVudCIgz4DPgc6tz4DOtc65IM69zrEgzq3Ph861zrkgz4TOt869IM+EzrnOvM6uIM+Ezr/PhSDOtM+Fzr3Osc68zrnOus6/z40gz4DOtc60zq/Ov8+FIM6xzr3OrM67zr/Os86xIM68zrUgz4TOv869IM+Ez43PgM6/IM+Ezr/PhSDOtM+Fzr3Osc68zrnOus6/z40gz4DOtc60zq/Ov8+FLCBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0LSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDEtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjYtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwLCBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTMtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxLCBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjYtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjMtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OS0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5LFwnIM66zrHOuSDOriBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfOn8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDPhc+Azr/Osc69z4TOuc66zrXOr868zrXOvc6/IM+EzrfPgiDOus67zqzPg863z4IgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtM65zrHOuM6tz4POuc68zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6xzr3OrM67zr/Os86xIM68zrUgz4TOt869IM66zrHPhM63zrPOv8+Bzq/OsSBDSS4gzprOrM64zrUgzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4DPgc6tz4DOtc65IM69zrEgzrHPgM6/z4TOtc67zrXOr8+EzrHOuSDOsc+Az4wgzq3Ovc6xIM+Mzr3Ov868zrEgzrrOu86sz4POt8+CIM66zrHOuSDOrc69zrHOvSDPgM6vzr3Osc66zrEgzrTOuc6xzrjOrc+DzrnOvM+Jzr0gz4DOtc60zq/Pic69IM6zzrnOsSDPhM63zr0gzrHOvc+Ezq/Pg8+Ezr/Ouc+HzrcgzrrOu86sz4POty4gzp/OuSDOus6xz4TOsc+Hz4nPgc6vz4POtc65z4IgzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM+Bzq3PgM61zrkgzr3OsSDPhM63z4HOv8+Nzr0gz4TOvyDPg8+Hzq7OvM6xIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Nz4jOv8+CIM6zzrnOsSDPhM6/IM+Dz4TOv865z4fOtc6vzr8gz4TOv8+FIM61z4DOtc6+zrXPgc6zzrHPg8+Ezq4gz4DOu86/z43Pg865zr/PhSDOus61zrnOvM6tzr3Ov8+FIM6zzrnOsSDOsc+Fz4TOriDPhM63zr0gzr/OuM+Mzr3Oty4gzpXOuc+DzqzOs861z4TOtSDOsc+BzrnOuM68z4wgKHBpeGVscykgzq4gz4DOv8+Dzr/Pg8+EzrnOsc6vzrEgz4TOuc68zq4gKM+Dz4fOtc+EzrnOus6uKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr/OvSDOsc+BzrnOuM68z4wgz4TPic69IM6zz4HOsc68zrzPjs69IM6zzrnOsSDPhM6/zr0gzrXPgM61zr7Otc+BzrPOsc+Dz4TOriDOv8+BzrnPg868zr/PjSBDSSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDOtM65zrHPh861zq/Pgc65z4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOtyDPg861zrnPgc6sIM+Ez4nOvSDOus6xz4TOsc+Dz4TOrM+DzrXPic69IM+Dz4XOvM6yzqzOvc+Ez4nOvSDOsc+Az4wgz4XPiM63zrvOriAoz4Auz4cuIM66z4HOr8+DzrnOvM63KSDOrc+Jz4Igz4fOsc68zrfOu86uICjPgC7Phy4gzrvOtc65z4TOv8+Fz4HOs865zrrOrikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDPg8+HzrXPhM65zrrOrc+CIM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Mz4DOv8+FIM+EzrEgz4PPhc69zrTOtc60zrXOvM6tzr3OsSDOtc65z4POuc+Ezq7Pgc65zrEgzrzPgM6/z4HOv8+Nzr0gzr3OsSDOtc+AzrfPgc61zqzPg86/z4XOvSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Mz4HOuc6/IM6xzr3Osc62zq7PhM63z4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM61zrzPhs6xzr3Ouc62z4zOvM61zr3Otc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gz4DOv867z43PgM67zr/Ous63IM+Az4HOv86yzr/Ou86uIM+Ezr/PhSDPgM6vzr3Osc66zrEgz4PPhc69zrTOrc+DzrXPic69IM6zzrnOsSDPjM67zrXPgiDPhM65z4IgzrrOsc+EzrfOs86/z4HOr861z4IgQ0kuIM6VzqzOvSDOtM61zr0gz4XPgM6sz4HPh861zrkgzrrOsc+EzrHPh8+Oz4HOuc+DzrcsIM+Ez4zPhM61IM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDOv865IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc61z4Igz4PPhM6uzrvOtc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtc68z4bOsc69zrnOts+MzrzOtc69zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM+Azr/Ou8+Nz4DOu86/zrrOtyDPgM+Bzr/Oss6/zrvOriDPhM6/z4Ugz4DOr869zrHOus6xIM+Dz4XOvc60zq3Pg868z4nOvSwgzrHOvc6szrvOv86zzrEgzrzOtSDPhM63zr0gzrrOsc+EzrfOs86/z4HOr86xIENJLiDOms6szrjOtSDOtc6zzrPPgc6xz4bOriDPgM+Bzq3PgM61zrkgzr3OsSDOrc+HzrXOuSDPic+CIM+Az4HPjM64zrXOvM6xIM+Ezr8gz4zOvc6/zrzOsSDPhM63z4IgzrrOu86sz4POt8+CIM66zrHOuSDOtM65z4DOu86tz4IgzqzOvc+JIM66zrHOuSDOus6sz4TPiSDPhM61zrvOtc6vzrEgKM+ALs+HLiBDb21wdXRlcjo6OikuIM6lz4DOrM+Bz4fOv8+Fzr0gzrzOtc+BzrnOus6sIENJLUF0dHJpYnV0ZXMgz4DOv8+FIM61zq/Ovc6xzrkgzrrOv865zr3OrCDOs865zrEgz4zOu86xIM+EzrEgQ0kgKM+AzrHPgc6szrTOtc65zrPOvM6xIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gzpPOuc6xIM69zrEgzrXOvM+GzrHOvc65z4PPhM6/z43OvSDOvM61zrzOv869z4nOvM6tzr3OsSBDSS1BdHRyaWJ1dGVzIM+Mz4DPic+CIM6/z4HOr862zr/Ovc+EzrHOuSDPg8+Ezr/OvSBDSS1EZWZpbml0aW9uLCDPgM+Bzq3PgM61zrkgzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc63zrjOtc6vIM+Ezr8gzrHOus+MzrvOv8+FzrjOvyDPg8+Hzq7OvM6xICjPgM6xz4HOrM60zrXOuc6zzrzOsSDOs865zrEgz4TOt869IM66zrvOrM+DzrcgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gzpXOrM69IM60zrXOvSDPhc+AzqzPgc+HzrXOuSDOus6xz4TOsc+Hz47Pgc63z4POtyDOs865zrEgzrzOuc6xIM66zrvOrM+DzrcgQ0ksIM+Ez4zPhM61IM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDOv865IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc61z4Igz4PPhM6uzrvOtc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPgM6/zrnOsSDPg8+Ezr/Ouc+HzrXOr86xIM61zq/Ovc6xzrkgzrTOuc6xzrjOrc+DzrnOvM6xIM6zzrnOsSAizpTPgc6sz4POtyIgz4PPhM6/IM+Ez4HOr8+Ezr8gzrXPgM6vz4DOtc60zr8gz4TOt8+CIM60zr/OvM6uz4IgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6xIM+Dz4TOv865z4fOtc6vzrEgzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zrEgz4PPhM6/IM+Az4HPjs+Ezr8gzrXPgM6vz4DOtc60zr8gz4TOt8+CIM60zr/OvM6uz4IgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPgM6/zrnOsSDPg8+Ezr/Ouc+HzrXOr86xIM61zq/Ovc6xzrkgzrTOuc6xzrjOrc+DzrnOvM6xIM+Dz4TOvyDOtM61z43PhM61z4HOvyDOtc+Azq/PgM61zrTOvyDPhM63z4IgzrTOv868zq7PgiBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6/z4Igz4TPjc+Azr/PgiDPg8+Nzr3OtM61z4POt8+CICjOvM61IM+Mzr3Ov868zrEgzrHPgM+MIM+EzrfOvSDOv8+Az4TOuc66zq4gzrPPic69zq/OsSDPhM6/z4UgzrXOuc+DzrnPhM63z4HOr86/z4UpIM68z4DOv8+BzrXOryDOvc6xIM61z4DOt8+BzrXOrM+DzrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIM+Dz4XOvc60zrXOtM61zrzOrc69zr/PhSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4DOv865zr/PgiDPhM+Nz4DOv8+CIM61zrnPg865z4TOt8+Bzq/Ov8+FIM68z4DOv8+BzrXOryDOvc6xIM61z4DOt8+BzrXOrM+DzrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIM+Dz4XOvc60zrXOtM61zrzOrc69zr/PhSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfOlc69zrfOvM6tz4HPic+Dzrcgzr/Pgc65z4POvM6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ86UzrnOsc6zz4HOsc+Gzq4gz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfOp8+Bz47OvM6xIM66zrHPhM6sz4PPhM6xz4POt8+CIM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnzpTOuc+AzrvPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ86czr/Ovc6szrTOsSDPg8+FzrzOss6szr3PhM+Jzr0gzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM6/z4UgzrXPgM65z4POt868zrHOr869zrXOuSDPhM6/z4XPgiDOv8+BzrnPg868zr/Pjc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Jz4IgzrzOtyDPg8+FzrPPh8+Bzr/Ovc65z4POvM6tzr3Ov8+Fz4IsIM61zqzOvSDOsc67zrvOrM6+zr/Phc69IM+EzrEgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDPgM61z4HOuc6tz4fOv8+Fzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOv864z4zOvc63IM+Az4HPjM+DzrjOtc+Ez4nOvSDPgM61zrTOr8+Jzr0gSVRTTSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM63zr0gzr/OuM+Mzr3OtyDOtc+AzrnPg866z4zPgM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM63zr0gzr/OuM+Mzr3OtyDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnzpXOvc61z4HOs86/z4DOv865zrXOryDPhM63IM60z4XOvc6xz4TPjM+EzrfPhM6xIM68zrHOts65zrrOrs+CIM60z4HOrM+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOs865zrEgz4TOvyBmcm9udGVuZCDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsSDPjs+Dz4TOtSDOvc6xIM61z4HOs86szrbOtc+EzrHOuSDPg861IM+AzrXPgc65z4PPg8+Mz4TOtc+BzrEgzrHPgM+MIM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOsc+Fz4TPjM+Hz4HOv869zrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfOlyDOus6xz4TOrM+Dz4TOsc+DzrcgzrHOvc6sz4DPhM+Fzr7Ot8+CIM6xz4XPhM6/z40gz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ86Vzr3PjM+EzrfPhM6xIM+Dz4XOvM6yzqzOvc+Ezr/PgiDOs865zrEgzr3OsSDOv8+Bzq/Pg861z4TOtSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4Ugz4DOsc+BzrHOvM61z4TPgc6/z4DOv86vzrfPg863z4Igz4PPhM6/IM+Dz43Ovc60zrXPg868zr8gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnzqDOtc60zq/OsSDPhM6/z4UgzrXPhc+BzrXPhM63z4HOr86/z4Ugz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IsIM+Azr/PhSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43Ovc+EzrHOuSDOs865zrEgz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPgM67zq7Pgc6/z4XPgiDOus61zrnOvM6tzr3Ov8+FLiDOpM6xIM+AzrXOtM6vzrEgzrHPgM6/zrjOt866zrXPjc6/zr3PhM6xzrkgzrXPgM6vz4POt8+CLCDOsc67zrvOrCDOtM61zr0gzrXOr869zrHOuSDPhc+Azr/Ph8+BzrXPic+EzrnOus6sIM6zzrnOsSDPhM63IM+Dz4XOvc6/zrvOuc66zq4gzrvOtc65z4TOv8+Fz4HOs865zrrPjM+EzrfPhM6xLiDOlyDPg8+FzrzPgM61z4HOr867zrfPiM63IM+Ez4nOvSDPg8+Fzr3Ot868zrzOrc69z4nOvSDOvM+Azr/Pgc61zq8gzr3OsSDOsc+AzrXOvc61z4HOs86/z4DOv865zrfOuM61zq8gzrjOrc+Ezr/Ovc+EzrHPgiDPhM63zr0gzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4POtSAwIM6uIM60zrnOsc6zz4HOrM+Gzr/Ovc+EzqzPgiDPhM63zr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfOoM61zrTOr86xIM+Azr/PhSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDPg8+Ezr8gzrXPhc+BzrXPhM6uz4HOuc6/IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM66zrHOuSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43Ovc+EzrHOuSDOs865zrEgzqzOu867zrEgz4DPgc6szrPOvM6xz4TOsSDOtc66z4TPjM+CIM6xz4DPjCDPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+AzrvOrs+Bzr/Phc+CIM66zrXOuc68zq3Ovc6/z4UuIM6TzrnOsSDPhM63zr0gz4DOu86uz4HOtyDOu861zrnPhM6/z4XPgc6zzrnOus+Mz4TOt8+EzrEgz4zOu86xIM+EzrEgz4DOtc60zq/OsSDOtc6vzr3Osc65IM+Fz4DOv8+Hz4HOtc+Jz4TOuc66zqwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnzpXOs86zz4HOsc+Gzq4gzrzOv869zqzOtM6xz4IgR2VuZXJpY0ludGVyZmFjZSDOs865zrEgz4TOvyDOtc+Azq/PgM61zrTOvyDOtc+AzrnOus6xzrvOv8+NzrzOtc69zr/PhSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnzpXOs86zz4HOsc+Gzq4gzrzOv869zqzOtM6xz4IgR2VuZXJpY0ludGVyZmFjZSDOs865zrEgz4TOvyDOtc+Azq/PgM61zrTOvyDOtc+AzrnOus6xzrvOv8+NzrzOtc69zr/PhSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ86VzrPOs8+BzrHPhs6uIM68zr/Ovc6szrTOsc+CIEdlbmVyaWNJbnRlcmZhY2UgzrPOuc6xIM+Ezr8gzrXPgM6vz4DOtc60zr8gzrXPgM65zrrOsc67zr/Pjc68zrXOvc6/z4UgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfOlc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4HPhc64zrzOr8+DzrXPic69IElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOtc+BzrnOu86xzrzOss6szr3Otc65IM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrXPgc65zrvOsc68zrLOrM69zrXOuSDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM+Dz4XOvM6yzqzOvc+Ez4nOvSDPg8+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfOnM6tzrPOuc+Dz4TOv8+CIM6xz4HOuc64zrzPjM+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Azr/PhSDOuM6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+Ezr8gzrHPgM6/z4TOrc67zrXPg868zrEgzrHPhc+Ezq7PgiDPhM63z4IgzrvOtc65z4TOv8+Fz4HOs86vzrHPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfOlc69z4zPhM63z4TOsSDOs865zrEgz4TOv869IM6tzrvOtc6zz4fOvyDPhM63z4Igzr/OvM6szrTOsc+CIM+Azr/PhSDOtc6vzr3Osc65IM+Fz4DOtc+NzrjPhc69zrcgzrPOuc6xIM68zrnOsSDPhM6szr7Oty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfOlc69z4zPhM63z4TOsSDOs865zrEgz4TOv869IM6tzrvOtc6zz4fOvyDPhM63z4Igzr/OvM6szrTOsc+CIM+Azr/PhSDOtc6vzr3Osc65IM+Fz4DOtc+NzrjPhc69zrcgzrPOuc6xIM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnzpXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+EzrcgzrTOt868zrnOv8+Fz4HOs86vzrEgz4PPhM6xz4TOuc+Dz4TOuc66z47OvSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ86Mzr3Ov868zrEgzpXOvc+Mz4TOt8+EzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ86Vzr3PjM+EzrfPhM6xIM6xz4HOuc64zrzOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4HOuc64zrzPjM+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Azr/PhSDOuM6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg861IM66zqzOuM61IM+DzrXOu86vzrTOsSDOtc69z4zPgiDOsc+Azr/PhM61zrvOrc+DzrzOsc+Ezr/PgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM64zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+DzrUgzrrOrM64zrUgz4POtc67zq/OtM6xIM61zr3PjM+CIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ86Rzr3PhM65zrrOtc6vzrzOtc69zrEgzrPOuc6xIM+EzrEgzr/PgM6/zq/OsSDOuM6xIM6zzq/Ovc61zrkgzrHOvc6xzrbOrs+EzrfPg863LCDPgM+Mz4POtc+CIM66zrHPhM6xz4fPic+Bzq7Pg861zrnPgiDOus6xzrkgz4DOv865zrEgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrOrCDOuM6xIM61zrzPhs6xzr3Ouc+Dz4TOv8+Nzr0uIM6kzrEgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrOrCBDb25maWdJdGVtIM+Az4HOrc+AzrXOuSDOvc6xIM6xz4DOv864zrfOus61z43Ov869z4TOsc65IM+BzrfPhM6sIM68zq3Pg8+JIM+Ezr/PhSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfOlc+AzrnPg866z4zPgM63z4POty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4IgzrrOsc+EzrfOs86/z4HOr861z4Igz4TPic69IM66zrvOrM+DzrXPic69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrEgz4bOr867z4TPgc6xIM+Dz4TOrs67zrfPgiDPhM63z4IgzrXPgM65z4POus+Mz4DOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrzOuc66z4HOrs+CIM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6jzrfOvM61zq/Pic+Dzrc6IM63IM+Bz43OuM68zrnPg863IFwnQWN0aXZlXCcgz4POtSAwIM64zrEgzrXOvM+Azr/OtM6vz4POtc65IM68z4zOvc6/IM+Ezr/Phc+CIM+Az4HOrM66z4TOv8+BzrXPgiDOvc6xIM61z4DOtc6+zrXPgc6zzqzOts6/zr3PhM6xzrkgz4TOuc+CIM+Bz4XOuM68zq/Pg861zrnPgiDOsc+Fz4TOrs+CIM+EzrfPgiDOv868zqzOtM6xz4Igz4PPhM65z4Igz4DPgc6/z4PPic+AzrnOus6tz4Igz4TOv8+Fz4Igz4DPgc6/z4TOuc68zq7Pg861zrnPgiwgzrHOu867zqwgzrjOsSDOtc+AzrnPhM+Bzq3PiM61zrkgz4PPhM6/z4XPgiDOtM65zrHPh861zrnPgc65z4PPhM6tz4Igzr3OsSDOtc+AzrXOvs61z4HOs86szrbOv869z4TOsc65IM+EzrnPgiDPgc+FzrjOvM6vz4POtc65z4IgzrPOuc6xIM67zr/Os86xz4HOuc6xz4POvM+MIM6szrvOu86/z4Ugz4fPgc6uz4PPhM63LiDOp8+BzrfPg865zrzOv8+Azr/Ouc6uz4PPhM61IM+Ezr8gXCdQcmVmZXJlbmNlR3JvdXBcJyDOs865zrEgzr3OsSDOtc67zq3Os86+zrXPhM61IM+DzrUgz4DOv865zrEgz4DOtc+BzrnOv8+Hzq4gzrjOsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgzrHPhc+Ezq3PgiDOv865IM+Bz4XOuM68zq/Pg861zrnPgiDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPh8+Bzq7Pg8+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+Ezr8gz4fPgc+OzrzOsSDPhM+Jzr0gzrrOsc+EzrHPg8+EzqzPg861z4nOvSDOsc69zqzPgM+Ez4XOvs63z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4Igzr/OvM6szrTOtc+CIM60zrnOus6xzrnPic68zqzPhM+Jzr0gz4TOv8+FIM+AzrHPgc6xzrTOtc6vzrPOvM6xz4TOv8+CIM+Ez4nOvSDOs861zr3Ouc66z47OvSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+Ozr0gzrrOsc+EzrHOu8+MzrPOv8+FLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM63IM68zr/Ovc6szrTOsSDOv869z4zOvM6xz4TOv8+CIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrcgzrzOv869zqzOtM6xIM6xz4HOuc64zrzOv8+NIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM+DzrXOu86vzrTOtc+CICjPg8+EzrnPgiDOv8+Azr/Or861z4IgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrcgzrzOv869zqzOtM6xIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrM+CIM6tzrrOtM6/z4POt8+CIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOt869IM61zr3PjM+EzrfPhM6xIM61z4HOs86xzrvOtc65zr/OuM6uzrrOt8+CIM+Az4HOv8+Ez43PgM6/z4Ugz4PPhc68zrLOv867zr/Pg861zrnPgc6sz4Igzq3Ous60zr/Pg863z4IgzrPOuc6xIM+EzrnPgiDOus67zqzPg861zrnPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOt869IM61zr3Otc+BzrPOv8+Azr/Or863z4POtyDOrc66zrTOv8+DzrfPgiDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnzp/OvM6szrTOsSDOsc60zrXOuc+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM61zr3Orc+BzrPOtc65zrHPgiDPgM+Bzr/Pg86sz4HPhM63z4POt8+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM60zrXOvc60z4HOuc66zq7PgiDPgM+Bzr/Oss6/zrvOrs+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM68zrXOs86tzrjPhc69z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM63IM60zrnOtc+AzrHPhs6uIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM+Az4HOv8+DzrjOrs66zrfPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDOvM6xzrbOuc66z47OvSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDOtc+AzrXOvs61z4HOs86xz4POr86xz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM65z4PPhM6/z4HOuc66zr/PjSBJVFNNIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM+Az4HOv869z4zOvM65zrEgzrPOuc6xIM+EzrcgzrTOuc6xzrPPgc6xz4bOriDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4HPhc64zrzOr8+DzrXPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ86Rzr3Osc62zq7PhM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ86fz4HOr8+Dz4TOtSDOsc+Fz4TPjM68zrHPhM6xIM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM61zr3PjM+CIENJIM+Mz4TOsc69IM6tzr3OsSBUaWNrZXQgz4PPhc69zrTOrc61z4TOsc65IM68zrUgzq3Ovc6xIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgiDPg8+EzrfOvSDOv864z4zOvc63IM68zrHOts65zrrOrs+CIM+Az4HOv86yzr/Ou86uz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM+Dz4XOvM6yzqzOvc+Ezr/PgiDPg8+EzrfOvSDOv864z4zOvc63IM68zrHOts65zrrOrs+CIM+Az4HOv86yzr/Ou86uz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfPgM+Bzr/PgM6xz4HOsc6zz4nOs865zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPgM+Bz4zPg86yzrHPg863IM+Dz4TOvyDOuc+Dz4TOv8+BzrnOus+MIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Ezr/PhSDPgM61z4HOuc6yzqzOu867zr/Ovc+Ezr/PgiDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4DPgc+Mz4POss6xz4POtyDPg8+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOtyDOtM65zrHOs8+BzrHPhs6uIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM68zrXOs86tzrjPhc69z4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM+EzrfOvSDOtc68z4bOrM69zrnPg863IM+Ez4nOvSDPg8+Fzr3OtM6tz4POvM+Jzr0gz4TPic69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Jz4IgzrTOtc69zrTPgc65zrrOriDPgM+Bzr/Oss6/zrvOri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM6xzr3PhM65zrPPgc6xz4bOriDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDOtc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM+EzrfOvSDOsc69z4TOuc6zz4HOsc+Gzq4gzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM61z4DOtc6+zrXPgc6zzrHPg86vzrEgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgzr3OsSDOtc+AzrnPg8+Ez4HOrc+IzrXPhM61IM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM68zrXOs86tzrjPhc69z4POt8+CIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM61zrrPhM+Nz4DPic+DzrcgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM68zrXOs86tzrjPhc69z4POtyDPg861IM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDPhM6/IM65z4PPhM6/z4HOuc66z4wgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgKM6xzr3PhM6vz4PPhM+Bzr/Phs63IM+DzrXOuc+BzqwpIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfOlyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OtyDOus6xz4TOt86zzr/Pgc6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zrXPhM6xzrksIM61zqzOvSDOtM61zr0gzq3Ph861zrkgzrXPgM65zrvOtc6zzrXOryDOus6xzrzOr86xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnzqTOvyDOsc69zrHOs869z4nPgc65z4PPhM65zrrPjCDOs865zrEgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiwgz4Auz4cuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDOlyDPgM+Bzr/Otc+AzrnOu86/zrPOriDOtc6vzr3Osc65IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnzqDPgc6/zrrOsc67zrXOryDOsc+Fz4TPjM68zrHPhM6xIM+EzrfOvSDOtc+Azq/Ous67zrfPg863IENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnzojOus60zr/Pg863IFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ86IzrrOtM6/z4POtyBTdHJpbmcgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ86jzrrOsc69zrTOrM67zrcgzq3Ous60zr/Pg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ86VzqzOvSDOtyDOtc66z4TOrc67zrXPg863IM+Ezr/PhSBDb25maWdJdGVtQUNMIM68z4DOv8+BzrXOryDOvc6xIM6xz4DOv8+GzrXPhc+HzrjOtc6vIM68zrUgz4TOv869IM6tzrvOtc6zz4fOvyDPhM+Jzr0gzrXOvs6xz4HPhM6uz4POtc+Jzr0gz4TPic69IM+AzrXOtM6vz4nOvSDPgM6/z4Ugzq3Ph86/z4XOvSDOsc+Azr/OuM63zrrOtc+Fz4TOtc6vIM+Dz4TOt869IM+Az4HOv8+Dz4nPgc65zr3OriDOvM69zq7OvM63LiDOkc+Fz4TPjCDOvM+Azr/Pgc61zq8gzr3OsSDOss61zrvPhM65z47Pg861zrkgz4TOv8+Fz4Igz4fPgc+Mzr3Ov8+Fz4Igz4bPjM+Bz4TPic+DzrfPgiDPhM+Jzr0gz4bOv8+BzrzPjs69LCDOsc67zrvOrCDPgM+Bzq3PgM61zrkgzr3OsSDOsc+AzrXOvc61z4HOs86/z4DOv865zrfOuM61zq8sIM61zqzOvSDPgM+Bz4zOus61zrnPhM6xzrkgzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc63zrjOv8+Nzr0gQUNMTW9kdWxlcyDOs865zrEgSVRTTUNvbmZpZ0l0ZW0tIM66zrHOuSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnzqDOv865zrXPgiDOs861zr3Ouc66zq3PgiDPgM67zrfPgc6/z4bOv8+Bzq/Otc+CIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOtc+AzrnOus61z4bOsc67zq/OtM6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ866zrHPhM63zrPOv8+Bzq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfPgM6xzrPOus+Mz4POvM65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfOvM61z4TOsc+AzrHPgc6xzrPPic6zzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfPgM+Bzr/PgM6xz4HOsc6zz4nOs865zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnz4DOsc+BzrHOs8+JzrPOuc66z4wnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgzq/Ovc+Ez4POtc+CICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ86hzqzPhs65IDE5IM65zr3PhM+Dz47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnzqHOrM+GzrkgMjEgzrnOvc+Ez4PPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDOr869z4TPg861z4IgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICfOoc6sz4bOuSAyMyDOuc69z4TPg8+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IM6vzr3PhM+DzrXPgiAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgzq/Ovc+Ez4POtc+CICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSDOr869z4TPg861z4IgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgzq/Ovc+Ez4POtc+CICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSDOr869z4TPg861z4IgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IM6vzr3PhM+DzrXPgiAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgzq/Ovc+Ez4POtc+CICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDOr869z4TPg861z4IgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDOr869z4TPg861z4IgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgzq/Ovc+Ez4POtc+CICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgzq/Ovc+Ez4POtc+CICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgzq/Ovc+Ez4POtc+CICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnzpvOv86zzrnPg8+EzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnzprOsc+EzrHOvc6/zrzOriDOtM65zrXPhc64z43Ovc+DzrXPic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfOlM65zrHPh861zrnPgc65z4PPhM6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnzpHOvc6xzrvOv86zzrnOus+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM+Dz4XPg866zrXPhc6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfOp8+Jz4HOt8+EzrnOus+Mz4TOt8+EzrEgzrzPgM6xz4TOsc+Bzq/Osc+CIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOvM+AzrHPhM6xz4HOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfOms+Ezq/Pgc65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ86UzrnOsc+Dz43Ovc60zrXPg863IM60zrnOsc+NzrvOv8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnzprOsc+EzrfOs86/z4HOr86xIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnzqfPic+BzrfPhM65zrrPjM+EzrfPhM6xIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfOp8+Jz4HOt8+EzrnOus+Mz4TOt8+EzrEgzrHOvc6sIM66zqzPgc+EzrEgzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM66zqzPgc+EzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ86Rzr3Osc6zzr3Pjs+Dz4TOt8+CIM66zrHPgc+Ez47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM66zqzPgc+EzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgz4DOtc67zrHPhM+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnzpvOv86zzrnPg868zrnOus+MIM+AzrXOu86sz4TOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfOms6xz4TOt86zzr/Pgc6vzrEgz4DOtc67zqzPhM63JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ86hz4XOuM68z4zPgiDPgc6/zrvOv86zzrnOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfOpM6xz4fPjc+EzrfPhM6xIM+Bzr/Ou86/zrPOuc6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ86gzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIM+Fz4DOv86zz4HOsc+Gzq7PgiDOus+OzrTOuc66zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ86kzrfOu86tz4bPic69zr8gz4PPhc69zrTOuc6sz4POus61z4jOt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnzqPPhc68zrLOv8+FzrvOtc+Fz4TOuc66zq4gz4PPhc68z4bPic69zq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnzpXPgM65zrrOv865zr3Pic69zq/OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnzpXPgM65zrrOv865zr3Pic69zq7Pg8+EzrUgzrzOtSDPhM6/zr0gzrTOuc6xzr3Ov868zq3OsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ86UzrnOsc+HzrXOr8+BzrnPg863IM61zrzPgM6/z4HOtc+FzrzOsc+Ezr/Ous65zrLPic+Ezq/Pic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnzqPPjc68zrLOsc+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ86kz43PgM6/z4Igz4PPjc68zrLOsc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ86gzrXPgc6vzr/OtM6/z4Igz4PPjc68zrLOsc+DzrfPgiDOsc+Az4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnzqDOtc+Bzq/Ov860zr/PgiDPg8+NzrzOss6xz4POt8+CIM6tz4nPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfOkc+Dz43Pgc68zrHPhM6/IM+EzrfOu86tz4bPic69zr8gKM+EzrfOu86tz4bPic69zr8gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnzpzOv869zqzOtM6xIM66z4zPg8+Ezr/Phc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnzpHPgc65zrjOvM+Mz4IgzrHOtM61zrnPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDOtM63zrzOuc6/z4XPgc6zzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICfOoM+Bzr/Pg86xz4HOvM6/z4POvM6tzr3OvyDPgc6sz4bOuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDOms+BzrHPhM63zrzOrc69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1TZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM+Ezr/PhSDPhM65zrzOv867zr/Os86vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgz4DOsc+BzrHOs86zzrXOu86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgz4fOv8+Bzq7Os863z4POt8+CIM61zrPOs8+NzrfPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgzrrPhc66zrvOv8+Gzr/Pgc6vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnzpXPgM65z4TPgc6xz4DOrc62zrnOsSDOtc+AzrnPhs6szr3Otc65zrEgzrXPgc6zzrHPg86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgz4XPgM6/zrPPgc6xz4bOrs+CIM61zrPOs8+BzqzPhs+Jzr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICfOoc6sz4bOuSBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfOoM65z4PPhM6/z4DOv865zrfPhM65zrrOrCDOt867zrXOus+Ez4HOv869zrnOus6/z40gz4TOsc+Hz4XOtM+Bzr/OvM61zq/Ov8+FICjPgM65z4PPhM6/z4DOv865zrfPhM65zrrOrCBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ86jz43OvM6yzrHPg863IM61z4HOs86xz4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfOlM65zrXPjc64z4XOvc+DzrcgSVAgz4TOrc67zr/Phc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnzqTOrc67zr/PgiDPhM63z4Igz4PPhM6uz4HOuc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM67zq7Ovs63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ86Vzr7Pic+EzrXPgc65zrrPjM+CIM+DzrrOu863z4HPjM+CIM60zq/Pg866zr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ86kzrXOr8+Hzr/PgiDPgM+Bzr/Pg8+EzrHPg86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnzpHPgM6/zrjOrs66zrXPhc+DzrcgzrXOvc6tz4HOs861zrnOsc+CIM68zrUgzrnPgM+EzqzOvM61zr3OvyDPhM+Bzr/Ph8+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnzqDOsc+BzqzOs86/zr3PhM6xz4IgzrzOv8+Bz4bOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfOo8+FzrzPhs+Jzr3Or86xIEZyYW5jaGlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ86TzrXOvc65zrrOrc+CIM+AzrvOt8+Bzr/Phs6/z4HOr861z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfOms6sz4HPhM61z4IgzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnzprOrM+Bz4TOsSDOs8+BzrHPhs65zrrPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnzqXOu865zrrPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ86czr/Ovc+Ezq3Ou86/IM+FzrvOuc66zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfOks6sz4HOv8+CIM+FzrvOuc66zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnzpHOus6/z4XPg8+EzrnOus6sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnzqDPgc+Jz4TPjM66zr/Ou867zr8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnzpTOuc6xz4fOtc6vz4HOuc+Dzrcgz4TOsc+Fz4TPjM+EzrfPhM6xz4IgzrrOsc65IM+Az4HPjM+DzrLOsc+DzrfPgiAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnzpHPgc65zrjOvM+Mz4IgzrHPgM6/zrPPgc6xz4bOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDPhM65zrzOv867zr/Os86vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ86gzrvOt866z4TPgc6/zrvPjM6zzrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICfOn864z4zOvc63IExDRCAozp/OuM+Mzr3OtyDPhc6zz4HPjs69IM66z4HPhc+Dz4TOrM67zrvPic69KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnzp/OuM+Mzr3OtyBMRUQgKM60zq/Ov860zr/PgiDOtc66z4DOv868z4DOrs+CIM+Gz4nPhM+Mz4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ86jz4TOsc64zrXPgc+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnzqbOv8+BzrfPhM+Mz4Igz4XPgM6/zrvOv86zzrnPg8+Ezq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ86TzrXPic6zz4HOsc+GzrnOus+MIM+AzrvOrM+Ezr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSAxOiDOps+Fz4POuc66z4wgz4PPhM+Bz47OvM6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSAyOiDOo8+Ez4HPjs68zrEgzrbOtc+Nzr7Ot8+CIM60zrXOtM6/zrzOrc69z4nOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDM6IM6jz4TPgc+OzrzOsSDOtM65zrrPhM+Nzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfOlc+Azq/PgM61zrTOvyAzOiDOlc+Azq/PgM61zrTOvyDOtM65zrrPhM+Nzr/PhSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA0OiDOo8+Ez4HPjs68zrEgzrzOtc+EzrHPhs6/z4HOrM+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfOo8+Ez4HPjs68zrEgNTogzqPPhM+Bz47OvM6xIM+Dz4XOvc+MzrTOv8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA2OiDOo8+Ez4HPjs68zrEgz4DOsc+Bzr/Phc+Dzq/Osc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA3OiDOo8+Ez4HPjs68zrEgzrXPhs6xz4HOvM6/zrPOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzrzOr8+DzrjPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzqzOtM61zrnOsc+CIM+Hz4HOrs+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnzprOu861zrnOtM6vIM6szrTOtc65zrHPgiDPh8+Bzq7Pg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOrM60zrXOuc6xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ86gzrXPgc6vzr/OtM6/z4IgzqzOtM61zrnOsc+CIM6xz4DPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ86gzrXPgc6vzr/OtM6/z4IgzqzOtM61zrnOsc+CIM68zq3Ph8+BzrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ86cz4DOsc+EzrHPgc6vzrEgz4bPic+Dz4bOv8+BzrnOus6/z40gz4POuc60zq7Pgc6/z4UgzrvOuc64zq/Ov8+FIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnzpzPgM6xz4TOsc+Bzq/OsSDOuc+Mzr3PhM+Jzr0gzrvOuc64zq/Ov8+FIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnzqPPjc68zrLOsc+DzrcgzrTOsc69zrXOr86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ86Sz4HOr8+DzrrOtc+EzrHOuSDPg8+EzrfOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfOk861z4nOs8+BzrHPhs65zrrPjCDOvM6uzrrOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnzprOsc+EzrHPg866zrXPhc6xz4PPhM6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ86czq3Os865z4PPhM63IM+Hz4nPgc63z4TOuc66z4zPhM63z4TOsSDPhs6/z4HPhM6vzr/PhSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnzpzOvc6uzrzOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ86kz43PgM6/z4IgzrzOvc6uzrzOt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM66zrnOvc63z4TOv8+NIM+EzrfOu861z4bPjs69zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfOms65zr3Ot8+Ez4wvzrXOvc+Dz4nOvM6xz4TPic68zq3Ovc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnzpzOv869z4TOrc67zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfOoM61z4HOuc6zz4HOsc+Gzq4gzrzOv869z4TOrc67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfOkc69zqzOu8+Fz4POtyDOv864z4zOvc63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnzpzOrc6zzrXOuM6/z4Igzr/OuM+Mzr3Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnzqDOv869z4TOr866zrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ86Uzq/Ous+Ez4XOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CIM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CIM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfOlc+Azq/PgM61zrTOvyDOtM65zrrPhM+Nzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ86cz4DOsc+EzrHPgc6vzrEgzr3Ouc66zrXOu86vzr/PhS3Ous6xzrTOvM6vzr/PhSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfOnM+AzrHPhM6xz4HOr86xIM69zrnOus61zrvOr86/z4UtzrzOtc+EzrHOu867zrnOus6/z40gz4XOtM+BzrnOtM6vzr/PhSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnzqPPhc68z4bPic69zq/OsSDOvM63IM6xz4DOv866zqzOu8+Fz4jOt8+CIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnzqPOt868zrXOuc+JzrzOsc+EzqzPgc65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICfOkc+BzrnOuM68z4zPgiBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ86Rz4HOuc64zrzPjM+CIM68zr/Ovc6szrTPic69IFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfOkc+BzrnOuM68z4zPgiDOus6xz4HPhM+Ozr0gzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnzp/OuM+Mzr3OtyBPTEVEICjOv8+BzrPOsc69zrnOus6uIM60zq/Ov860zr/PgiDOtc66z4DOv868z4DOrs+CIM+Gz4nPhM+Mz4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ86bzrXOuc+Ezr/Phc+BzrPOuc66z4wgzrrPjM+Dz4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM+AzrHPgc6xzrPOs861zrvOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfOhs67zrvOsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnzojOvs6/zrTOv865JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzrXPhM6xzrnPgc65zrrOrs+CIM+Dz4fOrc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM+EzrfOu861z4bPjs69zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDPhM63zrvOtc+Gz47Ovc6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfOps+Fz4POuc66zr/OryDPgM+Fz4HOrs69zrXPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ86gzrHPgc6szrTOv8+DzrcgzrnPg8+Hz43Ov8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnzpHOs86/z4HOrM+Dz4TOt866zrUgz4PPhM6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfOks6szrjOv8+CIM+BzrHPhs65zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ86czr/Ovc6szrTOtc+CIFJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfOlM+JzrzOrM+EzrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ86azqzPgc+EzrEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ86jz43OvM6yzrHPg863IM+Az47Ou863z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ86Uzr/Pgc+Fz4bOv8+BzrnOus+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnzqPPhs+BzrHOs865z4POvM6tzr3OtyDOvM+AzrHPhM6xz4HOr86xIM68zr/Ou8+NzrLOtM6/z4Utzr/Ovs6tzr/PgiAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ86Rz43Ovs+Jzr0gzrHPgc65zrjOvM+Mz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnzpvOv86zzrnPg868zrnOus+MIM60zrnOsc66zr/OvM65z4PPhM6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSDPgM6xz4HOv8+Hzq7PgiDPhc+AzrfPgc61z4POuc+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfOlc+EzrnOus6tz4TOsSDPhc+AzrfPgc61z4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnzqTPjc+Azr/PgiDPhc+Azr/OtM6/z4fOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnzpvOv86zzrnPg868zrnOus+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnzp/OvM65zrvOt8+Ezq3Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfOms6xzr3Ov869zrnOus6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfOlM65zrXPjc64z4XOvc+DzrcgSVAgzq3Ovc6xz4HOvs63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ86Rz4DOv864zq7Ous61z4XPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnzpTOuc6xzrzOrc+BzrnPg868zrEgzrHPgM6/zrjOrs66zrXPhc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ86Yz4XOs86xz4TPgc65zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnzqDOtc+Bzq/Ou863z4jOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ86bzrXPgM+Ez4zPgiDPgM61zrvOrM+EzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnzp3Ors68zrHPhM6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ86jz4XOvc6/zrvOuc66zq4gzrzOvc6uzrzOtyBSQU0gzrrOrM+Bz4TOsc+CIM6zz4HOsc+GzrnOus+Ozr0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ86jz4XOvc6/zrvOuc66zq4gzrzOvc6uzrzOtyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnzp/OuM+Mzr3OtyDOsc+Gzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ86gz43Pgc6zzr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnzpTOuc6xzr3Ov868zq3Osc+CIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ86RzrrOv8+Fz4PPhM65zrrOrCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfOpM63zrvOrc+Gz4nOvc6/IFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/en_CA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmFsIG9wZXJhdGlvbiBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NoYW5nZSByb2xlIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3IgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW5jaWRlbnQgc3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0byBhbm90aGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ05ldHdvcmsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaW9uIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50IFN0YXRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3J5IENvbnRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aWV3JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnUnVuIFNlYXJjaCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IGZvciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRGVwdGggTGV2ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIEluL091dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdMYXN0IGNoYW5nZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGFzdCBjaGFuZ2VkIGJ5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnWW91ciBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIFNlYXJjaCc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdObyBhY2Nlc3MgaXMgZ2l2ZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmV3IHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBkZWxldGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1N1Ym5ldCBNYXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3ByaW50ZWQgYnkgJXMgYXQgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBDbGFzc0lEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdObyBSZXN1bHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5vdCBmb3VuZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTm8gdmVyc2lvbnMgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3dhcm5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gcGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdTaG93biBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnRGVwbG95bWVudCBTdGF0ZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWljIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdMaW5rIFJlZmVyZW5jaW5nIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5uZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYWlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gSGlkZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTaG93bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0Fzc2lnbmVkIENJcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIFNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZyBpdGVtIGhpc3RvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZyBpdGVtIHByaW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZyBpdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluaXRpb24gVXBkYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RlcGxveW1lbnQgU3RhdGUgQ29sb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOYW1lIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtYmVyIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaW9uIEdyb3VwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdTZWFyY2ggY29uZmlnIGl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2ZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktaW5jaCBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1pbmNoIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLWluY2ggUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYgaW5jaGVzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS41IGluY2hlcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCBpbmNoZXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40IGluY2hlcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIGluY2hlcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdBY2NvdW50aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRkcmVzcyBBbGxvY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0FwcGxpYW5jZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0JhdHRlcnkgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J1aWxkaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXMgSW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0eSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdDYXJkIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0NhcmQgUmVhZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0NhcmQgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2xpZW50IENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdDbGllbnQgU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2xpZW50IGNhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnQ29uZmVyZW5jZSBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0NvbnN1bHRpbmcgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0IERpc3RyaWJ1dG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnQ29udGFpbmVyIE1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnQ29udHJhY3QgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0NvbnRyYWN0IHBlcmlvZCBmcm9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0NvbnRyYWN0IHBlcmlvZCB1bnRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnQ29zdCB1bml0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQ291bnQgb2YgbGljZW5zZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0NyZWF0aW9uIERhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0N1c3RvbSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRlIG9mIEludm9pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGUgb2YgT3JkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdGUgb2YgV2FycmFudHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0ZSBvZiByZWxlYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdFbXBsb3ltZW50IENvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRW5kIElQIEFkZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdFbmQgb2Ygc3VwcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0V4cGlyeSBEYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm5hbCBIYXJkIERyaXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybSBGYWN0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdHZW5lcmFsIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhcGhpY3MgQ2FyZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYXBoaWNzIGNhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR3YXJlIE1vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0hhcmR3YXJlIFdlaWdodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIFByb3RvY29sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50b3J5IE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnSW52b2ljZSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLZXlib2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnTGFuZGxpbmUgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYXllciAxOiBQaHlzaWNhbCBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdMZWFzZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbnNlIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5zZSBLZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5zZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaWNlbnNlIHBlcmlvZCBmcm9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGljZW5zZSBwZXJpb2QgdW50aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMb2FuIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTG9jYXRlZCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdNYW51ZmFjdHVyZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTWVtb3J5IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxlIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsIERlc2NyaXB0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3IgUmVzb2x1dGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yIFNpemUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNb3VzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0d29yayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR3b3JrIEluZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHdvcmsgSW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHdvcmsgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTnVtYmVyIG9mIENQVXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ051bWJlciBvZiBncmFwaGljcyBjYXJkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdPcGVyYXRpbmcgY29zdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnT3JkZXIgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3RoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ091dHB1dHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNoaXAgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnUGhvbmUgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdQaG9uZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnUGh5c2ljYWwgQ29yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdQb3dlciBEZWxpdmVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ1B1cmNoYXNlZCBhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjayBEZXB0aCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2sgVW5pdHMgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSb29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIENhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIENlcnRpZmljYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1NhbGVzIENvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0ZSBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpYWxudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyIFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU2VydmljZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlIFRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdTb2NrZXQgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnU3BlYWtlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9yYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU3RvcmFnZSBQYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdTdWJzaWRpYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTdW1tYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1RocmVhZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbiBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG93ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBIdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/en_GB_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0dCX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmFsIG9wZXJhdGlvbiBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NoYW5nZSByb2xlIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3IgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRGVwbG95bWVudCBzdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaW5rIHRvIGFub3RoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbiBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RlcGxveW1lbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudCBTdGF0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yeSBDb250ZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1pvb20gdmlldyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgSXRlbXMgcGVyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdSdW4gU2VhcmNoJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEZXB0aCBMZXZlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1pvb20gSW4vT3V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0xhc3QgY2hhbmdlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYXN0IGNoYW5nZWQgYnknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdZb3VyIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gU2VhcmNoJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdOZWVkIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05vIGFjY2VzcyBpcyBnaXZlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOZXcgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBkZWxldGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdwcmludGVkIGJ5ICVzIGF0ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdJbnZhbGlkIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTm8gUmVzdWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5vdCBmb3VuZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTm8gdmVyc2lvbnMgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3dhcm5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gUGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdTaG93biBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnRGVwbG95bWVudCBTdGF0ZSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWljIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdMaW5rIFJlZmVyZW5jaW5nIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01haW50ZW5hbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5uZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYWlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gSGlkZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTaG93bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0Fzc2lnbmVkIENJcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIFNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZyBpdGVtIGhpc3RvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZyBpdGVtIHByaW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZyBpdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW5pdGlvbiBVcGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdEZXBsb3ltZW50IFN0YXRlIENvbG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWJlciBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2d1ZSBhdHRyaWJ1dGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaW9uIEdyb3VwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvbiBUcmlnZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpdmUnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LWluY2ggUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtaW5jaCBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1pbmNoIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy42IGluY2hlcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNSBpbmNoZXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjQgaW5jaGVzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuMyBpbmNoZXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjIgaW5jaGVzICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQWNjb3VudGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkZHJlc3MgQWxsb2NhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2cgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdBcHBsaWFuY2UgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJ5IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWlsZGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzIEludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBDbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdHkgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnQ2FyZCBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdDYXJkIFJlYWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdDYXJkIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NsaWVudCBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnQ2xpZW50IFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NsaWVudCBjYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0NvbmZlcmVuY2UgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdDb25zdWx0aW5nIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdCBEaXN0cmlidXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lciBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0NvbnRyYWN0IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdDb250cmFjdCBwZXJpb2QgZnJvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdDb250cmFjdCBwZXJpb2QgdW50aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0Nvc3QgdW5pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0NvdW50IG9mIGxpY2Vuc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdDcmVhdGlvbiBEYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdDdXN0b20gUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLVNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0ZSBvZiBJbnZvaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRlIG9mIE9yZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRlIG9mIFdhcnJhbnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGUgb2YgcmVsZWFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnRW1wbG95bWVudCBDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRW5kIG9mIHN1cHBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdFeHBpcnkgRGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuYWwgSGFyZCBEcml2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm0gRmFjdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnR2VuZXJhbCBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYXBoaWNzIENhcmRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFwaGljcyBjYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkd2FyZSBNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIYXJkd2FyZSBXZWlnaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBQcm90b2NvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudG9yeSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ludm9pY2UgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2V5Ym9hcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0xhbmRsaW5lIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYXllciAzOiBOZXR3b3JrIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTGVhc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5zZSBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2Vuc2UgS2V5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2Vuc2UgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zZSBwZXJpb2QgZnJvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2Vuc2UgcGVyaW9kIHVudGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTG9hbiBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0xvY2F0ZWQgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnTWFudWZhY3R1cmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ01lbW9yeSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsZSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxlL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbCBEZXNjcmlwdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yIFJlc29sdXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvciBTaXplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHdvcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0d29yayBJbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdOZXR3b3JrIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR3b3JrIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ051bWJlciBvZiBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ051bWJlciBvZiBSQU0gbW9kdWxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnT3BlcmF0aW5nIGNvc3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ09yZGVyIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ090aGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdPdXRwdXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJzaGlwIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1Bob25lIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnUGhvbmUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ1BoeXNpY2FsIENvcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnUG93ZXIgRGVsaXZlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdQdXJjaGFzZWQgYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JhY2sgRGVwdGgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrIFVuaXRzIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSBDYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYWxlcyBDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdGUgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWFsbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlciBTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZSBUYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnU29ja2V0IFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1NwZWFrZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUCBBZGRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9yYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU3RvcmFnZSBQYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdTdWJzaWRpYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTdW1tYXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1RocmVhZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbiBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG93ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBIdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/es_CO_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0NPX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgRWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBvciBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgY2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0FjY2nDs24gbWFzaXZhIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGVsIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdFbmxhY2UgYSBvdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIG5vIHbDoWxpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0VsIG7Dum1lcm8gZGUgb3RybyBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gZWwgcXVlIGVubGF6YXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUmVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIG5vbWJyZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbiBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTsO6bWVybyBkZSB2ZXJzacOzbiB5YSBlc3TDoSBlbiB1c28gcG9yIGVsIENvbmZpZ0l0ZW1zIGNvbiBlbCBzaWd1aWVudGUgbsO6bWVybyAocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpYSBkZSBDb25maWcgSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWEgQ29udGVuaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgRWxlbWVudG9zIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBkYXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNjaW9uZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgYsO6c3F1ZWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWwgZGUgcHJvZnVuZGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdBY2VyY2FyL0FsZWphcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfCoU5pdmVsIG3DoXhpbW8gZGUgZW5sYWNlcyBhbGNhbnphZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0RlbW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltbyBjYW1iaW8gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnU3VzIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGNsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBmdW5jaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVGVuZ2EgZW4gY3VlbnRhIHF1ZSB0YW1iacOpbiBzZSBjcmVhcsOhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgeSBsYXMgY2xhc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRpZW50ZXMgeSBxdWUgbm8gc2UgZWxpbWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfCv1F1aWVyZXMgY29udGludWFyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfCoU5lY2VzaXRhIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbmljacOzbiBubyBlcyB1biBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWaXNpw7NuIGdlbmVyYWw6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBpbmRpY2FkbyBuaW5nw7puIENvbmZpZ0l0ZW1JRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdOZWNlc2l0YSBhbCBtZW5vcyB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTm8gdGllbmUgYWNjZXNvIGRlIGVzY3JpdHVyYSBhIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfCoU5vIHNlIGhhIGRlZmluaWRvIGxhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gIiVzIiBubyBzZSBlbmN1ZW50cmEgZW4gbGEgYmFzZSBkZSBkYXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIHNlIGhhIHBvZGlkbyBib3JyYXIgZWwgY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ8KhTm8gc2UgaGEgZW5jb250cmFkbyBuaW5ndW5hIHZlcnNpw7NuIHBhcmEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBpbmRpY2EgbmluZ8O6biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIMKhbm8gc2UgZGEgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05vIHB1ZWRvIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCBubyB0ZW5nbyBkZXJlY2hvcyBkZSBhY2Nlc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOdWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGVsIGluY2lkZW50ZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0VubGFjZSBhICVzICh0eXBlPSVzKSBhw7FhZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnRW5sYWNlIGEgJXMgKHR5cGU9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pY2nDs24gZGUgQ29uZmlnSXRlbSBhY3R1YWxpemFkYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tYnJlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhY3R1YWxpemFkbyBkZSAiJXMiIGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzacOzbiAlcyBlbGltaW5hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaW5kaWNhIG5pbmfDum4gQ29uZmlnSXRlbUlEIG5pIFZlcnNpb25JRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgbm8gc2UgaGFuIGNvbmNlZGlkbyBkZXJlY2hvcyBkZSBhY2Nlc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY3VlbnRyYSBlbiBsYSBiYXNlIGRlIGRhdG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJlc28gcG9yICVzIGVuICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnwqFDbGFzc0lEIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBpbmRpY2EgbmluZ8O6biBDbGFzc0lELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05vIHNlIGhhbiBjb25jZWRpZG8gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhU2luIHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWd1cmFyIHJlc3VsdGFkb3MgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgwqFubyBzZSBkYW4gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBkZXNwbGllZ3VlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gdGllbmUgcGVybWlzb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIGVzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0VzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBUaXBvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgY2xhc2UgcGFyYSBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW7DoW1pY28gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdFc3TDoXRpY2EgKFZlcnNpw7NuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyZW5jaWEgZGUgZW5sYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NpIGVzdGUgZW5sYWNlIHNlIGFwbGljYSBhbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBvIGEgbGEgdmVyc2nDs24gZXN0w6F0aWNhIGRlbCBvYmpldG8gZGUgcmVmZXJlbmNpYS4gRWwgY8OhbGN1bG8gZGVsIGVzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBzw7NsbyBzZSByZWFsaXphIGVuIGxvcyBlbmxhY2VzIGRpbsOhbWljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNjaW9uZSBlbCBhdHJpYnV0byBwb3IgZWwgcXVlIHNlIGJ1c2NhcsOhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdMYSBlc3RydWN0dXJhIGJhc2Ugbm8gZXMgdsOhbGlkYS4gUG9yIGZhdm9yLCBwcm9wb3JjaW9uZSB1biBoYXNoIGNvbiBkYXRvcyBlbiBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRXMgbmVjZXNhcmlvIGNvbWVuemFyIGxhIGNhZGVuYSBZQU1MIGNvbiBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdObyBzZSBoYSBwb2RpZG8gcHVyZ2FyIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGNhbXBvcyBkaW7DoW1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdObyBzZSBoYSBwb2RpZG8gaW5zZXJ0YXIgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRhZGFzIDAgZmlsYXMgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ07Dum1lcm8gbcOheGltbyBkZSB1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzacOzbiBDYWRlbmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3IgYWwgc2luY3Jvbml6YXIgbGFzIGRlZmluaWNpb25lcy4gUG9yIGZhdm9yLCBjb21wcnVlYmUgZWwgcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGllbmUgZGVmaW5pY2lvbmVzIGRlIElUU01Db25maWdJdGVtIHF1ZSBubyBlc3TDoW4gc2luY3Jvbml6YWRhcy4gRGVzcGxpZWd1ZSBsb3MgY2FtYmlvcyBlbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgZGUgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdDYWR1Y2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbmltaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnQ29uc3VsdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1BydWViYXMvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc2nDs24gZ2VuZXJhbCB5IGNvbmZpcm1hY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXIgY2xhc2VzL3JvbGVzIHkgc3VzIGNhbXBvcyByZWxhY2lvbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdTZSBoYSBwcm9kdWNpZG8gdW4gZXJyb3IgZHVyYW50ZSBsYSBpbXBvcnRhY2nDs24gZGUgbGEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBPY3VsdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFNlIG11ZXN0cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGljaW9uZXMgZGUgYsO6c3F1ZWRhIGV4dGVuZGlkYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBDb24gZXN0YSBmdW5jacOzbiBwdWVkZSBidXNjYXIsIHBvciBlamVtcGxvLCBlbCBub21icmUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGNvbmRpY2lvbmVzIGNvbW8gIigqY2xhdmUxKiYmKmNsYXZlMiopIiBvICIoKmNsYXZlMSp8fCpjbGF2ZTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYW1wbGlhciBsYXMgY29uZGljaW9uZXMgZGUgYsO6c3F1ZWRhIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gZXN0ZSB0aXBvIGRlIGNvbmRpY2lvbmVzIGNvbW8gIigqY2xhdmUxKiYmKmNsYXZlMiopIiBvICIoKmNsYXZlMSp8fCpjbGF2ZTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0lDIGFzaWduYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdJQyBhc2lnbmFkb3MgYSBsYSBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNpZ25hZG9zIGFsIHVzdWFyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhY2nDs24gZGUgbGEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzY2EgdW4gbm9tYnJlIMO6bmljbyBzw7NsbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgYSBsYSBob3JhIGRlIGJ1c2NhciBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBub21icmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBudW3DqXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgY2FkZW5hcyBkZSB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRWxpamEgYXRyaWJ1dG9zIHBhcmEgYWN0aXZhciBsYSBjcmVhY2nDs24gZGUgdW5hIG51ZXZhIHZlcnNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdFbGlqYSBsYXMgY2F0ZWdvcsOtYXMgcXVlIGRlc2VhIGFzaWduYXIgYSBlc3RhIGNsYXNlIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGNvbHVtbmEgcGFyYSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW1uYXMgcXVlIHNlIHB1ZWRlbiBmaWx0cmFyIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIE5vdGE6IFNvbG8gc2UgcGVybWl0ZW4gYXRyaWJ1dG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiB5IGNhbXBvcyBkaW7DoW1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0NvbmZpZyBpdGVtIGFkZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBxdWUgcGVybWl0ZSBlbCByZWdpc3RybyBlbiBlbCBoaXN0b3JpYWwgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgYWN0dWFsaXphIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gYSBzdSBkZWZpbmljacOzbiBhY3R1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlnIGl0ZW0gcHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlndXJhciB6b29tIGRlIGVsZW1lbnRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdWaXN0YSBlbiDDoXJib2wgZGUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBkZSBsYXMgc2lndWllbnRlcyBjbGFzZXMgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBjb24gbG9zIHNpZ3VpZW50ZXMgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmFjacOzbiBFbGVtZW50byBMw61taXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmFjacOzbiBMw61taXRlIGRlIGVsZW1lbnRvcyBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZGF0b3MgZGUgZ2VzdGnDs24gZGUgbGEgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNw7NkdWxvIG1hc2l2byBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGJ1c2NhciBlbnJ1dGFkb3IgYmFja2VuZCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlZSB5IGdlc3Rpb25lIGxhcyBkZWZpbmljaW9uZXMgZGUgbG9zIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhIFRpY2tldHMgcGFyYSBDb25maWdJdGVtcyBlbiBtb21lbnRvcyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0xvcyBjbGllbnRlcyBwdWVkZW4gdmVyIGxhcyB2ZXJzaW9uZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0xvcyBjbGllbnRlcyB0aWVuZW4gbGEgcG9zaWJpbGlkYWQgZGUgY2FtYmlhciBtYW51YWxtZW50ZSBlbnRyZSB2ZXJzaW9uZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0b3MgcHJlZGV0ZXJtaW5hZG9zIHF1ZSBzZSB1dGlsaXphcsOhbiBlbiBlbCBhdHJpYnV0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD1hw7FvO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9w5psdGltbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0b3MgcG9yIGRlZmVjdG8gYSB1dGlsaXphciBlbiBlbCBhdHJpYnV0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgY29uZmlnLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5hIGFjY2lvbmVzIGRvbmRlIHVuIGJvdMOzbiBkZSBjb25maWd1cmFjacOzbiBlc3TDqSBkaXNwb25pYmxlIGVuIGVsIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZWpvIikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgYWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50IC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBjYWRlbmFzIGRlIHZlcnNpw7NuLiBTw7NsbyBzZSB1dGlsaXphIHNpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBzZSBlc3RhYmxlY2UgZW4gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGNvbmp1bnRvIGRlIGNvbmRpY2lvbmVzIGJham8gbGFzIGN1YWxlcyB1biBjbGllbnRlIHB1ZWRlIHZlciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4gTGFzIGNvbmRpY2lvbmVzIHB1ZWRlbiByZXN0cmluZ2lyc2Ugb3BjaW9uYWxtZW50ZSBhIGRldGVybWluYWRvcyBncnVwb3MgZGUgY2xpZW50ZXMuIEVsIG5vbWJyZSBlcyBlbCDDum5pY28gYXRyaWJ1dG8gb2JsaWdhdG9yaW8uIFNpIG5vIHNlIGVzcGVjaWZpY2EgbmluZ3VuYSBvdHJhIG9wY2nDs24sIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2Vyw6FuIHZpc2libGVzIGVuIGVzYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJvcGllZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBvYnRlbmVyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgYnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgZXN0YWJsZWNlciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSB1dGlsaXphbmRvIGxhIEludGVyZmF6IEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdmlzdGEgZ2VuZXJhbCBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgdW5hIGxpc3RhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBldGlxdWV0YXMgZGUgdGlwbyBkZSBlbmxhY2UgZGViZW4gbW9zdHJhcnNlIGVuIGxhcyBjb25leGlvbmVzIGRlIGxvcyBub2Rvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBleHByZXNpb25lcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzZSBDb25maWdJdGVtIHBhcmEgY29tcHJvYmFyIGVsIG5vbWJyZSBDb25maWdJdGVtIHkgbW9zdHJhciBsb3MgbWVuc2FqZXMgZGUgZXJyb3IgY29ycmVzcG9uZGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc3RhciBkZSB1biBub21icmUgZGUgY2xhc2UgeSB1bmEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0byBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zaXN0aXIgZW4gdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW4gYXJyYXkgZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgbGEgcHJvZnVuZGlkYWQgZGUgbGFzIHJlbGFjaW9uZXMgcXVlIHNlIG1vc3RyYXLDoW4gcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIkNsYXZlIiBkZWJlIHRlbmVyIGVsIG5vbWJyZSBkZWwgQ2FtcG8gRGluw6FtaWNvIGVuIGVzdGUgY2FzbyBcJ1hcJywgIkNvbnRlbmlkbyIgZGViZSB0ZW5lciBlbCB2YWxvciBkZWwgQ2FtcG8gRGluw6FtaWNvIGRlcGVuZGllbmRvIGRlbCB0aXBvIGRlIENhbXBvIERpbsOhbWljbywgVGV4dG86IFwnYSB0ZXh0XCcsIERlc3BsZWdhYmxlOiBcJzFcJywgRmVjaGEvSG9yYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTZWNvbmQ9NTk7XCcgeSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzdWJvYmpldG8gcG9yIGRlZmVjdG8gZGUgbGEgY2xhc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnN0YXIgZGUgdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW5hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgZGVsIGNvbXBvbmVudGUgZWRpdG9yIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgZXN0YSBwYW50YWxsYS4gSW50cm9kdXpjYSB1biBuw7ptZXJvIChww614ZWxlcykgbyB1biB2YWxvciBwb3JjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBuw7ptZXJvIGRlIGZpbGFzIGRlbCBlZGl0b3IgZGUgZGVmaW5pY2lvbmVzIENJIGVuIGxhIGludGVyZmF6IGRlIGFkbWluaXN0cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIGRlIGxvcyBlc3RhZG9zIGluY2lkZW50ZXMgZGUgYWx0byAocG9yIGVqZW1wbG8sIGNyaWNpdGFsKSBhIGJham8gKHBvciBlamVtcGxvLCBmdW5jaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIHJlbGV2YW50ZXMgZW4gbG9zIHF1ZSBsb3MgdGlja2V0cyB2aW5jdWxhZG9zIHB1ZWRlbiBhZmVjdGFyIGFsIGVzdGFkbyBkZSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMgcGFyYSB0b2RhcyBsYXMgY2xhc2VzIGRlIENJLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBDSXMgZW4gbGEgdmlzdGEgY29tcGxlamEgZGUgbGEgdGFibGEgZGUgZW5sYWNlcywgZGVwZW5kaWVuZG8gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGxsZXZhciBjb21vIHByZWZpam8gZWwgbm9tYnJlIGRlIGxhIGNsYXNlIHkgZG9zIHB1bnRvcyBkb2JsZXMgKHBvciBlamVtcGxvLCBPcmRlbmFkb3I6OikuIEhheSBhbGd1bm9zIENJLUF0cmlidXRvcyBxdWUgc29uIGNvbXVuZXMgYSB0b2RvcyBsb3MgQ0lzIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBhcmEgbW9zdHJhciBsb3MgQXRyaWJ1dG9zLUNJIGluZGl2aWR1YWxlcyB0YWwgeSBjb21vIHNlIGRlZmluZW4gZW4gbGEgRGVmaW5pY2nDs24tQ0ksIHNlIGRlYmUgdXRpbGl6YXIgZWwgc2lndWllbnRlIGVzcXVlbWEgKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBPcmRlbmFkb3IpOiBPcmRlbmFkb3I6OkRpc2NvRHVybzo6MSwgT3JkZW5hZG9yOjpEaXNjb0R1cm86OjE6OkNhcGFjaWRhZDo6MSwgT3JkZW5hZG9yOjpEaXNjb0R1cm86OjIsIE9yZGVuYWRvcjo6RGlzY29EdXJvOjoyOjpDYXBhY2lkYWQ6OjEuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEgcGFyYSB1bmEgY2xhc2UgQ0ksIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIHBhcmEgIkFjY2nDs24iIGVuIGVsIHRlcmNlciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgcHJpbWVyIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgc2VndW5kbyBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIGVubGFjZSAobm9tYnJhZG8gZGVzZGUgbGEgcGVyc3BlY3RpdmEgZGVsIHRpY2tldCkgcHVlZGUgYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kgZW5sYXphZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSB0aWNrZXQgcHVlZGUgYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kgdmluY3VsYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FjdHVhbGl6YWNpw7NuIGRlIGxhIGRlZmluaWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdCb3JyYXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSBDb2xvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBxdWUgbWFyY2EgbGFzIGRlZmluaWNpb25lcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyBubyBzaW5jcm9uaXphZGFzIHNpIGNhbWJpYW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBjb250aWVuZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgY2FtcG9zIElUU00gYWRpY2lvbmFsZXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgbW9zdHJhZGFzIGRlIGxvcyBDSXMgZW4gbGEgdmlzdGEgY29tcGxlamEgZGUgbGEgdGFibGEgZGUgZW5sYWNlcyBwYXJhIHRvZGFzIGxhcyBjbGFzZXMgZGUgQ0kuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEsIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2YSBsYSBmdW5jacOzbiBkZSBhY2Npw7NuIG1hc2l2YSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc8OzbG8gcGFyYSBsb3MgZ3J1cG9zIGRlIGxhIGxpc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgcGFyYSBlc3RhYmxlY2VyIGNvbmZpZ2l0ZW0tc3RhdHVzIGVuIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24sIHV0aWxpemFkb3MgcGFyYSBsYSBiw7pzcXVlZGEgZGUgdGV4dG8gY29tcGxldG8uIExvcyBjYW1wb3MgdGFtYmnDqW4gc2UgYWxtYWNlbmFuLCBwZXJvIG5vIHNvbiBvYmxpZ2F0b3Jpb3MgcGFyYSBsYSBmdW5jaW9uYWxpZGFkIGdlbmVyYWwuIExhIGluY2x1c2nDs24gZGUgYW5leG9zIHB1ZWRlIGRlc2FjdGl2YXJzZSBwb25pZW5kbyBsYSBlbnRyYWRhIGEgMCBvIGJvcnLDoW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcG9zIGFsbWFjZW5hZG9zIGVuIGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSB1dGlsaXphbiBwYXJhIG90cmFzIGNvc2FzIGFkZW3DoXMgZGUgbGFzIGLDunNxdWVkYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgbGEgZnVuY2lvbmFsaWRhZCBjb21wbGV0YSB0b2RvcyBsb3MgY2FtcG9zIHNvbiBvYmxpZ2F0b3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdSZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkb0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bHRhZG8gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSBjb21wcm9iYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW5hIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBjb21wcm9iYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZXN0YWTDrXN0aWNhcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21icmUgTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTcOzZHVsbyBudW3DqXJpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIG1vc3RyYXLDoW4gZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGRlYmVuIG1vc3RyYXJzZSBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZXRvcyBhIGJ1c2NhciwgY3XDoW50YXMgZW50cmFkYXMgeSBxdcOpIGF0cmlidXRvcyBtb3N0cmFyLiBMb3MgYXRyaWJ1dG9zIENvbmZpZ0l0ZW0gZGViZW4gYWxtYWNlbmFyc2UgZXhwbMOtY2l0YW1lbnRlIGEgdHJhdsOpcyBkZSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXNpw7NuIGdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGNvbG9yIGRlIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBncnVwb3MgZGUgcGVybWlzb3MgZGUgZWplbXBsbyBkZSBsb3MgYXRyaWJ1dG9zIGdlbmVyYWxlcyBkZWwgY2F0w6Fsb2dvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIGRlIG5vbWJyZXMgcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIG51bcOpcmljbyBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZWwga2l0IGRlIGhlcnJhbWllbnRhcyBkZSBwbGFudGlsbGFzIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBhY3RpdmFkb3IgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwbyBkZSBwZXJtaXNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBhY2Npw7NuIGRlIGFkanVudGFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSB2aXN0YSBkZSDDoXJib2wgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGFtcGxpYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGHDsWFkaXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gbWFzaXZhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlZGljacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZGVsIGhpc3RvcmlhbCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FsdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdEaXNwb3NpdGl2byBkZSBjb3BpYSBkZSBzZWd1cmlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdCdXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnRXN0YWJsZXpjYSBhdXRvbcOhdGljYW1lbnRlIGVsIGVzdGFkbyBkZSBpbmNpZGVuY2lhIGRlIHVuIENJIGN1YW5kbyBzZSB2aW5jdWxlIHVuIFRpY2tldCBhIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgZGVzcGxpZWd1ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgdmluY3VsYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIG90cm8gb2JqZXRvIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlbGltaW5hciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2aXN1YWxpemFyIGxvcyBlbmxhY2VzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyB1bmEgdmlzdGEgZW4gw6FyYm9sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdm9sdmVyIGF0csOhcyBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFtcGxpYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSBlbCBoaXN0b3JpYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIChvcmRlbiBpbnZlcnNvKSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXRlZ29yw61hIHBvciBkZWZlY3RvIHF1ZSBzZSBtdWVzdHJhLCBzaSBubyBzZSBzZWxlY2Npb25hIG5pbmd1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLCBwb3IgZWplbXBsbyBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUG9yIGRlZmVjdG8gZXMgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBY3RpdmEgYXV0b23DoXRpY2FtZW50ZSBlbCBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNpw7NuIGRlIGNhZGVuYSBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNw7NkdWxvIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnQWN0aXZhZG9yIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTaSBzZSBwdWVkZSBldml0YXIgbGEgZWplY3VjacOzbiBkZSBDb25maWdJdGVtQUNMIGNvbXByb2JhbmRvIGxhcyBkZXBlbmRlbmNpYXMgZGUgY2FtcG9zIGVuIGNhY2jDqS4gRXN0byBwdWVkZSBtZWpvcmFyIGxvcyB0aWVtcG9zIGRlIGNhcmdhIGRlIGxvcyBmb3JtdWxhcmlvcywgcGVybyBkZWJlIGRlc2FjdGl2YXJzZSBzaSBzZSB2YW4gYSB1dGlsaXphciBBQ0xNb2R1bGVzIHBhcmEgSVRTTUNvbmZpZ0l0ZW0tIHkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1w6kgaW5mb3JtYWNpw7NuIGdlbmVyYWwgc2UgbXVlc3RyYSBlbiBsYSBjYWJlY2VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2byc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwdWxnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHB1bGdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcHVsZ2FkYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcHVsZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwdWxnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3JlbWFsbGVyYSBkZSAyMSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDk3LDc5IGNtICgzOCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdFc3RhbnRlIGRlIDIzIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwdWxnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcHVsZ2FkYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHB1bGdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcHVsZ2FkYXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcHVsZ2FkYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHB1bGdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwdWxnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcHVsZ2FkYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHB1bGdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzEuMDAwIG1tICgzOSw0IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcHVsZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwdWxnYWRhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcHVsZ2FkYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcHVsZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcHVsZ2FkYXMgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwdWxnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHB1bGdhZGFzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcHVsZ2FkYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwdWxnYWRhcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwdWxnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXNpZ25hY2nDs24gZGUgZGlyZWNjaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsw6lmb25vIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRlIGFwYXJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdDYXBhY2lkYWQgZGUgbGEgYmF0ZXLDrWEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUaXBvIGRlIGJhdGVyw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnRWRpZmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmF6IGRlIGJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpZGFkIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWQgcG9yIHRhcmpldGEgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRhcmpldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWN0b3IgZGUgdGFyamV0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkZSB0YXJqZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3LDrWEgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdSZWxvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkIGRlIHJlbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZmlybWEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsw6lmb25vIGRlIGNvbmZlcmVuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBjb25zdWx0b3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ1DDs25nYXNlIGVuIGNvbnRhY3RvIGNvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGFyIGNvbiBlbCBkaXN0cmlidWlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBjb250ZW5lZG9yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkZSBjb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlbCBjb250cmF0byBkZXNkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZWwgY29udHJhdG8gaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsw6lmb25vIGluYWzDoW1icmljbyAodGVsw6lmb25vIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaWRhZCBkZSBjb3N0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1JlY3VlbnRvIGRlIGxpY2VuY2lhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRmVjaGEgZGUgY3JlYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdFc3RhbnRlcsOtYSBwZXJzb25hbGl6YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2Vydmlkb3IgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGZWNoYSBkZSBsYSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdGZWNoYSBkZWwgcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdGZWNoYSBkZSBsYSBnYXJhbnTDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRmVjaGEgZGUgcHVibGljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdFc2NyaXRvcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZmlybWEgZGUgZG9jdW1lbnRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ1JhY2sgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gKENlcnRpZmljYWRvcyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHRyYWJham8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmluIGRlIGxhIGF5dWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRmVjaGEgZGUgZXhwaXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc2NvIGR1cm8gZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0NvcnRhZnVlZ29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdBbG1hY2VuYW1pZW50byBkZSBlbmVyZ8OtYSBtZWRpYW50ZSB2b2xhbnRlIGRlIGluZXJjaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWN0b3IgZGUgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgZnJhbnF1aWNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBnZW5lcmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnVGFyamV0YXMgZ3LDoWZpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdUYXJqZXRhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbG8gZGUgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUGVzbyBkZWwgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0F1cmljdWxhcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlc3Rpw7NuIGRlIGlkZW50aWRhZGVzIHkgYWNjZXNvcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnRhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChwYW50YWxsYSBkZSBjcmlzdGFsIGzDrXF1aWRvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKGRpb2RvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBmaWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZCBkZSBjYXJnYSBtw6F4aW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgbcOzdmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZWwgbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdWNpw7NuIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWHDsW8gZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXTDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIGRlIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtaGlkcnVybyBtZXTDoWxpY28gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjdWVyZG8gZGUgY29uZmlkZW5jaWFsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0N1YWRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6FuaWNvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBleHBsb3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYWxpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgYXNvY2lhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N1bWluaXN0cm8gZGUgZW5lcmfDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWQgZGUgbGEgZXN0YW50ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnSGFiaXRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdUYXJqZXRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsw6lmb25vIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgcGxvbW8tw6FjaWRvIHNlbGxhZGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgc2VydmljaW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBlbmNodWZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRhdm9jZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnRXN0w6FuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aWNpw7NuIGRlIGFsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50ZSBsaWdlcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0hpbG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCBkZSBsYSB0YXJqZXRhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB0w6FjdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNjb3MgZGUgUlYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsw6lmb25vIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0PDoW1hcmEgd2ViJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/es_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgZGVmaW5pY2nDs24gZGUgbGEgQ2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgQ2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBJdGVtIGRlIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQWNjacOzbiBNYXNpdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlbCBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnRW5sYXphciBjb24gb3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnwqFOw7ptZXJvIGRlIMONdGVtIGRlIENvbmZpZ3VyYWNpw7NuIG5vIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnRWwgbsO6bWVybyBkZSBvdHJvIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBlbCBxdWUgdmluY3VsYXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgbm9tYnJlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0VsIG5vbWJyZSB5YSBlc3RhIGVuIHVzbyBwb3Igw410ZW1zIGRlIENvbmZpZ3VyYWNpw7NuIGNvbiBsb3Mgc2lndWllbnRlcyBuw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdmVyc2nDs24geWEgZXN0w6EgZW4gdXNvIHBvciBlbCBDb25maWdJdGVtcyBjb24gZWwgc2lndWllbnRlIG7Dum1lcm8gKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIGxhIEltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpYWwgZGVsIEVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW5pZG8gZGVsIGhpc3RvcmlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRmVjaGEgZGUgQ3JlYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ0lzIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBkYXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNjaW9uZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgbGEgYsO6c3F1ZWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWwgZGUgcHJvZnVuZGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdBY2VyY2FyL0FsZWphcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfCoU5pdmVsIG3DoXhpbW8gZGUgZW5sYWNlcyBhbGNhbnphZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIEFjdHVhbCBkZSBsYSBJbXBsZW1lbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlIEFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1vIGNhbWJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYSDDumx0aW1hIHZleiBxdWUgc2UgbW9kaWZpY8OzIGZ1ZSBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTdXMgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBDb25maWdJdGVtJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2UgaW1wb3J0YXLDoW4gbGFzIHNpZ3VpZW50ZXMgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGZ1bmNpb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdUZW5nYSBlbiBjdWVudGEgcXVlIHRhbWJpw6luIHNlIGNyZWFyw6FuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyB5IGxhcyBjbGFzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGllbnRlcyB5IHF1ZSBubyBzZSBlbGltaW5hcsOhbiBhdXRvbcOhdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ8K/RGVzZWEgcHJvY2VkZXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ8KhTmVjZXNpdGEgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGRlZmluaWNpw7NuIG5vIGVzIHVuIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Jlc3VtZW46IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8KhTmVjZXNpdGEgYWwgbWVub3MgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vIHRpZW5lIHBlcm1pc28gZGUgZXNjcml0dXJhIHBhcmEgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnwqFOaW5ndW5hIGRlZmluaWNpw7NuIGZ1ZSBkZWZpbmlkYSBwYXJhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFFbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAiJXMiICBubyBzZSBlbmNvbnRyw7MgZW4gbGEgYmFzZSBkZSBkYXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIGZ1ZSBwb3NpYmxlIGVsaW1pbmFyIGVsIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBWZXJzacOzbiBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIGFjY2VzbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVldm8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGRlc3BsaWVndWUgKG51ZXZvPSVzLCB2aWVqbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGluY2lkZW5jaWEgKG51ZXZvPSVzLHZpZWpvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdFbmxhY2UgYSAlcyAodGlwbz0lcykgYcOxYWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0VubGFjZSBhICVzICh0aXBvPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0FjdHVhbGl6YWRhIGRlZmluaWNpw7NuIGRlIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWJyZSBhY3R1YWxpemFkbyAobnVldm89JXMsdmllam89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dG8gJXMgYWN0dWFsaXphZG8gZGUgIiVzIiBhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2nDs24gJXMgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY29udHLDsyBlbiBsYSBiYXNlIGRlIGRhdG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmVzbyBwb3IgJXMgZW4gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfCoUNsYXNzSUQgbm8gZXMgdsOhbGlkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhU2luIHJlc3VsdGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2luIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnU2UgbXVlc3RyYW4gZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgZXN0YWRvIGRlIGltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBUaXBvIGRlIGluY2lkZW50ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6FtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNhIChWZXJzacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcmVuY2lhIGRlIGVubGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBlc3RlIGVubGFjZSBzZSBhcGxpY2EgYWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gbyBhIGxhIHZlcnNpw7NuIGVzdMOhdGljYSBkZWwgb2JqZXRvIGRlIHJlZmVyZW5jaWEuIEVsIGPDoWxjdWxvIGRlbCBlc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUgc8OzbG8gc2UgcmVhbGl6YSBlbiBsb3MgZW5sYWNlcyBkaW7DoW1pY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjY2lvbmUgZWwgYXRyaWJ1dG8gcG9yIGVsIHF1ZSBzZSBidXNjYXLDoW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgZXN0cnVjdHVyYSBiYXNlIG5vIGVzIHbDoWxpZGEuIFBvciBmYXZvciwgcHJvcG9yY2lvbmUgdW4gaGFzaCBjb24gZGF0b3MgZW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzIG5lY2VzYXJpbyBxdWUgbGEgY2FkZW5hIFlBTUwgY29taWVuY2UgcG9yIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05vIHNlIGhhIHBvZGlkbyBwdXJnYXIgbGEgdGFibGEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gc2UgaGFuIGVuY29udHJhZG8gY2FtcG9zIGRpbsOhbWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05vIHNlIGhhIHBvZGlkbyBpbnNlcnRhciBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGFkYXMgMCBmaWxhcyBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVuIGVsZW1lbnRvICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzacOzbiBDYWRlbmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3IgYWwgc2luY3Jvbml6YXIgbGFzIGRlZmluaWNpb25lcy4gUG9yIGZhdm9yLCBjb21wcnVlYmUgZWwgcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGllbmUgZGVmaW5pY2lvbmVzIGRlIElUU01Db25maWdJdGVtIHF1ZSBubyBlc3TDoW4gc2luY3Jvbml6YWRhcy4gRGVzcGxpZWd1ZSBsb3MgY2FtYmlvcyBlbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgZGUgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbmltaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnUHJ1ZWJhIC8gQ29udHJvbCBkZSBjYWxpZGFkJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXNpw7NuIGdlbmVyYWwgeSBjb25maXJtYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGFyIGNsYXNlcy9yb2xlcyB5IHN1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2UgaGEgcHJvZHVjaWRvIHVuIGVycm9yIGR1cmFudGUgbGEgaW1wb3J0YWNpw7NuIGRlIGxhIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTZSBtdWVzdHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBleHRlbmRpZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGFtcGxpYXIgbGFzIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVzdGUgdGlwbyBkZSBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSXMgYXNpZ25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NpcyBhc2lnbmFkb3MgYSBsYSBFbXByZXNhIGRlbCBDbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ2lzIGFzaWduYWRvcyBhbCB1c3VhcmlvIGRlbCBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDb25maWd1cmFjaW9uZXMgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzcXVlIHVuIG5vbWJyZSDDum5pY28gc29sbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzZVwnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgY3VhbmRvIHNlIGJ1c2NhbiBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBub21icmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBudW3DqXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgY2FkZW5hcyBkZSB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRWxpamEgYXRyaWJ1dG9zIHBhcmEgYWN0aXZhciBsYSBjcmVhY2nDs24gZGUgdW5hIG51ZXZhIHZlcnNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdFbGlqYSBsYXMgY2F0ZWdvcsOtYXMgcXVlIGRlc2VhIGFzaWduYXIgYSBlc3RhIGNsYXNlIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGNvbHVtbmEgcGFyYSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW1uYXMgcXVlIHNlIHB1ZWRlbiBmaWx0cmFyIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIE5vdGE6IFNvbG8gc2UgcGVybWl0ZW4gYXRyaWJ1dG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiB5IGNhbXBvcyBkaW7DoW1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0HDsWFkaXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBoYWJpbGl0YSBlbCBhY2Nlc28gYSBsYSBoaXN0b3JpYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBhY3R1YWxpemEgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBhIHN1IGRlZmluaWNpw7NuIGFjdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdJbXByaW1pciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdEZXRhbGxleiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdGEgZW4gw6FyYm9sIGRlIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMb3MgQ29uZmlnSXRlbXMgZGUgbGFzIHNpZ3VpZW50ZXMgY2xhc2VzIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMb3MgQ29uZmlnSXRlbXMgY29uIGxvcyBzaWd1aWVudGVzIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTMOtbWl0ZSBkZSBFbGVtZW50b3MgZGUgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0zDrW1pdGUgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcG9yIHDDoWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdHZXN0acOzbiBkZSBsYSBDb25maWd1cmFjacOzbiBkZSBCYXNlcyBkZSBEYXRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGVsIG3Ds2R1bG8gbWFzaXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvdXRlciBiYWNrZW5kIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWEgeSBnZXN0aW9uYSBsYXMgZGVmaW5pY2lvbmVzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlYSBUaWNrZXRzIHBhcmEgQ29uZmlnSXRlbXMgZW4gbW9tZW50b3MgZXNwZWPDrWZpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMb3MgY2xpZW50ZXMgcHVlZGVuIHZlciBsYXMgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMb3MgY2xpZW50ZXMgdGllbmVuIGxhIHBvc2liaWxpZGFkIGRlIGNhbWJpYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHByZWRldGVybWluYWRvcyBxdWUgc2UgdXRpbGl6YXLDoW4gZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YcOxbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PcOabHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIGEgdXRpbGl6YXIgZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGNvbmZpZy4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgQWNjaW9uZXMgZW4gbGFzIHF1ZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZXN0w6EgZGlzcG9uaWJsZSBlbiBlbCB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgQWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgdW4gZXNxdWVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwYXJhIGNhZGVuYXMgZGUgdmVyc2nDs24uIFPDs2xvIHNlIHV0aWxpemEgc2kgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIHNlIGVzdGFibGVjZSBlbiBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgdW4gY29uanVudG8gZGUgY29uZGljaW9uZXMgYmFqbyBsYXMgY3VhbGVzIHVuIGNsaWVudGUgcHVlZGUgdmVyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLiBMYXMgY29uZGljaW9uZXMgcHVlZGVuIHJlc3RyaW5naXJzZSBvcGNpb25hbG1lbnRlIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gRWwgbm9tYnJlIGVzIGVsIMO6bmljbyBhdHJpYnV0byBvYmxpZ2F0b3Jpby4gU2kgbm8gc2UgZXNwZWNpZmljYSBuaW5ndW5hIG90cmEgb3BjacOzbiwgdG9kb3MgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZXLDoW4gdmlzaWJsZXMgZW4gZXNhIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBlbGltaW5hciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBtZWRpYW50ZSBsYSBpbnRlcmZheiBnZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBvYnRlbmVyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgYnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyByZXF1ZXJpZG9zIHBhcmEgZXN0YWJsZWNlciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSB1dGlsaXphbmRvIGxhIEludGVyZmF6IEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgcGVxdWXDsWEgdmlzdGEgZGUgdW5hIGxpc3RhIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmUgc2kgbGFzIGV0aXF1ZXRhcyBkZSB0aXBvIGRlIGVubGFjZSBkZWJlbiBtb3N0cmFyc2UgZW4gbGFzIGNvbmV4aW9uZXMgZGUgbG9zIG5vZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGV4cHJlc2lvbmVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNlIENvbmZpZ0l0ZW0gcGFyYSB2ZXJpZmljYXIgZWwgbm9tYnJlIGRlIENvbmZpZ0l0ZW0geSBwYXJhIG1vc3RyYXIgbG9zIG1lbnNhamVzIGRlIGVycm9yIGNvcnJlc3BvbmRpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnN0YXIgZGUgdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW5hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgcG9yIGRlZmVjdG8gZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lIGxhIHByb2Z1bmRpZGFkIGRlIGxhcyByZWxhY2lvbmVzIHF1ZSBzZSBtb3N0cmFyw6FuIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJDbGF2ZSIgZGViZSB0ZW5lciBlbCBub21icmUgZGVsIENhbXBvIERpbsOhbWljbyBlbiBlc3RlIGNhc28gXCdYXCcsICJDb250ZW5pZG8iIGRlYmUgdGVuZXIgZWwgdmFsb3IgZGVsIENhbXBvIERpbsOhbWljbyBkZXBlbmRpZW5kbyBkZWwgdGlwbyBkZSBDYW1wbyBEaW7DoW1pY28sIFRleHRvOiBcJ2EgdGV4dFwnLCBEZXNwbGVnYWJsZTogXCcxXCcsIEZlY2hhL0hvcmE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2Vjb25kPTU5O1wnIHkgbyBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc3Vib2JqZXRvIHBvciBkZWZhdWx0IGRlIGxhIGNsYXNlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zdGFyIGRlIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgbGEgYWx0dXJhIGRlbCBjb21wb25lbnRlIGVkaXRvciBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6Y2EgdW4gbsO6bWVybyAocMOteGVsZXMpIG8gdW4gdmFsb3IgcG9yY2VudHVhbCAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgbsO6bWVybyBkZSBmaWxhcyBwYXJhIGVsIGVkaXRvciBkZSBkZWZpbmljaW9uZXMgZGUgQ0kgZW4gbGEgaW50ZXJmYXogZGUgYWRtaW5pc3RyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gZGUgbG9zIGVzdGFkb3MgZGUgaW5jaWRlbmNpYSBkZXNkZSBhbHRvIChwb3IgZWplbXBsbywgY3LDrXRpY28pIGEgYmFqbyAocG9yIGVqZW1wbG8sIGZ1bmNpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBlc3RhZG9zIGRlIGltcGxlbWVudGFjacOzbiByZWxldmFudGVzIGRvbmRlIGxvcyB0aWNrZXRzIHZpbmN1bGFkb3MgcHVlZGVuIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGUgQ0kgbW9zdHJhZGFzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIHbDrW5jdWxvcyBwYXJhIHRvZGFzIGxhcyBjbGFzZXMgZGUgQ0kuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEsIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwcmVkZXRlcm1pbmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG9zIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMsIHNlZ8O6biBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgaXIgcHJlY2VkaWRhIGRlbCBub21icmUgZGUgbGEgY2xhc2UgeSBkb3MgcHVudG9zIGRvYmxlcyAoZXMgZGVjaXIsIGNvbXB1dGFkb3JhOiA6KS4gSGF5IGFsZ3Vub3MgYXRyaWJ1dG9zIGRlIENJIHF1ZSBzb24gY29tdW5lcyBhIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yYTogQ29tcHV0YWRvcmEgOjogTm9tYnJlLCBDb21wdXRhZG9yYSA6OiBDdXJEZXBsU3RhdGUsIENvbXB1dGFkb3JhIDo6IENyZWF0ZVRpbWUpLiBQYXJhIG1vc3RyYXIgbG9zIElDLUF0cmlidXRvcyBpbmRpdmlkdWFsZXMgZGVmaW5pZG9zIGVuIGxhIERlZmluaWNpw7NuLUNJLCBzZSBkZWJlIHV0aWxpemFyIGVsIHNpZ3VpZW50ZSBlc3F1ZW1hIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcmEpOiBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDEsIENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMSA6OiBDYXBhY2lkYWQgOjogMSwgQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAyLCBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDIgOjogQ2FwYWNpZGFkIDo6IDEuIFNpIG5vIGhheSB1bmEgZW50cmFkYSBwYXJhIHVuYSBjbGFzZSBDSSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHByZWRldGVybWluYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIHBhcmEgIkFjY2nDs24iIGVuIGVsIHRlcmNlciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgcHJpbWVyIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgZW4gZWwgc2VndW5kbyBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIGVubGFjZSAobm9tYnJhZG8gZGVzZGUgbGEgcGVyc3BlY3RpdmEgZGVsIHRpY2tldCkgcHVlZGUgYWZlY3RhciBlbCBlc3RhZG8gZGUgdW4gQ0kgdmluY3VsYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBY3R1YWxpemFjacOzbiBkZSBsYSBkZWZpbmljacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxpbWluYXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb2xvciBkZWwgZXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBtYXJjYSBsYXMgZGVmaW5pY2lvbmVzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb21vIG5vIHNpbmNyb25pemFkYXMgc2kgY2FtYmlhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgcXVlIGNvbnRpZW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIHF1ZSBzZSBtdWVzdHJhbiBlbiBsYSBwYW50YWxsYSBkZSBjYW1wbyBJVFNNIGFkaWNpb25hbCBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdQZXJtaXRlIHF1ZSBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgYWNjacOzbiBtYXNpdmEgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgbGEgaW50ZXJmYXogZGVsIGFnZW50ZSBmdW5jaW9uZSBlbiBtw6FzIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGEgbGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlIGFjY2nDs24gbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzb2xvIHBhcmEgbG9zIGdydXBvcyBlbnVtZXJhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgcGFyYSBjb25maWd1cmFyIGNvbmZpZ2l0ZW0tc3RhdHVzIGVuIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24sIHV0aWxpemFkb3MgcGFyYSBsYSBiw7pzcXVlZGEgZGUgdGV4dG8gY29tcGxldG8uIExvcyBjYW1wb3MgdGFtYmnDqW4gc2UgYWxtYWNlbmFuLCBwZXJvIG5vIHNvbiBvYmxpZ2F0b3Jpb3MgcGFyYSBsYSBmdW5jaW9uYWxpZGFkIGdlbmVyYWwuIExhIGluY2x1c2nDs24gZGUgYW5leG9zIHB1ZWRlIGRlc2FjdGl2YXJzZSBwb25pZW5kbyBsYSBlbnRyYWRhIGEgMCBvIGJvcnLDoW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcG9zIGFsbWFjZW5hZG9zIGVuIGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSB1dGlsaXphbiBwYXJhIG90cmFzIGNvc2FzIGFkZW3DoXMgZGUgbGFzIGLDunNxdWVkYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgbGEgZnVuY2lvbmFsaWRhZCBjb21wbGV0YSB0b2RvcyBsb3MgY2FtcG9zIHNvbiBvYmxpZ2F0b3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdEZXNjcmlwY2nDs24gZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG9JbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1eWUgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bHRhZG8gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW5hIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZXN0YWTDrXN0aWNhcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tYnJlIE3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ03Ds2R1bG8gbnVtw6lyaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBkZWJlbiBtb3N0cmFyc2UgZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamV0b3MgYSBidXNjYXIsIGN1w6FudGFzIGVudHJhZGFzIHkgcXXDqSBhdHJpYnV0b3MgbW9zdHJhci4gTG9zIGF0cmlidXRvcyBDb25maWdJdGVtIGRlYmVuIGFsbWFjZW5hcnNlIGV4cGzDrWNpdGFtZW50ZSBhIHRyYXbDqXMgZGUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgZ2VuZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIGNhdGVnb3LDrWFzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGZpbHRyb3MgZGUgY29sdW1uYSBkZSBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBwZXF1ZcOxb3MuIFBvciBmYXZvciwgdGVuZ2EgZW4gY3VlbnRhOiBlc3RhYmxlY2VyIFwnQWN0aXZvXCcgYSAwIHPDs2xvIGV2aXRhcsOhIHF1ZSBsb3MgYWdlbnRlcyBlZGl0ZW4gbG9zIGFqdXN0ZXMgZGUgZXN0ZSBncnVwbyBlbiBzdXMgcHJlZmVyZW5jaWFzIHBlcnNvbmFsZXMsIHBlcm8gc2VndWlyw6EgcGVybWl0aWVuZG8gYSBsb3MgYWRtaW5pc3RyYWRvcmVzIGVkaXRhciBsb3MgYWp1c3RlcyBlbiBub21icmUgZGUgb3RybyB1c3VhcmlvLiBVdGlsaWNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgcGFyYSBjb250cm9sYXIgZW4gcXXDqSDDoXJlYSBkZWJlbiBtb3N0cmFyc2UgZXN0b3MgYWp1c3RlcyBlbiBsYSBpbnRlcmZheiBkZSB1c3VhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xvcyBwYXLDoW1ldHJvcyBwYXJhIGxhIGltcGxlbWVudGFjacOzbiBpbmRpY2FuIGVsIGNvbG9yIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZXN0YWRvcyBkZSBpbXBsZW1lbnRhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIHBlcm1pc29zIGRlIGVqZW1wbG8gZGUgbG9zIGF0cmlidXRvcyBkZWwgY2F0w6Fsb2dvIGdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBtw7NkdWxvIGRlIG5vbWJyZXMgZGUgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBudW3DqXJpY28gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGRvbmRlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIG3Ds2R1bG8gZGVsIGtpdCBkZSBoZXJyYW1pZW50YXMgZGUgcGxhbnRpbGxhcyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYWN0aXZhZG9yIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgYWNjacOzbiBkZSBhZGp1bnRhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSB2aXN0YSBkZSDDoXJib2wgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBkZXRhbGxlIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIHBhcmEgYWdyZWdhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIG1hc2l2YSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIGRlIGVkaWNpw7NuIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBoaXN0b3JpYWwgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBpbXByZXNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpb3MgbmVjZXNhcmlvcyBwYXJhIGVsaW1pbmFyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0VzdGFibGV6Y2EgZWwgZXN0YWRvIGRlIGluY2lkZW50ZSBkZSB1biBDSSBhdXRvbcOhdGljYW1lbnRlIGN1YW5kbyB1biB0aWNrZXQgZXN0w6kgdmluY3VsYWRvIGEgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIGVsIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24gZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSB2aW5jdWxhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gb3RybyBvYmpldG8sIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGEgbGEgaGlzdG9yaWEgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlbGltaW5hciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZpc3VhbGl6YXIgbG9zIGVubGFjZXMgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb21vIHVuYSB2aXN0YSBlbiDDoXJib2wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBkZXNjcmlwY2nDs24gZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjaW9uIGVuIHN1IHZpc3RhIGRldGFsbGFkYSwgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGluayBlbiBlbCBtZW7DuiBwYXJhIGVkaXRhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjaW9uIGVuIHN1IHZpc3RhIGRldGFsbGFkYSwgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdm9sdmVyIGEgbGEgdmlzdGEgZGUgem9vbSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2VyY2Fyc2UgYSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgbGEgaGlzdG9yaWEgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiAob3JkZW5hZG9zIGludmVyc2FtZW50ZSkgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTGEgY2F0ZWdvcsOtYSBwb3IgZGVmZWN0byBxdWUgc2UgbXVlc3RyYSwgc2kgbm8gc2Ugc2VsZWNjaW9uYSBuaW5ndW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgcG9yIGVqZW1wbG8uIENvbmZpZ0l0ZW0gIywgTXlDb25maWdJdGVtICMuIEVsIHZhbG9yIHBvciBkZWZlY3RvIGVzIENvbmZpZ0l0ZW0gIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjdGl2YSBhdXRvbcOhdGljYW1lbnRlIGVsIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc2nDs24gZGUgY2FkZW5hIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ03Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY3RpdmFkb3IgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIHNlIHB1ZWRlIGV2aXRhciBsYSBlamVjdWNpw7NuIGRlIENvbmZpZ0l0ZW1BQ0wgY29tcHJvYmFuZG8gbGFzIGRlcGVuZGVuY2lhcyBkZSBjYW1wb3MgZW4gY2FjaMOpLiBFc3RvIHB1ZWRlIG1lam9yYXIgbG9zIHRpZW1wb3MgZGUgY2FyZ2EgZGUgbG9zIGZvcm11bGFyaW9zLCBwZXJvIGRlYmUgZGVzYWN0aXZhcnNlIHNpIHNlIHZhbiBhIHV0aWxpemFyIEFDTE1vZHVsZXMgcGFyYSBJVFNNQ29uZmlnSXRlbS0geSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXXDqSBpbmZvcm1hY2nDs24gZ2VuZXJhbCBzZSBtdWVzdHJhIGVuIGxhIGNhYmVjZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aXZvJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHB1bGdhZGFzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcHVsZ2FkYXMgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwdWxnYWRhcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwdWxnYWRhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMTkgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHB1bGdhZGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdDcmVtYWxsZXJhIGRlIDIxIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogOTcsNzkgY20gKDM4LDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ0VzdGFudGUgZGUgMjMgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHB1bGdhZGFzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwdWxnYWRhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcHVsZ2FkYXMgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwdWxnYWRhcyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwdWxnYWRhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcHVsZ2FkYXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHB1bGdhZGFzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwdWxnYWRhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcHVsZ2FkYXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMS4wMDAgbW0gKDM5LDQgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwdWxnYWRhcyAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IHB1bGdhZGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBwdWxnYWRhcyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwdWxnYWRhcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBwdWxnYWRhcyAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHB1bGdhZGFzICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgcHVsZ2FkYXMgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwdWxnYWRhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHB1bGdhZGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHB1bGdhZGFzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb250YWJpbGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBc2lnbmFjacOzbiBkZSBkaXJlY2Npb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWzDqWZvbm8gYW5hbMOzZ2ljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgYXBhcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZCBkZSBsYSBiYXRlcsOtYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYXogZGUgYnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaWRhZCBwb3IgdGFyamV0YSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGFyamV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlY3RvciBkZSB0YXJqZXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIHRhcmpldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcsOtYSBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1JlbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdWZWxvY2lkYWQgZGUgcmVsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBmaXJtYSBkZSBjw7NkaWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWzDqWZvbm8gZGUgY29uZmVyZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGNvbnN1bHRvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnUMOzbmdhc2UgZW4gY29udGFjdG8gY29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0YXIgY29uIGVsIGRpc3RyaWJ1aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGNvbnRlbmVkb3Jlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUaXBvIGRlIGNvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGVsIGNvbnRyYXRvIGRlc2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRlbCBjb250cmF0byBoYXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWzDqWZvbm8gaW5hbMOhbWJyaWNvICh0ZWzDqWZvbm8gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pZGFkIGRlIGNvc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnUmVjdWVudG8gZGUgbGljZW5jaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdGZWNoYSBkZSBjcmVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VzdGFudGVyw61hIHBlcnNvbmFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2aWRvciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0ZlY2hhIGRlIGxhIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0ZlY2hhIGRlbCBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0ZlY2hhIGRlIGxhIGdhcmFudMOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdGZWNoYSBkZSBwdWJsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBmaXJtYSBkZSBkb2N1bWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY29ycmVvIGVsZWN0csOzbmljbyAoQ2VydGlmaWNhZG9zIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdHJhYmFqbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0RpcmVjY2nDs24gSVAgZmluYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW4gZGUgbGEgYXl1ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdGZWNoYSBkZSBleHBpcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gZHVybyBleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnQ29ydGFmdWVnb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FsbWFjZW5hbWllbnRvIGRlIGVuZXJnw61hIG1lZGlhbnRlIHZvbGFudGUgZGUgaW5lcmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhY3RvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBmcmFucXVpY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGdlbmVyYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdUYXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1RhcmpldGEgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbyBkZSBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQZXNvIGRlbCBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVyaWN1bGFyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGnDs24gZGUgaWRlbnRpZGFkZXMgeSBhY2Nlc29zIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGludmVudGFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgZmFjdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKHBhbnRhbGxhIGRlIGNyaXN0YWwgbMOtcXVpZG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoZGlvZG8gZW1pc29yIGRlIGx1eiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsw6lmb25vIGZpam8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnT3JkZW5hZG9yIHBvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZCBkZSBjYXJnYSBtw6F4aW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgbcOzdmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZWwgbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdWNpw7NuIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWHDsW8gZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXTDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIGRlIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtaGlkcnVybyBtZXTDoWxpY28gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjdWVyZG8gZGUgY29uZmlkZW5jaWFsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0N1YWRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6FuaWNvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBleHBsb3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYWxpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgYXNvY2lhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N1bWluaXN0cm8gZGUgZW5lcmfDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWQgZGUgbGEgZXN0YW50ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnSGFiaXRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdUYXJqZXRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsw6lmb25vIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgcGxvbW8tw6FjaWRvIHNlbGxhZGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgc2VydmljaW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBlbmNodWZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRhdm9jZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnRXN0w6FuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aWNpw7NuIGRlIGFsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50ZSBsaWdlcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0hpbG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCBkZSBsYSB0YXJqZXRhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB0w6FjdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNjb3MgZGUgUlYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsw6lmb25vIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0PDoW1hcmEgd2ViJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/es_MX_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWd1cmFyIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRybyBwb3IgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjY2lvbmUgdW5hIGNsYXNlIGRlIGxhIGxpc3RhIHBhcmEgY3JlYXIgdW4gbnVldm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBY2Npw7NuIG1hc2l2YSBkZSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0VubGFjZSBhIG90cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ8KhTsO6bWVybyBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBubyB2w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFbCBuw7ptZXJvIGRlIG90cm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVsIHF1ZSBzZSB2YSBhIGVubGF6YXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgcXVpZXJlIGVsaW1pbmFyIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIG5vbWJyZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdFbCBub21icmUgeWEgZXN0w6EgZW4gdXNvIHBvciBsb3MgQ29uZmlnSXRlbXMgY29uIGxvcyBzaWd1aWVudGVzIG7Dum1lcm9zOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdmVyc2nDs24geWEgZXN0w6EgZW4gdXNvIHBvciBlbCBDb25maWdJdGVtcyBjb24gZWwgc2lndWllbnRlIG7Dum1lcm8gKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBJbmNpZGVudGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbmlkbyBkZSBsYSBoaXN0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXIgdGllbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWd1cmFjacOzbiBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGRhdG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2Npb25lIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdDb3JyZXIgYsO6c3F1ZWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWwgZGUgcHJvZnVuZGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdBY2VyY2FyL0FsZWphcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfCoU5pdmVsIG3DoXhpbW8gZGUgZW5sYWNlcyBhbGNhbnphZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBJbmNpZGVudGUgQWN0dWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ8OabHRpbW8gY2FtYmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ01vZGlmaWNhZG8gcG9yIMO6bHRpbWEgdmV6IHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1N1cyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2UgaW1wb3J0YXLDoW4gbGFzIHNpZ3VpZW50ZXMgZnVuY2lvbmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1RlbmdhIGVuIGN1ZW50YSBxdWUgdGFtYmnDqW4gc2UgY3JlYXLDoW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHkgbGFzIGNsYXNlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kaWVudGVzIHkgcXVlIG5vIHNlIGVsaW1pbmFyw6FuIGF1dG9tw6F0aWNhbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnwr9RdWllcmVzIGNvbnRpbnVhcj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnwqFOZWNlc2l0YSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTGEgZGVmaW5pY2nDs24gbm8gZXMgdW4gaGFzaCBZQU1MIHbDoWxpZG8uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUmVzdW1lbjogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgZGEgbmluZ8O6biBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnwqFOZWNlc2l0YSBhbCBtZW5vcyB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTm8gdGllbmUgYWNjZXNvIGRlIGVzY3JpdHVyYSBhIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfCoU5vIHNlIGhhIGRlZmluaWRvIGxhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFFbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAiJXMiIG5vIHNlIGVuY3VlbnRyYSBlbiBsYSBiYXNlIGRlIGRhdG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ8KhTm8gc2UgaGEgcG9kaWRvIGJvcnJhciBlbCBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnwqFObyBzZSBoYSBlbmNvbnRyYWRvIG5pbmd1bmEgdmVyc2nDs24gcGFyYSBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgdGllbmUgbmluZ8O6biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgdGllbmUgYWNjZXNvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgwqFubyBzZSB0aWVuZSBlbCBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIMKhbm8gc2UgdGllbmVuIGRlcmVjaG9zIGRlIGFjY2VzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ051ZXZvIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ051ZXZhIHZlcnNpw7NuIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZWwgaW5jaWRlbnRlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgYm9ycmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0VubGFjZSBhICVzICggdGlwbz0lcykgYcOxYWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0VubGFjZSBhICVzICggdGlwbz0lcykgYm9ycmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pY2nDs24gZGUgQ29uZmlnSXRlbSBhY3R1YWxpemFkYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tYnJlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhY3R1YWxpemFkbyBkZSAiJXMiIGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzacOzbiAlcyBib3JyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgdGllbmUgbmluZ8O6biBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIMKhbm8gc2UgdGllbmVuIGRlcmVjaG9zIGRlIGFjY2VzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfCoUNvbmZpZ0l0ZW1JRCAlcyBubyBzZSBlbmN1ZW50cmEgZW4gbGEgYmFzZSBkZSBkYXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJlc28gcG9yICVzIGVuICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnwqFDbGFzc0lEIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIHRpZW5lIG5pbmfDum4gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhbiBjb25jZWRpZG8gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhTm8gaGF5IHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXN1bHRhZG9zIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgZWxlbWVudG8sIMKhbm8gc2UgdGllbmVuIGRlcmVjaG9zIGRlIGFjY2VzbyBwYXJhIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ8KhQ29uZmlnSXRlbSBubyBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmVydGVuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGUgZGVzcGxpZWd1ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgZXN0YWRvIGRlbCBpbmNpZGVudGUgZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1NpbiBwZXJtaXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIEVzdGFkbyBkZSBEZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gYWN0dWFsIGRlbCBlc3RhZG8gZGVsIGluY2lkZW50ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6FtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNhIChWZXJzacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcmVuY2lhIGRlIGVubGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBlc3RlIGVubGFjZSBzZSBhcGxpY2EgYWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gbyBhIGxhIHZlcnNpw7NuIGVzdMOhdGljYSBkZWwgb2JqZXRvIGRlIHJlZmVyZW5jaWEuIEVsIGPDoWxjdWxvIGRlbCBlc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUgc8OzbG8gc2UgcmVhbGl6YSBlbiBsb3MgZW5sYWNlcyBkaW7DoW1pY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjY2lvbmUgZWwgYXRyaWJ1dG8gcG9yIGVsIHF1ZSBzZSBidXNjYXLDoW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgZXN0cnVjdHVyYSBiYXNlIG5vIGVzIHbDoWxpZGEuIFBvciBmYXZvciwgcHJvcG9yY2lvbmUgdW4gaGFzaCBjb24gZGF0b3MgZW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzIG5lY2VzYXJpbyBxdWUgbGEgY2FkZW5hIFlBTUwgY29taWVuY2UgcG9yIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05vIHNlIGhhIHBvZGlkbyBwdXJnYXIgbGEgdGFibGEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gc2UgaGFuIGVuY29udHJhZG8gY2FtcG9zIGRpbsOhbWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05vIHNlIGhhIHBvZGlkbyBpbnNlcnRhciBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGFkYXMgMCBmaWxhcyBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVuIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpw7NuIENhZGVuYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvciBhbCBzaW5jcm9uaXphciBsYXMgZGVmaW5pY2lvbmVzLiBQb3IgZmF2b3IsIGNvbXBydWViZSBlbCByZWdpc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUaWVuZSBkZWZpbmljaW9uZXMgZGUgSVRTTUNvbmZpZ0l0ZW0gcXVlIG5vIGVzdMOhbiBzaW5jcm9uaXphZGFzLiBEZXNwbGllZ3VlIGxvcyBjYW1iaW9zIGVuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyBkZSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudGVuaW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmlmaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdQcnVlYmEvQ29udHJvbCBkZSBjYWxpZGFkJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXNpw7NuIGdlbmVyYWwgeSBjb25maXJtYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGFyIGNsYXNlcy9yb2xlcyB5IHN1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2UgaGEgcHJvZHVjaWRvIHVuIGVycm9yIGR1cmFudGUgbGEgaW1wb3J0YWNpw7NuIGRlIGxhIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTZSBtdWVzdHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBleHRlbmRpZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGFtcGxpYXIgbGFzIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVzdGUgdGlwbyBkZSBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSXMgYXNpZ25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyBhc2lnbmFkb3MgYSBsYSBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNpZ25hZG9zIGFsIHVzdWFyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhY2nDs24gZGUgbGEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzY2EgdW4gbm9tYnJlIMO6bmljbyBzw7NsbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgYWwgYnVzY2FyIGR1cGxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIG5vbWJyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBjYWRlbmFzIGRlIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdFbGlqYSBhdHJpYnV0b3MgcGFyYSBhY3RpdmFyIGxhIGNyZWFjacOzbiBkZSB1bmEgbnVldmEgdmVyc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VsaWphIGxhcyBjYXRlZ29yw61hcyBxdWUgZGVzZWEgYXNpZ25hciBhIGVzdGEgY2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgY29sdW1uYSBwYXJhIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bW5hcyBxdWUgc2UgcHVlZGVuIGZpbHRyYXIgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gTm90YTogU29sbyBzZSBwZXJtaXRlbiBhdHJpYnV0b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHkgY2FtcG9zIGRpbsOhbWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQcOxYWRpciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGljacOzbiBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBwZXJtaXRlIGVsIHJlZ2lzdHJvIGVuIGVsIGhpc3RvcmlhbCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBhY3R1YWxpemEgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBhIHN1IGRlZmluaWNpw7NuIGFjdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWd1cmFyIGVsZW1lbnRvIGltcHJlc29yYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmFyIGVsIHpvb20gZGVsIGVsZW1lbnRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGVuIMOhcmJvbCBkZSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGRlIGxhcyBzaWd1aWVudGVzIGNsYXNlcyBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGNvbiBsb3Mgc2lndWllbnRlcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYWNpw7NuIEzDrW1pdGUgZGUgZWxlbWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmFjacOzbiBMw61taXRlIGRlIGVsZW1lbnRvcyBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZGF0b3MgZGUgZ2VzdGnDs24gZGUgbGEgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVsZW1lbnRvcyBpbmRpdmlkdWFsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBidXNjYSBlbCBlbnJ1dGFtaWVudG8gYmFja2VuZCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYXIgeSBnZXN0aW9uYXIgbGFzIGRlZmluaWNpb25lcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NvbiBlc3RhIG9wY2nDs24gZXMgcG9zaWJsZSByZWxsZW5hciBhdXRvbcOhdGljYW1lbnRlIHVuIGNhbXBvIENJLCBkZXBlbmRpZW5kbyBkZWwgcmVjdWVudG8gZGUgQ0kgdmluY3VsYWRvcyBjb24gZWwgdGlwbyBleGlzdGVudGUgRGVwZW5kc09uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMb3MgY2xpZW50ZXMgcHVlZGVuIHZlciBsYXMgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMb3MgY2xpZW50ZXMgdGllbmVuIGxhIHBvc2liaWxpZGFkIGRlIGNhbWJpYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHByZWRldGVybWluYWRvcyBxdWUgc2UgdXRpbGl6YXLDoW4gZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YcOxbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PcOabHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIGEgdXRpbGl6YXIgZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGNvbmZpZy4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgYWNjaW9uZXMgZW4gbGFzIHF1ZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZXN0w6EgZGlzcG9uaWJsZSBlbiBlbCB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgYWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgdW4gZXNxdWVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwYXJhIGNhZGVuYXMgZGUgdmVyc2nDs24uIFPDs2xvIHNlIHV0aWxpemEgc2kgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIHNlIGVzdGFibGVjZSBlbiBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgdW4gY29uanVudG8gZGUgY29uZGljaW9uZXMgYmFqbyBsYXMgY3VhbGVzIHVuIGNsaWVudGUgcHVlZGUgdmVyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLiBMYXMgY29uZGljaW9uZXMgcHVlZGVuIHJlc3RyaW5naXJzZSBvcGNpb25hbG1lbnRlIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gRWwgbm9tYnJlIGVzIGVsIMO6bmljbyBhdHJpYnV0byBvYmxpZ2F0b3Jpby4gU2kgbm8gc2UgaW5kaWNhbiBvdHJhcyBvcGNpb25lcywgdG9kb3MgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZXLDoW4gdmlzaWJsZXMgZW4gZXNhIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBlbGltaW5hciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gbWVkaWFudGUgbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgb2J0ZW5lciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBidXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJzacOzbiBDYWRlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgdW5hIGxpc3RhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBldGlxdWV0YXMgZGUgdGlwbyBkZSBlbmxhY2UgZGViZW4gbW9zdHJhcnNlIGVuIGxhcyBjb25leGlvbmVzIGRlIGxvcyBub2Rvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBleHByZXNpb25lcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzZSBDb25maWdJdGVtIHBhcmEgY29tcHJvYmFyIGVsIG5vbWJyZSBkZSBDb25maWdJdGVtIHkgbW9zdHJhciBsb3MgbWVuc2FqZXMgZGUgZXJyb3IgY29ycmVzcG9uZGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0byBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zaXN0aXIgZW4gdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW4gYXJyYXkgZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgbGEgcHJvZnVuZGlkYWQgZGUgbGFzIHJlbGFjaW9uZXMgcXVlIHNlIG1vc3RyYXLDoW4gcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIkNsYXZlIiBkZWJlIHRlbmVyIGVsIG5vbWJyZSBkZWwgQ2FtcG8gRGluw6FtaWNvIGVuIGVzdGUgY2FzbyBcJ1hcJywgIkNvbnRlbmlkbyIgZGViZSB0ZW5lciBlbCB2YWxvciBkZWwgQ2FtcG8gRGluw6FtaWNvIGRlcGVuZGllbmRvIGRlbCB0aXBvIGRlIENhbXBvIERpbsOhbWljbywgVGV4dG86IFwnYSB0ZXh0XCcsIERlc3BsZWdhYmxlOiBcJzFcJywgRmVjaGEvSG9yYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTZWNvbmQ9NTk7XCcgeSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzdWJvYmpldG8gcG9yIGRlZmVjdG8gZGUgbGEgY2xhc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnNpc3RpciBlbiB1biBub21icmUgZGUgY2xhc2UgeSB1biBhcnJheSBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgZGVsIGNvbXBvbmVudGUgZGVsIGVkaXRvciBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6Y2EgdW4gbsO6bWVybyAocMOteGVsZXMpIG8gdW4gdmFsb3IgcG9yY2VudHVhbCAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgbsO6bWVybyBkZSBmaWxhcyBkZWwgZWRpdG9yIGRlIGRlZmluaWNpb25lcyBDSSBlbiBsYSBpbnRlcmZheiBkZSBhZG1pbmlzdHJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBkZSBsb3MgZXN0YWRvcyBkZSBpbmNpZGVuY2lhIGRlIGFsdG8gKHBvciBlamVtcGxvLCBjcsOtdGljbykgYSBiYWpvIChwb3IgZWplbXBsbywgZnVuY2lvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSByZWxldmFudGVzIGVuIGxvcyBxdWUgbG9zIHRpY2tldHMgdmluY3VsYWRvcyBwdWVkZW4gYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzIHBhcmEgdG9kYXMgbGFzIGNsYXNlcyBkZSBDSS4gU2kgbm8gaGF5IG5pbmd1bmEgZW50cmFkYSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzLCBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgbGxldmFyIGNvbW8gcHJlZmlqbyBlbCBub21icmUgZGUgbGEgY2xhc2UgeSBkb3MgcHVudG9zIGRvYmxlcyAocG9yIGVqZW1wbG8sIENvbXB1dGVyOjopLiBIYXkgYWxndW5vcyBhdHJpYnV0b3MgQ0kgcXVlIHNvbiBjb211bmVzIGEgdG9kb3MgbG9zIENJcyAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGFkb3I6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBhcmEgbW9zdHJhciBsb3MgQXRyaWJ1dG9zLUNpIGluZGl2aWR1YWxlcyBjb21vIHNlIGRlZmluZW4gZW4gbGEgRGVmaW5pY2nDs24tQ2ksIHNlIGRlYmUgdXRpbGl6YXIgZWwgc2lndWllbnRlIGVzcXVlbWEgKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yKTogT3JkZW5hZG9yOjpEaXNjb0R1cm86OjEsIENvbXB1dGFkb3I6OkRpc2NvRHVybzo6MTo6Q2FwYWNpZGFkOjoxLCBDb21wdXRhZG9yOjpEaXNjb0R1cm86OjIsIENvbXB1dGFkb3I6OkRpc2NvRHVybzo6Mjo6Q2FwYWNpZGFkOjoxLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhIHBhcmEgdW5hIGNsYXNlIENJLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBwYXJhICJBY2Npw7NuIiBlbiBlbCB0ZXJjZXIgbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHByaW1lciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHNlZ3VuZG8gbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSBlbmxhY2UgKG5vbWJyYWRvIGRlc2RlIGxhIHBlcnNwZWN0aXZhIGRlbCB0aWNrZXQpIHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIHRpY2tldCBwdWVkZSBhZmVjdGFyIGFsIGVzdGFkbyBkZSB1biBDSSB2aW5jdWxhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWN0dWFsaXphY2nDs24gZGUgbGEgZGVmaW5pY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0JvcnJhciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvbG9yIGRlbCBFc3RhZG8gZGUgRGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgY2FtcG9zIGRpbsOhbWljb3MgcXVlIG1hcmNhIGxhcyBkZWZpbmljaW9uZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gbm8gc2luY3Jvbml6YWRhcyBzaSBjYW1iaWFuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyBxdWUgY29udGllbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGNhbXBvcyBhZGljaW9uYWxlcyBJVFNNIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmEgbGEgZnVuY2nDs24gZGUgYWNjacOzbiBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgcXVlIGVsIGZyb250ZW5kIGRlbCBhZ2VudGUgdHJhYmFqZSBlbiBtw6FzIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGEgbGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZhIGxhIGZ1bmNpw7NuIGRlIGFjY2nDs24gbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzw7NsbyBwYXJhIGxvcyBncnVwb3MgZGUgbGEgbGlzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBwYXJhIGVzdGFibGVjZXIgZWwgZXN0YWRvIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBlbCB0aWNrZXQtY29uZmlnaXRlbS1lbmxhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24sIHV0aWxpemFkb3MgcGFyYSBsYSBiw7pzcXVlZGEgZGUgdGV4dG8gY29tcGxldG8uIExvcyBjYW1wb3MgdGFtYmnDqW4gc2UgYWxtYWNlbmFuLCBwZXJvIG5vIHNvbiBvYmxpZ2F0b3Jpb3MgcGFyYSBsYSBmdW5jaW9uYWxpZGFkIGdlbmVyYWwuIExhIGluY2x1c2nDs24gZGUgYW5leG9zIHB1ZWRlIGRlc2FjdGl2YXJzZSBwb25pZW5kbyBsYSBlbnRyYWRhIGEgMCBvIGJvcnLDoW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcG9zIGFsbWFjZW5hZG9zIGVuIGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSB1dGlsaXphbiBwYXJhIG90cmFzIGNvc2FzIGFkZW3DoXMgZGUgbGFzIGLDunNxdWVkYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgbGEgZnVuY2lvbmFsaWRhZCBjb21wbGV0YSB0b2RvcyBsb3MgY2FtcG9zIHNvbiBvYmxpZ2F0b3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdSZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkb0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXllIGVzdGFkb3MgZGUgaW5jaWRlbmNpYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIHJlc3VsdGFkbyBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1bmEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VuZXJhciBlc3RhZMOtc3RpY2FzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbWJyZSBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNw7NkdWxvIG51bcOpcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgZGViZW4gbW9zdHJhcnNlIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpldG9zIGEgYnVzY2FyLCBjdcOhbnRhcyBlbnRyYWRhcyB5IHF1w6kgYXRyaWJ1dG9zIG1vc3RyYXIuIExvcyBhdHJpYnV0b3MgQ29uZmlnSXRlbSBkZWJlbiBhbG1hY2VuYXJzZSBleHBsw61jaXRhbWVudGUgYSB0cmF2w6lzIGRlIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc3RhIEdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGNvbG9yIGRlIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGVqZW1wbG8gZGUgcGVybWlzb3MgZGUgZ3J1cG8gZGVsIGNhdMOhbG9nbyBnZW5lcmFsIGRlIGF0cmlidXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIG3Ds2R1bG8gZGUgbm9tYnJlcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIG51bcOpcmljbyBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZWwga2l0IGRlIGhlcnJhbWllbnRhcyBkZSBwbGFudGlsbGFzIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBhY3RpdmFkb3IgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNvcyBkZSBncnVwbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBhY2Npw7NuIGRlIGFkanVudGFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSB2aXN0YSBkZSDDoXJib2wgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGFtcGxpYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGHDsWFkaXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIG1hc2l2YSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWRpY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgaGlzdG9yaWFsIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpb3MgbmVjZXNhcmlvcyBwYXJhIGVsaW1pbmFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdCdXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnRXN0YWJsZXpjYSBlbCBlc3RhZG8gZGUgbGEgaW5jaWRlbmNpYSBkZSB1biBDSSBkZSBmb3JtYSBhdXRvbcOhdGljYSBjdWFuZG8gc2UgdmluY3VsZSB1biB0aWNrZXQgYSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlIGRlc3BsaWVndWUgZW4gbGEgcGFudGFsbGEgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIGVsIGVzdGFkbyBkZSBsYSBpbmNpZGVuY2lhIGVuIGxhIHBhbnRhbGxhIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgdmluY3VsYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIG90cm8gb2JqZXRvIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGVsaW1pbmFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIHN1IHZpc3RhIGRlIHpvb20gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdmlzdWFsaXphciBsb3MgZW5sYWNlcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gdW5hIHZpc3RhIGVuIMOhcmJvbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGR1cGxpY2FyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2b2x2ZXIgYSBsYSB2aXN0YSBkZSB6b29tIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYW1wbGlhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGVsIGhpc3RvcmlhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKG9yZGVuYWRvIGRlIGZvcm1hIGludmVyc2EpIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3LDrWEgcG9yIGRlZmVjdG8gcXVlIHNlIG11ZXN0cmEsIHNpIG5vIHNlIHNlbGVjY2lvbmEgbmluZ3VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIHBvciBlamVtcGxvIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBFbCB2YWxvciBwb3IgZGVmZWN0byBlcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjdGl2YSBhdXRvbcOhdGljYW1lbnRlIGVsIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc2nDs24gZGUgY2FkZW5hIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ03Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY3RpdmFkb3IgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnU2kgbG9zIGNhbXBvcyBkZWJlbiByZWxsZW5hcnNlIGF1dG9tw6F0aWNhbWVudGUgKDEpLCB5IGVuIGVzZSBjYXNvIHRhbWJpw6luIGRlYmVuIG9jdWx0YXJzZSBkZSBsb3MgZm9ybXVsYXJpb3MgZGUgbGFzIGVudHJhZGFzICgyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2kgc2UgcHVlZGUgZXZpdGFyIGxhIGVqZWN1Y2nDs24gZGUgQ29uZmlnSXRlbUFDTCBjb21wcm9iYW5kbyBsYXMgZGVwZW5kZW5jaWFzIGRlIGNhbXBvcyBlbiBjYWNow6kuIEVzdG8gcHVlZGUgbWVqb3JhciBsb3MgdGllbXBvcyBkZSBjYXJnYSBkZSBsb3MgZm9ybXVsYXJpb3MsIHBlcm8gZGViZSBkZXNhY3RpdmFyc2Ugc2kgc2UgdmFuIGEgdXRpbGl6YXIgQUNMTW9kdWxlcyBwYXJhIElUU01Db25maWdJdGVtLSB5IEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdRdcOpIGluZm9ybWFjacOzbiBnZW5lcmFsIHNlIG11ZXN0cmEgZW4gbGEgY2FiZWNlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnQ2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3Rpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3Rpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3Rpdm8nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcHVsZ2FkYXMgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwdWxnYWRhcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHB1bGdhZGFzICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHB1bGdhZGFzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAxOSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcHVsZ2FkYXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0NyZW1hbGxlcmEgZGUgMjEgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiA5Nyw3OSBjbSAoMzgsNSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnRXN0YW50ZSBkZSAyMyBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcHVsZ2FkYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHB1bGdhZGFzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwdWxnYWRhcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHB1bGdhZGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHB1bGdhZGFzICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwdWxnYWRhcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcHVsZ2FkYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHB1bGdhZGFzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwdWxnYWRhcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcxLjAwMCBtbSAoMzksNCBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHB1bGdhZGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcHVsZ2FkYXMgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHB1bGdhZGFzICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHB1bGdhZGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHB1bGdhZGFzICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcHVsZ2FkYXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwdWxnYWRhcyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHB1bGdhZGFzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcHVsZ2FkYXMgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcHVsZ2FkYXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FzaWduYWNpw7NuIGRlIGRpcmVjY2lvbmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBhbmFsw7NnaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkZSBhcGFyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpZGFkIGRlIGxhIGJhdGVyw61hIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVGlwbyBkZSBiYXRlcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZheiBkZSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaWRhZCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpZGFkIHBvciB0YXJqZXRhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVjdG9yIGRlIHRhcmpldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1RpcG8gZGUgdGFyamV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yw61hIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnUmVsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaWRhZCBkZSByZWxvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGZpcm1hIGRlIGPDs2RpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBkZSBjb25mZXJlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgY29uc3VsdG9yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdQw7NuZ2FzZSBlbiBjb250YWN0byBjb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhY3RhciBjb24gZWwgZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgY29udGVuZWRvcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGUgY29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkZWwgY29udHJhdG8gZGVzZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGVsIGNvbnRyYXRvIGhhc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbMOpZm9ubyBpbmFsw6FtYnJpY28gKHRlbMOpZm9ubyBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdVbmlkYWQgZGUgY29zdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdSZWN1ZW50byBkZSBsaWNlbmNpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0ZlY2hhIGRlIGNyZWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnRXN0YW50ZXLDrWEgcGVyc29uYWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRmVjaGEgZGUgbGEgZmFjdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRmVjaGEgZGVsIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRmVjaGEgZGUgbGEgZ2FyYW50w61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0ZlY2hhIGRlIHB1YmxpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRXNjcml0b3Jpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGZpcm1hIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIChDZXJ0aWZpY2Fkb3MgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB0cmFiYWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbiBkZSBsYSBheXVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0ZlY2hhIGRlIGV4cGlyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyBkdXJvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdDb3J0YWZ1ZWdvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8gZGUgZW5lcmfDrWEgbWVkaWFudGUgdm9sYW50ZSBkZSBpbmVyY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFjdG9yIGRlIGZvcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGZyYW5xdWljaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZ2VuZXJhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1RhcmpldGFzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnVGFyamV0YSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWxvIGRlIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZGVsIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdBdXJpY3VsYXJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0acOzbiBkZSBpZGVudGlkYWRlcyB5IGFjY2Vzb3MgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ07Dum1lcm8gZGUgaW52ZW50YXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGVjbGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAocGFudGFsbGEgZGUgY3Jpc3RhbCBsw61xdWlkbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kbyBlbWlzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWzDqWZvbm8gZmlqbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdDb21wdXRhZG9yIFBvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZCBkZSBjYXJnYSBtw6F4aW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgbcOzdmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ03Ds2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gZGVsIG1vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHVjacOzbiBkZWwgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdUYW1hw7FvIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIGRlIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtaGlkcnVybyBtZXTDoWxpY28gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjdWVyZG8gZGUgY29uZmlkZW5jaWFsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0N1YWRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6FuaWNvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBleHBsb3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYWxpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgYXNvY2lhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N1bWluaXN0cm8gZGUgZW5lcmfDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWQgZGUgbGEgZXN0YW50ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUk9NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnVGFyamV0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBwb3Igc2F0w6lsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIHBsb21vLcOhY2lkbyBzZWxsYWRhIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgZGUgc2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBzZXJ2aWNpb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdFdGlxdWV0YSBkZSBzZXJ2aWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUaXBvIGRlIGVuY2h1ZmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0FsdGF2b2Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdFc3TDoW5kYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0RpcmVjY2nDs24gSVAgZGUgaW5pY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdBbG1hY2VuYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpY2nDs24gZGUgYWxtYWNlbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdGaWxpYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1Jlc3VtZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnRlIGxpZ2Vybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnSGlsb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIGRlIGxhIHRhcmpldGEgZ3LDoWZpY2EgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIHTDoWN0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0Nhc2NvcyBkZSBSVic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWzDqWZvbm8gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnQ8OhbWFyYSB3ZWInOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/et_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmV0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDnGxkaXNlZCB0ZWdldnVzYW5kbWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTaXNzZXR1bGV2YXRlIHRhb3RsdXN0ZSBhbmRtZXRlIHNlYWRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1bDpGxqYW1pbmV2YXRlIHZhc3R1c2FuZG1ldGUgc2VhZGVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU2VydmVyIE9TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXV1ZGEga2xhc3NpIG3DpMOkcmF0bHVzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTXV1ZGEgcm9sbGkgbcOkw6RyYXRsdXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IGtsYXNzaWtvbXBsZWt0aWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdTaWl0IHNhYXRlIGltcG9ydGlkYSBSZWFkeTJJbXBvcnQta2xhc3NpZGUgcGFrZXR0ZSwgbWlzIHR1dHZ1c3RhdmFkIG1laWUga8O1aWdlIHRhdmFsaXNlbWFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuIFBhbmdlIHTDpGhlbGUsIGV0IG3DtW5lZCB0w6RpZW5kYXZhZCBrb25maWd1cmF0c2lvb25pZCB2w7VpdmFkIG9sbGEgdmFqYWxpa3VkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdPbGVtYXNvbGV2YXRlIMO8a3N1c3RlIGFqYWtvaGFzdGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3JkaSBSZWFkeTJBZG9wdCBrbGFzc2kgcGFrZXRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlIChzZWFkaXN0dXNlbGVtZW5kaSByb2xsKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdLbGFzc2lkZSBmaWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnVXVlIENvbmZpZyBJdGVtXCdpIGxvb21pc2VrcyB2YWxpZ2UgbmltZWtpcmphc3Qga2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0thc3V0dXNlbGV2w7V0dSBzZWlzdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW50c2lkZW50aWRlIG9sdWtvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0ZWlzZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdWaWdhbmUga29uZmlndXJhdHNpb29uaSBraXJqZSBudW1iZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ1RlaXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBudW1iZXIsIG1pbGxlZ2Egc2lkdWRhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1bDtXJrJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBuaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOaW1pIG9uIGp1YmEga2FzdXR1c2VsIENvbmZpZ0l0ZW1zXCdpIHBvb2x0IGrDpHJnbWlzZSh0ZSkgbnVtYnJpKGRlKWdhOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb29uaSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSB2ZXJzaW9vbmkgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lvb25pbnVtYmVyIG9uIGp1YmEga2FzdXR1c2VsIENvbmZpZ0l0ZW1zXCdpcywgbWlsbGUgbnVtYmVyKGQpIG9uIGrDpHJnbWluZShkKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0thc3V0dXNlbGV2w7V0dSByaWlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSW50c2lkZW50aWRlIHJpaWsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0NvbmZpZyBJdGVtXCdpIGFqYWx1Z3U6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0FqYWx1Z3UgU2lzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdTdXVyZW5kdXN2YWFkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgSXRlbXMgcGVyIHBhZ2UgKHNlYWRpc3R1c2VsZW1lbmRpZCBsZWhla8O8bGplIGtvaHRhKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQ29uZmlnLWVsZW1lbmRpIGFuZG1laWQgZWkgbGVpdHVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGlnZSBzZWUga29uZmlndXJhdHNpb29uaWVsZW1lbnQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdLw6Rpdml0YSBvdHNpbmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtXCdpIFRyZWVWaWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnU8O8Z2F2dXNlIHRhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdTdXVtaW1pbmUgc2lzc2UvdsOkbGphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW1cJ2kgbWFrc2ltYWFsbmUgbGlua2lkZSB0YXNlIG9uIHNhYXZ1dGF0dWQhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJlZXJpbWlzb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0tvbmZpZ3VyZWVyaW1pc2VsZW1lbmRpIHRlYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ByYWVndW5lIGthc3V0dXNlbGV2w7V0dSBvbHVrb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdQcmFlZ3VuZSBqdWh0dW1pdGUgb2x1a29yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdWaWltYXRpIG11dWRldHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1ZpaW1hdGkgbXV1dGlzJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVGVpZSBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIG90c2luZyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0ltcG9yZGl0YWtzZSBqw6RyZ21pc2VkIGtsYXNzaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnSW1wb3JkaXRha3NlIGrDpHJnbWlzZWQgcm9sbGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1BhbmdlIHTDpGhlbGUsIGV0IGthIHZhc3RhdmFkIGTDvG5hYW1pbGlzZWQgdsOkbGphZCBqYSBHZW5lcmFsQ2F0YWxvZ2kga2xhc3NpZCBsdXVha3NlIGphIG5laWQgZWkgZWVtYWxkYXRhIGF1dG9tYWF0c2VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdLYXMgc29vdml0ZSBqw6R0a2F0YT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVmFqYWQgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ03DpMOkcmF0bHVzIGVpIG9sZSBrZWh0aXYgWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ8OcbGV2YWFkZTogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVGVpbCBvbiB2YWphIHbDpGhlbWFsdCDDvGh0ZSB2YWxpdHVkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdUZWlsIGVpIG9sZSBzZWxsZWxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaWxlIGtpcmp1dGFtaXPDtWlndXN0OiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc3NpbGUgJXMgZWkgb2xlIG3DpMOkcmF0bGV0dWQgZGVmaW5pdHNpb29uaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZyBpdGVtICIlcyIgZWkgb2xlIGFuZG1lYmFhc2lzIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdFaSDDtW5uZXN0dW51ZCBrdXN0dXRhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGphb2tzIGVpIGxlaXR1ZCB2ZXJzaW9vbmkhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgdsO1aSBDbGFzc0lEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0p1dXJkZXDDpMOkc3UgZWkgYW50YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnRWkgc2FhIG7DpGlkYXRhIGFqYWx1Z3UsIENvbmZpZ0l0ZW1JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnRWkgc2FhIG7DpGlkYXRhIGFqYWx1Z3UsIGp1dXJkZXDDpMOkc3XDtWlndXN0IGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ1V1cyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1V1cyB2ZXJzaW9vbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw5xsZGlzdGUga2F0YWxvb2dpIGF0cmlidXV0aWRlIG7DpGlkaXPDtWlndXN0ZSByw7xobWFkZSBwYXJhbWVldHJpZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSnVodHVtaXRlIHNlaXN1bmRpIHV1ZW5kYW1pbmUgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGlzYXR1ZCBsaW5rICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayAlcyAodHlwZT0lcykga3VzdHV0YXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSBtw6TDpHJhdGx1cyB1dWVuZGF0dWQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05pbWkgdXVlbmRhdHVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdFaSBzYWEgbsOkaWRhdGEgZWxlbWVudGksIENvbmZpZ0l0ZW1pbGUgZWkgb2xlIGFudHVkIGp1dXJkZXDDpMOkc3XDtWlndXNpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9vbiAlcyBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCB2w7VpIFZlcnNpb25JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0VpIHNhYSBrdXZhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpLCBlaSBvbGUgYW50dWQganV1cmRlcMOkw6RzdcO1aWd1c2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGVpIGxlaXR1ZCBhbmRtZWJhYXNpcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Ryw7xraXR1ZCAlcyBwb29sdCBhYWRyZXNzaWwgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1ZpaXRlZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1ZhbGUgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdTZWxsZWxlIGtsYXNzaWxlIGVpIG9sZSBqdXVyZGVww6TDpHN1w7VpZ3VzdCBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1R1bGVtdXN0IGVpIG9sZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbSBvdHNpbmd1IHR1bGVtdXNlZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnRWkgc2FhIG7DpGlkYXRhIGVsZW1lbnRpLCBDb25maWdJdGVtaWxlIGVpIG9sZSBhbnR1ZCBqdXVyZGVww6TDpHN1w7VpZ3VzaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBlaSBsZWl0dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ8OcaHRlZ2kgdmVyc2lvb25pIGVpIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpaXZuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnaG9pYXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2p1aHR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGthc3V0dXNlbGV2w7V0dSBvbGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGludHNpZGVudG5lIG9sZWsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdMdWJhIHB1dWR1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIga2VodGV0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMga2VodGV0dSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdOw6RpZGF0dWQga29uZmlndXJhdHNpb29uaSBlbGVtZW5kaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnS2FzdXR1c2VsZXbDtXR1IHJpaWdpIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdQcmFlZ3VuZSDDtW5uZXR1c2p1aHR1bWkgc2Vpc3VuZGl0w7zDvHAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NpIHBpaXJhbmd1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgamFva3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGlnZSDDvGtzIHbDtWkgbWl0dSBrbGFzc2ksIGV0IHBpaXJhdGEgdmFsaXRhdmFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2kgcGlpcmFuZ3VkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBqYW9rcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGlnZSDDvGtzIHbDtWkgbWl0dSBrbGFzc2ksIGV0IHBpaXJhdGEgdmFsaXRhdmFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRMO8bmFhbWlsaW5lIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhYXRpbGluZSAodmVyc2lvb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmtpZGUgdmlpdGFtaXNlIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdLYXMgc2VlIGxpbmsga2VodGliIHZpaXRhdmEgb2JqZWt0aSBDb25maWdJdGVtXCdpIHbDtWkgc3RhYXRpbGlzZSB2ZXJzaW9vbmkga29odGEuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGVcJ2kgYXJ2dXRhbWluZSB0b2ltdWIgYWludWx0IGTDvG5hYW1pbGlzdGUgbGlua2lkZSBwdWh1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWYWxpZ2UgYXRyaWJ1dXQsIG1pbGxlIGrDpHJnaSBrb25maWd1cmF0c2lvb25pZWxlbWVudGUgb3RzaXRha3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYWFzc3RydWt0dXVyIGVpIG9sZSBrZWh0aXYuIFBhbHVuIGVzaXRhZ2UgWUFNTC12b3JtaW5ndXMgYW5kbWV0ZSBoYXNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwtc3RyaW5naSBhbHVzdGFtaW5lIHPDtW5hZ2EgXCctLS1cJyBvbiBuw7V1dGF2Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdUYWJlbGl0IGNvbmZpZ2l0ZW1fbGluayBlaSDDtW5uZXN0dW51ZCBwdWhhc3RhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdBc2pha29oYXNlaWQgZMO8bmFhbWlsaXNpIHbDpGxqdSBlaSBsZWl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdFaSDDtW5uZXN0dW51ZCBzaXNlc3RhZGEgdGFiZWxpc3NlIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnU2lzZXN0YXR1ZCAwIHJpZGEgdGFiZWxpc3NlIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfDnGhlIGVsZW1lbmRpIG1ha3NpbWFhbG5lIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9vbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnVmlnYSBtw6TDpHJhdGx1c3RlIHPDvG5rcm9uaXNlZXJpbWlzZWwuIFBhbHVuIGtvbnRyb2xsaWdlIGxvZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGVpbCBvbiBJVFNNQ29uZmlnSXRlbSBtw6TDpHJhdGx1c2VkLCBtaXMgZWkgb2xlIHPDvG5rcm9uaXNlZXJpdHVkLiBQYWx1biB2w7V0a2Uga2FzdXR1c2VsZSBvbWEgSVRTTUNvbmZpZ0l0ZW0gZMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBtdXVkYXR1c2VkLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQWVndW51ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0hvb2xkdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5lZXJpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2lvbmlsZSBqw6TDpG51ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfDnGxldmFhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ8OcbGV2YWFkZSBqYSBraW5uaXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdLbGFzc2lkZS9yb2xsaWRlIGphIG5lbmRlZ2Egc2VvdHVkIHbDpGxqYWRlIGltcG9ydGltaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnS2xhc3NpIGltcG9ydGltaXNlbCB0ZWtraXMgdmlnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIHBlaWRldHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBuw6RpZGF0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1bDtWltYWxkYWIgbGFpZW5kYXR1ZCBvdHNpbmd1dGluZ2ltdXNpIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBvdHNpbmd1cy4gU2VsbGUgZnVua3RzaW9vbmlnYSBzYWF0ZSBvdHNpZGEgbnQgY29uZmlnLWVsZW1lbmRpIG5pbWUgc2VsbGlzdGUgdGluZ2ltdXN0ZWdhIG5hZ3UgIigqa2V5MSomJiprZXkyKikiIHbDtWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdWw7VpbWFsZGFiIGxhaWVuZGF0dWQgb3RzaW5ndXRpbmdpbXVzaSBrbGllbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXMuIFNlbGxlIGZ1bmt0c2lvb25pZ2Egc2FhdGUgb3RzaWRhIG50IGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBuaW1lIHNlbGxpc3RlIHRpbmdpbXVzdGVnYSBuYWd1ICIoKmtleTEqJiYqa2V5MiopIiB2w7VpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnTcOkw6RyYXR1ZCBlbHV0w6RodHNhZCBpbmZyYXN0cnVrdHV1cmlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tsaWVudGlkZWxlIG3DpMOkcmF0dWQgQ0lkIGtsaWVuZGlldHRldsO1dHRlbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdLbGllbmRpa2FzdXRhamFsZSBtw6TDpHJhdHVkIENJZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBzZWFkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0tvbnRyb2xsaWRhIHVuaWthYWxzZXQgbmltZSBhaW51bHQgc2FtYSBDb25maWdJdGVtIGtsYXNzaSAoXCdjbGFzc1wnKSB2w7VpIGdsb2JhYWxzZWx0IChcJ2dsb2JhbFwnKSwgbWlzIHTDpGhlbmRhYiwgZXQgZHVibGVlcmluZ3V0ZSBvdHNpbWlzZWwgdsO1ZXRha3NlIGFydmVzc2UgaWdhIG9sZW1hc29sZXZhdCBDb25maWdJdGVtXCdpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVmFsaWdlIG1vb2R1bCBuaW1lc2tlZW1pIGrDtXVzdGFtaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWYWxpZ2UgbW9vZHVsIG51bWJyaXNrZWVtaSBqw7V1c3RhbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWYWxpZ2UgbW9vZHVsLCBldCBrZWh0ZXN0YWRhIHZlcnNpb29uaWphZGEgc2tlZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVmFsaWdlIGF0cmlidXVkaWQsIG1pcyBrw6Rpdml0YXZhZCB1dWUgdmVyc2lvb25pIGxvb21pc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1ZhbGlnZSBrYXRlZ29vcmlhZCwgbWlzIG3DpMOkcmF0YWtzZSBzZWxsZWxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrbGFzc2lsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb25maWdJdGVtIE92ZXJ2aWV3IHZlZXJndSBDb25maWdJdGVtIGVsZW1lbmRpIGZpbHRyaWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdWZWVydWQsIG1pZGEgc2FhYiBmaWx0cmVlcmlkYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMuIE3DpHJrdXM6IEx1YmF0dWQgb24gYWludWx0IENvbmZpZyBJdGVtIGF0cmlidXVkaWQgamEgZMO8bmFhbWlsaXNlZCB2w6RsamFkIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1cmVlcmltaXNvYmpla3RpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9vZHVsLCBtaXMgdsO1aW1hbGRhYiBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcyBhamFsdWtrdSBsb2dpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZyBlbGVtZW50aWRlIHPDvG5kbXVzdGUgbW9vZHVsLCBtaXMgdXVlbmRhYiBjb25maWcgZWxlbWVudGUgbmVuZGUgcHJhZWd1c2UgbcOkw6RyYXRsdXNlIGrDpHJnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdWw6RsamFsYXNrZWF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWcgaXRlbSBwcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWcgaXRlbSB6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gVHJlZSBWaWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gdmVyc2lvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnSsOkcmdtaXN0ZSBrbGFzc2lkZSBDb25maWdJdGVtcyBlaSBzYWx2ZXN0YXRhIEVsYXN0aWNzZWFyY2hpIHNlcnZlcmlzc2UuIEV0IHNlZGEgb2xlbWFzb2xldmF0ZWxlIENJLWRlbGUgcmFrZW5kYWRhLCB0dWxlYiBww6RyYXN0IHNlbGxlIHZhbGlrdSBtdXV0bWlzdCBrw6Rpdml0YWRhIENJIG1pZ3JhdHNpb29uIGtvbnNvb2xpIGthdWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcywgbWlsbGVsIG9uIGrDpHJnbWlzZWQga2FzdXR1c2VsZXbDtXR1IG9sZWt1ZCwgZWkgc2FsdmVzdGF0YSBFbGFzdGljc2VhcmNoaSBzZXJ2ZXJpc3NlLiBTZWxsZSBrb2hhbGRhbWlzZWtzIG9sZW1hc29sZXZhdGVsZSBDSS1kZWxlIHR1bGViIHDDpHJhc3Qgc2VsbGUgdmFsaWt1IG11dXRtaXN0IGvDpGl2aXRhZGEgQ0ktbWlncmF0c2lvb24ga29uc29vbGkga2F1ZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3VyZWVyaW1pc8O8a3N1c2UgcGlpcmFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhdHNpb29uIEVsZW1lbnRpZGUgcGlpcmFydiBsZWhla8O8bGplIGtvaHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXJhdHNpb29uaSBqdWh0aW1pc2UgYW5kbWViYWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGxhaHRpbmUgbW9vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVlcmltaXNlbGVtZW5kaSBvdHNpbmcgYWdlbnRpZGUgbGlpZGVzZSB0YWdhc2lzaWRlIG1hcnNydXV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdMdXVhIGphIGhhbGxhdGEga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSBtw6TDpHJhdGx1c2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnTG9vYiBDb25maWdJdGVtc1wnaSBwaWxldGlkIHRlYXR1ZCBhamFoZXRrZWRlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xpZW5kaWQgc2FhdmFkIG7DpGhhIGFqYWxvb2xpc2kgQ0ktdmVyc2lvb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGllbnRpZGVsIG9uIHbDtWltYWx1cyBrw6RzaXRzaSB2YWhldGFkYSB2YXJhc2VtYXRlIENJLXZlcnNpb29uaWRlIHZhaGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1ZhaWtpbWlzaSBhbmRtZWQsIG1pZGEga2FzdXRhdGFrc2UgYXRyaWJ1dXRpZGUgcHVodWwga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaWwuIE7DpGlkZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdWYWlraW1pc2kgYW5kbWVkLCBtaWRhIGthc3V0YXRha3NlIGF0cmlidXV0aWRlIHB1aHVsIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmlsLiBOw6RpZGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdNw6TDpHJha2UgdG9pbWluZ3VkLCBtaWxsZSBwdWh1bCBvbiBzZW90dWQgb2JqZWt0aWRlIHZpZGluYSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpIHNhYWRhdmFsIHNlYWRldGUgbnVwcCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQYW5nZSB0w6RoZWxlLCBldCBuZWVkIHRvaW1pbmd1ZCBwZWF2YWQgb2xlbWEgcmVnaXN0cmVlcml0dWQgasOkcmdtaXNlZCBKUy0gamEgQ1NTLWZhaWxpZDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgamEgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnTcOkw6RyYWtlIG1hbGxpOjpUb29sa2l0IHNrZWVtIHZlcnNpb29uaSBzdHJpbmdpZGUgamFva3MuIEthc3V0YXRha3NlIGFpbnVsdCBzaWlzLCBrdWkgVmVyc2lvbiBTdHJpbmcgTW9kdWxlXCdpbGUgb24gbcOkw6RyYXR1ZCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdNw6TDpHJha2UgdGluZ2ltdXNlZCwgbWlsbGUgYWx1c2VsIGtsaWVuZGlsIG9uIGx1YmF0dWQga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIG7DpGhhLiBUaW5naW11c2kgc2FhYiB2YWxpa3VsaXNlbHQgcGlpcmF0YSB0ZWF0dWQga2xpZW5kaXLDvGhtYWRlbGUuIE5pbWkgb24gYWludXMga29odXN0dXNsaWsgYXRyaWJ1dXQuIEt1aSBtdWlkIHZhbGlrdWlkIGVpIG9sZSBhbnR1ZCwgb24ga8O1aWsga29uZmlndXJhdHNpb29uaWVsZW1lbmRpZCBzZWxsZSBrYXRlZ29vcmlhIGFsbCBuw6RodGF2YWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBuw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSBrdXN0dXRhbWlzZWtzIMO8bGRpc2UgbGlpZGVzZSBhYmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgbsO1dXRhdmFkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIHNhYW1pc2VrcyDDvGxkaXNlIGxpaWRlc2UgYWJpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIG7DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pb2JqZWt0aWRlIG90c2ltaXNla3Mgw7xsZGlzZSBsaWlkZXNlIGFiaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBuw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgc2VhZGlzdGFtaXNla3Mgw7xsZGlzZSBsaWlkZXNlIGFiaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIMO8bGV2YWF0ZW1vb2R1bGksIG1pcyBuw6RpdGFiIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGxvZW5kaSB2w6Rpa2VzdCB2YWFkZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBrYXMgbGluZ2l0w7zDvGJpIHNpbGRpZCBwZWF2YWQgb2xlbWEga3V2YXR1ZCBzw7VsbWXDvGhlbmR1c3Rlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGlnYSBDb25maWdJdGVtLWtsYXNzaSBqYW9rcyBlcmFsZGkgcmVndWxhYXJhdmFsZGlzZWQgQ29uZmlnSXRlbS1uaW1lIGtvbnRyb2xsaW1pc2VrcyBqYSB2YXN0YXZhdGUgdmVhdGVhZGV0ZSBrdXZhbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIENJZGUgb2xlbWFzb2xldmFkIHZlZXJ1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcyBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgcGVhYiBrb29zbmVtYSBrbGFzc2kgbmltZXN0IGphIHZhc3RhdmEga2xhc3NpIGphb2tzIGvDpHR0ZXNhYWRhdmF0ZSB2w6RsamFkZSBtYXNzaWl2aS4gRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBraXJqZWQgcGVhdmFkIGrDpHJnaW1hIHNrZWVtaSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhdHJpYnV1ZGksIG1pcyBvbiB2YWphbGlrIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXR1bGVtdXNlIHNvcnRlZXJpbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhdHJpYnV1ZGkga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZSBzb3J0ZWVyaW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNw6TDpHJhYiB2YWlraW1pc2kga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGF0cmlidXVkaSBzZWxsZSBvcGVyYXRzaW9vbmkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZSBzb3J0ZWVyaW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgasOkcmpla29ycmEgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1dHVsZW11c2VzLiDDnGxlczogdmFuaW0gb24gw7xsZXZhbC4gQWxsYTogdXVzaW0gw7xsZXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgasOkcmpla29ycmEga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZXMuIMOcbGVzOiB2YW5pbSBvbiDDvGxldmFsLiBBbGxhOiB1dXNpbSDDvGxldmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgQ0lkZSB2YWlraW1pc2kga3V2YXRhdmFkIHZlZXJ1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcyBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgcGVhYiBrb29zbmVtYSBrbGFzc2kgbmltZXN0IGphIHZhc3RhdmEga2xhc3NpIGphb2tzIGvDpHR0ZXNhYWRhdmF0ZSB2w6RsamFkZSBtYXNzaWl2aS4gRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBraXJqZWQgcGVhdmFkIGrDpHJnaW1hIHNrZWVtaSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdNw6TDpHJhYiB2YWlraW1pc2kga3V2YXRhdmF0ZSBzdWhldGUgc8O8Z2F2dXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiB2YWlraW1pc2kga3V2YXRhdmEga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgYXRyaWJ1dWRpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgdmFpa2ltaXNpIGt1dmF0YXZhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGF0cmlidXVkaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4gTsOkaWRlOiAiS2V5IiBwZWFiIG9sZW1hIGTDvG5hYW1pbGlzZSB2w6RsamEgbmltaSwgYW50dWQganVodWwgXCdYXCcsICJDb250ZW50IiBwZWFiIG9sZW1hIGTDvG5hYW1pbGlzZSB2w6RsamEgdsOkw6RydHVzIHPDtWx0dXZhbHQgZMO8bmFhbWlsaXNlIHbDpGxqYSB0w7zDvGJpc3QsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGphIHbDtWkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIga2xhc3NpIFwnSVRTTUNvbmZpZ0l0ZW1cJyB2YWlraW1pc2kgYWxhbW9iamVrdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBDSWRlIG9sZW1hc29sZXZhZCB2ZWVydWQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMgc8O1bHR1dmFsdCBDSS1rbGFzc2lzdC4gSWdhIGtpcmplIHBlYWIga29vc25lbWEga2xhc3NpIG5pbWVzdCBqYSB2YXN0YXZhIGtsYXNzaSBqYW9rcyBrw6R0dGVzYWFkYXZhdGUgdsOkbGphZGUgbWFzc2lpdmkuIETDvG5hYW1pbGlzdGUgdsOkbGphZGUga2lyamVkIHBlYXZhZCBqw6RyZ2ltYSBza2VlbWkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTcOkw6RyYWIgc2VsbGUgZWtyYWFuaSByaWtrYWxpa3UgdGVrc3RpcmVkYWt0b3JpIGtvbXBvbmVuZGkga8O1cmd1c2UuIFNpc2VzdGFnZSBhcnYgKHBpa3NsaWQpIHbDtWkgcHJvdHNlbnR1YWFsbmUgdsOkw6RydHVzIChzdWh0ZWxpbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBDSSBtw6TDpHJhdGx1c2UgcmVkYWt0b3JpIHJpZGFkZSBhcnZ1IGhhbGR1c2xpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBqdWh0dW1pIHNlaXN1bmRpdGUgasOkcmpla29ycmEga8O1cmdlc3QgKG50IGtyaXRzaWFhbG5lKSBrdW5pIG1hZGFsYW5pIChudCBmdW5rdHNpb25hYWxuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgYXNqYW9tYXNlZCBrYXN1dHVzZWxldsO1dHUgb2xla3VkLCBtaWxsZSBwdWh1bCBzZW90dWQgcGlsZXRpZCB2w7VpdmFkIG3DtWp1dGFkYSBDSSBvbGVrdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgYWdlbnRJVFNNQ29uZmlnSXRlbSBla3JhYW5pIG90c2luZ3VwaWlyYW5ndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBvdHNpbmd1cGlpcmFuZ3UgZWtyYWFuaSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcmFiIG90c2luZ3VwaWlyYW5ndSBla3JhYW5pIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYWIgb3RzaW5ndXBpaXJhbmd1IGVrcmFhbmlsIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGvDtWlraWRlIENJLWtsYXNzaWRlIGphb2tzIGxpbmdpdGFiZWxpcyBrb21wbGVrc3ZhYXRlcyBuw6RpZGF0dWQgQ0lkZSB2ZWVydWQuIEt1aSBrYW5uZSBwdXVkdWIsIGt1dmF0YWtzZSB2YWlraW1pc2kgdmVlcnVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgbGluZ2l0YWJlbGlzIGtvbXBsZWtzdmFhdGVzIG7DpGlkYXR1ZCBDSWRlIHZlZXJ1ZCBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgZWVzIHBlYWIgb2xlbWEga2xhc3NpIG5pbWkgamEga2FrcyBrb29sb25pdCAobnQgQ29tcHV0ZXI6OikuIE9uIG9sZW1hcyBtw7VuZWQgQ0ktQXR0cmlidXVkaWQsIG1pcyBvbiBrw7VpZ2lsZSBDSWRlbGUgw7xoaXNlZCAobsOkaXRla3Mga2xhc3NpIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDDnGtzaWt1dGUgQ0ktQXR0cmlidXV0aWRlIG7DpGl0YW1pc2VrcywgbmFndSBvbiBtw6TDpHJhdGxldHVkIENJLURlZmluaXRzaW9vbmlzLCB0dWxlYiBrYXN1dGFkYSBqw6RyZ21pc3Qgc2tlZW1pIChuw6RpZGUga2xhc3NpIENvbXB1dGVyIHB1aHVsKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEt1aSBDSS1rbGFzc2kga29odGEgcHV1ZHViIGthbm5lLCBrdXZhdGFrc2UgdmFpa2ltaXNpIHZlZXJ1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzZWQgZWxlbWVuZGlkIG9uIHNhYWRhdmFsICJBY3Rpb24iIGphb2tzIElUU00gQ29uZmlnIEl0ZW0gQUNMaSBzdHJ1a3R1dXJpIGtvbG1hbmRhbCB0YXNhbmRpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzZWQgZWxlbWVuZGlkIG9uIHNhYWRhdmFsIElUU00gQ29uZmlnIEl0ZW0gQUNMaSBzdHJ1a3R1dXJpIGVzaW1lc2VsIHRhc2FuZGlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzZWQgZWxlbWVuZGlkIG9uIHNhYWRhdmFsIElUU00gQ29uZmlnIEl0ZW0gQUNMaSBzdHJ1a3R1dXJpIHRlaXNlbCB0YXNhbmRpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc3QgdMO8w7xwaSBsaW5rIChuaW1lZ2EgcGlsZXRpIHZhYXRlbnVyZ2FzdCkgdsO1aWIgbcO1anV0YWRhIHNlb3R1ZCBDSSBzdGFhdHVzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzdCB0w7zDvHBpIHBpbGV0aWQgdsO1aXZhZCBtw7VqdXRhZGEgc2VvdHVkIENJIHN0YWF0dXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ03DpMOkcmF0bHVzZSBhamFrb2hhc3RhbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS3VzdHV0YSBrb25maWd1cmF0c2lvb25pZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0thc3V0dXNlbGV2w7V0dSBvbGVrIFbDpHJ2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc3RlIHbDpGxqYWRlIHPDvG5kbXVzdGUgbW9vZHVsLCBtaXMgbcOkcmdpYiBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgbcOkw6RyYXRsdXNlZCBzw7xua3Jvb25pc3QgdsOkbGphcyBvbGV2YWtzLCBrdWkgZMO8bmFhbWlsaXNpIHbDpGxqdSBzaXNhbGRhdmFkIGTDvG5hYW1pbGlzZWQgdsOkbGphZCBtdXV0dXZhZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDvG5hYW1pbGlzZWQgdsOkbGphZCwgbWlzIGt1dmF0YWtzZSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgdMOkaWVuZGF2YXRlIElUU00tdsOkbGphZGUgZWtyYWFuaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDvG5hYW1pbGlzZWQgdsOkbGphZCwgbWlzIGt1dmF0YWtzZSBrbGllbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlIGVrcmFhbmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc2VkIHbDpGxqYWQsIG1pcyBrdXZhdGFrc2UgYWdlbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnVsO1aW1hbGRhYiBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgbWFzc2l0ZWdldnVzZSBmdW5rdHNpb29uaSwgZXQgYWdlbnRpZGUgZnJvbnRlbmQgc2Fha3MgdMO2w7Z0YWRhIGtvcnJhZ2Egcm9oa2VtIGt1aSDDvGhlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaWdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGthc3V0dXNlbGV2w7V0dSBvbGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ1PDvG5kbXVzZSBtb29kdWwsIGV0IG3DpMOkcmF0YSBjb25maWdpdGVtLXN0YXR1cyB0aWNrZXQtY29uZmlnaXRlbS1saW5raWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb25maWd1cmF0c2lvb25pZWxlbWVuZGkgaW5kZWtzaSB2w6RsamFkLCBtaWRhIGthc3V0YXRha3NlIHTDpGlzdGVrc3Rpb3RzaW5ndWtzLiBWw6RsamFkIG9uIHNhbXV0aSBzYWx2ZXN0YXR1ZCwga3VpZCBlaSBvbGUgw7xsZGlzZSBmdW5rdHNpb25hYWxzdXNlIGphb2tzIGtvaHVzdHVzbGlrdWQuIE1hbnVzdGUgbGlzYW1pc2Ugc2FhYiBrZWVsYXRhLCBrdWkgbcOkw6RyYXRhIGtpcmplIHbDpMOkcnR1c2VrcyAwIHbDtWkga3VzdHV0YWRhIHNlZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBpbmRla3Npc3NlIHNhbHZlc3RhdHVkIHbDpGxqYWQsIG1pZGEga2FzdXRhdGFrc2UgbGlzYWtzIHTDpGlzdGVrc3RvdHNpbmd1dGVsZSBrYSBtdXVkZWtzIGFzamFkZWtzLiBUw6RpZWxpa3UgZnVua3RzaW9uYWFsc3VzZSB0YWdhbWlzZWtzIG9uIGvDtWlrIHbDpGxqYWQga29odXN0dXNsaWt1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlXCdpIG1vb2R1bGkgcmVnaXN0cmVlcmltaW5lIENvbmZpZ0l0ZW1GZXRjaCBrdXRzdXZhIGtpaGkgamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZVwnaSBtb29kdWxpIHJlZ2lzdHJlZXJpbWluZSBDb25maWdJdGVtRmV0Y2gga3V0c3V2YSBraWhpIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlXCdpIG1vb2R1bGkgcmVnaXN0cmVlcmltaW5lIENvbmZpZ0l0ZW1GZXRjaCBrdXRzdXZhIGtpaGkgamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2lzYWxkYWIga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3Vzc2Uga2FzdXR1c2VsZXbDtXR1IG9sZWt1aWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Npc2FsZGFiIGtsaWVuZGlsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1c3NlIGludHNpZGVudGlkZSBvbGVrdWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ1NlbGxlIG9wZXJhdHNpb29uaSB0dWxlbXVzZWwga3V2YXRhdmF0ZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBtYWtzaW1hYWxuZSBhcnYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9vZHVsLCBldCBrb250cm9sbGlkYSBrbGFzc2kgZWVzdCB2YXN0dXRhdmF0IHLDvGhtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb29kdWwsIGV0IGtvbnRyb2xsaWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBlZXN0IHZhc3R1dGF2YXQgcsO8aG1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vb2R1bCBJVFNNLWkga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgc3RhdGlzdGlrYSBnZW5lcmVlcmltaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmltaSBNb29kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWJyaW1vb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVlcmltaXNvYmpla3RpZGUgYXJ2LCBtaXMga3V2YXRha3NlIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzIGlnYWwgb3RzaW5ndXR1bGVtdXNlIGxlaGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLbGllbnRpZGUga2FzdXRhamFsaWlkZXNlcyBpZ2FsIG90c2luZ3V0dWxlbXVzZSBsZWhlbCBrdXZhdGF2YXRlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGFydi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnb2JqZWt0aWQsIG1pZGEgb3RzaWRhLCBrdWkgcGFsanUga2lyamVpZCBqYSBtaWxsaXNlaWQgYXRyaWJ1dXRlIG7DpGlkYXRhLiBDb25maWdJdGVtIGF0cmlidXVkaWQgdHVsZWIgc2VsZ2Vzw7VuYWxpc2VsdCBzYWx2ZXN0YWRhIEVsYXN0aWNzZWFyY2hpIGthdWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfDnGxldmFhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWVldHJpZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkga2xhc3NpZGUga2F0ZWdvb3JpYXRlIGphb2tzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWVldHJpZCB2w6Rpa2VzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlIHZlZXJndWRlIGZpbHRyaXRlIGphb2tzLiBQYW5nZSB0w6RoZWxlOiBrdWkgbcOkw6RyYXRhIFwnQWN0aXZlXCcgdsOkw6RydHVzZWtzIDAsIHRha2lzdGFiIHNlZSBhaW51bHQgYWdlbnRpZGVsIHNlbGxlIGdydXBpIHNlYWRldGUgbXV1dG1pc3Qgb21hIGlzaWtsaWtlcyBlZWxpc3R1c3Rlcywga3VpZCBsdWJhYiBhZG1pbmlzdHJhYXRvcml0ZWwgc2lpc2tpIHRlaXNlIGthc3V0YWphIG5pbWVsIHNlYWRldGUgbXV1dG1pc3QuIEthc3V0YWdlIFwnUHJlZmVyZW5jZUdyb3VwXCcsIGV0IGtvbnRyb2xsaWRhLCBtaWxsaXNlcyBwaWlya29ubmFzIG5laWQgc2VhZGVpZCBrYXN1dGFqYWxpaWRlc2VzIG7DpGlkYXRha3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0thc3V0dXNlbGV2w7V0dSBvbGVrdXRlIHBhcmFtZWV0cml0ZSB2w6RydiBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAna2FzdXR1c2VsZXbDtXR1IG9sZWt1dGUgcGFyYW1lZXRyaWQgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfDnGxkaXN0ZSBrYXRhbG9vZ2kgYXRyaWJ1dXRpZGUgbsOkaWRpc8O1aWd1c3RlIHLDvGhtYWRlIHBhcmFtZWV0cmlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05pbWVtb29kdWxpIHBhcmFtZWV0cmlkIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW5kaWtsYXNzaWRlIGphb2tzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIG51bWJyaW1vb2R1bGkgamFva3Mga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdMZWhla8O8bGdlZGUgcGFyYW1lZXRyaWQgKGt1cyBrdXZhdGFrc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbnRlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIHN0cmluZ2kgbW9vZHVsaSBqYW9rcyBjb25maWcgZWxlbWVudGlkZSBrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIHZlcnNpb29uaSBzdHJpbmdpIG1hbGxpIHTDtsO2cmlpc3Rha29tcGxla3RpIG1vb2R1bGkgamFva3Mga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUgbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIGvDpGl2aXRhbWlzZWtzIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0xvYSBncnVwcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkga2lubml0YW1pc2UgdG9pbWluZ3Uga2FzdXRhbWlzZWtzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaSBrYXN1dGFtaXNla3Mga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgcHV1IHZhYXRlIGVrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgc3V1bWltaXNla3JhYW5pIGthc3V0YW1pc2VrcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQsIGV0IGthc3V0YWRhIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBsaXNhbWlzZSBla3JhYW5pIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkgbWFzc2tvbmZpZ3VyYXRzaW9vbmkgZWxlbWVuZGkgZWtyYWFuaSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQsIGV0IGthc3V0YWRhIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSByZWRpZ2VlcmltaXNlIGVrcmFhbmkgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkLCBldCBrYXN1dGFkYSBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgYWphbG9vIGVrcmFhbmkgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGVrcmFhbmkgcHJpbnRpbWluZSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnTsO1dXRhdmFkIMO1aWd1c2VkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGt1c3R1dGFtaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnT3RzaSBrb25maWd1cmVlcml0dWQgZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTZWFkaXN0YWdlIENJIGludHNpZGVuZGkgc3RhYXR1cyBhdXRvbWFhdHNlbHQsIGt1aSBwaWxldCBvbiBzZW90dWQgQ0lnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhYiBrYXN1dHVzZWxldsO1dHUgb2xla3UgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBodWxnaWFrbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhYiBpbnRzaWRlbmRpIG9sZWt1IGFnZW50aWRlIGxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGh1bGdpYWtuYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAncHJlcHJvZHVrdGlpdm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgcMOkw6RzZWIga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGFqYWx1a2t1IGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBqdXVyZGVww6TDpHN1IGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhamFsb29sZSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlIHN1dW1pdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBtaWxsZSBhYmlsIHNhYWIga3VzdHV0YWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSBvbWEgYWdlbmRpIGthc3V0YWphbGlpZGVzZSBzdXVtaXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBldCBrdXZhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgbGluZ2lkIHB1dXZhYXRlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBrb25maWd1cmVlcmltaXNvYmpla3RpIGR1YmxlZXJpZGEgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmlvYmpla3RpZGUgw7xsZXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBrb25maWd1cmVlcmltaXNvYmpla3RpIGR1YmxlZXJpZGEgc2VsbGUgc3V1bWl2YWF0ZXMgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0t1dmFiIG1lbsO8w7xzIGxpbmdpLCBtaWxsZSBhYmlsIHNhYWIgc2VhZGlzdHVzb2JqZWt0aSByZWRpZ2VlcmlkYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Ugc3V1bWl2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIG1lbsO8w7xzIGxpbmtpLCBtaWxsZSBhYmlsIHNhYWIgbWlubmEgdGFnYXNpIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgc3V1bWl2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIGV0IHByaW50aWRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSBzZWxsZSBzdXVtaXZhYXRlcyBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIG1lbsO8w7xzIGxpbmtpLCBtaWxsZSBhYmlsIHNhYWIga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIHN1dXJlbmRhbWEgYXNqYW5kdXNsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW5kaSBhamFsdWd1ICh2YXN0dXBpZGlzZXMgasOkcmpla29ycmFzKSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVmFpa2ltaXNpIGthdGVnb29yaWEsIG1pcyBrdXZhdGFrc2UsIGt1aSDDvGtza2kga2F0ZWdvb3JpYSBlaSBvbGUgdmFsaXR1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBpZGVudGlmaWthYXRvciwgbnQgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFZhaWtpbWlzaSBvbiBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0vDpGl2aXRhYiBDb25maWdJdGVtRmV0Y2gtaSBrdXRzdWphIGF1dG9tYWF0c2VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvb24gU3RyaW5nIFbDpGxqZW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb29uaSBzdHJpbmcgbW9vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb29uaSB2YWxsYW5kYWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdLYXMgQ29uZmlnSXRlbUFDTGkgdMOkaXRtaXN0IHNhYWIgdsOkbHRpZGEsIGtvbnRyb2xsaWRlcyB2YWhlbcOkbHUgdsOkbGphbGlzdGUgc8O1bHR1dnVzaS4gU2VlIHbDtWliIHBhcmFuZGFkYSB2b3JtaWRlIGxhYWRpbWlzYWVnYSwga3VpZCB0dWxlYiBrZWVsYXRhLCBrdWkgQUNMTW9kdWxlc1wnaSBrYXN1dGF0YWtzZSBJVFNNQ29uZmlnSXRlbS0gamEgRm9ybS1SZXR1cm5UeXBlc1wnaSBwdWh1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ01pbGxpc2VkIMO8bGRhbmRtZWQgb24gZXNpdGF0dWQgcMOkaXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWFsbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGlpdm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWt0aWl2bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3RpaXZuZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSB0b2xsaSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHRvbGxpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgdG9sbGkgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgdG9sbGkgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10b2xsaW5lIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSB0b2xsaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtdG9sbGluZSByaWl1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdG9sbGkgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy10b2xsaW5lIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiB0b2xsaSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgdG9sbGkgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHRvbGxpICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgdG9sbGkgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgdG9sbGkgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHRvbGxpICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSB0b2xsaSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdG9sbGkgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdG9sbGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgdG9sbGkgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSB0b2xsaSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSB0b2xsaSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0b2xsaSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHRvbGxpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHRvbGxpICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgdG9sbGkgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyB0b2xsaSAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgdG9sbGkgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHRvbGxpICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHRvbGxpICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHRvbGxpICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSYWFtYXR1cGlkYW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBYWRyZXNzaSBlcmFsZGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb29ndGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1NlYWRtZSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBa3UgbWFodXRhdnVzIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWt1IHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0hvb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXNzaWxpaWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBrbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnTWFodCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnVsO1aW1zdXMgw7xoZSBncmFhZmlrYWthYXJkaSBrb2h0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0thYXJkaSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYWFyZGlsdWdlamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS2FhcmRpIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50aWRlIHNlcnRpZmlrYWFkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW5kaXRhcmt2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0tsaWVuZGlrYXRlZ29vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0tlbGxhYWVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb29kaSBhbGxraXJqYXN0YW1pc2Ugc2VydGlmaWthYWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29udmVyZW50c2l0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdGF0c2lvb25pbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdWw7V0a2Ugw7xoZW5kdXN0IGVkYXNpbcO8w7xqYWdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnS29udGVpbmVyaXRlIGhhbGRhbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0xlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnTGVwaW5ndSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdMZXBpbmd1cGVyaW9vZCBhbGF0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnTGVwaW5ndSBrZXN0dXMga3VuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdKdWh0bWV0YSB0ZWxlZm9uIChERUNULXRlbGVmb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0t1bHXDvGhpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0xpdHNlbnRzaWRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTG9vbWlzZSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnS29oYW5kYXR1ZCByaWl1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlZXJpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdBcnZlIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdUZWxsaW11c2Uga3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0dhcmFudGlpIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ1bDpGxqYWxhc2ttaXNlIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdUw7bDtmxhdWFhcnZ1dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW5kaSBhbGxraXJqYXN0YW1pc2Ugc2VydGlmaWthYWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgcmlpdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtcG9zdGkgc2VydGlmaWthYWRpZCAoUy9NSU1FIHNlcnRpZmlrYWFkaWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1TDtsO2bGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnTMO1cHAtSVAtYWFkcmVzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1RvZXR1c2UgbMO1cHBlbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0tlaHRpdnVza3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ1bDpGxpbmUga8O1dmFrZXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1R1bGVtw7zDvHInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ07DtWdhcmF0dGEgZW5lcmdpYXNhbHZlc3R1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ1Zvcm1pZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFudHNpaXNpbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnVGFzdXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ8OcbGRpbmUgdGVhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFhZmlrYWthYXJkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWFmaWtha2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdSaWlzdHZhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdSaWlzdHZhcmEgbXVkZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUmlpc3R2YXJhIGthYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ1BlYWtvbXBsZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRlZWRpIGphIGp1dXJkZXDDpMOkc3UgaGFsZGFtaW5lIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcmludW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0FydmUgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhdmlhdHV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgbW9uaXRvciAodmVkZWxrcmlzdGFsbGt1dmFyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIG1vbml0b3IgKHZhbGd1c2Rpb29kKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdMYXVhdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdTw7xsZWFydnV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhaXVza3JhYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdLaWh0IDE6IGbDvMO8c2lsaW5lIGtpaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnS2lodCAyOiBhbmRtZXNpZGVraWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdLaWh0IDM6IHbDtXJndWtpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnS2lodCAzOiB2w7VyZ3VraWhpIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnS2lodCA0OiBUcmFuc3BvcmRpa2lodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnS2lodCA1OiBTZWFuc2lraWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0tpaHQgNjogRXNpdGx1c2tpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdLaWh0IDc6IFJha2VuZHVza2loaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdSZW5kaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpdHNlbnRzaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGl0c2VudHNpIHbDtXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpdHNlbnRzaXTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGl0c2VudHNpIGtlaHRpdnVzYWVnIGFsYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpdHNlbnRzaSBrZWh0aXZ1c2FlZyBrdW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaWl0aXVtcmF1ZGZvc2ZhYXQgKExpRmVQTzQpIGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGlpdGl1bS1pb29uIGFrdSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xhZW51bGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBc3ViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1Bpa2t1c2tyYWFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVG9vdGphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW1hYWxuZSBrYW5kZXbDtWltZSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTcOkbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNw6RsdSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWlsaW51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpaWxuZS9pbnRlZ3JlZXJpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTXVkZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNdWRlbGkga2lyamVsZHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JpIHJlc29sdXRzaW9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yaSBzdXVydXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdIaWlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdWw7Vyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdWw7VyZ3VpbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdWw7VyZ3V0ZWF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVsO1cmd1a29ycmFsZHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWthYWRtaXVtIChOaUNkKSBha3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWwtbWV0YWxsaMO8ZHJpaWQgKE5pTUgpIGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdNaXR0ZWF2YWxkYW1pc2UgbGVwaW5nIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTcOkcmttaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQcm90c2Vzc29yaXRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU0tbW9vZHVsaXRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFhZmlrYWthYXJ0aWRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9yIChvcmdhYW5pbGluZSB2YWxndXNkaW9vZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnVGVnZXZ1c2t1bHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1RlbGxpbXVzZSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdNdXVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdWw6RsanVuZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTi1LT09EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcmx1c2xlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25pbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9uaSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGw7zDvHNpbGlzZWQgc8O8ZGFtaWt1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1RvaXRldmFydXN0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdPc3RldHVkIGFhZHJlc3NpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmlpdWxpIHPDvGdhdnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmlpdWxpw7xrc3VzZWQgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdUdWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBzZXJ0aWZpa2FhZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnTcO8w7xnaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpaXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1N1bGV0dWQgcGxpaS1zb29saGFwcGUgYWt1IChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VlcmlhbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlcmkgdGFya3ZhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdUZWVudXNlbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnVGVlbnVzZSBzaWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Bpc3Rpa3VwZXNhIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Rhcmt2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnS8O1bmVsZWphZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQLWFhZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0xhZHVzdGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU2FsdmVzdHVzcnV1bWkgZXJhbGRpc2Vpc3VuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1TDvHRhcmV0dGV2w7V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnS29ra3V2w7V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ8OVaHVrZSBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ05paWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFhZmlrYWthYXJkaSBSQU0ga29ra3UgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSBrb2trdSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdQdXV0ZWVrcmFhbmlnYSBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBwZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgcGVha29tcGxla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC10ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdWZWViaWthYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/fa_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9mG2q/Yp9i02Kog2KjYsdin24wg2K/Ysdiu2YjYp9iz2Kog2K/Yp9iv2Ycg2YfYp9uMINmI2LHZiNiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICfZhtqv2KfYtNiqINio2LHYp9uMINm+2KfYs9iuINiu2LHZiNis24wg2K/Yp9iv2YcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICfZhdiv24zYsduM2KogQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfYqti624zbjNixINiq2LnYsduM2YEg2qnZhNin2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9iq2LrbjNuM2LEg2KrYudix24zZgSDaqdmE2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn2YHbjNmE2KrYsSDYqNix2KfbjCDaqdmE2KfYs+KAjNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAn2qnZhNin2LPbjCDYsdinINio2LHYp9uMINiz2KfYrtiqINuM2qkg2KLbjNiq2YUg2b7YqNqp2LHYqNmG2K/bjCDYrNiv24zYryDYp9mG2KrYrtinINqp2YbbjNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9qp2YTYp9izJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfZiNi22LnbjNiqINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2LHYrtiv2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfYotuM2Kcg2LTZhdinINmI2KfZgti52Kcg2YXbjCDYrtmI2KfZh9uM2K8gINin24zZhiDZgdi52KfZhNuM2Kog2LHYpyDYrdiw2YEg2qnZhtuM2K8g2J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn2YbYp9mFINin24zZhiDYotuM2KrZheKAjNmH2KfbjCDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfYtNmF2KfYsdmHINmG2LPYrtmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfZhtin2YUg2KfbjNmGINii24zYqtmF4oCM2YfYp9uMINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2YbYtdioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn2YXYrdiq2YjYp9uMINiz2KfYqNmC2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9iy2YXYp9mGINin24zYrNin2K8gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ9mG2YXYp9uMINqp2KfZhdmEJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9iq2LnYr9in2K8g2KLbjNiq2YXigIzZh9in24wg2b7bjNqp2LHYqNmG2K/bjCDYr9ixINmH2LEg2LXZgdit2YcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ9in2KzYsdinINis2LPYqtis2YgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDZgdi52YTbjCDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2KzYp9ix24wg2LHYrtiv2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfYotiu2LHbjNmGINiq2LrbjNuM2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn2KLYrtix24zZhiDYqti624zbjNixINio2Ycg2YjYs9uM2YTZhyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfZhtuM2KfYsiBFeGFtcGxlUHJvY2Vzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn2YbZhduMINiq2YjYp9mG2K8g2KrYp9ix24zYriDYsdinINmG2LTYp9mGINiv2YfYr9iMINmH24zahiBUaWNrZXRJRCDYr9in2K/ZhyDZhti02K/ZhyDYp9iz2KohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn2YbZhduMINiq2YjYp9mG2K8g2KrYp9ix24zYriDYsdinINmG2LTYp9mGINiv2YfYr9iMINmH24zahiBUaWNrZXRJRCDYr9in2K/ZhyDZhti02K/ZhyDYp9iz2KohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn2YbZhduMINiq2YjYp9mG2K8g2KrYp9ix24zYriDYsdinINmG2LTYp9mGINiv2YfYr9iMINmH24zahiBUaWNrZXRJRCDYr9in2K/ZhyDZhti02K/ZhyDYp9iz2KohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9mF2YbYqNi5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn2LnZhdmE24zYp9iq24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9in2K7Yt9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9mI2LbYuduM2Kog2YbYtdioINin24zZhiBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9mI2LbYuduM2Kog2LHYrtiv2KfYryDYp9uM2YYgQ0knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfYqNiv2YjZhiDZhdis2YjYsiDZiCDYp9is2KfYstmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfZhtmI2Lkg2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn2YbZiNi5INmI2LbYuduM2Kog2KzYp9ix24wg2LHYrtiv2KfYryc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfYqNuM2YYnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfYrdiv2Kfaqdir2LEg2LTZhdin2LHZhyDbjNqpINi52YbYtdixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9mF2YbZgti224wg2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn2b7YtNiq24zYqNin2YbbjCDZiCDZhtqv2YfYr9in2LHbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9mG2YXZiNmG2Ycg2KLYstmF2KfbjNi024wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9io2LHZhtin2YXZhyDYsduM2LLbjCDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn2KrYudmF24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn2KjYp9iy2YbYtNiz2KrZhyDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KjYp9iy2KjbjNmG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9iq2LPYqi/Yqti22YXbjNmGINqp24zZgduM2KonOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn2KfYrNin2LLZhyDZhduMINiv2YfYryDYqtinINi02LHYp9uM2Lcg2KzYs9iq2KzZiCDYtNiv2Ycg2K/YsSDYrNiz2KrYrNmI24wg2KjZhNuM2Lcg2KfYsiDYsdin2KjYtyDYudin2YXZhCDYudmF2YjZhduMINin2LPYqi4g2KjYpyDYp9uM2YYg2YjbjNqY2q/bjCDYtNmF2Kcg2YXbjCDYqtmI2KfZhtuM2K8g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEINi52YbZiNin2YYg2KjZhNuM2Lcg2KjYpyDYp9uM2YYg2YbZiNi5INin2LIg2LTYsdin24zYtyDZhdin2YbZhtivIFwg2KzYs9iq2KzZiCAiKCoga2V5MSAqICYmICoga2V5MiAqKSAiINuM2KcgXCAiKCoga2V5MSAqIHx8ICoga2V5MiAqKSAiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfYp9is2KfYstmHINmF24wg2K/Zh9ivINiq2Kcg2LTYsdin24zYtyDYrNiz2KrYrNmIINi02K/ZhyDYr9ixINis2LPYqtis2YjbjCDYqNmE24zYtyDYp9iyINix2KfYqNi3INi52KfZhdmEINi52YXZiNmF24wg2KfYs9iqLiDYqNinINin24zZhiDZiNuM2pjar9uMINi02YXYpyDZhduMINiq2YjYp9mG24zYryDYqNmHINi52YbZiNin2YYg2YXYq9in2YQg2LnZhtmI2KfZhiDYqNmE24zYtyDYqNinINin24zZhiDZhtmI2Lkg2KfYsiDYtNix2KfbjNi3INmF2KfZhtmG2K8gXCDYrNiz2KrYrNmIICIoKiBrZXkxICogJiYgKiBrZXkyICopICIg24zYpyBcICIoKiBrZXkxICogfHwgKiBrZXkyICopICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYp9qY2YjZhCDYsdmI24zYr9in2K8g2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCDaqdmHINir2KjYqiDZiNmC2KfbjNi5INiv2LEg2KrYp9ix24zYrtqG2Ycg2LHYpyDYr9ixINmI2KfYs9i3INqp2KfYsdio2LHbjCDaqdin2LHYtNmG2KfYsyDZgdi52KfZhCDZhduM4oCM2LPYp9iy2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn2YXYrdiv2YjYr9uM2Kog2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti624zbjNixINmF2LPbjNix24zYp9ioINis2LPYqtis2Ygg2K/YsSDYsdin2KjYtyDaqdin2LHYqNix24wg2qnYp9ix2LTZhtin2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9iz2KfYrtiqINmIINmF2K/bjNix24zYqiDYqti52KfYsduM2YEg2KLbjNiq2YXigIzZh9in24wg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn2K/Yp9iv2Ycg2YfYp9uMINm+24zYtCDZgdix2LYg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KjYsSDYsdmI24wg2YjbjNqY2q/bjCDYqNix2KfbjCDYtdmB2K3ZhyDZhtmF2KfbjNi0INis2LPYqtis2Ygg2KjZhNuM2LcuINio2Ycg2LnZhtmI2KfZhiDZhdir2KfZhDogXCAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0ID0g2LPYp9mE2JsgVGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQgPSDYotiu2LHbjNmGLiBUaWNrZXRDcmVhdGVUaW1lUG9pbnQgPSAy2JsgIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfYr9in2K/ZhyDZh9in24wg2b7bjNi0INmB2LHYtiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYqNixINix2YjbjCDZiNuM2pjar9uMINio2LHYp9uMINi12YHYrdmHINmG2YXYp9uM2LQg2KzYs9iq2KzZiCDYqNmE24zYty4g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEOiBcICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyID0gMjAxMNibIFRpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoID0gMTDYmyBUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXkgPSA02JsgVGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyID0gMjAxMNibIFRpY2tldENyZWF0ZVRpbWVTdG9wTW9udGggPSAxMdibIFRpY2tldENyZWF0ZVRpbWVTdG9wRGF5ID0gM9ibICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfYqti52LHbjNmBINi52YXZhNuM2KfYqiDaqdmHINiv2LEg2KLZhiDbjNqpINiv2qnZhdmHINiq2YbYuNuM2YXYp9iqINiv2LEg2K/Ys9iq2LHYsyDYp9iz2Kog2K/YsSDYp9i024zYp9ihINmF2LHYqtio2Lcg2YjbjNis2KogKExpbmtPYmplY3QgOjogVmlld01vZGUgPSBcICLZvtuM2obbjNiv2YcgIikuINmE2LfZgdinINiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDaqdmHINin24zZhiDYp9mC2K/Yp9mF2KfYqiDYqNin24zYryDYr9ixINio2LEg2K/Yp9i02Kog2LLbjNixIEpTINmIIENTUyDZgdin24zZhCDZh9in24wg2KvYqNiqINmG2KfZhSDaqdix2K/ZhyDYp9mG2K86IENvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz2IwgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc9iMIENvcmUuVUkuVGFibGUuU29ydC5qc9iMIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINio2YTbjNi3INiv2LEg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDYqNmE24zYtyDYr9ixINix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINio2YTbjNi3INiv2LEg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXYp9qY2YjZhCDZhtmF2KfbjCDaqdmE24wg2KjYsdin24wg2YbZhdin24zYtCDZhtmF2KfbjCDaqdmI2obaqSDYp9iyINmB2YfYsdiz2Kog2KrYutuM24zYsdin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmI24zamNqv24wg2KjZhNuM2Lcg2KjYsdin24wg2YXYsdiq2Kgg2LPYp9iy24wg2KjZhNuM2Lcg2KfYsiDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZiNuM2pjar9uMINio2YTbjNi3INio2LHYp9uMINmF2LHYqtioINiz2KfYstuMINio2YTbjNi3INin2LIg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmI24zamNqv24wg2KjZhNuM2Lcg2KjYsdin24wg2YXYsdiq2Kgg2LPYp9iy24wg2KjZhNuM2Lcg2KfYsiDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2KfbjNmGINi52YXZhNuM2KfYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INiz2YHYp9ix2LQg2KjZhNuM2Lcg2K/YsSDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuINiq2Kc6INmC2K/bjNmF24wg2KrYsduM2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLiDZvtin24zbjNmGOiDYtNiv2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2LPZgdin2LHYtCDYqNmE24zYtyDYp9iyINuM2qkg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2YXYtNiq2LHbjC4g2KrYpzog2YLYr9uM2YXbjCDYqtix24zZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuINm+2KfbjNuM2YY6INi02K/ZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmG2LTYp9mGINiv2KfYr9mHINio2YTbjNi3INmI24zamNqv24wg2KzYs9iq2KzZiCDYqNix2KfbjCDYtdmB2K3ZhyDZhtmF2KfbjNi0INis2LPYqtis2Ygg2KjZhNuM2LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZhti02KfZhiDYr9in2K/ZhyDYqNmE24zYtyDZiNuM2pjar9uMINis2LPYqtis2Ygg2KjYsdin24wg2LXZgdit2Ycg2YbZhdin24zYtCDYrNiz2KrYrNmIINio2YTbjNi3LiDYqNmHINi52YbZiNin2YYg2YXYq9in2YQ6IFwgItqp2YTbjNivICIg2KjYp9uM2K8g2YbYp9mFINiy2YXbjNmG2Ycg2b7ZiNuM2Kcg2K/YsSDYp9uM2YYg2YXZiNix2K8gXCdYXCfYjCBcICLZhdit2KrZiNinICLYjCDYqNin24zYryDYp9ix2LLYtCDYr9ix2LPYqiDZvtmI24zYpyDYqNiz2KrZhyDYqNmHINmG2YjYuSDZvtmI24zYpyDYr9ix2LPYqtiMINmF2KrZhiDYsdinINiv2KfYtNiq2Ycg2KjYp9i02K86INuM2qkg2YXYqtmG2Iwg2qnYsdqp2LHZhyA6IFwnMVwn2Iwg2KrYp9ix24zYriAvINiy2YXYp9mGOiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhciA9IDE5NzTYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGggPSAwMdibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXkgPSAyNtibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyID0gMDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlID0gMDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kID0gMDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyID0gMjAxM9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoID0gMDHYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXkgPSAyNtibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXIgPSAyM9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZSA9IDU52JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kID0gNTnYmyBcJyDZiCDbjNinICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQgPSDZh9mB2KrZh9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0ID0g2YLYqNmEINin2LIuIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlID0gNyBcJ9ibLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2LHYqtmB2KfYuSDYqNix2KfbjCDYutmG24wg2KzYstihINmI24zYsdin24zYtNqv2LEg2YXYqtmGINio2LHYp9uMINin24zZhiDYtdmB2K3ZhyDZhtmF2KfbjNi0LiDYqti52K/Yp9ivICjZvtuM2qnYs9mEKSDbjNinINin2LHYsti0INiv2LHYtdivICjZhtiz2KjbjCkg2LHYpyDZiNin2LHYryDaqdmG24zYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYp9mC2YTYp9mFINio2LHYp9uMIFwn2LnZhdmEXCcg2K/YsSDYs9i32K0g2LPZiNmFINiz2KfYrtiq2KfYsSBBQ0wg2K/YsSDYr9iz2KrYsdizINmH2LPYqtmG2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2K/YsSDYs9i32K0g2KfZiNmEINin2LIg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2K/YsSDYs9i32K0g2K/ZiNmFINin2LIg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn2Kraqdir24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn2K3YrNmFINiv2LHYrtmI2KfYs9iqINin2LIg2YjbjNqY2q/bjCDZh9in24wg2LnZhdmEINio2LHYp9uMINi42KfZh9ixINi52KfZhdmEINio2Ycg2qnYp9ixINio2LEg2LHZiNuMINio24zYtCDYp9iyINiv2LHYrtmI2KfYs9iqINiv2LEg24zaqSDYstmF2KfZhiDZgtin2K/YsSDZhduMINiz2KfYstivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn2YjbjNqY2q/bjCDZh9in24wg2LnZhdmEINit2KzZhSDYr9ix2K7ZiNin2LPYqiDYqtmG2YfYpyDYqNix2KfbjCDar9ix2YjZhyDZh9in24wg2LDaqdixINi02K/ZhyDYsdinINmC2KfYr9ixINmF24wg2LPYp9iy2K8gLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlINir2KjYqiDZhtin2YUg2YXYp9qY2YjZhCDYqNix2KfbjCDZhNin24zZhyBpbnZva2VyINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlINir2KjYqiDZhtin2YUg2YXYp9qY2YjZhCDYqNix2KfbjCDZhNin24zZhyBpbnZva2VyINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSDYq9io2Kog2YbYp9mFINmF2KfamNmI2YQg2KjYsdin24wg2YTYp9uM2YcgaW52b2tlciDYp9iz2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfZiNi22LnbjNiqINix2K7Yr9in2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn2K3Yr9in2qnYq9ixINiq2LnYr9in2K8g2K/Ysdiu2YjYp9iz2Kog2K/YsSDZhtiq24zYrNmHINin24zZhiDaqdin2LEg2YbZhdin24zYtCDYr9in2K/ZhyDZhduMINi02YjYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52K/Yp9ivINio2YTbjNi3INiv2LEg2YfYsSDYtdmB2K3ZhyDYp9iyINuM2qkg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2LnYp9mF2YQg2YbZhdin24zYtCDYr9in2K/ZhyDYtNmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2LnYr9in2K8g2KjZhNuM2Lcg2K/YsSDZh9ixINi12YHYrdmHINin2LIg24zaqSDZhtiq24zYrNmHINis2LPYqtis2Ygg2K/YsSDYsdin2KjYtyDZhdi02KrYsduMINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2YXbjCDYtNmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfZvtuM2LQg2YbZhdin24zYtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9m+2KfYsdin2YXYqtix2YfYp9uM24wg2KjYsdin24wg2q/YsdmI2YfigIzZh9in24wg2K/Ys9iq2LHYs9uMINmG2YXZiNmG2Ycg2YXYsdio2YjYtyDYqNmHINmI24zamNqv24zigIzZh9in24wg2YHZh9ix2LPYqiDYudmF2YjZhduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2K7YsdmI2KzbjCDYp9uM2YXbjNmEINiv2LEg2LXZgdit2Ycg24wg2qnYp9ix2LTZhtin2LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LLYr9ix2K7ZiNin2LPYqiDYtdmB2K3ZhyDZhtmF2KfbjNi0INmH2KfbjCDZhdiq2YbbjCDYsdin24zar9in2YYg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYrtix2YjYrNuMINin24zZhduM2YQg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDYqNmE24zYtyDYr9ixINix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbZiNi5INio2YTbjNi3INiv2LEg2LXZgdit2Ycg2YbZhdin24zYtCDZgdmE2Ycg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQg2KrZhti424zZhSDZhduMINqp2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbZiNi5INio2YTbjNi3INiv2LEg2LXZgdit2Ycg2YbZhdin24zYtCDZgdmE2Ycg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQg2KrZhti424zZhSDZhduMINqp2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhti02KfZhiDZhduMINiv2YfYryDbjNqpINmE24zZhtqpINiv2LEg2YXZhtmI24wg2KvYqNiqINmG2KfZhSDbjNqpINio2YTbjNi3INio2Ycg24zaqSDZgdix2KfbjNmG2K8g2K/YsSDZhti42LEg2LLZiNmFINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9uM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDZhti02KfZhiDZhduMINiv2YfYryDYqNix2KfbjCDYr9uM2K/ZhiDYqtin2LHbjNiuINuM2qkg2KjZhNuM2Lcg2K/YsSDZh9ixINmF2LHZiNix24wg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9uM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDZhti02KfZhiDZhduMINiv2YfYryDYqNix2KfbjCDYr9uM2K/ZhiDYqtin2LHbjNiuINuM2qkg2KjZhNuM2Lcg2K/YsSDZh9ixINmF2LHZiNix24wg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbYtNin2YYg2YXbjCDYr9mH2K8g24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINir2KjYqiDZhtin2YUg24zaqSDYqNmE24zYtyDYqNmHINuM2qkg2YHYsdin24zZhtivINiv2LEg2YbYuNixINiy2YjZhSDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhti02KfZhiDZhduMINiv2YfYryDbjNqpINmE24zZhtqpINiv2LEg2YXZhtmI24wg2KvYqNiqINmG2KfZhSDbjNqpINio2YTbjNi3INio2Ycg24zaqSDZgdix2KfbjNmG2K8g2K/YsSDZhti42LEg2LLZiNmFINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINmG2LTYp9mGINmF24wg2K/Zh9ivINio2Ycg2LLZiNmFINuM2qkg2KjZhNuM2Lcg2K/YsSDZhdix2YjYsduMINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbYtNin2YYg2YXbjCDYr9mH2K8g24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINir2KjYqiDZhtin2YUg24zaqSDYqNmE24zYtyDYqNmHINuM2qkg2YHYsdin24zZhtivINiv2LEg2YbYuNixINiy2YjZhSDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYp9ix24zYriDYqNmE24zYtyAo2YXYudqp2YjYsyDYr9iz2KrZiNixINiv2KfYrykg2K/YsSDYsdin2KjYtyDYudin2YXZhCDZhti02KfZhiDZhduMINiv2YfYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfaqdmE2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9iz2KfYrtiq2YXYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfZiNin2LPYtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfYs9uM4oCM2b7bjOKAjNuM2YgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn2LHZiNmF24zYstuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9mG2LHZhSDYp9mB2LLYp9ixINmF2KzYp9mG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn2LXZgdit2Ycg2qnZhNuM2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9qp24zZgduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfZhdiv2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9mF2KfZiNizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfYutuM2LHZhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn2YbZiNi5INmG2KrbjNis2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfYp9iq2KfZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9iq2YjYp9mB2YIg2LPYt9itINiz2LHZiNuM2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9in2LPYqtin2YbYr9in2LHYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/fi_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdZbGVpc2V0IHRvaW1pbnRhdGllZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTYWFwdXZpZW4gcHl5bnTDtmplbiB0aWV0b2plbiBhc2V0dWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdMw6RodGV2aWVuIHZhc3RhdXN0aWV0b2plbiBhc2V0dWtzZXQnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXV1dGEgbHVva2FuIG3DpMOkcml0ZWxtw6TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTXV1dGEgcm9vbGluIG3DpMOkcml0ZWxtw6TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1sdW9ra2Frb2tvbmFpc3V1ZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnVMOkw6RsdMOkIHZvaXQgdHVvZGEgUmVhZHkySW1wb3J0LWx1b2trYWtva29uYWlzdXVrc2lhLCBqb3RrYSBlc2l0dGVsZXbDpHQgdGF2YWxsaXNpbXBpYSBrb25maWd1cm9pbnRpa29odGVpdGFtbWUuIEh1b21hYSwgZXR0w6Qgam9pdGFraW4gbGlzw6Rrb25maWd1cmFhdGlvaXRhIHNhYXRldGFhbiB0YXJ2aXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdQw6Rpdml0ZXTDpMOkbiBvbGVtYXNzYSBvbGV2YXQgeWtzaWvDtnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdUdW8gUmVhZHkyQWRvcHQtbHVva2FuIG5pcHB1amEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWcgSXRlbSAtbHVva2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSByb29saSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdMdW9ra2llbiBzdW9kYXRpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWYWxpdHNlIGx1b2trYSBsdWV0dGVsb3N0YSBsdW9kYWtzZXNpIHV1ZGVuIENvbmZpZyBJdGVtaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnTHVva2thJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGstdG9pbWludG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0vDpHl0dMO2w7Zub3RvbiB0aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVGFwYWh0dW1hbiB0aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpbmtraSB0b2lzZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdWaXJoZWVsbGluZW4ga29uZmlndXJvaW50aWtvaHRlZW4gbnVtZXJvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdUb2lzZW4ga29rb29ucGFub2tvaHRlZW4gbnVtZXJvLCBqb2hvbiBsaW5raXRldMOkw6RuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0hhbHVhdGtvIHRvZGVsbGEgcG9pc3RhYSB0w6Rtw6RuIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1TDpG3DpG4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiBuaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOaW1pIG9uIGpvIGvDpHl0w7Zzc8OkIENvbmZpZ0l0ZW1zLWtvaHRlaXNzYSBzZXVyYWF2YWxsYSBudW1lcm9sbGEgKHNldXJhYXZpbGxhIG51bWVyb2lsbGEpOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaW9uIG51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVMOkbcOkbiBrb25maWd1cmFhdGlvZWxlbWVudGluIHZlcnNpb251bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ1ZlcnNpb2x1a3Ugb24gam8ga8OkeXTDtnNzw6QgQ29uZmlnSXRlbXNpc3NhLCBqb2lsbGEgb24gc2V1cmFhdmEodCkgbnVtZXJvKHQpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnS8OkeXR0w7bDtm5vdG9uIHRpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdUYXBhaHR1bWFuIHRpbGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0NvbmZpZyBJdGVtaW4gaGlzdG9yaWE6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0hpc3RvcmlhIFNpc8OkbHTDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdab29tYXVzbsOka3ltw6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIEtvaHRlZXQgcGVyIHNpdnUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tvbmZpZ3Vyb2ludGlrb2hkZXRpZXRvamEgZWkgbMO2eXR5bnl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGl0c2UgdMOkbcOkIGtvbmZpZ3Vyb2ludGlrb2h0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1N1b3JpdGEgaGFrdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0tcHV1bsOka3ltw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdTeXZ5eXN0YXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbWF1cyBzaXPDpMOkbi91bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW1pbiBlbmltbcOkaXNsaW5ra2llbiB0YXNvIHNhYXZ1dGV0dHUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJvaW50aSBLb2hkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdLb25maWd1cm9pbnRpa29odGVlbiB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTnlreWluZW4ga8OkeXR0w7bDtm5vdHRvdGlsYW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTnlreWluZW4gdGFwYWh0dW1hdGlsYW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdWaWltZWtzaSBtdXV0ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdWaWltZWtzaSBtdXV0dGFudXQnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTaW51biBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtLWhha3UnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZXVyYWF2YXQgbHVva2F0IHR1b2RhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2V1cmFhdmF0IHJvb2xpdCB0dW9kYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ0h1b21hYSwgZXR0w6QgbXnDtnMgdmFzdGFhdmF0IGR5bmFhbWlzZXQga2VudMOkdCBqYSBHZW5lcmFsQ2F0YWxvZy1sdW9rYXQgbHVvZGFhbiwgZWlrw6QgbmlpdMOkIHBvaXN0ZXRhIGF1dG9tYWF0dGlzZXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdIYWx1YXR0ZWtvIGphdGthYT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVGFydml0YWFuIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdNw6TDpHJpdGVsbcOkIGVpIG9sZSBrZWx2b2xsaW5lbiBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnWWxlaXNrYXRzYXVzOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEOnTDpCBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdUYXJ2aXRzZXQgdsOkaGludMOkw6RuIHloZGVuIHZhbGl0dW4gbcOkw6RyaXR5c2tvaHRlZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnU2ludWxsYSBlaSBvbGUga2lyam9pdHVzb2lrZXV0dGEgdMOkaMOkbiBtw6TDpHJpdHlza29odGVlc2VlbjogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0x1b2thbGxlICVzIGVpIG9sZSBtw6TDpHJpdGVsdHkgbcOkw6RyaXRlbG3DpMOkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXJhYXRpb2VsZW1lbnR0acOkICIlcyIgZWkgbMO2eWR5IHRpZXRva2FubmFzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnS29uZmlnaWtvaGRldHVubnVzdGEgJXMgZWkgcHlzdHl0dHkgcG9pc3RhbWFhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlczpsbGUgZWkgbMO2eXR5bnl0IHZlcnNpb3RhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQtLCBEdXBsaWNhdGVJRC0gdGFpIENsYXNzSUQtbnVtZXJvYSBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1DDpMOkc3nDpCBlaSBhbm5ldGEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0hpc3RvcmlhYSBlaSB2b2kgbsOkeXR0w6TDpCwga29za2EgQ29uZmlnSXRlbUlEOnTDpCBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdIaXN0b3JpYWEgZWkgdm9pIG7DpHl0dMOkw6QsIGtvc2thIGvDpHl0dMO2b2lrZXVrc2lhIGVpIG9sZSBhbm5ldHR1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnVXVzaSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1V1c2kgdmVyc2lvIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdZbGVpc2VuIGx1ZXR0ZWxvbiBhdHRyaWJ1dXR0aWVuIGVzaW1lcmtraW9pa2V1c3J5aG1pZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVGFwYWh0dW1hbiB0aWxhIHDDpGl2aXRldHR5IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgcG9pc3RldHR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmtraSAlcyAodHlwZT0lcykgbGlzw6R0dHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5ra2kgJXMgKHR5cGU9JXMpIHBvaXN0ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbS1tw6TDpHJpdGVsbcOkIHDDpGl2aXRldHR5IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOaW1pIHDDpGl2aXRldHR5ICh1dXNpPSVzLCB2YW5oYT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dXR0aSAlcyBww6Rpdml0ZXR0eSAiJXMiLWFydm9zdGEgIiVzIiBhcnZvb24gIiVzIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvICVzIHBvaXN0ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQtIHRhaSBWZXJzaW9uSUQtbnVtZXJvYSBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS29uZmlndXJhYXRpb2VsZW1lbnR0acOkIGVpIHZvaSBuw6R5dHTDpMOkLCBrb3NrYSBrw6R5dHTDtm9pa2V1a3NpYSBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgZWkgbMO2eWR5IHRpZXRva2FubmFzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICd0dWxvc3RhbnV0ICVzIG9zb2l0dGVlc3NhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdWaWl0ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1bDpMOkcsOkIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJRDp0w6QgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnVMOkbGxlIGx1b2thbGxlIGVpIG9sZSBhbm5ldHR1IGvDpHl0dMO2b2lrZXVrc2lhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnRWkgdHVsb3N0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbSBoYWt1dHVsb2tzZXQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0VsZW1lbnR0acOkIGVpIHZvaSBuw6R5dHTDpMOkLCBDb25maWdJdGVtaWxsZSBlaSBvbGUgYW5uZXR0dSBrw6R5dHTDtm9pa2V1a3NpYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBlaSBsw7Z5dHlueXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpb2l0YSBlaSBsw7Z5dHlueXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAndG9pbWludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3Zhcm9pdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAndGFwYWh0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUw6Rtw6RuIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4ga8OkeXR0w7bDtm5vdHRvdGlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1TDpG3DpG4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiB0YXBhaHR1bWF0aWxhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnRWkgbHVwYWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnU3VvZGF0aW4gb24gdmlyaGVlbGxpbmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ07DpHl0ZXR5dCBrb25maWd1cm9pbnRpa29odGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdLw6R5dHTDtsO2bm90dG90aWxhbiB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTnlreWluZW4gdGFwYWh0dW1hdGlsYSBUeXlwcGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnVsOkbGlsbMOkJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdMdW9ra2FyYWpvaXR1a3NldCBrb25maWd1cm9pbnRpa29oZGV0dGEgdmFydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWYWxpdHNlIHlrc2kgdGFpIHVzZWFtcGkgbHVva2thIHJham9pdHRhYWtzZXNpIHZhbGl0dGF2aXNzYSBvbGV2aWEga29uZmlndXJhYXRpb2tvaHRlaXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnTHVva2thcmFqb2l0dWtzZXQga29uZmlndXJvaW50aWtvaGRldHRhIHZhcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGl0c2UgeWtzaSB0YWkgdXNlYW1waSBsdW9ra2EgcmFqb2l0dGFha3Nlc2kgdmFsaXR0YXZpc3NhIG9sZXZpYSBrb25maWd1cmFhdGlva29odGVpdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYWFtaW5lbiAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAodmVyc2lvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdMaW5ra2kgVmlpdHRhdXN0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnS29za2Vla28gdMOkbcOkIGxpbmtraSBDb25maWdJdGVtLW9iamVrdGlhIHZhaSB2aWl0dGFhdmFuIG9iamVrdGluIHN0YWF0dGlzdGEgdmVyc2lvdGEuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgLWxhc2tlbnRhIHN1b3JpdGV0YWFuIHZhaW4gZHluYWFtaXNpbGxlIGxpbmtlaWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWYWxpdHNlIGF0dHJpYnV1dHRpLCBqb25rYSBtdWthYW4ga29uZmlndXJvaW50aWtvaHRlaXRhIGV0c2l0w6TDpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdQZXJ1c3Jha2VubmUgZWkgb2xlIGtlbHZvbGxpbmVuLiBUb2ltaXRhIGhhc2gsIGpvc3NhIG9uIHRpZXRvamEgWUFNTC1tdW9kb3NzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MLW1lcmtraWpvbm8gb24gYWxvaXRldHRhdmEga2lyamFpbWVsbGEgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGF1bHVra29hIGNvbmZpZ2l0ZW1fbGluayBlaSB2b2l0dSB0eWhqZW50w6TDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ01lcmtpdHlrc2VsbGlzacOkIGR5bmFhbWlzaWEga2VudHRpw6QgZWkgbMO2eXR5bnl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVGF1bHVra29vbiBjb25maWdpdGVtX2xpbmsgZWkgdm9pdHUgbGlzw6R0w6QgdGlldG9qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0xpc8OkdHR5IDAgcml2acOkIHRhdWx1a2tvb24gY29uZmlnaXRlbV9saW5ra2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnWWhkZW4gZWxlbWVudGluIGVuaW1tw6Rpc23DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpbyBtZXJra2lqb25vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ1ZpcmhlIG3DpMOkcml0ZWxtaWVuIHN5bmtyb25vaW5uaXNzYS4gVGFya2lzdGEgbG9raS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdTaW51bGxhIG9uIElUU01Db25maWdJdGVtLW3DpMOkcml0eWtzacOkLCBqb2l0YSBlaSBvbGUgc3lua3Jvbm9pdHUuIE90YSBrw6R5dHTDtsO2biBJVFNNQ29uZmlnSXRlbS1keW5hYW1pc3RlbiBrZW50dGllbiBtdXV0b2tzZXQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdWYW5oZW50dW51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0h1b2x0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1N1dW5uaXRlbHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ0tvcmphdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0Vsw6Rra2VlbGzDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdBcnZvc3RlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RpL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdZbGVpc2thdHNhdXMgamEgdmFodmlzdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0x1b2traWVuL3Jvb2xpZW4gamEgbmlpaGluIGxpaXR0eXZpZW4ga2VudHRpZW4gdHVvbWluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdMdW9rYW4gdHVvbm5pbiBhaWthbmEgdGFwYWh0dWkgdmlyaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBQaWlsb3RldHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBLdXZhc3NhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNYWhkb2xsaXN0YWEgbGFhamVubmV0dXQgaGFrdWVoZG90IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWhhdXNzYS4gVMOkbcOkbiBvbWluYWlzdXVkZW4gYXZ1bGxhIHZvaXQgaGFrZWEgZXNpbS4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiBuaW1lw6QgdMOkbGxhaXNpbGxhIGVoZG9pbGxhIGt1dGVuICIoKmtleTEqJiYqa2V5MiopIiB0YWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNYWhkb2xsaXN0YWEgbGFhamVubmV0dXQgaGFrdWVoZG90IGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYXVzc2EuIFTDpG3DpG4gb21pbmFpc3V1ZGVuIGF2dWxsYSB2b2l0IGhha2VhIGVzaW0uIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4gbmltZcOkIHTDpGxsYWlzaWxsYSBlaGRvaWxsYSBrdXRlbiAiKCprZXkxKiYmKmtleTIqKSIgdGFpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnTXnDtm5uZXR5dCBDSTp0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0FzaWFrYXN5cml0eWtzZWxsZSBvc29pdGV0dXQgQ0k6dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0FzaWFrYXNrw6R5dHTDpGrDpGxsZSBtw6TDpHJpdGV0eXQgQ0k6dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1hc2V0dWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1Rhcmtpc3RhLCBldHTDpCBuaW1pIG9uIHlrc2lsw7ZsbGluZW4gdmFpbiBzYW1hbiBDb25maWdJdGVtLWx1b2thbiAoXCdjbGFzc1wnKSBzaXPDpGxsw6QgdGFpIGdsb2JhYWxpc3RpIChcJ2dsb2JhbFwnKSwgbWlrw6QgdGFya29pdHRhYSwgZXR0w6Qgam9rYWluZW4gb2xlbWFzc2Egb2xldmEgQ29uZmlnSXRlbSBvdGV0YWFuIGh1b21pb29uLCBrdW4gZXRzaXTDpMOkbiBrYWtzb2lza2FwcGFsZWl0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1ZhbGl0c2UgbW9kdXVsaSBuaW1lw6RtaXNzdXVubml0ZWxtYW4ga8OkeXR0w7bDtm5vdHRvYSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWYWxpdHNlIG1vZHV1bGkgbnVtZXJvasOkcmplc3RlbG3DpG4ga8OkeXR0w7bDtm5vdHRvYSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1ZhbGl0c2UgbW9kdXVsaSwgam9rYSBvdHRhYSBrw6R5dHTDtsO2biB2ZXJzaW9qb25vasOkcmplc3RlbG3DpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVmFsaXRzZSBhdHRyaWJ1dXRpdCwgam90a2Ega8OkeW5uaXN0w6R2w6R0IHV1ZGVuIHZlcnNpb24gbHVvbWlzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1ZhbGl0c2UgbHVva2F0LCBqb3RrYSBvc29pdGV0YWFuIHTDpGxsZSBtw6TDpHJpdHlza29oZGVsdW9rYWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdTYXJha2tlZW4gQ29uZmlnSXRlbS1rb2h0ZWVuIHN1b2RhdHRpbWV0IENvbmZpZ0l0ZW0gT3ZlcnZpZXcgLWtvaHRlZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1NhcmFra2VldCwgam9pdGEgdm9pZGFhbiBzdW9kYXR0YWEgYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlaWRlbiB5bGVpc2thdHNhdWtzZXNzYS4gSHVvbWF1dHVzOiBWYWluIENvbmZpZyBJdGVtIC1hdHRyaWJ1dXRpdCBqYSBkeW5hYW1pc2V0IGtlbnTDpHQgKER5bmFtaWNGaWVsZF9OYW1lWCkgb3ZhdCBzYWxsaXR0dWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdNw6TDpHJpdHlza29odGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnTcOkw6RyaXR5c2tvaHRlZW4gbGlzw6TDpG1pbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ03DpMOkcml0eXNrb2h0ZWVuIG11b2trYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0w6Qga29odGVlbiB0YXBhaHR1bWFtb2R1dWxpLCBqb2thIG1haGRvbGxpc3RhYSBraXJqYWFtaXNlbiBoaXN0b3JpYWFuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWcta29odGVlbiB0YXBhaHR1bWFtb2R1dWxpLCBqb2thIHDDpGl2aXR0w6TDpCBrb25maWcta29odGVldCBuaWlkZW4gbnlreWlzZWVuIG3DpMOkcml0ZWxtw6TDpG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnTcOkw6RyaXTDpCBrb2h0ZWVuIGhpc3RvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdNw6TDpHJpdHlza29odGVlbiB0dWxvc3R1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdNw6TDpHJpdMOkIGtvaHRlZW4gem9vbWF1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtLXB1dW7DpGt5bcOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdTZXVyYWF2aWVuIGx1b2traWVuIENvbmZpZ0l0ZW1zLWVsZW1lbnR0ZWrDpCBlaSB0YWxsZW5uZXRhIEVsYXN0aWNzZWFyY2gtcGFsdmVsaW1lbGxlLiBKb3R0YSB0w6R0w6Qgdm9pZGFhbiBzb3ZlbHRhYSBvbGVtYXNzYSBvbGV2aWluIENJOmhpbiwgQ0ktc2lpcnRvIG9uIHN1b3JpdGV0dGF2YSBrb25zb2xpbiBrYXV0dGEgdMOkbcOkbiB2YWlodG9laGRvbiBtdXV0dGFtaXNlbiBqw6Rsa2Vlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMta29odGVpdGEsIGpvaWxsYSBvbiBzZXVyYWF2YXQga8OkeXR0w7bDtm5vdHRvdGlsYXQsIGVpIHRhbGxlbm5ldGEgRWxhc3RpY3NlYXJjaC1wYWx2ZWxpbWVsbGUuIEpvdHRhIHTDpHTDpCB2b2lkYWFuIHNvdmVsdGFhIG9sZW1hc3NhIG9sZXZpaW4gQ0k6aGluLCBDSS1zaWlydG8gb24gc3Vvcml0ZXR0YXZhIGtvbnNvbGluIGthdXR0YSB0w6Rtw6RuIHZhaWh0b2VoZG9uIG11dXR0YW1pc2VuIGrDpGxrZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdLb25maWd1cm9pbnRpIEtvaHRlZW4gcmFqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJvaW50aSBLb2h0ZWVuIHJhamEgc2l2dWEga29odGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWd1cmFhdGlvbmhhbGxpbm5hbiB0aWV0b2thbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTcOkw6RyaXR5c2tvaHRlZW4gaXJ0b3RhdmFyYW1vZHV1bGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0eXNrb2h0ZWVuIGhha3UgYWdlbnR0aWxpaXR0eW3DpG4gdGF1c3RhcmVpdGl0dGltZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnTHVvIGphIGhhbGxpdHNlIG3DpMOkcml0dGVseWrDpCBtw6TDpHJpdHlza29odGVpbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0x1byBsaXBwdWphIENvbmZpZ0l0ZW1zLWtvaHRlaWxsZSB0aWV0dHlpbsOkIGFqYW5rb2h0aW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdBc2lha2thYXQgdm9pdmF0IG7DpGhkw6QgaGlzdG9yaWFsbGlzZXQgQ0ktdmVyc2lvdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQXNpYWtrYWlsbGEgb24gbWFoZG9sbGlzdXVzIHZhaWh0YWEgbWFudWFhbGlzZXN0aSBoaXN0b3JpYWxsaXN0ZW4gQ0ktdmVyc2lvaWRlbiB2w6RsaWxsw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnT2xldHVzYXJ2b2lzZXQgdGllZG90LCBqb2l0YSBrw6R5dGV0w6TDpG4gbcOkw6RyaXR0ZWVuIG3DpMOkcml0dGVseWtvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLiBFc2ltZXJra2k6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnT2xldHVzYXJ2b2lzZXQgdGllZG90LCBqb2l0YSBrw6R5dGV0w6TDpG4gbcOkw6RyaXR0ZWVuIG3DpMOkcml0dGVseWtvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLiBFc2ltZXJra2k6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdNw6TDpHJpdMOkIHRvaW1pbm5vdCwgam9pc3NhIGFzZXR1c3BhaW5pa2Ugb24ga8OkeXRldHTDpHZpc3PDpCBsaW5raXRldHR5amVuIG9iamVrdGllbiB3aWRnZXRpc3PDpCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIdW9tYWEsIGV0dMOkIG7DpGlsbMOkIHRvaW1pbm5vaWxsYSBvbiBvbHRhdmEgcmVraXN0ZXLDtmlkeXQgc2V1cmFhdmF0IEpTLSBqYSBDU1MtdGllZG9zdG90OiBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGphIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ03DpMOkcml0w6QgVGVtcGxhdGU6OlRvb2xraXQtc2tlZW1hIHZlcnNpb2pvbm9qYSB2YXJ0ZW4uIEvDpHl0ZXTDpMOkbiB2YWluLCBqb3MgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIC1tb2R1dWxpbiBhcnZva3NpIG9uIGFzZXRldHR1IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ03DpMOkcml0w6Qgam91a2tvIGVodG9qYSwgam9pZGVuIG11a2Fpc2VzdGkgYXNpYWthcyBzYWEgbsOkaGTDpCBrb25maWd1cm9pbnRpa29odGVlbi4gRWhkb3Qgdm9pZGFhbiB2YWxpbm5haXNlc3RpIHJham9pdHRhYSB0aWV0dHlpaGluIGFzaWFrYXNyeWhtaWluLiBOaW1pIG9uIGFpbm9hIHBha29sbGluZW4gbcOkw6RyaXRlLiBKb3MgbXVpdGEgdmFpaHRvZWh0b2phIGVpIGFubmV0YSwga2Fpa2tpIGtvbmZpZ3Vyb2ludGlrb2h0ZWV0IG7DpGt5dsOkdCBreXNlaXNlc3PDpCBsdW9rYXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdmFhZGl0dXQgb2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIHBvaXN0YW1pc2VlbiB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHZhYWRpdHV0IG9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBoYWtlbWlzZWVuIHlsZWlzZW4ga8OkeXR0w7ZsaWl0dHltw6RuIGF2dWxsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdmFhZGl0dXQgb2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIGhha3V1biB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHZhYWRpdHV0IG9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBtw6TDpHJpdHTDpG1pc2VlbiB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgeWxlaXNrYXRzYXVzbW9kdXVsaW4sIGpva2EgbsOkeXR0w6TDpCBrb2tvb25wYW5va29oZGVsdWV0dGVsb24gcGllbmVuIG7DpGt5bcOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgb25rbyBsaW5raW4gdHl5cGluIG1lcmtpbm7DpHQgbsOkeXRldHTDpHbDpCBzb2xtdWplbiB5aHRleWtzaXNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHPDpMOkbm7DtmxsaXNldCBsYXVzZWtrZWV0IGVyaWtzZWVuIGt1bGxla2luIENvbmZpZ0l0ZW0tbHVva2FsbGUgQ29uZmlnSXRlbS1uaW1lbiB0YXJraXN0YW1pc2Vrc2kgamEgdmFzdGFhdmllbiB2aXJoZWlsbW9pdHVzdGVuIG7DpHl0dMOkbWlzZWtzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGvDpHl0ZXR0w6R2aXNzw6Qgb2xldmF0IENJLXNhcmFra2VldCBrb25maWd1cm9pbnRpa29odGVlbiB5bGVpc2thdHNhdWtzZXNzYSBDSS1sdW9rYW4gbXVrYWFuLiBKb2thaXNlbiBtZXJraW5uw6RuIG9uIGtvb3N0dXR0YXZhIGx1b2thbiBuaW1lc3TDpCBqYSBreXNlaXNlbiBsdW9rYW4ga8OkeXRldHTDpHZpc3PDpCBvbGV2aWVuIGtlbnR0aWVuIGpvdWtvc3RhLiBEeW5hYW1pc3RlbiBrZW50dGllbiBtZXJraW50w7ZqZW4gb24gbm91ZGF0ZXR0YXZhIGthYXZhYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlbiBrb25maWd1cm9pbnRpa29oZGV0dGEga29za2V2YW4gYXR0cmlidXV0aW4gYWdlbnR0aWxpaXR0eW3DpG4ga29uZmlndXJvaW50aWtvaGRlaGFrdXR1bG9rc2VuIGxhaml0dGVsdWEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlbiBrb25maWd1cmFhdGlva29oZGVhdHRyaWJ1dXRpbiBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdXR1bG9rc2VuIGxhaml0dGVsdWEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qgb2xldHVzYXJ2b2lzZW4ga29uZmlndXJhYXRpb2tvaHRlZW4gYXR0cmlidXV0aW4ga29uZmlndXJhYXRpb2tvaHRlZW4gbGFqaXR0ZWx1YSB2YXJ0ZW4gdMOkbcOkbiB0b2ltaW5ub24ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdXR1bG9rc2Vzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gb2xldHVzasOkcmplc3R5a3NlbiBhZ2VudHRpbGlpdHR5bcOkbiBrb25maWd1cmFhdGlva29odGVpZGVuIGhha3V0dWxva3Npc3NhLiBZbMO2czogdmFuaGluIHDDpMOkbGxpbW3DpGlzZW7DpC4gQWxhczogdXVzaW4gb24gcMOkw6RsbGltbcOkaXNlbsOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrb25maWd1cmFhdGlva29odGVpZGVuIG9sZXR1c2rDpHJqZXN0eWtzZW4gYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cmFhdGlva29odGVpZGVuIGhha3V0dWxva3Npc3NhLiBZbMO2czogdmFuaGluIHDDpMOkbGxpbW3DpGlzZW7DpC4gQWxhczogdXVzaW4gb24geWxow6TDpGxsw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIENJOmlkZW4gb2xldHVzc2FyYWtrZWV0LCBqb3RrYSBuw6RreXbDpHQga29uZmlndXJvaW50aWtvaHRlZW4geWxlaXNrYXRzYXVrc2Vzc2EgQ0ktbHVva2FzdGEgcmlpcHB1ZW4uIEpva2Fpc2VuIG1lcmtpbm7DpG4gb24ga29vc3R1dHRhdmEgbHVva2FuIG5pbWVzdMOkIGphIGt5c2Vpc2VuIGx1b2thbiBrw6R5dGV0dMOkdmlzc8OkIG9sZXZpZW4ga2VudHRpZW4gam91a29zdGEuIER5bmFhbWlzdGVuIGtlbnR0aWVuIG1lcmtpbnTDtmplbiBvbiBub3VkYXRldHRhdmEga2FhdmFhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ03DpMOkcml0dMOkw6QgbsOkeXRldHTDpHZpZW4gc3VodGVpZGVuIG9sZXR1c3N5dnl5ZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIG9sZXR1c2Fydm9pc2VzdGkgbsOkeXRldHTDpHbDpG4ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdWF0dHJpYnV1dGluIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3Vuw6R5dMO2bGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlc3RpIG7DpHl0ZXR0w6R2w6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3VhdHRyaWJ1dXRpbiBrb25maWd1cmFhdGlva29odGVlbiBoYWt1bsOkeXTDtmxsZS4gRXNpbWVya2tpOiAiQXZhaW4iIG9uIG9sdGF2YSBkeW5hYW1pc2VuIGtlbnTDpG4gbmltaSB0w6Rzc8OkIHRhcGF1a3Nlc3NhIFwnWFwnLCAiU2lzw6RsdMO2IiBvbiBvbHRhdmEgZHluYWFtaXNlbiBrZW50w6RuIGFydm8gZHluYWFtaXNlbiBrZW50w6RuIHR5eXBpc3TDpCByaWlwcHVlbiwgVGVrc3RpOiBcJ3Rla3N0aVwnLCBQdWRvdHVzdmFsaWtrbzogXCcxXCcsIFDDpGl2w6Rtw6TDpHLDpC9BaWthOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgamEgdGFpIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgbHVva2FuIFwnSVRTTUNvbmZpZ0l0ZW1cJyBvbGV0dXNhcnZvaXNlbiBhbGlvYmpla3Rpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qga8OkeXRldHTDpHZpc3PDpCBvbGV2YXQgQ0ktc2FyYWtrZWV0IGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHlsZWlza2F0c2F1a3Nlc3NhIENJLWx1b2thbiBtdWthYW4uIEpva2Fpc2VuIG1lcmtpbm7DpG4gb24ga29vc3R1dHRhdmEgbHVva2FuIG5pbWVzdMOkIGphIGt5c2Vpc2VuIGx1b2thbiBrw6R5dGV0dMOkdmlzc8OkIG9sZXZpZW4ga2VudHRpZW4gam91a29zdGEuIER5bmFhbWlzdGVuIGtlbnR0aWVuIG1lcmtpbnTDtmplbiBvbiBub3VkYXRldHRhdmEga2FhdmFhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdMOkbcOkbiBuw6R5dMO2biB0ZWtzdGllZGl0b3Jpa29tcG9uZW50aW4ga29ya2V1ZGVuLiBTecO2dMOkIG51bWVybyAocGlrc2VsacOkKSB0YWkgcHJvc2VudHRpbHVrdSAoc3VodGVlbGxpbmVuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBoYWxsaW50YWvDpHl0dMO2bGlpdHR5bcOkbiBDSS1tw6TDpHJpdHRlbHllZGl0b3JpbiByaXZpZW4gbcOkw6Ryw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHRhcGFodHVtYXRpbG9qZW4gasOkcmplc3R5a3NlbiBrb3JrZWFzdGEgKGVzaW0uIHN5ZMOkbmtvaHRhdXMpIG1hdGFsYWFuIChlc2ltLiB0b2ltaW5uYWxsaW5lbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBhc2lhYW5rdXVsdXZhdCBrw6R5dHTDtsO2bm90dG90aWxhdCwgam9pc3NhIGxpbmtpdGV0eXQgbGlwdXQgdm9pdmF0IHZhaWt1dHRhYSBDSTpuIHRpbGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIEFnZW50SVRTTUNvbmZpZ0l0ZW0tbsOkeXTDtm4gaGFrdXJhamFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC1uw6R5dMO2biBoYWt1cmFqYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBDdXN0b21lcklUU01Db25maWdJdGVtLW7DpHl0w7ZuIGhha3VyYWphbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gtbsOkeXTDtm4gaGFrdXJhamFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGthaWtraWVuIENJLWx1b2traWVuIHlodGV5c3RpZXRvdGF1bHVrb24gbW9uaXRhaG9pc2Vzc2EgbsOka3ltw6Rzc8OkIG7DpGt5dsOkdCBDSS1zYXJha2tlZXQuIEpvcyBtZXJraW50w6TDpCBlaSBvbGUsIG7DpHl0ZXTDpMOkbiBvbGV0dXNzYXJha2tlZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGxpbmtraXRhdWx1a29uIG1vbml0YWhvaXNlc3NhIG7DpGt5bcOkc3PDpCBuw6RreXbDpHQgQ0ktc2FyYWtrZWV0IENJLWx1b2thc3RhIHJpaXBwdWVuLiBKb2thaXNlbiBtZXJraW5uw6RuIGV0dWxpaXR0ZWVuw6Qgb24gb2x0YXZhIGx1b2thbiBuaW1pIGphIGtha3NvaXNwaXN0ZSAoZXNpbS4gQ29tcHV0ZXI6OikuIE9uIG9sZW1hc3NhIG11dXRhbWlhIENJLWF0dHJpYnV1dHRlamEsIGpvdGthIG92YXQgeWh0ZWlzacOkIGthaWtpbGxlIENJOmlsbGUgKGVzaW1lcmtraSBsdW9rYW4gQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFlrc2l0dMOkaXN0ZW4gQ0ktYXR0cmlidXV0dGllbiBuw6R5dHTDpG1pc2Vrc2kgQ0ktbcOkw6RyaXR0ZWx5c3PDpCBtw6TDpHJpdGVsbHlsbMOkIHRhdmFsbGEgb24ga8OkeXRldHTDpHbDpCBzZXVyYWF2YWEga2FhdmFhIChlc2ltZXJra2kgbHVva2FuIENvbXB1dGVyIG9zYWx0YSk6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBKb3MgQ0ktbHVva2FsbGUgZWkgb2xlIG1lcmtpbnTDpMOkLCBuw6R5dGV0w6TDpG4gb2xldHVzc2FyYWtrZWV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pdGvDpCBrb2h0ZWV0IG92YXQga8OkeXRldHTDpHZpc3PDpCAiQWN0aW9uIiAtdG9pbWludG9hIHZhcnRlbiBJVFNNIENvbmZpZyBJdGVtIEFDTCAtcmFrZW50ZWVuIGtvbG1hbm5lbGxhIHRhc29sbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgbWl0a8OkIGtvaHRlZXQgb3ZhdCBrw6R5dGV0dMOkdmlzc8OkIElUU00gQ29uZmlnIEl0ZW0gQUNMIC1yYWtlbnRlZW4gZW5zaW1tw6Rpc2VsbMOkIHRhc29sbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pdGvDpCBrb2h0ZWV0IG92YXQga8OkeXRldHTDpHZpc3PDpCBJVFNNIENvbmZpZyBJdGVtIEFDTCAtcmFrZW50ZWVuIHRvaXNlbGxhIHRhc29sbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pbmvDpCB0eXlwcGluZW4gbGlua2tpIChuaW1ldHR5IHRpa2V0aW4gbsOka8O2a3VsbWFzdGEpIHZvaSB2YWlrdXR0YWEgbGlua2l0ZXR5biBDSTpuIHRpbGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaW5rw6QgdHl5cHBpbmVuIGxpcHB1IHZvaSB2YWlrdXR0YWEgbGlua2l0ZXR5biBDSTpuIHRpbGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdNw6TDpHJpdGVsbcOkbiBww6Rpdml0eXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvaXN0YSBrb25maWd1cmFhdGlvZWxlbWVudHRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnS8OkeXR0w7bDtm5vdG9uIHRpbGEgVsOkcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0tha3NvaXNrYXBwYWxlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hYW1pc3RlbiBrZW50dGllbiB0YXBhaHR1bWFtb2R1dWxpLCBqb2thIG1lcmtpdHNlZSBrb25maWd1cmFhdGlva29odGVlbiBtw6TDpHJpdGVsbcOkdCBlcMOkc3lua3JvbmlzaWtzaSwgam9zIGR5bmFhbWlzaWEga2VudHRpw6Qgc2lzw6RsdMOkdsOkdCBrZW50w6R0IG11dXR0dXZhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFhbWlzZXQga2VudMOkdCwgam90a2EgbsOka3l2w6R0IGFzaWFtaWVoZW4ga8OkeXR0w7ZsaWl0dHltw6RuIElUU00tbGlzw6RrZW50dMOkbsOkeXTDtnNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFhbWlzZXQga2VudMOkdCwgam90a2EgbsOka3l2w6R0IGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJvaW50aWtvaHRlZW4geWxlaXNrYXRzYXVzbsOkeXTDtnNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFhbWlzZXQga2VudMOkdCwgam90a2EgbsOka3l2w6R0IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWVuIGhha3Vuw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnT3R0YWEga8OkeXR0w7bDtm4ga29uZmlndXJhYXRpb2tvaHRlZW4gbWFzc2F0b2ltaW50by1vbWluYWlzdXVkZW4sIGpvbmthIGF2dWxsYSBhZ2VudGluIGV0dXNpdnUgdm9pIGvDpHNpdGVsbMOkIHVzZWFtcGFhIGt1aW4geWh0w6Qga29uZmlndXJhYXRpb2tvaGRldHRhIGtlcnJhbGxhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdPdHRhYSBrw6R5dHTDtsO2biBtw6TDpHJpdHlza29odGVpZGVuIG1hc3NhdG9pbWludGF0b2ltaW5ub24gdmFpbiBsdWV0ZWxsdWlsbGUgcnlobWlsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ1RhcGFodHVtYW1vZHV1bGksIGpva2EgYXNldHRhYSBrb25maWdpdGVtLXRpbGFuIHRpY2tldC1jb25maWdpdGVtLWxpbmtpbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb2tvdGVrc3RpaGF1c3NhIGvDpHl0ZXR0w6R2w6R0IGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGluZGVrc2luIGtlbnTDpHQuIEtlbnTDpHQgdGFsbGVubmV0YWFuIG15w7ZzLCBtdXR0YSBuZSBlaXbDpHQgb2xlIHBha29sbGlzaWEgeWxlaXNlbiB0b2ltaW5uYWxsaXN1dWRlbiBrYW5uYWx0YS4gTGlpdGV0aWVkb3N0b2plbiBzaXPDpGxseXR0w6RtaW5lbiB2b2lkYWFuIGVzdMOkw6QgYXNldHRhbWFsbGEgbWVya2lubsOkbiBhcnZva3NpIDAgdGFpIHBvaXN0YW1hbGxhIHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnTcOkw6RyaXR5c2tvaGRlaW5kZWtzaWluIHRhbGxlbm5ldHV0IGtlbnTDpHQsIGpvaXRhIGvDpHl0ZXTDpMOkbiBtdXVodW4ga3VpbiBrb2tvdGVrc3RpaGFrdXVuLiBUw6R5ZGVsbGlzZW4gdG9pbWlubmFsbGlzdXVkZW4ga2FubmFsdGEga2Fpa2tpIGtlbnTDpHQgb3ZhdCBwYWtvbGxpc2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtbW9kdXVsaW4gcmVraXN0ZXLDtmludGkgQ29uZmlnSXRlbUZldGNoLWt1dHN1a2Vycm9zdGEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtbW9kdXVsaW4gcmVraXN0ZXLDtmludGkgQ29uZmlnSXRlbUZldGNoLWt1dHN1a2Vycm9zdGEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLW1vZHV1bGluIHJla2lzdGVyw7ZpbnRpIENvbmZpZ0l0ZW1GZXRjaC1rdXRzdWtlcnJvc3RhIHZhcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTS1tw6TDpHJpdHlza29odGVlbiB5bGVpc2thdHNhdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2lzw6RsdMOkw6Qga8OkeXR0w7bDtm5vdHRvdGlsYXQgYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29oZGVoYXVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Npc8OkbHTDpMOkIHZhYXJhdGlsYW50ZWlkZW4gdGlsYXQgYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29oZGVoYXVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ1TDpG3DpG4gdG9pbWlubm9uIHR1bG9rc2VuYSBuw6R5dGV0dMOkdmllbiBrb25maWd1cm9pbnRpZWxlbWVudHRpZW4gZW5pbW3DpGlzbcOkw6Ryw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdXVsaSBsdW9rYXN0YSB2YXN0YWF2YW4gcnlobcOkbiB0YXJraXN0YW1pc2Vrc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdXVsaSwgam9sbGEgdm9pdCB0YXJraXN0YWEga29uZmlndXJhYXRpb2VsZW1lbnRpc3TDpCB2YXN0YWF2YW4gcnlobcOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1dWxpIElUU00ta29uZmlndXJhYXRpb3RpbGFzdG9qZW4gdHVvdHRhbWlzZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05pbWkgTW9kdXVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtZXJvbW9kdXVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpCBrdWxsYWtpbiBoYWt1dHVsb3NzaXZ1bGxhIG7DpHl0ZXR0w6R2aWVuIG3DpMOkcml0eXNrb2h0ZWlkZW4gbcOkw6Ryw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6Qga3VsbGFraW4gaGFrdXR1bG9zc2l2dWxsYSBuw6R5dGV0dMOkdmllbiBtw6TDpHJpdHlza29odGVpZGVuIG3DpMOkcsOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdFdHNpdHTDpHbDpHQga29odGVldCwga3VpbmthIG1vbnRhIG1lcmtpbnTDpMOkIGphIG1pdGvDpCBvbWluYWlzdXVkZXQgbsOkeXRldMOkw6RuLiBDb25maWdJdGVtLWF0dHJpYnV1dGl0IG9uIHRhbGxlbm5ldHRhdmEgbmltZW5vbWFpc2VzdGkgRWxhc3RpY3NlYXJjaGluIGthdXR0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnWWxlaXNrYXRzYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpG4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gbHVva2tpZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cml0IHBpZW50ZW4ga29uZmlndXJvaW50aWtvaHRlaWRlbiB5bGVpc2thdHNhdWtzZW4gc2FyYWtlc3VvZGF0dGltaWEgdmFydGVuLiBIdW9tYWE6IFwnQWt0aWl2aW5lblwnLWFzZXR1a3NlbiBhc2V0dGFtaW5lbiBhcnZvb24gMCBlc3TDpMOkIHZhaW4gYWdlbnR0ZWphIG11b2trYWFtYXN0YSB0w6Rtw6RuIHJ5aG3DpG4gYXNldHVrc2lhIGhlbmtpbMO2a29odGFpc2lzc2EgYXNldHVrc2lzc2FhbiwgbXV0dGEgc2FsbGlpIHNpbHRpIGrDpHJqZXN0ZWxtw6RudmFsdm9qaWVuIG11b2thdGEgdG9pc2VuIGvDpHl0dMOkasOkbiBhc2V0dWtzaWEuIEvDpHl0w6QgXCdQcmVmZXJlbmNlR3JvdXBcJy1rb2h0YWEsIGt1biBoYWx1YXQgaGFsbGl0YSwgbWlsbMOkIGFsdWVlbGxhIG7DpG3DpCBhc2V0dWtzZXQgbsOkeXRldMOkw6RuIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw6R5dHTDtsO2bm90dG90aWxvamVuIHbDpHJpbiBwYXJhbWV0cml0IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHByZWZlcmVuY2VzLW7DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw6R5dHTDtsO2bm90dG90aWxvamVuIHBhcmFtZXRyaXQgYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdZbGVpc2VuIGx1ZXR0ZWxvbiBhdHRyaWJ1dXR0aWVuIGVzaW1lcmtraW9pa2V1c3J5aG1pZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpa29oZGVsdW9ra2llbiBuaW1pbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gbnVtZXJvbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnU2l2dWplbiBwYXJhbWV0cml0IChqb2lzc2EgYXNldHVza29odGVldCBuw6R5dGV0w6TDpG4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpbHVva2tpZW4gdmVyc2lvbiBtZXJra2lqb25vbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpa29oZGVsdW9ra2llbiB2ZXJzaW9uIG1lcmtraWpvbm9tYWxsaS10ecO2a2FsdXBha2tpbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpbHVva2tpZW4gdmVyc2lvbGF1a2Fpc2ltZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdMdXBhcnlobcOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWVuIGtpaW5uaXR5c3RvaW1pbm5vbiBrw6R5dHTDpG1pc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IG9pa2V1ZGV0IElUU00ta29uZmlndXJhYXRpb2tvaHRlaWRlbiBuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb25maWd1cmFhdGlva29odGVpZGVuIGhha3Vuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYWt1bsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBwdXVuw6RreW3DpG4gbsOkeXR0w7bDtm4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWVuIHpvb21hdXNuw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIC1uw6R5dMO2biBrw6R5dHTDpG1pc2Vlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNOm4gbcOkw6RyaXR5c2tvaHRlaWRlbiBpcnRvdGF2YXJhbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWVuIG11b2trYXVzbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGlzdG9yaWEtbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiB0dWxvc3RhbWluZW4gLW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdNw6TDpHJpdHlza29odGVpZGVuIHBvaXN0YW1pc2VlbiB0YXJ2aXR0YXZhdCBvaWtldWRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdIYWt1IGtvbmZpZ3Vyb2ludGllbGVtZW50aXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdBc2V0YSBDSTpuIHRhcGFodHVtYXRpbGEgYXV0b21hYXR0aXNlc3RpLCBrdW4gbGlwcHUgbGlua2l0ZXTDpMOkbiBDSTpoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXNldHRhYSBrw6R5dHTDtsO2bm90b24gdGlsYW4gYWdlbnR0aWxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlZW4gYnVsay1uw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXNldHRhYSB0YXBhaHR1bWF0aWxhbiBhZ2VudHRpbGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVlbiBidWxrLW7DpHl0w7Zzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIGtvbmZpZ3Vyb2ludGlrb2hkZSB2b2lkYWFuIHloZGlzdMOkw6QgdG9pc2VlbiBrb2h0ZWVzZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgcMOkw6RzZWUgbcOkw6RyaXR5c2tvaHRlZW4gaGlzdG9yaWFhbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWlkZW4geWxlaXNrYXRzYXVrc2Vzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHDDpMOkc2VlIG3DpMOkcml0eXNrb2h0ZWVuIGhpc3RvcmlhYW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSB2b2l0IHBvaXN0YWEgbcOkw6RyaXR5c2tvaHRlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9rYSBuw6R5dHTDpMOkIG3DpMOkcml0eXNrb2h0ZWlkZW4gbGlua2l0IHB1dW7DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbGxhIHZvaXQga29waW9pZGEgbcOkw6RyaXR5c2tvaHRlZW4gYWdlbnR0aWxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlaWRlbiB5bGVpc2thdHNhdWtzZXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCBrb3Bpb2lkYSBtw6TDpHJpdHlza29odGVlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCBsaW5raW4gdmFsaWtrb29uLCBqb25rYSBhdnVsbGEgdm9pdCBtdW9rYXRhIG3DpMOkcml0eXNrb2hkZXR0YSBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCBwYWxhdGEgdGFrYWlzaW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlZW4gem9vbWF1c27DpGt5bcOkw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHZvaXQgdHVsb3N0YWEgbcOkw6RyaXR5c2tvaHRlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSB2b2l0IHpvb21hdGEgbcOkw6RyaXR5c2tvaHRlZXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVpZGVuIHlsZWlza2F0c2F1a3Nlc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIG3DpMOkcml0eXNrb2h0ZWlkZW4gaGlzdG9yaWFuIChrw6TDpG50ZWlzZXNzw6QgasOkcmplc3R5a3Nlc3PDpCkgYWdlbnR0aWxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ09sZXR1c2x1b2trYSwgam9rYSBuw6R5dGV0w6TDpG4sIGpvcyBtaXTDpMOkbiBlaSBvbGUgdmFsaXR0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYWF0aW9lbGVtZW50aW4gdHVubmlzdGUsIGVzaW0uIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBPbGV0dXNhcnZvIG9uIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnS8OkeW5uaXN0w6TDpCBDb25maWdJdGVtRmV0Y2gta3V0c3VhamFuIGF1dG9tYWF0dGlzZXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvIFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpbyBtZXJra2lqb25vIE1vZHV1bGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvIExhdWthaXNpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnVm9pZGFhbmtvIENvbmZpZ0l0ZW1BQ0w6biBzdW9yaXR0YW1pbmVuIHbDpGx0dMOkw6QgdGFya2lzdGFtYWxsYSB2w6RsaW11aXN0aWluIHRhbGxlbm5ldHR1amVuIGtlbnR0aWVuIHJpaXBwdXZ1dWRldC4gVMOkbcOkIHZvaSBwYXJhbnRhYSBsb21ha2tlaWRlbiBsYXRhdXNhaWtvamEsIG11dHRhIHNlIG9uIHBvaXN0ZXR0YXZhIGvDpHl0w7ZzdMOkLCBqb3MgQUNMTW9kdWxlamEga8OkeXRldMOkw6RuIElUU01Db25maWdJdGVtLSBqYSBGb3JtLVJldHVyblR5cGVzLXR5eXBlaXNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdNaXRrw6QgeWxlaXNldCB0aWVkb3QgbsOka3l2w6R0IG90c2lrb3NzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdsdW9ra2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnbWFhaWxtYW5sYWFqdWluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAndHVvdHRhdmEnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgdHV1bWFhICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXR1dW1haW5lbiB0ZWxpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXR1dW1haW5lbiB0ZWxpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHR1dW1hYSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLXR1dW1haW5lbiB0ZWxpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHR1dW1hYSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgdHV1bWFhICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSB0dXVtYWEgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDEzMywzNSBjbSAoNTIsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSB0dXVtYWEgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHR1dW1hYSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdHV1bWFhICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCB0dXVtYWEgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0dXVtYWEgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgdHV1bWFhICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDE3LDc4IGNtICg3IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMzUsNTYgY20gKDE0IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnS2lyamFucGl0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ09zb2l0dGVlbiBqYWthbWluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1lsbMOkcGl0w6Rqw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9naW5lbiBwdWhlbGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnTGFpdHRlZW4gdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWt1biBrYXBhc2l0ZWV0dGkgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdQYXJpc3RvdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnUmFrZW5udXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1bDpHlsw6RsaWl0w6RudMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWx1b2trYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGVldHRpIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhc2l0ZWV0dGkgbsOkeXTDtm5vaGphaW50YSBrb2h0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRpbiBudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0aW5sdWtpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS29ydGluIHR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQXNpYWthc3Zhcm1lbnRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnQXNpYWthc29oamVsbWlzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQXNpYWthc2x1b2trYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLZWxsb3RhYWp1dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvb2RpbiBhbGxla2lyam9pdHVzdmFybWVudGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29rb3VzcHVoZWxpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHR0aXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ090YSB5aHRleXR0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ090YSB5aHRleXR0w6QgamFrZWxpamFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnR0aWVuIGhhbGxpbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnU29waW11c3R5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1NvcGltdXNrYXVzaSBhbGthZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnU29waW11c2thdXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0xhbmdhdG9uIHB1aGVsaW4gKERFQ1QtcHVoZWxpbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS3VzdGFubnVzeWtzaWtrw7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdMaXNlbnNzaWVuIGx1a3Vtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTHVvbnRpcMOkaXbDpG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdDdXN0b20gUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBWYXJhdHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtcGFsdmVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0xhc2t1biBww6RpdsOkbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1RpbGF1c3DDpGl2w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ1Rha3V1YWphbiBww6RpdsOkbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnSnVsa2Fpc3Vww6RpdsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdUecO2cMO2eXTDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQXNpYWtpcmpvamVuIGFsbGVraXJqb2l0dXN2YXJtZW50ZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSS1oeWxseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnU8OkaGvDtnBvc3RpdmFybWVudGVldCAoUy9NSU1FLXZhcm1lbnRlZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1R5w7Zzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnTG9wdW4gSVAtb3NvaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVHVlbiBww6TDpHR0eW1pbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVmlpbWVpbmVuIHZvaW1hc3Nhb2xvcMOkaXbDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnVWxrb2luZW4ga2lpbnRvbGV2eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1BhbG9tdXVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRmx5d2hlZWwtZW5lcmdpYW4gdmFyYXN0b2ludGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdNdW9kb24gdGVraWrDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNpbmctc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1lsZWlzdMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnTsOkeXTDtm5vaGphaW1ldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnTsOkeXTDtm5vaGphaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdMYWl0dGVpc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTGFpdHRlaXN0b21hbGxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0xhaXR0ZWlzdG9uIHBhaW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdLdXVsb2trZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZWV0aW4tIGphIHDDpMOkc3luaGFsbGludGEgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ1ZhcmFzdG9udW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0xhc2t1biBudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdOw6RwcMOkaW1pc3TDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QtbsOkeXR0w7YgKG5lc3Rla2lkZW7DpHl0dMO2KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELW1vbml0b3JpICh2YWxvZGlvZGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0xhbmthcHVoZWxpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdLYW5uZXR0YXZhIHRpZXRva29uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xldmV5c2FzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdLZXJyb3MgMTogRnl5c2luZW4ga2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0tlcnJvcyAyOiBUaWVkb25zaWlydG9rZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0tlcnJvcyAzOiBWZXJra29rZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnS2Vycm9zIDM6IFZlcmtrb2tlcnJvcyAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0tlcnJvcyA0OiBLdWxqZXR1c2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnS2Vycm9zIDU6IElzdHVudG9rZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnS2Vycm9zIDY6IEVzaXR5c2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0tlcnJvcyA3OiBTb3ZlbGx1c2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdWdW9rcmFzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGlzZW5zc2lzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXNlbnNzaWF2YWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpc2Vuc3NpbiB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpc2Vuc3NpYWlrYSBhbGthZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaXNlbnNzaWFpa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGl1bS1yYXV0YWZvc2ZhYXR0aWFra3UgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpdW0taW9uaWFra3UgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMYWluYXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1NpamFpdHNlZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdQaXR1dXNhc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVmFsbWlzdGFqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnU3V1cmluIGt1b3JtaXR1c2thcGFzaXRlZXR0aSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTXVpc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTXVpc3RpdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01hdGthcHVoZWxpbm51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpaWxpL3Npc8Okw6RucmFrZW5uZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01hbGxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTWFsbGluIGt1dmF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdOw6R5dMO2biB0YXJra3V1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdOw6R5dMO2biBrb2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnSGlpcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1Zlcmtrbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdWZXJra290aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ1Zlcmtrb3RpZWRvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVmVya2tva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsaS1rYWRtaXVtLWFra3UgKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsaS1tZXRhbGxpaHlkcmlkaSAoTmlNSCkgLWFra3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnU2FsYXNzYXBpdG9zb3BpbXVzIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTXVpc3Rpa2lyamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdTdW9yaXRpbnlrc2lrw7ZpZGVuIG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTS1tb2R1dWxpZW4gbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsOkeXTDtm5vaGphaW50ZW4gbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtbW9uaXRvcmkgKG9yZ2FhbmluZW4gdmFsb2Rpb2RpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdUb2ltaW50YWt1c3Rhbm51a3NldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdUaWxhdXNudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdNdXV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdMw6RoZMO2dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdLdW1wcGFudXVzc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1B1aGVsaW5udW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1B1aGVsaW1lbiB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXlzaXNldCB5dGltZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdWaXJyYW5qYWtlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdPc3RldHR1IG9zb2l0dGVlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdUZWxpbmVlbiBzeXZ5eXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdUZWxpbmV5a3Npa8O2dCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0h1b25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWtvcnR0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtc2VydGlmaWthYXRpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ015eW50aXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaWl0dGlwdWhlbGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1N1bGpldHR1IGx5aWp5aGFwcG9ha2t1IChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2FyamFudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnUGFsdmVsaW5vaGplbG1pc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGFsdmVsdXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdQYWx2ZWx1bWVya2tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Bpc3RvcmFzaWEgdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnT2hqZWxtaXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1B1aHVqYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnVmFraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0Fsb2l0YSBJUC1vc29pdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1ZhcmFzdG9pbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnVGFsbGVubnVzb3Npbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1R5dMOkcnlodGnDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnWWh0ZWVudmV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ09odXQgYXNpYWthcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnS2llcnRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnTsOkeXTDtm5vaGphaW1lbiBSQU0tbXVpc3RpIHlodGVlbnPDpCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNLW11aXN0aWEgeWh0ZWVuc8OkIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0tvc2tldHVzbsOkeXTDtm4gbsOkeXR0w7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWtlc2tpdGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgSGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXB1aGVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/fr_CA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEb25uw6llcyBnw6luw6lyYWxlcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcmVxdcOqdGUgZW50cmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcsOpcG9uc2Ugc29ydGFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZGUgbGEgY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNb2RpZmllciBsYSBkw6lmaW5pdGlvbiBkZXMgcsO0bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnTGVzIGVuc2VtYmxlcyBkZSBjbGFzc2VzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0ljaSwgdm91cyBwb3V2ZXogaW1wb3J0ZXIgZGVzIGNsYXNzZXMgUmVhZHkySW1wb3J0IHF1aSBwcsOpc2VudGVudCBub3Mgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGxlcyBwbHVzIGNvdXJhbnRzLiBWZXVpbGxleiBub3RlciBxdWUgY2VydGFpbmVzIGNvbmZpZ3VyYXRpb25zIHN1cHBsw6ltZW50YWlyZXMgcGV1dmVudCDDqnRyZSBuw6ljZXNzYWlyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01pc2Ugw6Agam91ciBkZXMgZW50aXTDqXMgZXhpc3RhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGVyIGxlcyBwYXF1ZXRzIGRlIGNsYXNzZXMgZGUgUmVhZHkyQWRvcHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDbGFzc2UgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1LDtGxlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyZSBwb3VyIGxlcyBjbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1PDqWxlY3Rpb25uZXogdW5lIGNsYXNzZSBkYW5zIGxhIGxpc3RlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OJdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpZW4gdmVycyB1biBhdXRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtw6lybyBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBub24gdmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTGUgbnVtw6lybyBkXCd1biBhdXRyZSDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGxlcXVlbCDDqXRhYmxpciB1biBsaWVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMZSBub20gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBub20gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGUocykgbnVtw6lybyhzKSBzdWl2YW50KHMpIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ051bcOpcm8gZGUgdmVyc2lvbiBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBudW3DqXJvIGRlIHZlcnNpb24gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGUocykgbnVtw6lybyhzKSBzdWl2YW50KHMpIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpcXVlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnQ29udGVudSBoaXN0b3JpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcsOpZXIgdW4gdGVtcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVnVlIGRlIGxhIHN5bnRow6hzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgw4lsw6ltZW50cyBwYXIgcGFnZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQXVjdW5lIGRvbm7DqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSB0cm91dsOpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTw6lsZWN0aW9ubmVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBkXCdleMOpY3V0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcG91ciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWF1IGRlIHByb2ZvbmRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGF2YW50L2FycmnDqHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVhdSBkZSBsaWVucyBtYXhpbXVtIGF0dGVpbnQgcG91ciBDb25maWdJdGVtICEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgc3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0Rlcm5pw6hyZSBtb2RpZmljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnRGVybmnDqHJlIG1vZGlmaWNhdGlvbiBwYXInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdWb3Mgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdMZXMgY2xhc3NlcyBzdWl2YW50ZXMgc2Vyb250IGltcG9ydMOpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnTGVzIHLDtGxlcyBzdWl2YW50cyBzZXJvbnQgaW1wb3J0w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ05vdGV6IHF1ZSBsZXMgY2hhbXBzIGR5bmFtaXF1ZXMgZXQgbGVzIGNsYXNzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGFudHMgc2Vyb250IMOpZ2FsZW1lbnQgY3LDqcOpcyBldCBxdVwnaWwgblwneSBhIHBhcyBkZSBzdXBwcmVzc2lvbiBhdXRvbWF0aXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWb3VsZXotdm91cyBjb250aW51ZXIgPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdCZXNvaW4gZGUgY2xhc3NlcyBkXCdleGVtcGxlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGTDqWZpbml0aW9uIG5cJ2VzdCBwYXMgdW4gaGFjaGFnZSBZQU1MIHZhbGlkZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWdWUgZFwnZW5zZW1ibGUgOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gQ29uZmlnSXRlbUlEIG5cJ2VzdCBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1ZvdXMgYXZleiBiZXNvaW4gZFwnYXUgbW9pbnMgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gc8OpbGVjdGlvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnVm91cyBuXCdhdmV6IHBhcyBkXCdhY2PDqHMgZW4gw6ljcml0dXJlIMOgIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiA6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdBdWN1bmUgZMOpZmluaXRpb24gblwnYSDDqXTDqSBkw6lmaW5pZSBwb3VyIGxhIGNsYXNzZSAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdMXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAiJXMiIG5cJ2EgcGFzIMOpdMOpIHRyb3V2w6kgZGFucyBsYSBiYXNlIGRlIGRvbm7DqWVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdJbCBuXCdhIHBhcyDDqXTDqSBwb3NzaWJsZSBkZSBzdXBwcmltZXIgbGUgY29uZmlnaXRlbSBJRCAlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdBdWN1bmUgdmVyc2lvbiB0cm91dsOpZSBwb3VyIENvbmZpZ0l0ZW1JRCAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3UgQ2xhc3NJRCBuXCdlc3QgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIGFjY8OocyBuXCdlc3QgZG9ubsOpICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBhdWN1biBDb25maWdJdGVtSUQgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBhdWN1biBkcm9pdCBkXCdhY2PDqHMgblwnYSDDqXTDqSBhY2NvcmTDqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3V2ZWF1IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm91dmVsbGUgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTWlzZSDDoCBqb3VyIGRlIGxcJ8OpdGF0IGR1IGTDqXBsb2llbWVudCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsXCfDqXRhdCBkZSBsXCdpbmNpZGVudCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHN1cHByaW3DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0Fqb3V0IGRcJ3VuIGxpZW4gdmVycyAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpZW4gdmVycyAlcyAodHlwZT0lcykgc3VwcHJpbcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdNaXNlIMOgIGpvdXIgZGUgbGEgZMOpZmluaXRpb24gZGUgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tIG1pcyDDoCBqb3VyIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyBtaXMgw6Agam91ciBkZSAiJXMiIMOgICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBzdXBwcmltw6llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIENvbmZpZ0l0ZW1JRCBvdSBWZXJzaW9uSUQgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIGF1Y3VuIGRyb2l0IGRcJ2FjY8OocyBuXCdhIMOpdMOpIGFjY29yZMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgaW50cm91dmFibGUgZGFucyBsYSBiYXNlIGRlIGRvbm7DqWVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdpbXByaW3DqSBwYXIgJXMgw6AgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1LDqWbDqXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBpbnZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gaWRlbnRpZmlhbnQgZGUgY2xhc3NlIG5cJ2VzdCBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0F1Y3VuIGRyb2l0IGRcJ2FjY8OocyDDoCBjZXR0ZSBjbGFzc2UgblwnYSDDqXTDqSBhY2NvcmTDqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdQYXMgZGUgcsOpc3VsdGF0ICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSw6lzdWx0YXRzIGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnw6lsw6ltZW50LCBhdWN1biBkcm9pdCBkXCdhY2PDqHMgblwnZXN0IGFjY29yZMOpIHBvdXIgQ29uZmlnSXRlbSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gaW50cm91dmFibGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdBdWN1bmUgdmVyc2lvbiB0cm91dsOpZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3DDqXJhdGlvbm5lbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYXZlcnRpc3NlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTFwnw6l0YXQgZGUgbFwnaW5jaWRlbnQgZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnUGFzIGRcJ2F1dG9yaXNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cmUgbm9uIHZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbcOodHJlcyBkZSByZWNoZXJjaGUgbm9uIHZhbGlkZXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBkXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBkXCdpbmNpZGVudCBhY3R1ZWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnZW50cmUgbGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSBjbGFzc2UgcG91ciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNsYXNzZXMgcG91ciByZXN0cmVpbmRyZSBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSBjbGFzc2UgcG91ciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1PDqWxlY3Rpb25uZXIgdW5lIG91IHBsdXNpZXVycyBjbGFzc2VzIHBvdXIgcmVzdHJlaW5kcmUgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzw6lsZWN0aW9ubmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pcXVlIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGRlIHLDqWbDqXJlbmNlbWVudCBkZXMgbGllbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2kgY2UgbGllbiBzXCdhcHBsaXF1ZSDDoCBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBvdSDDoCBsYSB2ZXJzaW9uIHN0YXRpcXVlIGRlIGxcJ29iamV0IGRlIHLDqWbDqXJlbmNlLiBMZSBjYWxjdWwgZGUgbFwnw6l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50IG5cJ2VzdCBlZmZlY3R1w6kgcXVlIHBvdXIgbGVzIGxpZW5zIGR5bmFtaXF1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU8OpbGVjdGlvbm5leiBsXCdhdHRyaWJ1dCBwYXIgbGVxdWVsIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc2Vyb250IHJlY2hlcmNow6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgc3RydWN0dXJlIGRlIGJhc2UgblwnZXN0IHBhcyB2YWxpZGUuIFZldWlsbGV6IGZvdXJuaXIgdW4gaGFjaGFnZSBhdmVjIGRlcyBkb25uw6llcyBhdSBmb3JtYXQgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdJbCBlc3QgbsOpY2Vzc2FpcmUgZGUgY29tbWVuY2VyIGxhIGNoYcOubmUgWUFNTCBwYXIgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0ltcG9zc2libGUgZGUgcHVyZ2VyIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0F1Y3VuIGNoYW1wIGR5bmFtaXF1ZSBwZXJ0aW5lbnQgblwnYSDDqXTDqSB0cm91dsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW1wb3NzaWJsZSBkXCdpbnPDqXJlciBkYW5zIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zw6lyw6kgMCBsaWduZXMgZGFucyBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTm9tYnJlIG1heGltYWwgZFwndW4gw6lsw6ltZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ0NoYcOubmUgZGUgdmVyc2lvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJldXIgZGUgc3luY2hyb25pc2F0aW9uIGRlcyBkw6lmaW5pdGlvbnMuIFZldWlsbGV6IHbDqXJpZmllciBsZSBqb3VybmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1ZvdXMgYXZleiBkZXMgZMOpZmluaXRpb25zIElUU01Db25maWdJdGVtIHF1aSBuZSBzb250IHBhcyBzeW5jaHJvbmlzw6llcy4gVmV1aWxsZXogZMOpcGxveWVyIHZvcyBjaGFuZ2VtZW50cyBkZSBjaGFtcHMgZHluYW1pcXVlcyBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYWludGVuYW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUHLDqXZ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1LDqXBhcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRyYWl0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUsOpdmlzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWdWUgZFwnZW5zZW1ibGUgZXQgY29uZmlybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGF0aW9uIGRlIGNsYXNzZXMvcsO0bGVzIGV0IGRlIGxldXJzIGNoYW1wcyBjb25uZXhlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1VuZSBlcnJldXIgc1wnZXN0IHByb2R1aXRlIGxvcnMgZGUgbFwnaW1wb3J0YXRpb24gZGUgbGEgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gQ2FjaMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBNb250csOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtZXQgZFwnw6l0ZW5kcmUgbGVzIGNvbmRpdGlvbnMgZGUgcmVjaGVyY2hlIGRhbnMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuIEdyw6JjZSDDoCBjZXR0ZSBmb25jdGlvbm5hbGl0w6ksIHZvdXMgcG91dmV6IHJlY2hlcmNoZXIsIHBhciBleGVtcGxlLCBsZSBub20gZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYXZlYyBkZXMgY29uZGl0aW9ucyB0ZWxsZXMgcXVlICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1ldCBkXCfDqXRlbmRyZSBsZXMgY29uZGl0aW9ucyBkZSByZWNoZXJjaGUgZGFucyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuIEF2ZWMgY2V0dGUgZm9uY3Rpb25uYWxpdMOpLCB2b3VzIHBvdXZleiByZWNoZXJjaGVyIHBhciBleGVtcGxlIGxlIG5vbSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGRlcyBjb25kaXRpb25zIHRlbGxlcyBxdWUgIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnSUMgYXNzaWduw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIGFmZmVjdMOpcyDDoCBsXCdlbnRyZXByaXNlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSBhdHRyaWJ1w6lzIMOgIGxcJ3V0aWxpc2F0ZXVyIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnUGFyYW3DqHRyZXMgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVsOpcmlmaWVyIGxhIHByw6lzZW5jZSBkXCd1biBub20gdW5pcXVlIHVuaXF1ZW1lbnQgZGFucyBsYSBtw6ptZSBjbGFzc2UgZGUgQ29uZmlnSXRlbSAoImNsYXNzIikgb3UgZ2xvYmFsZW1lbnQgKCJnbG9iYWwiKSwgY2UgcXVpIHNpZ25pZmllIHF1ZSBjaGFxdWUgQ29uZmlnSXRlbSBleGlzdGFudCBlc3QgcHJpcyBlbiBjb21wdGUgbG9ycyBkZSBsYSByZWNoZXJjaGUgZGUgZG91YmxvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzY2jDqW1hIGRlIGTDqW5vbWluYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzeXN0w6htZSBkZSBudW3DqXJvdGF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9pc2lzc2V6IHVuIG1vZHVsZSBwb3VyIGFwcGxpcXVlciB1biBzY2jDqW1hIGRlIGNoYcOubmUgZGUgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBhdHRyaWJ1dHMgcXVpIGTDqWNsZW5jaGVudCBsYSBjcsOpYXRpb24gZFwndW5lIG5vdXZlbGxlIHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1PDqWxlY3Rpb25uZXogbGVzIGNhdMOpZ29yaWVzIMOgIGFmZmVjdGVyIMOgIGNldHRlIGNsYXNzZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gY29sb25uZSBwb3VyIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbG9ubmVzIHBvdXZhbnQgw6p0cmUgZmlsdHLDqWVzIGRhbnMgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBSZW1hcnF1ZSA6IHNldWxzIGxlcyBhdHRyaWJ1dHMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBldCBsZXMgY2hhbXBzIGR5bmFtaXF1ZXMgKER5bmFtaWNGaWVsZF9OYW1lWCkgc29udCBhdXRvcmlzw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0Fqb3V0IGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OJZGl0aW9uIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBxdWkgcGVybWV0IGxcJ2VucmVnaXN0cmVtZW50IGRhbnMgbFwnaGlzdG9yaXF1ZSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IHBvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgbWV0IMOgIGpvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsZXVyIGTDqWZpbml0aW9uIGFjdHVlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlxdWUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZyBpdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBkZXMgY2xhc3NlcyBzdWl2YW50ZXMgbmUgc2Vyb250IHBhcyBzdG9ja8OpcyBzdXIgbGUgc2VydmV1ciBFbGFzdGljc2VhcmNoLiBQb3VyIGFwcGxpcXVlciBjZWxhIGF1eCBDSSBleGlzdGFudHMsIGxhIG1pZ3JhdGlvbiBkZXMgQ0kgZG9pdCDDqnRyZSBleMOpY3V0w6llIHZpYSBsYSBjb25zb2xlLCBhcHLDqHMgYXZvaXIgY2hhbmfDqSBjZXR0ZSBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBhdmVjIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IHN1aXZhbnRzIG5lIHNlcm9udCBwYXMgc3RvY2vDqXMgc3VyIGxlIHNlcnZldXIgRWxhc3RpY3NlYXJjaC4gUG91ciBhcHBsaXF1ZXIgY2VsYSBhdXggQ0kgZXhpc3RhbnRzLCBsYSBtaWdyYXRpb24gZGVzIENJIGRvaXQgw6p0cmUgZXjDqWN1dMOpZSB2aWEgbGEgY29uc29sZSwgYXByw6hzIGF2b2lyIGNoYW5nw6kgY2V0dGUgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTGltaXRlIGRcJ8OpbMOpbWVudHMgcGFyIHBhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXNlIGRlIGRvbm7DqWVzIGRlIGdlc3Rpb24gZGUgbGEgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG1vZHVsZSBlbiB2cmFjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiByZWNoZXJjaGUgcm91dGV1ciBiYWNrZW5kIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0Nyw6llciBldCBnw6lyZXIgbGVzIGTDqWZpbml0aW9ucyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0Nyw6llIGRlcyB0aWNrZXRzIHBvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBkZXMgbW9tZW50cyBwcsOpY2lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMZXMgY2xpZW50cyBwZXV2ZW50IGNvbnN1bHRlciBsXCdoaXN0b3JpcXVlIGRlcyB2ZXJzaW9ucyBkZSBsXCdJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnTGVzIGNsaWVudHMgb250IGxhIHBvc3NpYmlsaXTDqSBkZSBwYXNzZXIgbWFudWVsbGVtZW50IGRcJ3VuZSB2ZXJzaW9uIGhpc3RvcmlxdWUgZGUgQ0kgw6AgbFwnYXV0cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRG9ubsOpZXMgcGFyIGTDqWZhdXQgw6AgdXRpbGlzZXIgc3VyIGxcJ2F0dHJpYnV0IGRlIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yIDsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0Rvbm7DqWVzIHBhciBkw6lmYXV0IMOgIHV0aWxpc2VyIHN1ciBsXCdhdHRyaWJ1dCBkZSBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MyA7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGxlcyBhY3Rpb25zIHBvdXIgbGVzcXVlbGxlcyB1biBib3V0b24gZGUgY29uZmlndXJhdGlvbiBlc3QgZGlzcG9uaWJsZSBkYW5zIGxlIHdpZGdldCBkZXMgb2JqZXRzIGxpw6lzIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFZldWlsbGV6IG5vdGVyIHF1ZSBjZXMgYWN0aW9ucyBkb2l2ZW50IGF2b2lyIGVucmVnaXN0csOpIGxlcyBmaWNoaWVycyBKUyBldCBDU1Mgc3VpdmFudHMgOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBldCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEw6lmaW5pciB1biBzY2jDqW1hIFRlbXBsYXRlOjpUb29sa2l0IHBvdXIgbGVzIGNoYcOubmVzIGRlIHZlcnNpb24uIFV0aWxpc8OpIHVuaXF1ZW1lbnQgc2kgbGUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBlc3QgZMOpZmluaSBzdXIgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRMOpZmluaXIgdW4gZW5zZW1ibGUgZGUgY29uZGl0aW9ucyBzb3VzIGxlc3F1ZWxsZXMgdW4gY2xpZW50IGVzdCBhdXRvcmlzw6kgw6Agdm9pciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4gTGVzIGNvbmRpdGlvbnMgcGV1dmVudCDDqXZlbnR1ZWxsZW1lbnQgw6p0cmUgbGltaXTDqWVzIMOgIGNlcnRhaW5zIGdyb3VwZXMgZGUgY2xpZW50cy4gTGUgbm9tIGVzdCBsZSBzZXVsIGF0dHJpYnV0IG9ibGlnYXRvaXJlLiBTaSBhdWN1bmUgYXV0cmUgb3B0aW9uIG5cJ2VzdCBkb25uw6llLCB0b3VzIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc2Vyb250IHZpc2libGVzIGRhbnMgY2V0dGUgY2F0w6lnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgc3VwcHJpbWVyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgb2J0ZW5pciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHJlY2hlcmNoZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBkw6lmaW5pciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHVuIG1vZHVsZSBkZSB2dWUgZFwnZW5zZW1ibGUgcG91ciBhZmZpY2hlciBsYSBwZXRpdGUgdnVlIGRcJ3VuZSBsaXN0ZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHNpIGxlcyDDqXRpcXVldHRlcyBkZSB0eXBlIGRlIGxpZW4gZG9pdmVudCDDqnRyZSBhZmZpY2jDqWVzIGRhbnMgbGVzIGNvbm5leGlvbnMgZGUgbsWTdWRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRMOpZmluaXQgZGVzIGV4cHJlc3Npb25zIHLDqWd1bGnDqHJlcyBpbmRpdmlkdWVsbGVtZW50IHBvdXIgY2hhcXVlIGNsYXNzZSBDb25maWdJdGVtIGFmaW4gZGUgdsOpcmlmaWVyIGxlIG5vbSBkdSBDb25maWdJdGVtIGV0IGRcJ2FmZmljaGVyIGxlcyBtZXNzYWdlcyBkXCdlcnJldXIgY29ycmVzcG9uZGFudHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGRpc3BvbmlibGVzIHBvdXIgbGVzIENJIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHBhciBkw6lmYXV0IHBvdXIgbGUgdHJpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHBhciBkw6lmYXV0IHBvdXIgbGUgdHJpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBjZXR0ZSBvcMOpcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgcGFyIGTDqWZhdXQgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4gVXAgOiBsZSBwbHVzIGFuY2llbiBlc3QgZW4gaGF1dC4gRW4gYmFzIDogbGUgcGx1cyByw6ljZW50IGVuIGhhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4gRW4gaGF1dCA6IGxlIHBsdXMgYW5jaWVuIGVzdCBlbiBoYXV0LiBFbiBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIHBhciBkw6lmYXV0IGRlcyBDSSBkYW5zIGxhIHZ1ZSBkXCdlbnNlbWJsZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEw6lmaW5pdCBsYSBwcm9mb25kZXVyIHBhciBkw6lmYXV0IGRlcyByZWxhdGlvbnMgw6AgYWZmaWNoZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYWZmaWNow6kgcGFyIGTDqWZhdXQgcG91ciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIHJlY2hlcmNoZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqSBwYXIgZMOpZmF1dCBwb3VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiS2V5IiBkb2l0IGNvbnRlbmlyIGxlIG5vbSBkdSBjaGFtcCBkeW5hbWlxdWUsIGRhbnMgY2UgY2FzICJYIiwgIkNvbnRlbnQiIGRvaXQgY29udGVuaXIgbGEgdmFsZXVyIGR1IGNoYW1wIGR5bmFtaXF1ZSBlbiBmb25jdGlvbiBkdSB0eXBlIGRlIGNoYW1wIGR5bmFtaXF1ZSwgVGV4dCA6ICJ1biB0ZXh0ZSIsIERyb3Bkb3duIDogIjEiLCBEYXRlL1RpbWUgOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQiIDogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNiA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTMgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNiA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjMgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTkgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTkgO2V0IG91ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlayA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTciIDsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZSBzb3VzLW9iamV0IHBhciBkw6lmYXV0IGRlIGxhIGNsYXNzZSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGRpc3BvbmlibGVzIHBvdXIgbGVzIENJIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBoYXV0ZXVyIGR1IGNvbXBvc2FudCBkZSBsXCfDqWRpdGV1ciBkZSB0ZXh0ZSBlbnJpY2hpIHBvdXIgY2V0IMOpY3Jhbi4gRW50cmV6IHVuIG5vbWJyZSAocGl4ZWxzKSBvdSB1bmUgdmFsZXVyIGVuIHBvdXJjZW50YWdlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlIG5vbWJyZSBkZSBsaWduZXMgcG91ciBsXCfDqWRpdGV1ciBkZSBkw6lmaW5pdGlvbiBkZSBDSSBkYW5zIGxcJ2ludGVyZmFjZSBkXCdhZG1pbmlzdHJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgZGVzIMOpdGF0cyBpbmNpZGVudHMsIGRlIGhhdXQgKHBhciBleGVtcGxlLCBjcmljaXRhbCkgw6AgYmFzIChwYXIgZXhlbXBsZSwgZm9uY3Rpb25uZWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IHBlcnRpbmVudHMgZGFucyBsZXNxdWVscyBsZXMgdGlja2V0cyBsacOpcyBwZXV2ZW50IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIGRlcyBDSSBkYW5zIGxhIHZ1ZSBjb21wbGV4ZSBkZSBsYSB0YWJsZSBkZXMgbGllbnMgcG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgZGUgQ0kuIFNcJ2lsIG5cJ3kgYSBwYXMgZFwnZW50csOpZSwgbGVzIGNvbG9ubmVzIHBhciBkw6lmYXV0IHNvbnQgYWZmaWNow6llcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIGRlcyBDSSBkYW5zIGxhIHZ1ZSBjb21wbGV4ZSBkZSBsYSB0YWJsZSBkZXMgbGllbnMsIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBwcsOpY8OpZMOpZSBkdSBub20gZGUgbGEgY2xhc3NlIGV0IGRlIGRldXggcG9pbnRzIChwYXIgZXhlbXBsZSA6IE9yZGluYXRldXI6IDopLiBRdWVscXVlcyBhdHRyaWJ1dHMgZGUgQ0kgc29udCBjb21tdW5zIMOgIHRvdXMgbGVzIENJIChleGVtcGxlIHBvdXIgbGEgY2xhc3NlIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tKSA6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBvdXIgYWZmaWNoZXIgbGVzIGF0dHJpYnV0cyBkZSBDSSBpbmRpdmlkdWVscyB0ZWxzIHF1ZSBkw6lmaW5pcyBkYW5zIGxhIGTDqWZpbml0aW9uIGRlIENJLCBpbCBjb252aWVudCBkXCd1dGlsaXNlciBsZSBzY2jDqW1hIHN1aXZhbnQgKGV4ZW1wbGUgcG91ciBsYSBjbGFzc2UgT3JkaW5hdGV1cikgOiBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MSwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MiwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBTXCdpbCBuXCd5IGEgcGFzIGRcJ2VudHLDqWUgcG91ciB1bmUgY2xhc3NlIENJLCBsZXMgY29sb25uZXMgcGFyIGTDqWZhdXQgc29udCBhZmZpY2jDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIHBvdXIgIkFjdGlvbiIgYXUgdHJvaXNpw6htZSBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIGF1IHByZW1pZXIgbml2ZWF1IGRlIGxhIHN0cnVjdHVyZSBkZSBsXCdBQ0wgZGVzIMOpbMOpbWVudHMgZGUgbGEgQ29uZmlnIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIGF1IGRldXhpw6htZSBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBxdWVsIHR5cGUgZGUgbGllbiAobm9tbcOpIGR1IHBvaW50IGRlIHZ1ZSBkdSB0aWNrZXQpIHBldXQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJIGxpw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgcXVlbCB0eXBlIGRlIHRpY2tldCBwZXV0IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSSBsacOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsYSBkw6lmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnU3VwcHJpbWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ291bGV1ciBkZSBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnw4l0YXQgZGUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBkZSBjaGFtcCBkeW5hbWlxdWUgcXVpIG1hcnF1ZSBsZXMgZMOpZmluaXRpb25zIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBjb21tZSDDqXRhbnQgZMOpc3luY2hyb25pc8OpZXMsIHNpIGxlcyBjaGFtcHMgZHluYW1pcXVlcyBxdVwnZWxsZXMgY29udGllbm5lbnQgY2hhbmdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGVzIGNoYW1wcyBJVFNNIHN1cHBsw6ltZW50YWlyZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGUgc3ludGjDqHNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2hhbXBzIGR5bmFtaXF1ZXMgYWZmaWNow6lzIGRhbnMgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWN0aXZlIGxhIGZvbmN0aW9uIGRcJ2FjdGlvbiBlbiBibG9jIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcG91ciBxdWUgbGUgZnJvbnRlbmQgZGUgbFwnYWdlbnQgcHVpc3NlIHRyYXZhaWxsZXIgc3VyIHBsdXMgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gw6AgbGEgZm9pcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2ZSBsYSBmb25jdGlvbiBkXCdhY3Rpb24gZW4gYmxvYyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHVuaXF1ZW1lbnQgcG91ciBsZXMgZ3JvdXBlcyByw6lwZXJ0b3Jpw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgcG91ciBkw6lmaW5pciBsZSBzdGF0dXQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gc3VyIGxlIGxpZW4gdGlja2V0LWNvbmZpZ2l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NoYW1wcyBkZSBsXCdpbmRleCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLCB1dGlsaXPDqXMgcG91ciBsYSByZWNoZXJjaGUgZW4gdGV4dGUgaW50w6lncmFsLiBMZXMgY2hhbXBzIHNvbnQgw6lnYWxlbWVudCBzdG9ja8OpcywgbWFpcyBuZSBzb250IHBhcyBvYmxpZ2F0b2lyZXMgcG91ciBsYSBmb25jdGlvbm5hbGl0w6kgZ2xvYmFsZS4gTFwnaW5jbHVzaW9uIGRlcyBwacOoY2VzIGpvaW50ZXMgcGV1dCDDqnRyZSBkw6lzYWN0aXbDqWUgZW4gbWV0dGFudCBsXCdlbnRyw6llIMOgIDAgb3UgZW4gbGEgc3VwcHJpbWFudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NoYW1wcyBzdG9ja8OpcyBkYW5zIGxcJ2luZGV4IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcXVpIHNvbnQgdXRpbGlzw6lzIHBvdXIgZFwnYXV0cmVzIGNob3NlcyBxdWUgbGVzIHJlY2hlcmNoZXMgZW4gdGV4dGUgaW50w6lncmFsLiBQb3VyIHVuZSBmb25jdGlvbm5hbGl0w6kgY29tcGzDqHRlLCB0b3VzIGxlcyBjaGFtcHMgc29udCBvYmxpZ2F0b2lyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0VucmVnaXN0cmVtZW50IGR1IG1vZHVsZSBHZW5lcmljSW50ZXJmYWNlIHBvdXIgbGEgY291Y2hlIGRcJ2ludm9jYXRpb24gQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdBcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfDiXRhdCBkZSBsXCdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV0IGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXQgbGVzIMOpdGF0cyBkXCdpbmNpZGVudHMgZGFucyBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ05vbWJyZSBtYXhpbXVtIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGxlIHLDqXN1bHRhdCBkZSBjZXR0ZSBvcMOpcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSBwZXJtZXR0YW50IGRlIHbDqXJpZmllciBsZSBncm91cGUgcmVzcG9uc2FibGUgZFwndW5lIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGUgcGVybWV0dGFudCBkZSB2w6lyaWZpZXIgbGUgZ3JvdXBlIHJlc3BvbnNhYmxlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSBwZXJtZXR0YW50IGRlIGfDqW7DqXJlciBkZXMgc3RhdGlzdGlxdWVzIHN1ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tIGR1IG1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtw6lybyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9tYnJlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGNoYXF1ZSBwYWdlIGRcJ3VuIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vbWJyZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgYWZmaWNoZXIgZGFucyBjaGFxdWUgcGFnZSBkXCd1biByw6lzdWx0YXQgZGUgcmVjaGVyY2hlIGRhbnMgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnTGVzIG9iamV0cyDDoCByZWNoZXJjaGVyLCBsZSBub21icmUgZFwnZW50csOpZXMgZXQgbGVzIGF0dHJpYnV0cyDDoCBhZmZpY2hlci4gTGVzIGF0dHJpYnV0cyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRvaXZlbnQgw6p0cmUgZXhwbGljaXRlbWVudCBzdG9ja8OpcyB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgY2F0w6lnb3JpZXMgZGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyBmaWx0cmVzIGRlIGNvbG9ubmUgZGUgbFwnYXBlcsOndSBkZXMgcGV0aXRzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gUmVtYXJxdWUgOiBzaSBsYSB2YWxldXIgIkFjdGlmIiBlc3QgZml4w6llIMOgIDAsIGxlcyBhZ2VudHMgbmUgcG91cnJvbnQgcGFzIG1vZGlmaWVyIGxlcyBwYXJhbcOodHJlcyBkZSBjZSBncm91cGUgZGFucyBsZXVycyBwcsOpZsOpcmVuY2VzIHBlcnNvbm5lbGxlcywgbWFpcyBsZXMgYWRtaW5pc3RyYXRldXJzIHBvdXJyb250IHRvdWpvdXJzIG1vZGlmaWVyIGxlcyBwYXJhbcOodHJlcyBhdSBub20gZFwndW4gYXV0cmUgdXRpbGlzYXRldXIuIFV0aWxpc2V6IFwnUHJlZmVyZW5jZUdyb3VwXCcgcG91ciBjb250csO0bGVyIGRhbnMgcXVlbGxlIHpvbmUgY2VzIHBhcmFtw6h0cmVzIGRvaXZlbnQgw6p0cmUgYWZmaWNow6lzIGRhbnMgbFwnaW50ZXJmYWNlIHV0aWxpc2F0ZXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGEgY291bGV1ciBkZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbFwnZXhlbXBsZSBkZSBncm91cGVzIGRlIHBlcm1pc3Npb24gZGVzIGF0dHJpYnV0cyBnw6luw6lyYXV4IGR1IGNhdGFsb2d1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbm9tcyBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbnVtw6lyb3RhdGlvbiBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGxhIGJvw650ZSDDoCBvdXRpbHMgZHUgbW9kw6hsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlIGTDqWNsZW5jaGV1ciBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcm91cGUgZGUgcGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCdhY3Rpb24gZFwnYXR0YWNoZW1lbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnYXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2Fqb3V0IGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBlbiB2cmFjIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIG1vZGlmaWNhdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F0dHJpYnV0ICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdpbXByZXNzaW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOoZ2VzIHJlcXVpcyBwb3VyIHN1cHByaW1lciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1JlY2hlcmNoZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGF1dG9tYXRpcXVlbWVudCBsXCfDqXRhdCBkXCdpbmNpZGVudCBkXCd1biBDSSBsb3JzcXVcJ3VuIHRpY2tldCBlc3QgbGnDqSDDoCB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGFucyBsXCfDqWNyYW4gZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IGRhbnMgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcXVpIHBlcm1ldCBkZSBsaWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIHVuIGF1dHJlIG9iamV0IGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGFjY8OpZGVyIMOgIGxcJ2hpc3RvcmlxdWUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIHN1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIHNhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhZmZpY2hlciBsZXMgbGllbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzb3VzIGZvcm1lIGRcJ2FyYm9yZXNjZW5jZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgZHVwbGlxdWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBtb2RpZmllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciByZXZlbmlyIMOgIGxhIHZ1ZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBpbXByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBlcm1ldHRhbnQgZGUgem9vbWVyIHN1ciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgbFwnaGlzdG9yaXF1ZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIChvcmRyZSBpbnZlcnNlKSBkYW5zIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTGEgY2F0w6lnb3JpZSBwYXIgZMOpZmF1dCBxdWkgZXN0IGFmZmljaMOpZSBzaSBhdWN1bmUgblwnZXN0IHPDqWxlY3Rpb25uw6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmlhbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIHBhciBleGVtcGxlIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBMYSB2YWxldXIgcGFyIGTDqWZhdXQgZXN0IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRMOpY2xlbmNoZSBhdXRvbWF0aXF1ZW1lbnQgbFwnaW52b2tlciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3Npb24gZGUgbGEgY2hhw65uZSBkZSBsYSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gQ2hhw65uZSBkZSBjYXJhY3TDqHJlcyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnRMOpY2xlbmNoZXVyIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIGxcJ2V4w6ljdXRpb24gZGUgQ29uZmlnSXRlbUFDTCBwZXV0IMOqdHJlIMOpdml0w6llIGVuIHbDqXJpZmlhbnQgbGVzIGTDqXBlbmRhbmNlcyBkZXMgY2hhbXBzIG1pcyBlbiBjYWNoZS4gQ2VsYSBwZXV0IGFtw6lsaW9yZXIgbGVzIHRlbXBzIGRlIGNoYXJnZW1lbnQgZGVzIGZvcm11bGFpcmVzLCBtYWlzIGRvaXQgw6p0cmUgZMOpc2FjdGl2w6kgc2kgbGVzIG1vZHVsZXMgQUNMTSBkb2l2ZW50IMOqdHJlIHV0aWxpc8OpcyBwb3VyIGxlcyB0eXBlcyBJVFNNQ29uZmlnSXRlbSBldCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlbGxlcyBzb250IGxlcyBpbmZvcm1hdGlvbnMgZ8OpbsOpcmFsZXMgcXVpIGZpZ3VyZW50IGRhbnMgbFwnZW4tdMOqdGUgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdtb25kaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHLDqXByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGlmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVIDogMTcsNSBwb3VjZXMgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVIDogMjEgcG91Y2VzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VSA6IDI2LDI1IHBvdWNlcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VSA6IDMxLDUgcG91Y2VzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayAxOSBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVIDogMSw3NSBwb3VjZXMgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVSA6IDM1IHBvdWNlcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3LDqW1haWxsw6hyZSBkZSAyMSBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVIDogMzgsNSBwb3VjZXMgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdDcsOpbWFpbGzDqHJlIGRlIDIzIHBvdWNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcG91Y2VzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVIDogNDIgcG91Y2VzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVIDogNDcsMjUgcG91Y2VzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVIDogMyw1IHBvdWNlcyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVSA6IDUyLjUgcG91Y2VzICgxMzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb3VjZXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1UgOiA1Nyw3NSBwb3VjZXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvdWNlcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VSA6IDYzIHBvdWNlcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBvdWNlcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVUgOiA2OC4yNSBwb3VjZXMgKDE3My4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVSA6IDUsMjUgcG91Y2VzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVSA6IDczLDUgcG91Y2VzICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBvdWNlcyAoMTEwMCBtbSkgOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VSA6IDc4Ljc1IHBvdWNlcyAoMjAwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBvdWNlcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFUgOiA4NCBwb3VjZXMgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VSA6IDcgcG91Y2VzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VSA6IDgsNzUgcG91Y2VzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VSA6IDEwLDUgcG91Y2VzICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1UgOiAxMiwyNSBwb3VjZXMgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VSA6IDE0IHBvdWNlcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVIDogMTUsNzUgcG91Y2VzICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb21wdGFiaWxpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXR0cmlidXRpb24gZFwnYWRyZXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIGFuYWxvZ2lxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXBlIGRcJ2FwcGFyZWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpdMOpIGRlIGxhIGJhdHRlcmllIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwZSBkZSBiYXR0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0LDonRpbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYWNlIGRlIGJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnVU5JVMOJIENFTlRSQUxFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNzZSBkXCd1bml0w6kgY2VudHJhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaXTDqSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpdMOpIHBhciBjYXJ0ZSBncmFwaGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGNhcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVjdGV1ciBkZSBjYXJ0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwZSBkZSBjYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgZGUgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXTDqWdvcmllIGRlIGNsaWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnSG9ybG9nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVml0ZXNzZSBkXCdob3Jsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBkZSBzaWduYXR1cmUgZGUgY29kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgZGUgY29uZsOpcmVuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgY29uc3VsdGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0ZXIgbGUgZGlzdHJpYnV0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgY29udGVuZXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cGUgZGUgY29udHJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0R1csOpZSBkdSBjb250cmF0IGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0R1csOpZSBkdSBjb250cmF0IGp1c3F1XCfDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUw6lsw6lwaG9uZSBzYW5zIGZpbCAodMOpbMOpcGhvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pdMOpIGRlIGNvw7t0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTm9tYnJlIGRlIGxpY2VuY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRlIGRlIGNyw6lhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnU3VwcG9ydCBzdXIgbWVzdXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFLDqXNlcnbDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmV1ciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGUgZGUgbGEgZmFjdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0ZSBkZSBsXCdhcnLDqnTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0ZSBkdSBtYW5kYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0ZSBkZSBwdWJsaWNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnQnVyZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBkZSBzaWduYXR1cmUgZGUgZG9jdW1lbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2F0cyBkZSBjb3VycmllciDDqWxlY3Ryb25pcXVlIChjZXJ0aWZpY2F0cyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXQgZGUgdHJhdmFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0FkcmVzc2UgSVAgZmluYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmluIGRlIGxcJ2FpZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRlIGRcJ2V4cGlyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc3F1ZSBkdXIgZXh0ZXJuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1BhcmUtZmV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTdG9ja2FnZSBkXCfDqW5lcmdpZSBwYXIgdm9sYW50IGRcJ2luZXJ0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWN0ZXVyIGRlIGZvcm1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgZnJhbmNoaXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnTG9naWNpZWxzIGdyYXR1aXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9ucyBnw6luw6lyYWxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0NhcnRlcyBncmFwaGlxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdDYXJ0ZSBncmFwaGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdNYXTDqXJpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2TDqGxlIGRlIG1hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQb2lkcyBkdSBtYXTDqXJpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0Nhc3F1ZSBkXCfDqWNvdXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xlIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlc3Rpb24gZGVzIGlkZW50aXTDqXMgZXQgZGVzIGFjY8OocyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtw6lybyBkXCdpbnZlbnRhaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGZhY3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdDbGF2aWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0ZXVyIExDRCAow6ljcmFuIMOgIGNyaXN0YXV4IGxpcXVpZGVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRldXIgw6AgTEVEIChkaW9kZSDDqWxlY3Ryb2x1bWluZXNjZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgZml4ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdPcmRpbmF0ZXVyIHBvcnRhYmxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDb3VjaGUgMSA6IENvdWNoZSBwaHlzaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDb3VjaGUgMiA6IENvdWNoZSBsaWFpc29uIGRlIGRvbm7DqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDb3VjaGUgMyA6IENvdWNoZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NvdWNoZSAzIDogQ291Y2hlIHLDqXNlYXUgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDb3VjaGUgNCA6IENvdWNoZSB0cmFuc3BvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0NvdWNoZSA1IDogY291Y2hlIHNlc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ291Y2hlIDYgOiBjb3VjaGUgZGUgcHLDqXNlbnRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NvdWNoZSA3IDogQ291Y2hlIGFwcGxpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXQgZGUgYmFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDbMOpIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwZSBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQw6lyaW9kZSBkZSBsaWNlbmNlIGR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUMOpcmlvZGUgZGUgbGljZW5jZSBqdXNxdVwnw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIGF1IHBob3NwaGF0ZSBkZSBmZXIgbGl0aGnDqSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIGF1IGxpdGhpdW0taW9uIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnQ29udHJhdCBkZSBwcsOqdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dcOpIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnQ2FwYWNpdMOpIGRlIGNoYXJnZSBtYXhpbWFsZSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTcOpbW9pcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUeXBlIGRlIG3DqW1vaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ051bcOpcm8gZGUgdMOpbMOpcGhvbmUgbW9iaWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsZS9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZMOobGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwdGlvbiBkdSBtb2TDqGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1LDqXNvbHV0aW9uIGR1IG1vbml0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhaWxsZSBkdSBtb25pdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1NvdXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hdGlvbnMgc3VyIGxlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9ucyBzdXIgbGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ291Y2hlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBuaWNrZWwtY2FkbWl1bSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBuaWNrZWwtaHlkcnVyZSBtw6l0YWxsaXF1ZSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWNjb3JkIGRlIG5vbi1kaXZ1bGdhdGlvbiAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0Nhcm5ldCBkZSBub3Rlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ05vbWJyZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTm9tYnJlIGRlIG1vZHVsZXMgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ05vbWJyZSBkZSBjYXJ0ZXMgZ3JhcGhpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRldXIgT0xFRCAoZGlvZGUgw6lsZWN0cm9sdW1pbmVzY2VudGUgb3JnYW5pcXVlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdGcmFpcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGNvbW1hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQXV0cmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTb3J0aWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBwYXJ0ZW5hcmlhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ051bcOpcm8gZGUgdMOpbMOpcGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cGUgZGUgdMOpbMOpcGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdDxZN1cnMgcGh5c2lxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnRm91cm5pdHVyZSBkXCfDqW5lcmdpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0FjaGV0w6kgw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1Byb2ZvbmRldXIgZHUgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaXTDqXMgZGUgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0NoYW1icmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdDYXJ0ZSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdCBkZSB2ZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBzYXRlbGxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgcGxvbWItYWNpZGUgc2NlbGzDqWUgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOdW3DqXJvIGRlIHPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdMb2dpY2llbCBzZXJ2ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIHNlcnZpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfDiXRpcXVldHRlIGRlIHNlcnZpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwZSBkZSBwcmlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSW50ZXJ2ZW5hbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdBZHJlc3NlIElQIGRlIGTDqXBhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1N0b2NrYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGl0aW9uIGRlIHN0b2NrYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUsOpc3Vtw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnQgbMOpZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSBkZSBsYSBjYXJ0ZSBncmFwaGlxdWUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdGV1ciDDoCDDqWNyYW4gdGFjdGlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNxdWUgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/fr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEb25uw6llcyBnw6luw6lyYWxlcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcmVxdcOqdGUgZW50cmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcsOpcG9uc2Ugc29ydGFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZFwndW5lIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZGVzIHLDtGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0xlcyBlbnNlbWJsZXMgZGUgY2xhc3NlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdJY2ksIHZvdXMgcG91dmV6IGltcG9ydGVyIGRlcyBjbGFzc2VzIFJlYWR5MkltcG9ydCBxdWkgcHLDqXNlbnRlbnQgbm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBsZXMgcGx1cyBjb3VyYW50cy4gVmV1aWxsZXogbm90ZXIgcXVlIGNlcnRhaW5lcyBjb25maWd1cmF0aW9ucyBzdXBwbMOpbWVudGFpcmVzIHBldXZlbnQgw6p0cmUgbsOpY2Vzc2FpcmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNaXNlIMOgIGpvdXIgZGVzIGVudGl0w6lzIGV4aXN0YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnRlciBsZXMgcGFxdWV0cyBkZSBjbGFzc2VzIGRlIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc3NlIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdSw7RsZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmVzIHBvdXIgbGVzIGNsYXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnQ2hvaXNpc3NleiB1bmUgY2xhc3NlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OJdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpZXIgw6AgdW4gYXV0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ051bcOpcm8gZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gaW52YWxpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdMZSBudW3DqXJvIGRcJ3VuIGF1dHJlIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIGxpZXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiA/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xlIG5vbSBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0xlIG5vbSBlc3QgZMOpasOgIHV0aWxpc8OpIHBhciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGxlIG51bcOpcm8gc3VpdmFudCA6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOdW3DqXJvIGRlIHZlcnNpb24gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTGUgbnVtw6lybyBkZSB2ZXJzaW9uIGVzdCBkw6lqw6AgdXRpbGlzw6kgcGFyIGxlcyBDb25maWdJdGVtcyBhdmVjIGxlKHMpIG51bcOpcm8ocykgc3VpdmFudChzKSA6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfDiXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfDiXRhdCBkXCdpbmNpZGVudCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaXF1ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW51IGRlIGxcJ2hpc3RvcmlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0RhdGUgZGUgY3LDqWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Z1ZSBkw6l0YWlsbMOpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0F1Y3VuZSBkb25uw6llIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgdHJvdXbDqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU8OpbGVjdGlvbm5lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdMYW5jZXIgbGEgcmVjaGVyY2hlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcG91ciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWF1IGRlIHByb2ZvbmRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGF2YW50L2FycmnDqHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVhdSBkZSBsaWVucyBtYXhpbXVtIGF0dGVpbnQgcG91ciBDb25maWdJdGVtICEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0Rlcm5pw6hyZXMgbW9kaWZpY2F0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdEZXJuacOocmVzIG1vZGlmaWNhdGlvbnMgZWZmZWN0dcOpZXMgcGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnTGVzIGNsYXNzZXMgc3VpdmFudGVzIHNlcm9udCBpbXBvcnTDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0xlcyByw7RsZXMgc3VpdmFudHMgc2Vyb250IGltcG9ydMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RleiBxdWUgbGVzIGNoYW1wcyBkeW5hbWlxdWVzIGV0IGxlcyBjbGFzc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRhbnRzIHNlcm9udCDDqWdhbGVtZW50IGNyw6nDqXMgZXQgcXVcJ2lsIG5cJ3kgYSBwYXMgZGUgc3VwcHJlc3Npb24gYXV0b21hdGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVm91bGV6LXZvdXMgcG91cnN1aXZyZSA/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0Jlc29pbiBkZSBjbGFzc2VzIGRcJ2V4ZW1wbGVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTGEgZMOpZmluaXRpb24gblwnZXN0IHBhcyB1biBoYWNoYWdlIFlBTUwgdmFsaWRlLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Z1ZSBkXCdlbnNlbWJsZTogw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIElEIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdWb3VzIGRldmV6IHPDqWxlY3Rpb25uZXIgYXUgbW9pbnMgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1ZvdXMgblwnYXZleiBwYXMgbGUgZHJvaXQgZGUgbW9kaWZpZXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0F1Y3VuZSBkw6lmaW5pdGlvbiBkw6lmaW5pZSBwb3VyIGxhIGNsYXNzZSAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdMXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAiJXMiIG5cJ2EgcGFzIMOpdMOpIHRyb3V2w6kgZGFucyBsYSBiYXNlIGRlIGRvbm7DqWVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdJbXBvc3NpYmxlIGRlIHN1cHByaW1lciBsXCdJRCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdBdWN1bmUgdmVyc2lvbiB0cm91dsOpZSBwb3VyIGxcJ0lEIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIGRlIGR1cGxpY2F0aW9uIG91IGRlIGNsYXNzZSBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdBdWN1biBhY2PDqHMgblwnYSDDqXTDqSBkb25uw6kgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ2hpc3RvcmlxdWUsIGF1Y3VuIElEIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ2hpc3RvcmlxdWUsIGF1Y3VuIGFjY8OocyBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3V2ZWwgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm91dmVsbGUgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw4l0YXQgZGUgZMOpcGxvaWVtZW50IG1pcyDDoCBqb3VyIChub3V2ZWF1PSVzLCBhbmNpZW49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50IG1pcyDDoCBqb3VyIChub3V2ZWF1PSVzLCBhbmNpZW49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gKElEPSVzKSBzdXBwcmltw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaWVyIMOgICVzICh0eXBlPSVzKSBham91dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaWVyIMOgICVzICh0eXBlPSVzKSBzdXBwcmltw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0TDqWZpbml0aW9uIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG1pc2Ugw6Agam91ciAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tIG1pcyDDoCBqb3VyIChub3V2ZWF1PSVzLCBhbmNpZW49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidWUgJXMgbWlzIMOgIGpvdXIgZGUgIiVzIiDDoCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgc3VwcHJpbcOpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBvdSBkZSB2ZXJzaW9uIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgYXVjdW4gYWNjw6hzIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdMXCdJRCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyBuXCdhIHBhcyDDqXTDqSB0cm91dsOpIGRhbnMgbGEgYmFzZSBkZSBkb25uw6llcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnSW1wcmltw6kgcGFyICVzIMOgICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSw6lmw6lyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0lEIGRlIGNsYXNzZSBpbnZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZGUgY2xhc3NlIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdBdWN1bnMgZHJvaXRzIGRcJ2FjY8OocyBwb3VyIGNldHRlIGNsYXNzZSBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdBdWN1bnMgcsOpc3VsdGF0cyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ8OpbMOpbWVudCwgYXVjdW5zIGRyb2l0cyBkXCdhY2PDqHMgcG91ciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIGludHJvdXZhYmxlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnQXVjdW5lIHZlcnNpb24gdHJvdXbDqWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29ww6lyYXRpb25uZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2ZXJ0aXNzZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50IGRlIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xcJ8OpdGF0IGRcJ2luY2lkZW50IGRlIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1BhcyBkZSBwZXJtaXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRyZSBub24gdmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcmFtw6h0cmVzIGRlIHJlY2hlcmNoZSBub24gdmFsaWRlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnQWZmaWNoZXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ8OpdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ8OpdGF0IGFjdHVlbCBkZSBsXCdpbmNpZGVudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY3Rpb25zIGRlIGNsYXNzZSBwb3VyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTw6lsZWN0aW9ubmVyIHVuZSBvdSBwbHVzaWV1cnMgY2xhc3NlcyBwb3VyIHJlc3RyZWluZHJlIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc8OpbGVjdGlvbm5hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY3Rpb25zIGRlIGNsYXNzZSBwb3VyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNsYXNzZXMgcG91ciByZXN0cmVpbmRyZSBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlxdWUgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cGUgZGUgcsOpZsOpcmVuY2VtZW50IGRlcyBsaWVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBjZSBsaWVuIHNcJ2FwcGxpcXVlIMOgIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG91IMOgIGxhIHZlcnNpb24gc3RhdGlxdWUgZGUgbFwnb2JqZXQgZGUgcsOpZsOpcmVuY2UuIExlIGNhbGN1bCBkZSBsXCfDqXRhdCBhY3R1ZWwgZGUgbFwnaW5jaWRlbnQgblwnZXN0IGVmZmVjdHXDqSBxdWUgcG91ciBsZXMgbGllbnMgZHluYW1pcXVlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTw6lsZWN0aW9ubmV6IGxcJ2F0dHJpYnV0IHBhciBsZXF1ZWwgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgcmVjaGVyY2jDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdMYSBzdHJ1Y3R1cmUgZGUgYmFzZSBuXCdlc3QgcGFzIHZhbGlkZS4gVmV1aWxsZXogZm91cm5pciB1biBoYWNoYWdlIGF2ZWMgZGVzIGRvbm7DqWVzIGF1IGZvcm1hdCBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0lsIGVzdCBuw6ljZXNzYWlyZSBkZSBjb21tZW5jZXIgbGEgY2hhw65uZSBZQU1MIHBhciAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnSW1wb3NzaWJsZSBkZSBwdXJnZXIgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnQXVjdW4gY2hhbXAgZHluYW1pcXVlIHBlcnRpbmVudCBuXCdhIMOpdMOpIHRyb3V2w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbXBvc3NpYmxlIGRcJ2luc8OpcmVyIGRhbnMgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnPDqXLDqSAwIGxpZ25lcyBkYW5zIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdRdWFudGl0w6kgbWF4aW1hbGUgcG91ciB1biDDqWzDqW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnQ2hhw65uZSBkZSB2ZXJzaW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0VycmV1ciBkZSBzeW5jaHJvbmlzYXRpb24gZGVzIGTDqWZpbml0aW9ucy4gVmV1aWxsZXogdsOpcmlmaWVyIGxlIGpvdXJuYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVm91cyBhdmV6IGRlcyBkw6lmaW5pdGlvbnMgSVRTTUNvbmZpZ0l0ZW0gcXVpIG5lIHNvbnQgcGFzIHN5bmNocm9uaXPDqWVzLiBWZXVpbGxleiBkw6lwbG95ZXIgdm9zIGNoYW5nZW1lbnRzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01haW50ZW5hbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnRW4gcsOpcGFyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2dWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSBldCBjb25maXJtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXRpb24gZGUgY2xhc3Nlcy9yw7RsZXMgZXQgZGUgbGV1cnMgY2hhbXBzIGNvbm5leGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnVW5lIGVycmV1ciBzXCdlc3QgcHJvZHVpdGUgbG9ycyBkZSBsXCdpbXBvcnRhdGlvbiBkZSBsYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBDYWNow6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1vbnRyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1ldCBkXCfDqXRlbmRyZSBsZXMgY29uZGl0aW9ucyBkZSByZWNoZXJjaGUgZGFucyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4gR3LDomNlIMOgIGNldHRlIGZvbmN0aW9ubmFsaXTDqSwgdm91cyBwb3V2ZXogcmVjaGVyY2hlciwgcGFyIGV4ZW1wbGUsIGxlIG5vbSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGRlcyBjb25kaXRpb25zIHRlbGxlcyBxdWUgIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWV0IGRcJ8OpdGVuZHJlIGxlcyBjb25kaXRpb25zIGRlIHJlY2hlcmNoZSBkYW5zIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4gQXZlYyBjZXR0ZSBmb25jdGlvbm5hbGl0w6ksIHZvdXMgcG91dmV6IHJlY2hlcmNoZXIgcGFyIGV4ZW1wbGUgbGUgbm9tIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGF2ZWMgZGVzIGNvbmRpdGlvbnMgdGVsbGVzIHF1ZSAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyDDoCB1biBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyDDoCB1biB1dGlsaXNhdGV1ciBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1BhcmFtw6h0cmVzIGRlIGxhIENNREIgKGJhc2UgZGUgZG9ubsOpZXMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1bDqXJpZmllciBsYSBwcsOpc2VuY2UgZFwndW4gbm9tIHVuaXF1ZSB1bmlxdWVtZW50IGRhbnMgbGEgbcOqbWUgY2xhc3NlIGRlIENvbmZpZ0l0ZW0gKCJjbGFzcyIpIG91IGdsb2JhbGVtZW50ICgiZ2xvYmFsIiksIGNlIHF1aSBzaWduaWZpZSBxdWUgY2hhcXVlIENvbmZpZ0l0ZW0gZXhpc3RhbnQgZXN0IHByaXMgZW4gY29tcHRlIGxvcnMgZGUgbGEgcmVjaGVyY2hlIGRlIGRvdWJsb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc2Now6ltYSBkZSBkw6lub21pbmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc3lzdMOobWUgZGUgbnVtw6lyb3RhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc2Now6ltYSBkZSBjaGHDrm5lIGRlIHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU8OpbGVjdGlvbm5leiBsZXMgYXR0cmlidXRzIHF1aSBkw6ljbGVuY2hlbnQgbGEgY3LDqWF0aW9uIGRcJ3VuZSBub3V2ZWxsZSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBjYXTDqWdvcmllcyDDoCBhZmZlY3RlciDDoCBjZXR0ZSBjbGFzc2UgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyZXMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsYSBjb2xvbm5lIHBvdXIgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb25uZXMgcG91dmFudCDDqnRyZSBmaWx0csOpZXMgZGFucyBsYSB2dWUgZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuIFJlbWFycXVlIDogc2V1bHMgbGVzIGF0dHJpYnV0cyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGV0IGxlcyBjaGFtcHMgZHluYW1pcXVlcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBzb250IGF1dG9yaXPDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYWpvdXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDqWRpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHF1aSBwZXJtZXQgbFwnZW5yZWdpc3RyZW1lbnQgZGFucyBsXCdoaXN0b3JpcXVlIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHF1aSBtZXQgw6Agam91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxldXIgZMOpZmluaXRpb24gYWN0dWVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaXF1ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdWdWUgZMOpdGFpbGzDqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBkZXMgY2xhc3NlcyBzdWl2YW50ZXMgbmUgc2Vyb250IHBhcyBzdG9ja8OpcyBzdXIgbGUgc2VydmV1ciBFbGFzdGljc2VhcmNoLiBQb3VyIGFwcGxpcXVlciBjZWxhIGF1eCBDSSBleGlzdGFudHMsIGxhIG1pZ3JhdGlvbiBkZXMgQ0kgZG9pdCDDqnRyZSBleMOpY3V0w6llIHZpYSBsYSBjb25zb2xlLCBhcHLDqHMgYXZvaXIgY2hhbmfDqSBjZXR0ZSBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xlcyBDb25maWdJdGVtcyBhdmVjIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IHN1aXZhbnRzIG5lIHNlcm9udCBwYXMgc3RvY2vDqXMgc3VyIGxlIHNlcnZldXIgRWxhc3RpY3NlYXJjaC4gUG91ciBhcHBsaXF1ZXIgY2VsYSBhdXggQ0kgZXhpc3RhbnRzLCBsYSBtaWdyYXRpb24gZGVzIENJIGRvaXQgw6p0cmUgZXjDqWN1dMOpZSB2aWEgbGEgY29uc29sZSwgYXByw6hzIGF2b2lyIGNoYW5nw6kgY2V0dGUgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdMaW1pdGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHBhciBwYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkb25uw6llcyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gbW9kdWxlIGVuIHZyYWMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHJlY2hlcmNoZSByb3V0ZXVyIGJhY2tlbmQgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3LDqWVyIGV0IGfDqXJlciBsZXMgZMOpZmluaXRpb25zIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3LDqWUgZGVzIHRpY2tldHMgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGRlcyBtb21lbnRzIHByw6ljaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0xlcyBjbGllbnRzIHBldXZlbnQgY29uc3VsdGVyIGxcJ2hpc3RvcmlxdWUgZGVzIHZlcnNpb25zIGRlIGxcJ0lDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMZXMgY2xpZW50cyBvbnQgbGEgcG9zc2liaWxpdMOpIGRlIHBhc3NlciBtYW51ZWxsZW1lbnQgZFwndW5lIHZlcnNpb24gaGlzdG9yaXF1ZSBkZSBDSSDDoCBsXCdhdXRyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEb25uw6llcyBwYXIgZMOpZmF1dCDDoCB1dGlsaXNlciBzdXIgbFwnYXR0cmlidXQgZGUgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTIgOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRG9ubsOpZXMgcGFyIGTDqWZhdXQgw6AgdXRpbGlzZXIgc3VyIGxcJ2F0dHJpYnV0IGRlIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zIDsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRMOpZmluaXIgbGVzIGFjdGlvbnMgcG91ciBsZXNxdWVsbGVzIHVuIGJvdXRvbiBkZSBjb25maWd1cmF0aW9uIGVzdCBkaXNwb25pYmxlIGRhbnMgbGUgd2lkZ2V0IGRlcyBvYmpldHMgbGnDqXMgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVmV1aWxsZXogbm90ZXIgcXVlIGNlcyBhY3Rpb25zIGRvaXZlbnQgYXZvaXIgZW5yZWdpc3Ryw6kgbGVzIGZpY2hpZXJzIEpTIGV0IENTUyBzdWl2YW50cyA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGV0IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIHNjaMOpbWEgVGVtcGxhdGU6OlRvb2xraXQgcG91ciBsZXMgY2hhw65uZXMgZGUgdmVyc2lvbi4gVXRpbGlzw6kgdW5pcXVlbWVudCBzaSBsZSBtb2R1bGUgZGUgY2hhw65uZSBkZSB2ZXJzaW9uIGVzdCBkw6lmaW5pIHN1ciBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEw6lmaW5pciB1biBlbnNlbWJsZSBkZSBjb25kaXRpb25zIHNvdXMgbGVzcXVlbGxlcyB1biBjbGllbnQgZXN0IGF1dG9yaXPDqSDDoCB2b2lyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLiBMZXMgY29uZGl0aW9ucyBwZXV2ZW50IMOpdmVudHVlbGxlbWVudCDDqnRyZSBsaW1pdMOpZXMgw6AgY2VydGFpbnMgZ3JvdXBlcyBkZSBjbGllbnRzLiBMZSBub20gZXN0IGxlIHNldWwgYXR0cmlidXQgb2JsaWdhdG9pcmUuIFNpIGF1Y3VuZSBhdXRyZSBvcHRpb24gblwnZXN0IGRvbm7DqWUsIHRvdXMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgdmlzaWJsZXMgZGFucyBjZXR0ZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBvYnRlbmlyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgcmVjaGVyY2hlciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIGTDqWZpbmlyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRMOpZmluaXQgdW4gbW9kdWxlIGRlIHZ1ZSBkXCdlbnNlbWJsZSBwb3VyIGFmZmljaGVyIGxhIHBldGl0ZSB2dWUgZFwndW5lIGxpc3RlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRMOpZmluaXQgc2kgbGVzIMOpdGlxdWV0dGVzIGRlIHR5cGUgZGUgbGllbiBkb2l2ZW50IMOqdHJlIGFmZmljaMOpZXMgZGFucyBsZXMgY29ubmV4aW9ucyBkZSBuxZN1ZHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEw6lmaW5pdCBkZXMgZXhwcmVzc2lvbnMgcsOpZ3VsacOocmVzIGluZGl2aWR1ZWxsZW1lbnQgcG91ciBjaGFxdWUgY2xhc3NlIENvbmZpZ0l0ZW0gYWZpbiBkZSB2w6lyaWZpZXIgbGUgbm9tIGR1IENvbmZpZ0l0ZW0gZXQgZFwnYWZmaWNoZXIgbGVzIG1lc3NhZ2VzIGRcJ2VycmV1ciBjb3JyZXNwb25kYW50cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgZGlzcG9uaWJsZXMgcG91ciBsZXMgQ0kgZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBVcCA6IGxlIHBsdXMgYW5jaWVuIGVzdCBlbiBoYXV0LiBFbiBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50LiBFbiBoYXV0IDogbGUgcGx1cyBhbmNpZW4gZXN0IGVuIGhhdXQuIEVuIGJhcyA6IGxlIHBsdXMgcsOpY2VudCBlbiBoYXV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgcGFyIGTDqWZhdXQgZGVzIENJIGRhbnMgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0TDqWZpbml0IGxhIHByb2ZvbmRldXIgcGFyIGTDqWZhdXQgZGVzIHJlbGF0aW9ucyDDoCBhZmZpY2hlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqSBwYXIgZMOpZmF1dCBwb3VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgcmVjaGVyY2hlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGFmZmljaMOpIHBhciBkw6lmYXV0IHBvdXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJLZXkiIGRvaXQgY29udGVuaXIgbGUgbm9tIGR1IGNoYW1wIGR5bmFtaXF1ZSwgZGFucyBjZSBjYXMgIlgiLCAiQ29udGVudCIgZG9pdCBjb250ZW5pciBsYSB2YWxldXIgZHUgY2hhbXAgZHluYW1pcXVlIGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgY2hhbXAgZHluYW1pcXVlLCBUZXh0IDogInVuIHRleHRlIiwgRHJvcGRvd24gOiAiMSIsIERhdGUvVGltZSA6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCIgOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDEgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMyA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMyA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OSA7ZXQgb3UgIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9NyIgOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlIHNvdXMtb2JqZXQgcGFyIGTDqWZhdXQgZGUgbGEgY2xhc3NlICJJVFNNQ29uZmlnSXRlbSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgZGlzcG9uaWJsZXMgcG91ciBsZXMgQ0kgZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGhhdXRldXIgZHUgY29tcG9zYW50IGRlIGxcJ8OpZGl0ZXVyIGRlIHRleHRlIGVucmljaGkgcG91ciBjZXQgw6ljcmFuLiBFbnRyZXogdW4gbm9tYnJlIChwaXhlbHMpIG91IHVuZSB2YWxldXIgZW4gcG91cmNlbnRhZ2UgKHJlbGF0aXZlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGUgbm9tYnJlIGRlIGxpZ25lcyBwb3VyIGxcJ8OpZGl0ZXVyIGRlIGTDqWZpbml0aW9uIGRlIENJIGRhbnMgbFwnaW50ZXJmYWNlIGRcJ2FkbWluaXN0cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBkZXMgw6l0YXRzIGluY2lkZW50cywgZGUgaGF1dCAocGFyIGV4ZW1wbGUsIGNyaWNpdGFsKSDDoCBiYXMgKHBhciBleGVtcGxlLCBmb25jdGlvbm5lbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgcGVydGluZW50cyBkYW5zIGxlc3F1ZWxzIGxlcyB0aWNrZXRzIGxpw6lzIHBldXZlbnQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgZGVzIENJIGRhbnMgbGEgdnVlIGNvbXBsZXhlIGRlIGxhIHRhYmxlIGRlcyBsaWVucyBwb3VyIHRvdXRlcyBsZXMgY2xhc3NlcyBkZSBDSS4gU1wnaWwgblwneSBhIHBhcyBkXCdlbnRyw6llLCBsZXMgY29sb25uZXMgcGFyIGTDqWZhdXQgc29udCBhZmZpY2jDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgZGVzIENJIGRhbnMgbGEgdnVlIGNvbXBsZXhlIGRlIGxhIHRhYmxlIGRlcyBsaWVucywgZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIHByw6ljw6lkw6llIGR1IG5vbSBkZSBsYSBjbGFzc2UgZXQgZGUgZGV1eCBwb2ludHMgKHBhciBleGVtcGxlIDogT3JkaW5hdGV1cjogOikuIFF1ZWxxdWVzIGF0dHJpYnV0cyBkZSBDSSBzb250IGNvbW11bnMgw6AgdG91cyBsZXMgQ0kgKGV4ZW1wbGUgcG91ciBsYSBjbGFzc2UgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20pIDogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUG91ciBhZmZpY2hlciBsZXMgYXR0cmlidXRzIGRlIENJIGluZGl2aWR1ZWxzIHRlbHMgcXVlIGTDqWZpbmlzIGRhbnMgbGEgZMOpZmluaXRpb24gZGUgQ0ksIGlsIGNvbnZpZW50IGRcJ3V0aWxpc2VyIGxlIHNjaMOpbWEgc3VpdmFudCAoZXhlbXBsZSBwb3VyIGxhIGNsYXNzZSBPcmRpbmF0ZXVyKSA6IE9yZGluYXRldXI6OkhhcmREaXNrOjoxLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIE9yZGluYXRldXI6OkhhcmREaXNrOjoyLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIFNcJ2lsIG5cJ3kgYSBwYXMgZFwnZW50csOpZSBwb3VyIHVuZSBjbGFzc2UgQ0ksIGxlcyBjb2xvbm5lcyBwYXIgZMOpZmF1dCBzb250IGFmZmljaMOpZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgcG91ciAiQWN0aW9uIiBhdSB0cm9pc2nDqG1lIG5pdmVhdSBkZSBsYSBzdHJ1Y3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgYXUgcHJlbWllciBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIGRlIGxcJ0FDTCBkZXMgw6lsw6ltZW50cyBkZSBsYSBDb25maWcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpbMOpbWVudHMgZGlzcG9uaWJsZXMgYXUgZGV1eGnDqG1lIG5pdmVhdSBkZSBsYSBzdHJ1Y3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHF1ZWwgdHlwZSBkZSBsaWVuIChub21tw6kgZHUgcG9pbnQgZGUgdnVlIGR1IHRpY2tldCkgcGV1dCBhZmZlY3RlciBsZSBzdGF0dXQgZFwndW4gQ0kgbGnDqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBxdWVsIHR5cGUgZGUgdGlja2V0IHBldXQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJIGxpw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnTWlzZSDDoCBqb3VyIGRlIGxhIGTDqWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTdXBwcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3VsZXVyIGRlIGxcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfDiXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlxdWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IGRlIGNoYW1wIGR5bmFtaXF1ZSBxdWkgbWFycXVlIGxlcyBkw6lmaW5pdGlvbnMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGNvbW1lIMOpdGFudCBkw6lzeW5jaHJvbmlzw6llcywgc2kgbGVzIGNoYW1wcyBkeW5hbWlxdWVzIHF1XCdlbGxlcyBjb250aWVubmVudCBjaGFuZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZXMgY2hhbXBzIElUU00gc3VwcGzDqW1lbnRhaXJlcyBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZSBzeW50aMOoc2UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBwb3VyIHF1ZSBsZSBmcm9udGVuZCBkZSBsXCdhZ2VudCBwdWlzc2UgdHJhdmFpbGxlciBzdXIgcGx1cyBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiDDoCBsYSBmb2lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZlIGxhIGZvbmN0aW9uIGRcJ2FjdGlvbiBlbiBibG9jIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gdW5pcXVlbWVudCBwb3VyIGxlcyBncm91cGVzIHLDqXBlcnRvcmnDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBwb3VyIGTDqWZpbmlyIGxlIHN0YXR1dCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBzdXIgbGUgbGllbiB0aWNrZXQtY29uZmlnaXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2hhbXBzIGRlIGxcJ2luZGV4IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24sIHV0aWxpc8OpcyBwb3VyIGxhIHJlY2hlcmNoZSBlbiB0ZXh0ZSBpbnTDqWdyYWwuIExlcyBjaGFtcHMgc29udCDDqWdhbGVtZW50IHN0b2Nrw6lzLCBtYWlzIG5lIHNvbnQgcGFzIG9ibGlnYXRvaXJlcyBwb3VyIGxhIGZvbmN0aW9ubmFsaXTDqSBnbG9iYWxlLiBMXCdpbmNsdXNpb24gZGVzIHBpw6hjZXMgam9pbnRlcyBwZXV0IMOqdHJlIGTDqXNhY3RpdsOpZSBlbiBtZXR0YW50IGxcJ2VudHLDqWUgw6AgMCBvdSBlbiBsYSBzdXBwcmltYW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2hhbXBzIHN0b2Nrw6lzIGRhbnMgbFwnaW5kZXggZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgc29udCB1dGlsaXPDqXMgcG91ciBkXCdhdXRyZXMgY2hvc2VzIHF1ZSBsZXMgcmVjaGVyY2hlcyBlbiB0ZXh0ZSBpbnTDqWdyYWwuIFBvdXIgdW5lIGZvbmN0aW9ubmFsaXTDqSBjb21wbMOodGUsIHRvdXMgbGVzIGNoYW1wcyBzb250IG9ibGlnYXRvaXJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXQgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgZGFucyBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1dCBsZXMgw6l0YXRzIGRcJ2luY2lkZW50cyBkYW5zIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTm9tYnJlIG1heGltdW0gZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgdsOpcmlmaWVyIGxlIGdyb3VwZSByZXNwb25zYWJsZSBkXCd1bmUgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSBwZXJtZXR0YW50IGRlIHbDqXJpZmllciBsZSBncm91cGUgcmVzcG9uc2FibGUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgZ8OpbsOpcmVyIGRlcyBzdGF0aXN0aXF1ZXMgc3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb20gZHUgbW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW3DqXJvIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOb21icmUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgY2hhcXVlIHBhZ2UgZFwndW4gcsOpc3VsdGF0IGRlIHJlY2hlcmNoZSBkYW5zIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9tYnJlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGNoYXF1ZSBwYWdlIGRcJ3VuIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdMZXMgb2JqZXRzIMOgIHJlY2hlcmNoZXIsIGxlIG5vbWJyZSBkXCdlbnRyw6llcyBldCBsZXMgYXR0cmlidXRzIMOgIGFmZmljaGVyLiBMZXMgYXR0cmlidXRzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZG9pdmVudCDDqnRyZSBleHBsaWNpdGVtZW50IHN0b2Nrw6lzIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWdWUgZFwnZW5zZW1ibGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyBjYXTDqWdvcmllcyBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIGZpbHRyZXMgZGUgY29sb25uZSBkZSBsXCdhcGVyw6d1IGRlcyBwZXRpdHMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBSZW1hcnF1ZSA6IHNpIGxhIHZhbGV1ciAiQWN0aWYiIGVzdCBmaXjDqWUgw6AgMCwgbGVzIGFnZW50cyBuZSBwb3Vycm9udCBwYXMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGRlIGNlIGdyb3VwZSBkYW5zIGxldXJzIHByw6lmw6lyZW5jZXMgcGVyc29ubmVsbGVzLCBtYWlzIGxlcyBhZG1pbmlzdHJhdGV1cnMgcG91cnJvbnQgdG91am91cnMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGF1IG5vbSBkXCd1biBhdXRyZSB1dGlsaXNhdGV1ci4gVXRpbGlzZXogXCdQcmVmZXJlbmNlR3JvdXBcJyBwb3VyIGNvbnRyw7RsZXIgZGFucyBxdWVsbGUgem9uZSBjZXMgcGFyYW3DqHRyZXMgZG9pdmVudCDDqnRyZSBhZmZpY2jDqXMgZGFucyBsXCdpbnRlcmZhY2UgdXRpbGlzYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsYSBjb3VsZXVyIGRlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsXCdleGVtcGxlIGRlcyBwZXJtaXNzaW9ucyBkZSBncm91cGVzIGRlcyBhdHRyaWJ1dHMgZHUgY2F0YWxvZ3VlIGfDqW7DqXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbm9tcyBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbnVtw6lyb3RhdGlvbiBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGxhIGJvw650ZSDDoCBvdXRpbHMgZHUgbW9kw6hsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlIGTDqWNsZW5jaGV1ciBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaW9uIGR1IGdyb3VwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCdhY3Rpb24gZFwnYXR0YWNoZW1lbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnYXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2Fqb3V0IGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBlbiB2cmFjIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIG1vZGlmaWNhdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F0dHJpYnV0ICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdpbXByZXNzaW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOoZ2VzIHJlcXVpcyBwb3VyIHN1cHByaW1lciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1JlY2hlcmNoZXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGF1dG9tYXRpcXVlbWVudCBsXCfDqXRhdCBkXCdpbmNpZGVudCBkXCd1biBDSSBsb3JzcXVcJ3VuIHRpY2tldCBlc3QgbGnDqSDDoCB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGFucyBsXCfDqWNyYW4gZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IGRhbnMgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcXVpIHBlcm1ldCBkZSBsaWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIHVuIGF1dHJlIG9iamV0IGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGFjY8OpZGVyIMOgIGxcJ2hpc3RvcmlxdWUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIHN1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIHNhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhZmZpY2hlciBsZXMgbGllbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzb3VzIGZvcm1lIGRcJ2FyYm9yZXNjZW5jZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgZHVwbGlxdWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBtb2RpZmllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciByZXZlbmlyIMOgIGxhIHZ1ZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBpbXByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBlcm1ldHRhbnQgZGUgem9vbWVyIHN1ciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgbFwnaGlzdG9yaXF1ZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIChvcmRyZSBpbnZlcnNlKSBkYW5zIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTGEgY2F0w6lnb3JpZSBwYXIgZMOpZmF1dCBxdWkgZXN0IGFmZmljaMOpZSBzaSBhdWN1bmUgblwnZXN0IHPDqWxlY3Rpb25uw6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmlhbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIHBhciBleGVtcGxlIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBMYSB2YWxldXIgcGFyIGTDqWZhdXQgZXN0IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRMOpY2xlbmNoZSBhdXRvbWF0aXF1ZW1lbnQgbFwnaW52b2tlciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3Npb24gZGUgbGEgY2hhw65uZSBkZSBsYSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gQ2hhw65uZSBkZSBjYXJhY3TDqHJlcyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnRMOpY2xlbmNoZXVyIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIGxcJ2V4w6ljdXRpb24gZGUgQ29uZmlnSXRlbUFDTCBwZXV0IMOqdHJlIMOpdml0w6llIGVuIHbDqXJpZmlhbnQgbGVzIGTDqXBlbmRhbmNlcyBkZXMgY2hhbXBzIG1pcyBlbiBjYWNoZS4gQ2VsYSBwZXV0IGFtw6lsaW9yZXIgbGVzIHRlbXBzIGRlIGNoYXJnZW1lbnQgZGVzIGZvcm11bGFpcmVzLCBtYWlzIGRvaXQgw6p0cmUgZMOpc2FjdGl2w6kgc2kgbGVzIG1vZHVsZXMgQUNMTSBkb2l2ZW50IMOqdHJlIHV0aWxpc8OpcyBwb3VyIGxlcyB0eXBlcyBJVFNNQ29uZmlnSXRlbSBldCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlbGxlcyBzb250IGxlcyBpbmZvcm1hdGlvbnMgZ8OpbsOpcmFsZXMgcXVpIGZpZ3VyZW50IGRhbnMgbFwnZW4tdMOqdGUgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0LXByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHLDqS1wcm9kdWN0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpZic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVSA6IDE3LDUgcG91Y2VzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVSA6IDIxIHBvdWNlcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVUgOiAyNiwyNSBwb3VjZXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFUgOiAzMSw1IHBvdWNlcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgMTkgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVSA6IDEsNzUgcG91Y2VzICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFUgOiAzNSBwb3VjZXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0Nyw6ltYWlsbMOocmUgZGUgMjEgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVSA6IDM4LDUgcG91Y2VzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnQ3LDqW1haWxsw6hyZSBkZSAyMyBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvdWNlcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VSA6IDQyIHBvdWNlcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VSA6IDQ3LDI1IHBvdWNlcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVSA6IDMsNSBwb3VjZXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFUgOiA1Mi41IHBvdWNlcyAoMTMzLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG91Y2VzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVIDogNTcsNzUgcG91Y2VzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwb3VjZXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlUgOiA2MyBwb3VjZXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb3VjZXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVIDogNjguMjUgcG91Y2VzICgxNzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1UgOiA1LDI1IHBvdWNlcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlUgOiA3Myw1IHBvdWNlcyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb3VjZXMgKDExMDAgbW0pIDonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVUgOiA3OC43NSBwb3VjZXMgKDIwMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwb3VjZXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVIDogODQgcG91Y2VzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFUgOiA3IHBvdWNlcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVUgOiA4LDc1IHBvdWNlcyAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlUgOiAxMCw1IHBvdWNlcyAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVIDogMTIsMjUgcG91Y2VzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFUgOiAxNCBwb3VjZXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VSA6IDE1LDc1IHBvdWNlcyAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29tcHRhYmlsaXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0F0dHJpYnV0aW9uIGRcJ2FkcmVzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBhbmFsb2dpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBkXCdhcHBhcmVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaXTDqSBkZSBsYSBiYXR0ZXJpZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1R5cGUgZGUgYmF0dGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCw6J0aW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSBkZSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgZFwndW5pdMOpIGNlbnRyYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0w6kgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXTDqSBwYXIgY2FydGUgZ3JhcGhpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBsYSBjYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlY3RldXIgZGUgY2FydGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1R5cGUgZGUgY2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIGRlIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdMb2dpY2llbCBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0w6lnb3JpZSBkZSBjbGllbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0hvcmxvZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZpdGVzc2UgZFwnaG9ybG9nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgZGUgc2lnbmF0dXJlIGRlIGNvZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIGRlIGNvbmbDqXJlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIGNvbnN1bHRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGVyIGxlIGRpc3RyaWJ1dGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gZGVzIGNvbnRlbmV1cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXBlIGRlIGNvbnRyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdEdXLDqWUgZHUgY29udHJhdCBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdEdXLDqWUgZHUgY29udHJhdCBqdXNxdVwnw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVMOpbMOpcGhvbmUgc2FucyBmaWwgKHTDqWzDqXBob25lIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaXTDqSBkZSBjb8O7dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ05vbWJyZSBkZSBsaWNlbmNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0ZSBkZSBjcsOpYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1N1cHBvcnQgc3VyIG1lc3VyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSw6lzZXJ2w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZldXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRlIGRlIGxhIGZhY3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGUgZGUgbFwnYXJyw6p0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdGUgZHUgbWFuZGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGUgZGUgcHVibGljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ09yZGluYXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIGRlIHNpZ25hdHVyZSBkZSBkb2N1bWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYXRzIGRlIGNvdXJyaWVyIMOpbGVjdHJvbmlxdWUgKGNlcnRpZmljYXRzIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdCBkZSB0cmF2YWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnQWRyZXNzZSBJUCBmaW5hbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW4gZGUgbFwnYWlkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGUgZFwnZXhwaXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzcXVlIGR1ciBleHRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnUGFyZS1mZXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1N0b2NrYWdlIGRcJ8OpbmVyZ2llIHBhciB2b2xhbnQgZFwnaW5lcnRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhY3RldXIgZGUgZm9ybWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBmcmFuY2hpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMb2dpY2llbCBncmF0dWl0IChmcmVld2FyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIGfDqW7DqXJhbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnQ2FydGVzIGdyYXBoaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0NhcnRlIGdyYXBoaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ01hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZMOobGUgZGUgbWF0w6lyaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1BvaWRzIGR1IG1hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQ2FzcXVlIGRcJ8OpY291dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbGUgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGlvbiBkZXMgaWRlbnRpdMOpcyBldCBkZXMgYWNjw6hzIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW3DqXJvIGRcJ2ludmVudGFpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bcOpcm8gZGUgbGEgZmFjdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0NsYXZpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRldXIgTENEICjDqWNyYW4gw6AgY3Jpc3RhdXggbGlxdWlkZXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdGV1ciDDoCBMRUQgKGRpb2RlIMOpbGVjdHJvbHVtaW5lc2NlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBmaXhlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ09yZGluYXRldXIgcG9ydGFibGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMYXRpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NvdWNoZSAxIDogQ291Y2hlIHBoeXNpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NvdWNoZSAyIDogQ291Y2hlIGxpYWlzb24gZGUgZG9ubsOpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NvdWNoZSAzIDogQ291Y2hlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ291Y2hlIDMgOiBDb3VjaGUgcsOpc2VhdSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NvdWNoZSA0IDogQ291Y2hlIHRyYW5zcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ291Y2hlIDUgOiBjb3VjaGUgc2Vzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDb3VjaGUgNiA6IGNvdWNoZSBkZSBwcsOpc2VudGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnQ291Y2hlIDcgOiBDb3VjaGUgYXBwbGljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdCBkZSBiYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0Nsw6kgZGUgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUeXBlIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1DDqXJpb2RlIGRlIGxpY2VuY2UgZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQw6lyaW9kZSBkZSBsaWNlbmNlIGp1c3F1XCfDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgYXUgcGhvc3BoYXRlIGRlIGZlciBsaXRoacOpIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgYXUgbGl0aGl1bS1pb24gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0IGRlIHByw6p0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaXR1w6kgw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmljYW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2l0w6kgZGUgY2hhcmdlIG1heGltYWxlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNw6ltb2lyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cGUgZGUgbcOpbW9pcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB0w6lsw6lwaG9uZSBtb2JpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxlL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kw6hsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXB0aW9uIGR1IG1vZMOobGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUsOpc29sdXRpb24gZHUgbW9uaXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVGFpbGxlIGR1IG1vbml0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnU291cmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWF0aW9ucyBzdXIgbGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDb3VjaGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIG5pY2tlbC1jYWRtaXVtIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIG5pY2tlbC1oeWRydXJlIG3DqXRhbGxpcXVlIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBY2NvcmQgZGUgbm9uLWRpdnVsZ2F0aW9uIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ2FybmV0IGRlIG5vdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTm9tYnJlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOb21icmUgZGUgbW9kdWxlcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTm9tYnJlIGRlIGNhcnRlcyBncmFwaGlxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdGV1ciBPTEVEIChkaW9kZSDDqWxlY3Ryb2x1bWluZXNjZW50ZSBvcmdhbmlxdWUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0ZyYWlzIGRlIGZvbmN0aW9ubmVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ051bcOpcm8gZGUgY29tbWFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBdXRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU29ydGllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgcGFydGVuYXJpYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHTDqWzDqXBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXBlIGRlIHTDqWzDqXBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnQ8WTdXJzIHBoeXNpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0ZvdXJuaXR1cmUgZFwnw6luZXJnaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdBY2hldMOpIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mb25kZXVyIGR1IHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0w6lzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdQacOoY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdDYXJ0ZSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdCBkZSB2ZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBzYXRlbGxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgcGxvbWItYWNpZGUgc2NlbGzDqWUgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOdW3DqXJvIGRlIHPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdMb2dpY2llbCBzZXJ2ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIHNlcnZpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfDiXRpcXVldHRlIGRlIHNlcnZpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwZSBkZSBwcmlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSW50ZXJ2ZW5hbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdBZHJlc3NlIElQIGRlIGTDqXBhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1N0b2NrYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGl0aW9uIGRlIHN0b2NrYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUsOpc3Vtw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnQgbMOpZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSBkZSBsYSBjYXJ0ZSBncmFwaGlxdWUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdGV1ciDDoCDDqWNyYW4gdGFjdGlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNxdWUgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/gl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmdsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ01hcGVhZG8gcGFyYSBhcyBwZXRpY2nDs25zIGRlIGRhdG9zIGRlIGVudHJhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTWFwZWFkbyBwYXJhIG9zIGRhdG9zIGRlIHJlc3Bvc3RhIGRlIHNhw61kYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmFyIHBvciBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkbyBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUXVlcmUgcmVhbG1lbnRlIGJvcnJhciBlc3RhIEFjdGl2aWRhZGU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhciB0ZW1wbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSB6b29tJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnQ29tZXphciBidXNjYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJbXBvcnRhciBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlIGFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1vIGNhbWJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfDmmx0aW1vIGNhbWJpbyBmZWl0byBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEZXNleGEgcHJvc2VndWlyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdGdW5jaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ0F2aXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdQZXJtaXNvIGRlbmVnYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBhY3R1YWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZHVuIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0NhZHVjYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0ltcG9ydGFyIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRvcyBwb3IgZGVmZWN0byBwYXJhIHVzYXIgbm8gYXRyaWJ1dG8gcGFyYSBhIHBhbnRhbGxhIGJ1c2NhIGRlIHRpY2tldC4gRXhlbXBsbzogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRvcyBwb3IgZGVmZWN0byBwYXJhIHVzYXIgbm8gYXRyaWJ1dG8gcGFyYSBhIHBhbnRhbGxhIGJ1c2NhIGRlIHRpY2tldC4gRXhlbXBsbzogIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIHhlcmFsIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZHVuaGEgbGlzdGEgZGUgZW5xdWlzYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIHRpY2tldCBwb3IgZGVmZWN0byBwYXJhIGEgb3JkZW5hY2nDs24gZGUgdGlja2V0IGRvIHJlc3VsdGFkbyBkYSBidXNjYSBkZSB0aWNrZXQgZGEgaW50ZXJmYWNlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBhdHJpYnV0b3MgZGUgdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBvcmRlbmFjacOzbiBkZSB0aWNrZXQgZG8gcmVzdWx0YWRvIGRhIGJ1c2NhIGRlIHRpY2tldCBkYSBpbnRlcmZhY2UgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBhdHJpYnV0b3MgZGUgdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBvcmRlbmFjacOzbiBkZSB0aWNrZXQgZG8gcmVzdWx0YWRvIGRhIGJ1c2NhIGRlIHRpY2tldCBkZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZSBwb3IgZGVmZWN0byBkZSB0aWNrZXQgbm9zIHJlc3VsdGFkb3MgZGUgYnVzY2EgZGUgdGlja2V0IGRhIGludGVyZmFjZSBkZSBheGVudGUuIEFycmliYTogb3MgbWFpcyBhbnRpZ29zIG5vIGFsdG8uIEFiYWl4bzogb3Mgw7psdGltb3Mgbm8gYWx0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGUgcG9yIGRlZmVjdG8gZGUgdGlja2V0IG5vcyByZXN1bHRhZG9zIGRlIGJ1c2NhIG5hIGludGVyZmFjZSBkZSBheGVudGUuIEFycmliYTogb3MgbWFpcyBhbnRpZ29zIG5vIGFsdG8uIEFiYWl4bzogb3Mgw7psdGltb3Mgbm8gYWx0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGF0cmlidXRvcyBkZSBidXNjYSBtb3N0cmFkb3Mgbm8gdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBwYW50YWxsYSBidXNjYSBkZSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIGJ1c2NhIG1vc3RyYWRvcyBubyB0aWNrZXQgcG9yIGRlZmVjdG8gcGFyYSBhIHBhbnRhbGxhIGJ1c2NhIGRlIHRpY2tldC4gRXhlbXBsbzogIkNoYXZlIiBkZWJlIHRlciBvIG5vbWUgZG8gQ2FtcG8gRGluw6FtaWNvIG5lc3RlIGNhc28gXCdYXCcsICJDb250aWRvIiBkZWJlIHRlciBvIHZhbG9yIGRvIENhbXBvIERpbsOhbWljbyBkZXBlbmRlbmRvIGRvIHRpcG8gZGUgQ2FtcG8gRGluw6FtaWNvLCBUZXh0bzogXCd1biB0ZXh0b1wnLCBEcm9wZG93bjpcJzFcJywgRGF0YS9UZW1wbzogIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGEgYWx0dXJhIHBhcmEgbyBjb21wb8OxZW50ZSBkZSBlZGl0b3IgZGUgdGV4dG8gcmljbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6YSBlbiBuw7ptZXJvIChwaXhlaXMpIG91IHZhbG9yIHBvcmNlbnR1YWwgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBjYWxlcyBlbGVtZW50b3MgZXN0w6FuIGRpc3Bvw7FpYmxlcyBwYXJhIFwnQWNjacOzblwnIG5vIHRlcmNlaXJvIG5pdmVsIGRhIGVzdHJ1Y3R1cmEgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBjYWxlcyBlbGVtZW50b3MgZXN0w6FuIGRpc3Bvw7FpYmxlcyBubyBwcmltZWlybyBuaXZlbCBkYSBlc3RydWN0dXJhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIGNhbGVzIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG/DsWlibGVzIG5vIHNlZ3VuZG8gbml2ZWwgZGEgZXN0cnVjdHVyYSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnSW1wb3J0YXIgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIGNhbXBvcyBkZSB0w610dWxvIG5hIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBjYW1wb3MgZGUgdMOtdHVsbyBuYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgY2FtcG9zIGRlIHTDrXR1bG8gbmEgcGFudGFsbGEgY2FtcG8gSVRTTSBhZGljaW9uYWwgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUGVybWl0ZSBmdW5jacOzbiBkZSBhY2Npw7NuIGVuIG1hc2EgZG8gdGlja2V0IHBhcmEgbyBmcm9udGVuZCBkZSBheGVudGUgcGFyYSB0cmFiYWxsYXIgZW4gbcOhaXMgZHVuIHRpY2tldCDDoSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdQZXJtaXRlIGZ1bmNpw7NuIGRlIGFjY2nDs24gZW4gbWFzYSBkZSB0aWNrZXQgc29hbWVudGUgcGFyYSBvcyBncnVwb3MgZW51bWVyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnSW50ZXJmYWNlWGVuw6lyaWNhIG3Ds2R1bG8gcmV4aXN0cm8gcGFyYSBhIGNhcGEgZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0ludGVyZmFjZVhlbsOpcmljYSBtw7NkdWxvIHJleGlzdHJvIHBhcmEgYSBjYXBhIGRvIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnSW50ZXJmYWNlWGVuw6lyaWNhIG3Ds2R1bG8gcmV4aXN0cm8gcGFyYSBhIGNhcGEgZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgdGlja2V0cyBwYXJhIHNlciBtb3N0cmFkb3Mgbm8gcmVzdWx0YWRvIGRlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSB0aWNrZXRzIHBhcmEgc2VyIG1vc3RyYWRvcyBlbiBjYWRhIHDDoXhpbmEgZHVuIHJlc3VsdGFkbyBkZSBidXNjYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIHRpY2tldHMgcGFyYSBzZXIgbW9zdHJhZG9zIGVuIGNhZGEgcMOheGluYSBkdW4gcmVzdWx0YWRvIGRlIGJ1c2NhIG5hIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgeGVyYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIG9zIGdydXBvcyBkZSBwZXJtaXNvcyBkZSBleGVtcGxvIGRvcyBhdHJpYnV0b3MgZG8gY2F0w6Fsb2dvIHhlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSBlbXByZWdhciBhIHBhbnRhbGxhIGRlIHRleHRvIGxpYnJlIGRlIHTDrWNrZXRzIGRhIGludGVyZmFjZSBkbyBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBvIHRpcG8gZGUgdGlja2V0IG5hIHBhbnRhbGxhIGRlIHRpY2tldCBtYXNpdm8gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIG8gdGlwbyBkZSB0aWNrZXQgbmEgcGFudGFsbGEgZGUgdGlja2V0IG1hc2l2byBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgY2FtYmlhciBhIGRlY2lzacOzbiBkdW4gdGlja2V0IG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBjYW1iaWFyIGEgZGVjaXNpw7NuIGR1biB0aWNrZXQgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHVuaGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgdm9sdGFyIGF0csOhcyBuYSB2aXN0YSB6b29tIGRlIGVucXVpc2EgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBvIGhpc3RvcmljbyBkbyB0aWNrZXQgKG9yZGVhZG8gbyByZXbDqSkgbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdDbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpemFyIFRlbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmRlcmV6byBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdQb3J0w6F0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NoYXZlIExpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBMaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1JhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ091dHJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU2HDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0Fjb3JkbyBkZSBuaXZlbCBkZSBzZXJ2aXpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdFc3TDoW5kYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/he_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhlX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn15TXkNedINeQ16rXnSDXkdeQ157XqiDXqNeV16bXmdedINec157Xl9eV16cg15jXqNeZ15LXqCDXkNeZ16jXldeiINeW15Q/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn15bXntefINeU15nXpteZ16jXlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfXnteR15gg15bXldedJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn15TXqNelINeX15nXpNeV16knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn15TXkteT16jXldeqINeZ15nXkdeV15AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfXlNek16DXmdeZ15QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9eQ15bXlNeo15QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9eQ15nXnyDXlNeo16nXkNeUISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9eR15nXnyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfXpNeSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn15TXkteT16jXldeqINeZ15nXkdeV15AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfXlNeS15PXqNeV16og15nXmdeR15XXkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfXnteR15gt16LXnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn157Xntep16cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9ek15zXmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9eU16HXm9edINeo157XqiDXqdeZ16jXldeqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfXodeY16DXk9eo15jXmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/hi_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhpX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn4KS44KSu4KSvIOCkrOCkqOCkvuCkj+CkgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfgpJzgpLzgpYLgpK4g4KSm4KWD4KS24KWN4KSvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+CkuOCkguCkpuCksOCljeCkrSDgpK7gpYfgpIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+CkmuClh+CkpOCkvuCkteCkqOClgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn4KSF4KSo4KWB4KSu4KSk4KS/IOCkqOCkueClgOCkgiDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfgpJXgpYcg4KSs4KWA4KSaJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+CkuOCkruCkryDgpLjgpYDgpK7gpL4g4KS44KSu4KS+4KSq4KWN4KSkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYAg4KSb4KSB4KSf4KS+4KSIIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkleClgCDgpLXgpL/gpLbgpYfgpLfgpKTgpL4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSu4KWH4KSCIOCkpOCkr+CktuClgeCkpuCkviDgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkm+CkgeCkn+CkvuCkiCDgpJXgpYcg4KSy4KS/4KSPIOCkn+Ckv+CkleCknyDgpJXgpYAg4KS14KS/4KS24KWH4KS34KSk4KS+IOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYAg4KSb4KSB4KSf4KS+4KSIIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkleClgCDgpLXgpL/gpLbgpYfgpLfgpKTgpL4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClgCDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkruClh+CkgiDgpKTgpK/gpLbgpYHgpKbgpL4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJXgpY3gpLDgpK4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkIOCkiuCkquCksDrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkuOCkrOCkuOClhyDgpKrgpYHgpLDgpL7gpKjgpYDgpaQg4KSo4KWA4KSa4KWHOuCktuClgOCksOCljeCktyDgpKrgpLAg4KSo4KS14KWA4KSo4KSk4KSu4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfgpJfgpY3gpLDgpL7gpLngpJUg4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpI/gpJUg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkleClhyDgpKTgpK/gpLbgpYHgpKbgpL4g4KSV4KWN4KSw4KSuIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCDgpIrgpKrgpLA64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpLjgpKzgpLjgpYcg4KSq4KWB4KSw4KS+4KSo4KWA4KWkIOCkqOClgOCkmuClhzrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkqOCkteClgOCkqOCkpOCkruClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkluCli+CknCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KWHIOCksuCkv+CkjyDgpKbgpL/gpJbgpL7gpIgg4KSf4KS/4KSV4KSfIOCkleClgCDgpKTgpK/gpLbgpYHgpKbgpL4g4KSW4KWL4KScIOCkteCkv+CktuClh+Ckt+CkpOCkviDgpJXgpYsg4KSq4KSw4KS/4KSt4KS+4KS34KS/4KSkIOCkleCksOCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn4KS44KSu4KWD4KSm4KWN4KSnIOCkquCkvuCkoCDgpLjgpILgpKrgpL7gpKbgpJUg4KSY4KSf4KSVIOCkleClhyDgpLLgpL/gpI8g4KSa4KWM4KSh4KS84KS+4KSIIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCjgpKrgpL/gpJXgpY3gpLjgpYfgpLIpIOCkuOCkguCkluCljeCkr+CkviDgpK/gpL4g4KSq4KWN4KSw4KSk4KS/4KS24KSkIOCkruCkvuCkqCAo4KS44KS+4KSq4KWH4KSV4KWN4KS3KSDgpJXgpYsg4KSy4KS/4KSW4KWH4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+Ckj+CklSDgpLjgpK7gpK8g4KSu4KWH4KSCIOCkj+CklSDgpLjgpYcg4KSF4KSn4KS/4KSVIOCkn+Ckv+CkleCkn+Cli+CkgiDgpKrgpLAg4KSV4KS+4KSuIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpKbgpYPgpLbgpY3gpK/gpKrgpJ/gpLIg4KSV4KWAIOCkn+Ckv+CkleCknyDgpKXgpYvgpJUg4KSV4KS+4KSw4KWN4KSw4KS14KS+4KSIIOCkuOClgeCkteCkv+Ckp+CkviDgpJXgpYsg4KS44KSV4KWN4KS34KSuIOCkrOCkqOCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+CkleClh+CkteCksiDgpLjgpYLgpJrgpYDgpKzgpKbgpY3gpKcg4KS44KSu4KWC4KS54KWL4KSCIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkpeCli+CklSDgpJXgpL7gpLDgpY3gpLDgpLXgpL7gpIgg4KS44KWB4KS14KS/4KSn4KS+IOCkleCliyDgpLjgpJXgpY3gpLfgpK4g4KSs4KSo4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpI/gpJUg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpJXgpYcg4KSq4KWN4KSw4KSk4KWN4KSv4KWH4KSVIOCkquClg+Ckt+CljeCkoCDgpK7gpYfgpIIg4KSq4KWN4KSw4KSm4KSw4KWN4KS24KS/4KSkIOCkueCli+CkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkn+Ckv+CkleCkn+Cli+CkgiDgpJXgpYAg4KS44KSC4KSW4KWN4KSv4KS+4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+Ckl+CljeCksOCkvuCkueCklSDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkj+CklSDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkleClhyDgpKrgpY3gpLDgpKTgpY3gpK/gpYfgpJUg4KSq4KWD4KS34KWN4KSgIOCkruClh+CkgiDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpL/gpKQg4KS54KWL4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSf4KWL4KSCIOCkleClgCDgpLjgpILgpJbgpY3gpK/gpL7gpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+CkheCkteCksuCli+CkleCkqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSu4KWB4KSV4KWN4KSkIOCkquCkvuCkoCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpLngpLAg4KSf4KS/4KSV4KSfIOCkleClhyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgg4KSm4KWH4KSW4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KS54KSwIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSH4KSk4KS/4KS54KS+4KS4IOCkpuClh+CkluCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpLngpLAg4KSf4KS/4KSV4KSfIOCkleClhyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgg4KSm4KWH4KSW4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KS54KSwIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSH4KSk4KS/4KS54KS+4KS4IOCkpuClh+CkluCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSP4KSVIOCkn+Ckv+CkleCknyDgpJzgpLzgpYLgpK4g4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkj+CklSDgpJ/gpL/gpJXgpJ8g4KSc4KS84KWC4KSuIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpI/gpJUg4KSf4KS/4KSV4KSfIOCknOCkvOClguCkriDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCjgpLXgpL/gpKrgpLDgpYDgpKQg4KSG4KSm4KWH4KS2KSDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfgpIXgpILgpKTgpLDgpKvgpLLgpJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ+CkhuCkieCkn+CkquClgeCknyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ+CkuOClh+CkteCkviDgpLLgpYfgpLXgpLIg4KS44KSu4KSd4KWM4KSk4KS+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfgpK7gpL7gpKjgpJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/hr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnU2lndXJubyDFvmVsaXRlIG9icmlzYXRpIG92YWogcHJlZGxvxb5haz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdWcmVtZW5hIG90dmFyYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdEZXRhbGpuaSBwcmVnbGVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnUG9rcmVuaSBwcmV0cmFndSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdVdm96IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ1Vwb3pvcmVuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05lbWF0ZSBkb3p2b2x1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0l6bWXEkXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnSXN0acSNZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ1V2b3oga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1V2b3oga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVnbGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBkb3p2b2xhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgc2xvYm9kbm9nIHRla3N0YSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdTdcSNZWxqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnUHJlZ2xlZCByZXp1bHRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIHJhemluaSB1c2x1Z2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1VvYmnEjWFqZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/hu_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDgWx0YWzDoW5vcyBtxbF2ZWxldGkgYWRhdG9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdCZcOhbGzDrXTDoXNvayBhIGJlasO2dsWRIGvDqXLDqXMgYWRhdGFpaG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnQmXDoWxsw610w6Fzb2sgYSBraW1lbsWRIHbDoWxhc3ogYWRhdGFpaG96JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLW1lbmVkenNtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnT3N6dMOhbHktbWVnaGF0w6Fyb3rDoXMgbWVndsOhbHRvenRhdMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ1N6ZXJlcG1lZ2hhdMOhcm96w6FzIG1lZ3bDoWx0b3p0YXTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnSW1wb3J0w6Fsw6FzcmEga8Opc3ogb3N6dMOhbHljc29tYWdvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0l0dCBpbXBvcnTDoWxoYXRqYSBhIGxlZ2d5YWtvcmliYiBrb25maWd1csOhY2nDs2VsZW1la2V0IHRhcnRhbG1hesOzIGltcG9ydMOhbMOhc3JhIGvDqXN6IG9zenTDoWx5Y3NvbWFnb2thdC4gTmUgZmVsZWRqZSwgaG9neSBuw6low6FueSB0b3bDoWJiaSBiZcOhbGzDrXTDoXMgbGVoZXQgc3rDvGtzw6lnZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01lZ2zDqXbFkSBiZWplZ3l6w6lzZWsgZnJpc3PDrXTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSGFzem7DoWxhdHJhIGvDqXN6IG9zenTDoWx5Y3NvbWFnb2sgaW1wb3J0w6Fsw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1vc3p0w6FseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLXN6ZXJlcCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnU3rFsXLFkSBheiBvc3p0w6FseW9raG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1bDoWxhc3N6b24gZWd5IG9zenTDoWx5dCBhIGxpc3TDoWLDs2wgZWd5IMO6aiBrb25maWd1csOhY2nDs2VsZW0gbMOpdHJlaG96w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnT3N6dMOhbHknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0luY2lkZW5zw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnSGl2YXRrb3rDoXMgZWd5IG3DoXNpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnw4lydsOpbnl0ZWxlbiBrb25maWd1csOhY2nDs2VsZW0tc3rDoW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0VneSBtw6FzaWsga29uZmlndXLDoWNpw7NlbGVtIHN6w6FtYSwgYW1lbGx5ZWwgw7Zzc3plIGtlbGwga8O2dG5pLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZhbMOzYmFuIHTDtnLDtmxuaSBzemVyZXRuw6kgZXp0IGEga29uZmlndXLDoWNpw7NlbGVtZXQ/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0Ega29uZmlndXLDoWNpw7NlbGVtIG5ldmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0EgbmV2ZXQgbcOhciBoYXN6bsOhbGrDoWsgYSBrb25maWd1csOhY2nDs2VsZW1layBhIGvDtnZldGtlesWRIHN6w6Ftb2trYWw6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyemnDs3N6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSB2ZXJ6acOzc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnQSB2ZXJ6acOzc3rDoW1vdCBtw6FyIGhhc3puw6FsasOhayBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGEga8O2dmV0a2V6xZEgc3rDoW1va2thbDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdFbMWRem3DqW55dGFydGFsb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0zDqXRyZWhvesOhcyBpZGVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdOYWd5w610w6FzaSBuw6l6ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsgb2xkYWxhbmvDqW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIGtvbmZpZ3Vyw6FjacOzZWxlbS1hZGF0b2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQSBrb25maWd1csOhY2nDs2VsZW0ga2l2w6FsYXN6dMOhc2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdLZXJlc8OpcyBmdXR0YXTDoXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnRmFuw6l6ZXQgYSBrb25maWd1csOhY2nDs2VsZW1oZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdNw6lseXPDqWdpIHN6aW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnTmFnecOtdMOhcyDDqXMga2ljc2luecOtdMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdBIGxlZ25hZ3lvYmIgaGl2YXRrb3rDoXNzemludCBlbMOpcnZlIGEga29uZmlndXLDoWNpw7NlbGVtbsOpbCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnSmVsZW5sZWdpIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0plbGVubGVnaSBpbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXR2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdVdG9sasOhcmEgbcOzZG9zw610b3R0YSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1NhasOhdCBrb25maWd1csOhY2nDs2VsZW1layc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdLb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXMnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBIGvDtnZldGtlesWRIG9zenTDoWx5b2sgbGVzem5layBpbXBvcnTDoWx2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBIGvDtnZldGtlesWRIHN6ZXJlcGVrIGxlc3puZWsgaW1wb3J0w6FsdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTmUgZmVsZWRqZSwgaG9neSBhIGhvenrDoWp1ayB0YXJ0b3rDsyBkaW5hbWlrdXMgbWV6xZFrIMOpcyDDoWx0YWzDoW5vcyBrYXRhbMOzZ3VzIG9zenTDoWx5b2sgaXMgbMOpdHJlIGxlc3puZWsgaG96dmEsIMOpcyBuaW5jcyBhdXRvbWF0aWt1cyBlbHTDoXZvbMOtdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdTemVyZXRuw6kgZm9seXRhdG5pPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQw6lsZGFvc3p0w6FseW9rIHN6w7xrc8OpZ2VzZWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0EgbWVnaGF0w6Fyb3rDoXMgbmVtIMOpcnbDqW55ZXMgWUFNTC1raXZvbmF0Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ8OBdHRla2ludMOpczogSVRTTS1rb25maWd1csOhY2nDs2VsZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnU3rDvGtzw6lnZSB2YW4gbGVnYWzDoWJiIGVneSBraXbDoWxhc3p0b3R0IGtvbmZpZ3Vyw6FjacOzZWxlbXJlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05pbmNzIMOtcsOhc2kgaG96esOhZsOpcsOpc2UgZWhoZXogYSBrb25maWd1csOhY2nDs2VsZW1oZXo6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOaW5jcyBtZWdoYXTDoXJvesOhcyBtZWdoYXTDoXJvenZhIGEoeikgJXMgb3N6dMOhbHlob3ohJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdBKHopIOKAniVz4oCdIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOZW0gdm9sdCBsZWhldHPDqWdlcyBhKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyB0w7ZybMOpc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdOZW0gdGFsw6FsaGF0w7MgdmVyemnDsyBhKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDs27DoWwhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsywga2V0dMWResOpc2F6b25vc8OtdMOzIHZhZ3kgb3N6dMOhbHlhem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmluY3MgaG96esOhZsOpcsOpcyBtZWdhZHZhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWzFkXptw6lueWVrZXQsIG5pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBheiBlbMWRem3DqW55ZWtldCwgbmluY3NlbmVrIGhvenrDoWbDqXLDqXNpIGpvZ29rIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfDmmoga29uZmlndXLDoWNpw7NlbGVtIChhem9ub3PDrXTDsyA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnw5pqIHZlcnppw7MgKGF6b25vc8OtdMOzID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCBmcmlzc8OtdHZlICjDumogPSAlcywgcsOpZ2kgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW5jaWRlbnPDoWxsYXBvdCBmcmlzc8OtdHZlICjDumogPSAlcywgcsOpZ2kgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gKGF6b25vc8OtdMOzID0gJXMpIHTDtnLDtmx2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0thcGNzb2xhdCBlaGhlejogJXMgKHTDrXB1cyA9ICVzKSBob3p6w6FhZHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdLYXBjc29sYXQgZWhoZXo6ICVzICh0w61wdXMgPSAlcykgdMO2csO2bHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdLb25maWd1csOhY2nDs2VsZW0tbWVnaGF0w6Fyb3rDoXMgZnJpc3PDrXR2ZSAoYXpvbm9zw610w7MgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOw6l2IGZyaXNzw610dmUgKMO6aiA9ICVzLCByw6lnaSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYsO6dHVtICglcykgZnJpc3PDrXR2ZSBlcnLFkWw6IOKAniVz4oCdLCBlcnJlOiDigJ4lc+KAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICclcy4gdmVyemnDsyB0w7Zyw7ZsdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnQSh6KSDigJ4lc+KAnSBmw6FqbCBmZWx0w7ZsdHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnQSh6KSDigJ4lc+KAnSBmw6FqbCBlbHTDoXZvbMOtdHZhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIHZhZ3kgdmVyemnDs2F6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWV0LCBuaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdBKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnbnlvbXRhdHRhOiAlcyDigJMgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ0hpdmF0a296dmEgZXogw6FsdGFsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnw4lydsOpbnl0ZWxlbiBvc3p0w6FseWF6b25vc8OtdMOzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pbmNzIG9zenTDoWx5YXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSBlaGhleiBheiBvc3p0w6FseWhveiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05pbmNzIHRhbMOhbGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kgZXJlZG3DqW55ZWsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBheiBlbGVtZXQsIG5pbmNzZW5layBob3p6w6Fmw6lyw6lzaSBqb2dvayBtZWdhZHZhIGEga29uZmlndXLDoWNpw7NlbGVtaGV6ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZW0gdGFsw6FsaGF0w7MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbSB0YWzDoWxoYXTDs2sgdmVyemnDs2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnw7x6ZW1rw6lwZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2ZpZ3llbG1lenRldMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0Ega29uZmlndXLDoWNpw7NlbGVtIGluY2lkZW5zw6FsbGFwb3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8OJcnbDqW55dGVsZW4gc3rFsXLFkSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ0Ega2VyZXPDqXNpIHBhcmFtw6l0ZXJlayDDqXJ2w6lueXRlbGVuZWshJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnTWVnamVsZW7DrXRldHQga29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdHTDrXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdKZWxlbmxlZ2kgaW5jaWRlbnPDoWxsYXBvdC10w61wdXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnS8O2esO2dHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09zenTDoWx5a29ybMOhdG96w6Fzb2sgYSBrb25maWd1csOhY2nDs2VsZW1uw6lsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdFZ3kgdmFneSB0w7ZiYiBvc3p0w6FseSBraXbDoWxhc3p0w6FzYSBhIGtpdsOhbGFzenRoYXTDsyBrb25maWd1csOhY2nDs2VsZW1layBrb3Jsw6F0b3rDoXPDoWhveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCBrb3Jsw6F0b3rDoXNvayBhIGtvbmZpZ3Vyw6FjacOzZWxlbW7DqWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdFZ3kgdmFneSB0w7ZiYiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90IGtpdsOhbGFzenTDoXNhIGEga2l2w6FsYXN6dGhhdMOzIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtvcmzDoXRvesOhc8OhaG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pa3VzIChrb25maWd1csOhY2nDs2VsZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWt1cyAodmVyemnDsyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnS2FwY3NvbGF0IGhpdmF0a296w6FzaSB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0V6IGEgaGl2YXRrb3rDoXMgYSBrb25maWd1csOhY2nDs2VsZW1yZSB2YWd5IGEgaGl2YXRrb3pvdHQgb2JqZWt0dW0gc3RhdGlrdXMgdmVyemnDs2rDoXJhIHZvbmF0a296aWstZS4gQSBqZWxlbmxlZ2kgaW5jaWRlbnPDoWxsYXBvdCBraXN6w6Ftw610w6FzYSBjc2FrIGRpbmFtaWt1cyBoaXZhdGtvesOhc29rbsOhbCB0w7ZydMOpbmlrIG1lZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdBem9uIGF0dHJpYsO6dHVtIGtpdsOhbGFzenTDoXNhLCBhbWVseSBhbGFwasOhbiBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtlcmVzdmUgbGVzem5layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnS8O8bHPFkSBmb3Jyw6FzIGt1bGNzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJ0EgbWVnamVsZW7DrXTDqXMgdMOtcHVzw6FuYWsga2l2w6FsYXN6dMOhc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJ0FrdGl2w6FsamEgZXp0IGEgbGVoZXTFkXPDqWdldCBheiDDqXJ0w6lrZWsgZmFrw6ludCB2YWzDsyBtZWdqZWxlbsOtdMOpc8OpaGV6LCBrb25maWd1csOhY2nDs2VsZW1layBzemVyaW50IGNzb3BvcnRvc8OtdHZhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdBeiBhbGFwc3plcmtlemV0IG5lbSDDqXJ2w6lueWVzLiBBZGpvbiBtZWcgZWd5IFlBTUwgZm9ybcOhdHVtw7ogYWRhdG9rYXQgdGFydGFsbWF6w7Mga2l2b25hdG90Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0EgWUFNTC1rYXJha3RlcmzDoW5jbmFrIOKAni0tLeKAnSBzb3JyYWwga2VsbCBrZXpkxZFkbmllLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZW0gc2lrZXLDvGx0IHTDtnLDtmxuaSBhIOKAnmNvbmZpZ2l0ZW1fbGlua+KAnSB0w6FibMOhYsOzbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05lbSB0YWzDoWxoYXTDs2sgbWVnZmVsZWzFkSBkaW5hbWlrdXMgbWV6xZFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVtIHNpa2Vyw7xsdCBiZXN6w7pybmkgYSDigJ5jb25maWdpdGVtX2xpbmvigJ0gdMOhYmzDoWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcwIHNvciBsZXR0IGJlc3rDunJ2YSBhIOKAnmNvbmZpZ2l0ZW1fbGlua+KAnSB0w6FibMOhYmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnRWd5IGVsZW0gbGVnbmFneW9iYiBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICdFZ3kga8Opc3psZXQgZGluYW1pa3VzIG1lesWRIGVsZW3DqW5layBsZWduYWd5b2JiIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICdFZ3kga8Opc3psZXQgZGluYW1pa3VzIG1lesWRIGVsZW3DqW4gYmVsw7xsaSBlbGVtZWsgbGVnbmFneW9iYiBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJ6acOzLWthcmFrdGVybMOhbmMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnSGliYSBhIG1lZ2hhdMOhcm96w6Fzb2sgc3ppbmtyb25pesOhbMOhc2Frb3IuIE7DqXp6ZSBtZWcgYSBuYXBsw7N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ09seWFuIElUU00ta29uZmlndXLDoWNpw7NlbGVtIG1lZ2hhdMOhcm96w6FzYWkgdmFubmFrLCBhbWVseWVrIG5pbmNzZW5layBzemlua3Jvbml6w6FsdmEuIMOBbGzDrXRzYSDDvHplbWJlIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIGRpbmFtaWt1cyBtZXrFkWrDqW5layB2w6FsdG96dGF0w6FzYWl0Lic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnTGVqw6FydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0thcmJhbnRhcnTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQcsOzYmHDvHplbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnVGVydmV6ZXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ0phdsOtdMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVmlzc3phdm9udCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdWaXpzZ8OhbGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN6dGVsw6lzL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfDgXR0ZWtpbnTDqXMgw6lzIG1lZ2VyxZFzw610w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ09zenTDoWx5b2ssIHN6ZXJlcGVrIMOpcyBhIGthcGNzb2zDs2TDsyBtZXrFkWlrIGltcG9ydMOhbMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdIaWJhIHTDtnJ0w6ludCBheiBvc3p0w6FseSBpbXBvcnTDoWzDoXNhIHNvcsOhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCDigJMgcmVqdGV0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIOKAkyBsw6F0aGF0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnQSBmb2x5YW1hdGtlemVsw6lzIMOhdG1lbmV0bcWxdmVsZXRlaW5layBrb25maWd1csOhY2nDs2VsZW0taG96esOhYWTDoXPDoWJhbiDDqXMgLWZyaXNzw610w6lzw6liZW4gaGFzem7DoWx0IGJlbHPFkSBtZXrFkW5ldmVrIGxla8OpcGV6w6lzZS4gQSBrdWxjc29rIGEgamVneSBvYmpla3R1bXTDrXB1c3NhbCByZW5kZWxrZXrFkSBrw6lzemxldG5layBhIGvDqXN6bGV0IGJlbHPFkSBtZXrFkWluZWsgYXpvbiBuZXZlaSwgYW1lbHllayBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBsw6l0cmVob3rDoXPDoWhveiB2YWd5IGZyaXNzw610w6lzw6loZXogbGVzem5layBoYXN6bsOhbHZhLCBheiDDqXJ0w6lrZWsgcGVkaWcgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW0gb2JqZWt0dW10w61wdXNzYWwgcmVuZGVsa2V6xZEga8Opc3psZXQgYmVsc8WRIG1lesWRaW5layBuZXZlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTGVoZXTFkXbDqSB0ZXN6aSBhIGtpdGVyamVzenRldHQga2VyZXPDqXNpIGZlbHTDqXRlbGVrZXQgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXPDqWJlbi4gRXp6ZWwgYSBmdW5rY2nDs3ZhbCBhIHDDqWxkw6F1bCBvbHlhbiB0w61wdXPDuiBmZWx0w6l0ZWxla2tlbCBrZXJlc2hldCBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1uZXZla3JlLCBtaW50IOKAnigqa3VsY3MxKiYmKmt1bGNzMiop4oCdIHZhZ3kg4oCeKCprdWxjczEqfHwqa3VsY3MyKinigJ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaGV0xZF2w6kgdGVzemkgYSBraXRlcmplc3p0ZXR0IGtlcmVzw6lzaSBmZWx0w6l0ZWxla2V0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIGtlcmVzw6lzw6liZW4uIEV6emVsIGEgZnVua2Npw7N2YWwgYSBww6lsZMOhdWwgb2x5YW4gdMOtcHVzw7ogZmVsdMOpdGVsZWtrZWwga2VyZXNoZXQgYSBrb25maWd1csOhY2nDs2VsZW0tbmV2ZWtyZSwgbWludCDigJ4oKmt1bGNzMSomJiprdWxjczIqKeKAnSB2YWd5IOKAnigqa3VsY3MxKnx8Kmt1bGNzMiop4oCdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdIb3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnSmVneSBsw6l0cmVob3rDoXNhIGEga29uZmlndXLDoWNpw7NlbGVtZWtoZXogZWd5IG1lZ2Fkb3R0IGlkxZFwb250YmFuLCBoYSBhIGJlw6FsbMOtdG90dCBrw7Z2ZXRlbG3DqW55ZWsgdGVsamVzw7xsbmVrLiBBeiBpZMWRcG9udG90IGEga29uZmlndXLDoWNpw7NlbGVtIOKAnlRpbWVDSUtleeKAnSBrdWxjc2EgYWxhdHQgYmXDoWxsw610b3R0IGTDoXR1bSB0w61wdXPDuiBkaW5hbWlrdXMgbWV6xZEgw6lydMOpa2UgaGF0w6Fyb3p6YSBtZWcsIMOpcyBhIOKAnlRpbWVNb2RpZmllcuKAnSBtw7Nkb3PDrXRqYS4gSGEgYXogdXTDs2JiaSB2YWd5IGNzYWsgc3rDoW0sIHZhZ3kgZWzFkWplbCAoKy8tKSwgc3rDoW0gw6lzIG3DqXJ0w6lrZWd5c8OpZyAoZC9oL20pIGxlaGV0OiBhIOKAnjfigJ0gZWd5ZW7DqXJ0w6lrxbEgYSDigJ4rN2TigJ0gw6lydMOpa2tlbC4gQSDigJ5UaWNrZXQtPkR5bmFtaWNGaWVsZOKAnSBkaW5hbWlrdXMgbWV6xZEgbGVzeiBoYXN6bsOhbHZhIGEgbMOpdHJlaG96b3R0IGplZ3llayBtZWdqZWzDtmzDqXPDqWhleiDigJMgbMOpdGV6bmllIGtlbGwuIEF6IFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gamVsesWRaywgYWhvbCBYIGhlbHlldHQgTkFNRSwgTlVNQkVSIMOpcyBEQVRFIGxlaGV0LCBhIOKAnlRpY2tldC0+VGV4dOKAnSBrdWxjc2JhbiBsw6l2xZEgbWVnZmVsZWzFkSDDqXJ0w6lrZWtrZWwgbGVzeiBraWNzZXLDqWx2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnQXR0cmliw7p0dW1vayBhIGxpY2VuY2VrIHN6w6FtbMOhbMOhc8OhaG96LCBhaG9sIGEg4oCeVG90YWxMaWNlbnNlc0RG4oCdLCBheiDigJ5BdmFpbGFibGVMaWNlbnNlc0RG4oCdIMOpcyBheiDigJ5MaWNlbnNlUmVmZXJlbmNlREbigJ0gYSBow6F0cmFsw6l2xZEgbGljZW5jZWsga8O2dmV0w6lzw6loZXogaGFzem7DoWx0IGRpbmFtaWt1cyBtZXrFkWsgbmV2ZWkuIEhhIGhhc3puw6FsdmEgdmFuLCBha2tvciBjc2FrIGEg4oCeVmFsaWREZXBsU3RhdGVz4oCdIGJlw6FsbMOtdMOhc2JhbiBsw6l2xZEgw6FsbGFwb3RvayBsZXN6bmVrIGZpZ3llbGVtYmUgdsOpdmUuIEhhIGvDvHN6w7Zic3ppbnQgdmFuIG1lZ2hhdMOhcm96dmEgYSDigJ5NaW5pbXVtTGljZW5zZXPigJ0gYmXDoWxsw610w6FzYmFuLCBha2tvciBhIGplZ3kgYXV0b21hdGlrdXNhbiBsw6l0cmUgbGVzeiBob3p2YSwgaGEga2V2ZXNlYmIgbGljZW5jIMOpcmhldMWRIGVsLiBFaGhleiBhIOKAnlRpY2tldC0+RHluYW1pY0ZpZWxk4oCdIGplbMO2bMWRbsOpZ3l6ZXQgZGluYW1pa3VzIG1lesWRbmVrIGzDqXRlem5pZSBrZWxsLiBBeiBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IGPDrW1rw6lrLCBhaG9sIFggaGVseWV0dCBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIMOpcyBMSUNFTlNFU19NSU4gbGVoZXQsIGEg4oCeVGlja2V0LT5UZXh04oCdIGJlw6FsbMOtdMOhc2JhbiBsw6l2xZEgbWVnZmVsZWzFkSDDqXJ0w6lrZWtrZWwsIGEga29uZmlndXLDoWNpw7NlbGVtIG5ldsOpdmVsLCBzesOhbcOhdmFsLCBlbMOpcmhldMWRIGxpY2VuY2Vra2VsIMOpcyBsZWdrZXZlc2ViYiBzesO8a3PDqWdlcyBlbMOpcmhldMWRIGxpY2VuY2NlbCBsZXN6IGtpY3NlcsOpbHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ8OcZ3lmw6lsLXbDoWxsYWxhdGhveiBob3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnw5xneWbDqWwtZmVsaGFzem7DoWzDs2hveiBob3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIGJlw6FsbMOtdMOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdFZ3llZGkgbsOpdiBlbGxlbsWRcnrDqXNlIGtpesOhcsOzbGFnIHVneWFuYWJiYW4gYSBrb25maWd1csOhY2nDs2VsZW0gb3N6dMOhbHliYW4gKOKAnm9zenTDoWx54oCdKSB2YWd5IGdsb2LDoWxpc2FuICjigJ5nbG9iw6FsaXPigJ0pLCBhbWVseSBhenQgamVsZW50aSwgaG9neSBtaW5kZW4gbWVnbMOpdsWRIGtvbmZpZ3Vyw6FjacOzZWxlbSBmaWd5ZWxlbWJlIGxlc3ogdsOpdmUgYSBrZXR0xZF6w6lzZWsga2VyZXPDqXNla29yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnTW9kdWwga2l2w6FsYXN6dMOhc2EgZWd5IGVsbmV2ZXrDqXNpIHPDqW1hIGtpa8OpbnlzemVyw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdNb2R1bCBraXbDoWxhc3p0w6FzYSBlZ3kgc3rDoW1zw6ltYSBraWvDqW55c3plcsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdNb2R1bCBraXbDoWxhc3p0w6FzYSBlZ3kgdmVyemnDsy1rYXJha3RlcmzDoW5jIGtpa8OpbnlzemVyw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnQXR0cmliw7p0dW1vayBraXbDoWxhc3p0w6FzYSBlZ3kgw7pqIHZlcnppw7MgbMOpdHJlaG96w6Fzw6FuYWsgYWt0aXbDoWzDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnS2F0ZWfDs3Jpw6FrIGtpdsOhbGFzenTDoXNhIGV6ZW4ga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5b2tob3ogdmFsw7MgaG96esOhcmVuZGVsw6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdTesOtbm1lZ2hhdMOhcm96w6Fzb2sgYSBueWlsdsOhbm9zIGZlbMO8bGV0aGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdPc3psb3Aga29uZmlndXLDoWNpw7NlbGVtLXN6xbFyxZFrIGEga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50w6lzw6liZW4gc3rFsXJoZXTFkSBvc3psb3Bvay4gTWVnamVneXrDqXM6IGNzYWsga29uZmlndXLDoWNpw7NlbGVtLWF0dHJpYsO6dHVtb2sgw6lzIGRpbmFtaWt1cyBtZXrFkWsgKER5bmFtaWNGaWVsZF9OYW1lWCkgZW5nZWTDqWx5ZXpldHRlay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBob3p6w6FhZMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIHN6ZXJrZXN6dMOpc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJ0tvbmZpZ3Vyw6FjacOzZWxlbS1lc2Vtw6lueW1vZHVsLCBhbWVseSBlbmdlZMOpbHllemkgYSBsaWNlbmNlayBueWlsdsOhbnRhcnTDoXPDoXQgZWd5IGFkb3R0IGtvbmZpZ3Vyw6FjacOzZWxlbW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csOhY2nDs2VsZW0tZXNlbcOpbnltb2R1bCwgYW1lbHkgZW5nZWTDqWx5ZXppIGEgbmFwbMOzesOhc3QgYXogZWzFkXptw6lueWVrYmUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWd1csOhY2nDs2VsZW0tZXNlbcOpbnltb2R1bCwgYW1lbHkgZnJpc3PDrXRpIGEga29uZmlndXLDoWNpw7NlbGVtZWtldCBhIGplbGVubGVnaSBtZWdoYXTDoXJvesOhc3VrcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIG55b210YXTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZmFuw6l6ZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSB2ZXJ6acOzamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQSBrw7Z2ZXRrZXrFkSBvc3p0w6FseW9rIGtvbmZpZ3Vyw6FjacOzZWxlbWVpIG5lbSBrZXLDvGxuZWsgdMOhcm9sw6FzcmEgYXogRWxhc3RpY3NlYXJjaC1raXN6b2xnw6Fsw7NuLiBBaGhveiwgaG9neSBlenQgYSBtZWdsw6l2xZEga29uZmlndXLDoWNpw7NlbGVtZWtyZSBpcyBhbGthbG1henphLCBsZSBrZWxsIGZ1dHRhdG5pYSBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1rw7ZsdMO2enRldMOpc3QgYSBrb256b2xvbiBrZXJlc3p0w7xsLCBtaXV0w6FuIG1lZ3bDoWx0b3p0YXR0YSBlenQgYSBiZcOhbGzDrXTDoXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdBIGvDtnZldGtlesWRIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2thbCByZW5kZWxrZXrFkSBrb25maWd1csOhY2nDs2VsZW1layBuZW0ga2Vyw7xsbmVrIHTDoXJvbMOhc3JhIGF6IEVsYXN0aWNzZWFyY2gta2lzem9sZ8OhbMOzbi4gQWhob3osIGhvZ3kgZXp0IGEgbWVnbMOpdsWRIGtvbmZpZ3Vyw6FjacOzZWxlbWVrcmUgaXMgYWxrYWxtYXp6YSwgbGUga2VsbCBmdXR0YXRuaWEgYSBrb25maWd1csOhY2nDs2VsZW0ta8O2bHTDtnp0ZXTDqXN0IGEga29uem9sb24ga2VyZXN6dMO8bCwgbWl1dMOhbiBtZWd2w6FsdG96dGF0dGEgZXp0IGEgYmXDoWxsw610w6FzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWtvcmzDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1rb3Jsw6F0IG9sZGFsYW5rw6ludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzbWVuZWR6c21lbnQtYWRhdGLDoXppcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGjDoXR0w6lycHJvZ3JhbSDDunR2w6FsYXN6dMOzamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICdBem9uIG9zemxvcG9rIGJlw6FsbMOtdMOhc2EsIGFtZWx5ZWsgZWzDqXJoZXTFkWsgYSBqb2dvc3VsdHPDoWdpIGZlbHTDqXRlbGVrIG1lZ3Rla2ludMOpc8OpaGV6IGF6IMO8Z3lmw6lsZmVsw7xsZXRlbiwgaGEgYSBtZWdmZWxlbMWRIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsIG9zemxvcGFpIG5pbmNzZW5layBraWZlamV6ZXR0ZW4gYmXDoWxsw610dmEuIEV6IGEgYmXDoWxsw610w6FzIHRhcnRhbMOpa2vDqW50IHZhbiBoYXN6bsOhbHZhIGEgdMO2YmJpIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsIG9zemxvcGFpbmFrIGJlw6FsbMOtdMOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJ0F6b24gb3N6bG9wb2sgYmXDoWxsw610w6FzYSwgYW1lbHllayBlbMOpcmhldMWRayBhIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsZWsgbWVndGVraW50w6lzw6loZXogYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4sIGhhIGEgbWVnZmVsZWzFkSBqb2dvc3VsdHPDoWdpIGZlbHTDqXRlbCBvc3psb3BhaSBuaW5jc2VuZWsga2lmZWplemV0dGVuIGJlw6FsbMOtdHZhLiBFeiBhIGJlw6FsbMOtdMOhcyB0YXJ0YWzDqWtrw6ludCB2YW4gaGFzem7DoWx2YSBhIHTDtmJiaSBqb2dvc3VsdHPDoWdpIGZlbHTDqXRlbCBvc3psb3BhaW5hayBiZcOhbGzDrXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBem9uIG9zemxvcG9rIGJlw6FsbMOtdMOhc2EsIGFtZWx5ZWsgZWzDqXJoZXTFkWsgYSBtZWdmZWxlbMWRIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsIG1lZ3Rla2ludMOpc2Vrb3IgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBem9uIG9zemxvcG9rIGJlw6FsbMOtdMOhc2EsIGFtZWx5ZWsgZWzDqXJoZXTFkWsgYSBtZWdmZWxlbMWRIGpvZ29zdWx0c8OhZ2kgZmVsdMOpdGVsIG1lZ3Rla2ludMOpc2Vrb3IgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdNZWdoYXTDoXJvesOhc29rIGzDqXRyZWhvesOhc2Egw6lzIGtlemVsw6lzZSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdKZWd5ZWtldCBob3ogbMOpdHJlIGEga29uZmlndXLDoWNpw7NlbGVtZWtoZXogbWVnaGF0w6Fyb3pvdHQgaWTFkXBvbnRva2Jhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQXogw7xneWZlbGVrIGzDoXRoYXRqw6FrIGEga29yw6FiYmkga29uZmlndXLDoWNpw7NlbGVtLXZlcnppw7NrYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmZWxla25layBsZWhldMWRc8OpZ8O8ayB2YW4ga8OpemlsZWcgdsOhbHRhbmkgYSBrb3LDoWJiaSBrb25maWd1csOhY2nDs2VsZW0tdmVyemnDs2sga8O2esO2dHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnQXogYXR0cmliw7p0dW1vbiBoYXN6bsOhbGFuZMOzIGFsYXDDqXJ0ZWxtZXpldHQgYWRhdG9rIGEga29uZmlndXLDoWNpw7NlbGVtIGtlcmVzw6lzZSBrw6lwZXJuecWRbsOpbC4gUMOpbGRhOiDigJ5JVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yO+KAnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdBeiBhdHRyaWLDunR1bW9uIGhhc3puw6FsYW5kw7MgYWxhcMOpcnRlbG1lemV0dCBhZGF0b2sgYSBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNlIGvDqXBlcm55xZFuw6lsLiBQw6lsZGE6IOKAnklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM74oCdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnTcWxdmVsZXRlayBtZWdoYXTDoXJvesOhc2EsIGFob2wgZWd5IGJlw6FsbMOtdMOhc29rIGdvbWIgw6lyaGV0xZEgZWwgYSBrYXBjc29sdCBvYmpla3R1bW9rIGZlbMO8bGV0aSBlbGVtZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0g4oCew7Zzc3pldGV0dOKAnSkuIE5lIGZlbGVkamUsIGhvZ3kgZXpla25layBhIG3FsXZlbGV0ZWtuZWsgcmVuZGVsa2V6bmnDvGsga2VsbCBhIGvDtnZldGtlesWRIEpTIMOpcyBDU1MgZsOhamxvayByZWdpc3p0csOhbMOhc8OhdmFsOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDDqXMgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnVGVtcGxhdGU6OlRvb2xraXQgc8OpbWEgbWVnaGF0w6Fyb3rDoXNhIGEgdmVyemnDsy1rYXJha3RlcmzDoW5jaG96LiBDc2FrIGFra29yIHZhbiBoYXN6bsOhbHZhLCBoYSBhIHZlcnppw7NrYXJha3RlcmzDoW5jLW1vZHVsIFRlbXBsYXRlVG9vbGtpdCDDqXJ0w6lrcmUgdmFuIMOhbGzDrXR2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBem9uIGRpbmFtaWt1cyBtZXrFkSBvYmpla3R1bXTDrXB1c29rIGxpc3TDoWrDoW5hayBtZWdoYXTDoXJvesOhc2EsIGFtZWx5ZWsgaG96esOhcmVuZGVsaGV0xZFrIGEgY3NvbWFnIG3FsXZlbGV0ZWloZXogYSBkaW5hbWlrdXMgbWV6xZEga8OpcGVybnnFkWluZWsgZmVsw7xsZXTDqW4ga2VyZXN6dMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0ZlbHTDqXRlbGhhbG1heiBtZWdoYXTDoXJvesOhc2EsIGFtZWx5IHRlbGplc8O8bMOpc2Vrb3IgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBueWlsdsOhbm9zYW4gbMOhdGhhdMOzLiBBIG7DqXYgYXogZWd5ZXRsZW4ga8O2dGVsZXrFkSBhdHRyaWLDunR1bS4gSGEgbmluY3NlbmVrIG3DoXMgYmXDoWxsw610w6Fzb2sgbWVnYWR2YSwgYWtrb3IgYXogw7Zzc3plcyBrb25maWd1csOhY2nDs2VsZW0gbMOhdGhhdMOzIGxlc3ogYXogYWRvdHQga2F0ZWfDs3JpYSBhbGF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdGZWx0w6l0ZWxoYWxtYXogbWVnaGF0w6Fyb3rDoXNhLCBhbWVseSB0ZWxqZXPDvGzDqXNla29yIGF6IMO8Z3lmw6lsIGzDoXRoYXQgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbWV0LiBBIGZlbHTDqXRlbGVrIHbDoWxhc3p0aGF0w7NhbiBrb3Jsw6F0b3poYXTDs2sgYml6b255b3Mgw7xneWbDqWxjc29wb3J0b2tyYS4gQSBuw6l2IGF6IGVneWV0bGVuIGvDtnRlbGV6xZEgYXR0cmliw7p0dW0uIEhhIG5pbmNzZW5layBtw6FzIGJlw6FsbMOtdMOhc29rIG1lZ2FkdmEsIGFra29yIGF6IMO2c3N6ZXMga29uZmlndXLDoWNpw7NlbGVtIGzDoXRoYXTDsyBsZXN6IGF6IGFkb3R0IGthdGVnw7NyaWEgYWxhdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbWVrIHTDtnJsw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW1layBsZWvDqXLDqXPDqWhleiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtlcmVzw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW1layBiZcOhbGzDrXTDoXPDoWhveiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgaGF0w6Fyb3ogbWVnIGVneSBrb25maWd1csOhY2nDs2VsZW0gbGlzdGEga2lzIG7DqXpldMOpbmVrIG1lZ2plbGVuw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgYSBoaXZhdGtvesOhc3TDrXB1cyBjw61ta8OpaW5layBtZWcga2VsbC1lIGplbGVubmnDvGsgYSBjc29tw7Nwb250IGthcGNzb2xhdGFpYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnUmVndWzDoXJpcyBraWZlamV6w6lzZWtldCBoYXTDoXJveiBtZWcgZWd5w6luaWxlZyBtaW5kZW4gZWd5ZXMga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5bsOhbCBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZXbDqW5layBlbGxlbsWRcnrDqXPDqWhleiwgdmFsYW1pbnQgYSBtZWdmZWxlbMWRIGhpYmHDvHplbmV0ZWsgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga29uZmlndXLDoWNpw7NlbGVtZWsgZWzDqXJoZXTFkSBvc3psb3BhaXQgYSBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFqw6liZW4gYSBrb25maWd1csOhY2nDs2VsZW0gb3N6dMOhbHnDoXTDs2wgZsO8Z2fFkWVuLiBNaW5kZW4gYmVqZWd5esOpc25layBlZ3kgb3N6dMOhbHluw6l2YsWRbCDDqXMgYSBtZWdmZWxlbMWRIG9zenTDoWx5aG96IGVsw6lyaGV0xZEgbWV6xZFrIHTDtm1iasOpYsWRbCBrZWxsIMOhbGxuaWEuIEEgZGluYW1pa3VzIG1lesWRIGJlamVneXrDqXNlaW5layBhIER5bmFtaWNGaWVsZF9NZXrFkW7DqXYgc8OpbcOhdCBrZWxsIGvDtnZldG5pw7xrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbS1hdHRyaWLDunR1bW90IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzaSBlcmVkbcOpbnnDqW5layBrb25maWd1csOhY2nDs2VsZW0tcmVuZGV6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NlbGVtLWF0dHJpYsO6dHVtb3QgYXogw7xneWbDqWxmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXNpIGVyZWRtw6luecOpbmVrIGtvbmZpZ3Vyw6FjacOzZWxlbS1yZW5kZXrDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NlbGVtLWF0dHJpYsO6dHVtb3QgYSBueWlsdsOhbm9zIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbS1rZXJlc8Opc2kgZXJlZG3DqW55w6luZWsga29uZmlndXLDoWNpw7NlbGVtLXJlbmRlesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBrb25maWd1csOhY2nDs2VsZW0tYXR0cmliw7p0dW1vdCBlemVuIG3FsXZlbGV0IGtvbmZpZ3Vyw6FjacOzZWxlbS1rZXJlc8Opc2kgZXJlZG3DqW55w6luZWsga29uZmlndXLDoWNpw7NlbGVtLXJlbmRlesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbS1zb3JyZW5kZXQgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXNpIGVyZWRtw6luecOpYmVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVndXRvbHPDsyBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBrb25maWd1csOhY2nDs2VsZW0tc29ycmVuZGV0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzaSBlcmVkbcOpbnnDqWJlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ8O6amFiYiBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NlbGVtLXNvcnJlbmRldCBhIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzaSBlcmVkbcOpbnnDqWJlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ3V0b2xzw7MgZmVsw7xscmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbS1zb3JyZW5kZXQgZXplbiBtxbF2ZWxldCBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXNpIGVyZWRtw6luecOpYmVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVndXRvbHPDsyBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgb3N6bG9wYWl0IGEga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuIGEga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5w6F0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXNuZWsgZWd5IG9zenTDoWx5bsOpdmLFkWwgw6lzIGEgbWVnZmVsZWzFkSBvc3p0w6FseWhveiBlbMOpcmhldMWRIG1lesWRayB0w7ZtYmrDqWLFkWwga2VsbCDDoWxsbmlhLiBBIGRpbmFtaWt1cyBtZXrFkSBiZWplZ3l6w6lzZWluZWsgYSBEeW5hbWljRmllbGRfTWV6xZFuw6l2IHPDqW3DoXQga2VsbCBrw7Z2ZXRuacO8ay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTWVnaGF0w6Fyb3p6YSBhIG1lZ2plbGVuw610ZW5kxZEgYWxhcMOpcnRlbG1lemV0dCBrYXBjc29sYXRvayBtw6lseXPDqWfDqXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dGVuIG1lZ2plbGVuw610ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kgYXR0cmliw7p0dW3DoXQgYSBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXMga8OpcGVybnnFkW7DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdGV0dCBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGF0dHJpYsO6dHVtw6F0IGEga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzIGvDqXBlcm55xZFuw6lsLiBQw6lsZMOhdWw6IGEg4oCeS3VsY3PigJ0gw6lydMOpa8OpbmVrIGplbGVuIGVzZXRiZW4gYSBkaW5hbWlrdXMgbWV6xZEg4oCeWOKAnSBuZXbDqW5layBrZWxsIGxlbm5pZSwgYSDigJ5UYXJ0YWxvbeKAnSDDqXJ0w6lrw6luZWsgYSBkaW5hbWlrdXMgbWV6xZEgdMOtcHVzw6F0w7NsIGbDvGdnxZFlbiBhIGRpbmFtaWt1cyBtZXrFkSDDqXJ0w6lrw6luZWsga2VsbCBsZW5uaWUsIGEgc3rDtnZlZzog4oCeZWd5IHN6w7Z2ZWfigJ0sIGEgbGVuecOtbMOzOiDigJ4x4oCdLCBhIGTDoXR1bSDDqXMgaWTFkTog4oCeU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTvigJ0gw6lzIHZhZ3kg4oCeU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N+KAnTsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IOKAnklUU01Db25maWdJdGVt4oCdIG9zenTDoWx5IGFsYXDDqXJ0ZWxtZXpldHQgYWxvYmpla3R1bcOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBsZXRpbHRvdHQgb3N6bG9wYWl0IGEga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuIGEga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5w6F0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXNuZWsgZWd5IG9zenTDoWx5bsOpdmLFkWwgw6lzIGEgbWVnZmVsZWzFkSBvc3p0w6FseWhveiBlbMOpcmhldMWRIG1lesWRayB0w7ZtYmrDqWLFkWwga2VsbCDDoWxsbmlhLiBBIGRpbmFtaWt1cyBtZXrFkSBiZWplZ3l6w6lzZWluZWsgYSBEeW5hbWljRmllbGRfTWV6xZFuw6l2IHPDqW3DoXQga2VsbCBrw7Z2ZXRuacO8ay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIFJpY2ggVGV4dCBzemVya2VzenTFkS3DtnNzemV0ZXbFkSBtYWdhc3PDoWfDoXQgZW5uw6lsIGEga8OpcGVybnnFkW7DqWwuIFN6w6FtIChrw6lwcG9udCkgdmFneSBzesOhemFsw6lrIChyZWxhdMOtdikgw6lydMOpa2V0IGFkam9uIG1lZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIENJIG1lZ2hhdMOhcm96w6FzLXN6ZXJrZXN6dMWRIHNvcmFpbmFrIHN6w6Ftw6F0IGF6IGFkbWluaXN6dHLDoWNpw7NzIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogaW5jaWRlbnPDoWxsYXBvdG9rIHNvcnJlbmRqw6l0IGEgbGVnbWFnYXNhYmJ0w7NsIChww6lsZMOhdWwga3JpdGlrdXMpIGEgbGVnYWxhY3NvbnlhYmJpZyAocMOpbGTDoXVsIGZ1bmtjaW9uw6FsaXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogRWxhc3RpY3NlYXJjaCBmZWzDvGxldGkgZWxlbSBow6F0dMOpcnByb2dyYW1qw6FuYWsgcGFyYW3DqXRlcmVpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2FwY3NvbMOzZMOzIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2F0LCBhaG9sIGEga2FwY3NvbHQgamVneWVrIGJlZm9secOhc29saGF0asOhayBlZ3kga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrZXJlc8Opc2kga29ybMOhdG90IGF6IEFnZW50SVRTTUNvbmZpZ0l0ZW0ga8OpcGVybnnFkW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtlcmVzw6lzaSBrb3Jsw6F0b3QgYXogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBrw6lwZXJuecWRbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2VyZXPDqXNpIGtvcmzDoXRvdCBhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0ga8OpcGVybnnFkW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtlcmVzw6lzaSBrb3Jsw6F0b3QgYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGvDqXBlcm55xZFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2VyZXPDqXNpIGtvcmzDoXRvdCBhIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIGvDqXBlcm55xZFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrYXBjc29sYXRpIHTDoWJsYSBrb21wbGV4IG7DqXpldMOpYmVuIGF6IMO2c3N6ZXMga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5bsOhbC4gSGEgbmluY3MgYmVqZWd5esOpcywgYWtrb3IgYXogYWxhcMOpcnRlbG1lemV0dCBvc3psb3BvayBsZXN6bmVrIG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrYXBjc29sYXRpIHTDoWJsYSBrb21wbGV4IG7DqXpldMOpYmVuIGEgQ0kgb3N6dMOhbHl0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXN0IGF6IG9zemxvcCBuZXZlIMOpcyBkdXBsYSBrZXR0xZFzcG9udCBlbMWRdGFnZ2FsIGtlbGwgZWxsw6F0bmkgKGF6YXogQ29tcHV0ZXI6OikuIFZhbiBuw6low6FueSBvbHlhbiBDSS1hdHRyaWLDunR1bSwgYW1lbHkga8O2esO2cyBtaW5kZW4gQ0ktdmVsIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWw6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEF6IGVnecOpbmkgQ0ktYXR0cmliw7p0dW1vayBtZWdqZWxlbsOtdMOpc8OpaGV6LCBhaG9neSBhem9rIGEgQ0ktbWVnaGF0w6Fyb3rDoXNiYW4gbWVnIHZhbm5hayBhZHZhLCBhIGvDtnZldGtlesWRIHPDqW3DoXQga2VsbCBoYXN6bsOhbG5pIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWwpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSGEgZWd5IENJIG9zenTDoWx5aG96IG5pbmNzIGJlamVneXrDqXMsIGFra29yIGF6IGFsYXDDqXJ0ZWxtZXpldHQgb3N6bG9wb2sgbGVzem5layBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBlbGVtZWsgw6lyaGV0xZFrIGVsIGF6IOKAnkFjdGlvbuKAnSBzemFrYXN6bsOhbCBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBBQ0wtc3plcmtlemV0w6luZWsgaGFybWFkaWsgc3ppbnRqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBlbGVtZWsgw6lyaGV0xZFrIGVsIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIEFDTC1zemVya2V6ZXTDqW5layBlbHPFkSBzemludGrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBlbGVtZWsgw6lyaGV0xZFrIGVsIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIEFDTC1zemVya2V6ZXTDqW5layBtw6Fzb2RpayBzemludGrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBrYXBjc29sYXR0w61wdXNvayAoYSBqZWd5IG7DqXrFkXBvbnRqw6Fiw7NsIGVsbmV2ZXp2ZSkgYmVmb2x5w6Fzb2xoYXRqw6FrIGVneSBrYXBjc29sdCBrb25maWd1csOhY2nDs2VsZW0gw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBtZWx5IGplZ3l0w61wdXMgYmVmb2x5w6Fzb2xoYXRqYSBlZ3kga2FwY3NvbHQga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ01lZ2hhdMOhcm96w6FzLWZyaXNzw610w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Qgc3rDrW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnS2V0dMWResOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0RpbmFtaWt1cyBtZXrFkSBlc2Vtw6lueW1vZHVsLCBhbWVseSBzemlua3Jvbml6w6FsYXRsYW5rw6ludCBqZWzDtmxpIG1lZyBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBtZWdoYXTDoXJvesOhc2FpdCwgaGEgYSB0YXJ0YWxtYXpvdHQgZGluYW1pa3VzIG1lesWRayBtZWd2w6FsdG96bmFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCB0b3bDoWJiaSBJVFNNIG1lesWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2Uga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIGEga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGZ1bmtjacOzdCBheiDDvGd5aW50w6l6xZFpIGVsxZF0w6l0cHJvZ3JhbW7DoWwsIGhvZ3kgZWd5c3plcnJlIGVneW7DqWwgdMO2YmIga29uZmlndXLDoWNpw7NlbGVtbWVsIGRvbGdvemhhc3Nvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0NzYWsgYSBmZWxzb3JvbHQgY3NvcG9ydG9rbmFrIGVuZ2Vkw6lseWV6aSBhIGtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCBmdW5rY2nDs3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnRW5nZWTDqWx5ZXppIHZhZ3kgbGV0aWx0amEgYXp0IGEgZnVua2Npb25hbGl0w6FzdCwgYW1lbHkgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW1layBlZ3llZGkgbmV2ZWl0IGVsbGVuxZFyemkuIEEgbGVoZXTFkXPDqWcgZW5nZWTDqWx5ZXrDqXNlIGVsxZF0dCBlbGxlbsWRcml6bmllIGtlbGwgYSByZW5kc3plcsOpdCwgaG9neSB2YW5uYWstZSBtw6FyIGzDqXRlesWRIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtldHTFkXrDtnR0IG7DqXZ2ZWwuIEV6dCBheiDigJ5BZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXPigJ0ga29uem9scGFyYW5jY3NhbCB0ZWhldGkgbWVnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdFc2Vtw6lueW1vZHVsIGEga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6FuYWsgYmXDoWxsw610w6Fzw6Fob3ogZWd5IGplZ3kga29uZmlndXLDoWNpw7NlbGVtIGhpdmF0a296w6Fzw6FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBpbmRleMOpbmVrIG1lesWRaSwgYW1lbHkgYSBzemFiYWQtc3phdmFzIGtlcmVzw6lzw6loZXogdmFuIGhhc3puw6FsdmEuIEEgbWV6xZFrIGlzIHTDoXJvbMOhc3JhIGtlcsO8bG5laywgZGUgbmVtIGvDtnRlbGV6xZFlayBhIHRlbGplcyBmdW5rY2lvbmFsaXTDoXNob3ouIEEgbWVsbMOpa2xldGVrIGZlbHbDqXRlbGUgbGV0aWx0aGF0w7MgYSBiZWplZ3l6w6lzIMOpcnTDqWvDqW5layAwLXJhIMOhbGzDrXTDoXPDoXZhbCB2YWd5IGEgYmVqZWd5esOpcyB0w7ZybMOpc8OpdmVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQSBrb25maWd1csOhY2nDs2VsZW0gaW5kZXjDqWJlbiB0w6Fyb2x0IG1lesWRaywgYW1lbHllayBhIHN6YWJhZC1zemF2YXMga2VyZXPDqXNla2VuIGvDrXbDvGwgbcOhcyBjw6lsb2tyYSBpcyBoYXN6bsOhbHZhIHZhbm5hay4gQSB0ZWxqZXMgZnVua2Npb25hbGl0w6FzaG96IGF6IMO2c3N6ZXMgbWV6xZEga8O2dGVsZXrFkS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJ01pbmRlbiB3ZWJzem9sZ8OhbHRhdMOhc2hveiAoa3VsY3MpIG9zenTDoWx5b2sgdMO2bWJqZSAow6lydMOpaykgaGF0w6Fyb3poYXTDsyBtZWcsIGFtZWx5cmUgYXogaW1wb3J0w6Fsw6FzIGtvcmzDoXRvenZhIHZhbi4gQXogw7Zzc3plcyBraXbDoWxhc3p0b3R0IG9zenTDoWx5bsOhbCB2YWd5IGF6IMO2c3N6ZXMgbWVnbMOpdsWRIG9zenTDoWx5bsOhbCBheiBhem9ub3PDrXTDsyBhdHRyaWLDunR1bW9rYXQga2kga2VsbCBtYWpkIHbDoWxhc3p0YW5pIGEgbWVnaMOtdsOzIGJlw6FsbMOtdMOhc8OhYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDgWx0YWzDoW5vcyBmZWzDvGxldCBtb2R1bCByZWdpc3p0csOhY2nDsyBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1sw6l0cmVob3rDoXMgbWVnaMOtdsOzIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDgWx0YWzDoW5vcyBmZWzDvGxldCBtb2R1bCByZWdpc3p0csOhY2nDsyBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1sZWvDqXLDqXMgbWVnaMOtdsOzIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnw4FsdGFsw6Fub3MgZmVsw7xsZXQgbW9kdWwgcmVnaXN6dHLDoWNpw7MgYSBrb25maWd1csOhY2nDs2VsZW0tZnJpc3PDrXTDqXMgbWVnaMOtdsOzIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTS1rb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lkZW5zw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW5zw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRmVsdmVzemkgYXogb3N6dMOhbHlva2F0IGEgbnlpbHbDoW5vcyBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ta2VyZXPDqXPDqWJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGZWx2ZXN6aSBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2thdCBheiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbS1rZXJlc8Opc8OpYmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGZWx2ZXN6aSBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2thdCBhIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzw6liZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZlbHZlc3ppIGF6IGluY2lkZW5zw6FsbGFwb3Rva2F0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzw6liZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGZWx2ZXN6aSBheiBpbmNpZGVuc8OhbGxhcG90b2thdCBhIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzw6liZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZlbHZlc3ppIGEgbmV2ZXQgYSBueWlsdsOhbm9zIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbS1rZXJlc8Opc8OpYmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ZlbHZlc3ppIGEgc3rDoW1vdCBhIG55aWx2w6Fub3MgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtLWtlcmVzw6lzw6liZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnTGljZW5jbnlpbHbDoW50YXJ0w6FzaSBrb25maWd1csOhY2nDs2VsZW0gZXNlbcOpbnltb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0JldMO2bHTFkW1vZHVsIHJlZ2lzenRyw6FjacOzIGEgbnlpbHbDoW5vcyBmZWzDvGxldGhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRW5uZWsgYSBtxbF2ZWxldG5layBheiBlcmVkbcOpbnnDqWJlbiBtZWdqZWxlbsOtdGVuZMWRIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGxlZ25hZ3lvYmIgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ0VneSBtb2R1bCBlZ3kgb3N6dMOhbHnDqXJ0IGZlbGVsxZFzIGNzb3BvcnQgZWxsZW7FkXJ6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnRWd5IG1vZHVsIGVneSBrb25maWd1csOhY2nDs2VsZW3DqXJ0IGZlbGVsxZFzIGNzb3BvcnQgZWxsZW7FkXJ6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnRWd5IG1vZHVsIElUU00ta29uZmlndXLDoWNpw7NlbGVtIHN0YXRpc3p0aWvDoWsgZWzFkcOhbGzDrXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOw6l2IG1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdTesOhbSBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBtaW5kZW4gZWd5ZXMgb2xkYWzDoW4gbWVnamVsZW7DrXRlbmTFkSBrb25maWd1csOhY2nDs2VsZW1layBzesOhbWEgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBtaW5kZW4gZWd5ZXMgb2xkYWzDoW4gbWVnamVsZW7DrXRlbmTFkSBrb25maWd1csOhY2nDs2VsZW1layBzesOhbWEgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgbWluZGVuIGVneWVzIG9sZGFsw6FuIG1lZ2plbGVuw610ZW5kxZEga29uZmlndXLDoWNpw7NlbGVtZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0tlcmVzZW5kxZEgb2JqZWt0dW1vaywgaMOhbnkgYmVqZWd5esOpcyDDqXMgbWVseSBhdHRyaWLDunR1bW9rIGplbGVuamVuZWsgbWVnLiBBIGtvbmZpZ3Vyw6FjacOzZWxlbS1hdHRyaWLDunR1bW9rYXQgZWd5w6lydGVsbcWxZW4gZWwga2VsbCB0w6Fyb2xuaSBheiBFbGFzdGljc2VhcmNoLWtpc3pvbGfDoWzDs24ga2VyZXN6dMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw4F0dGVraW50w6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5b2sga2F0ZWfDs3Jpw6FpaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga2lzIGtvbmZpZ3Vyw6FjacOzZWxlbS3DoXR0ZWtpbnTFkSBvc3psb3BzesWxcsWRaWhlei4gTmUgZmVsZWRqZTogYXog4oCeQWN0aXZl4oCdIDAtcmEgw6FsbMOtdMOhc8OhdmFsIGNzYWsgYXogw7xneWludMOpesWRa25layBha2Fkw6FseW96emEgbWVnIGV6ZW4gY3NvcG9ydCBiZcOhbGzDrXTDoXNhaW5hayBzemVya2VzenTDqXPDqXQgYSBzemVtw6lseWVzIGJlw6FsbMOtdMOhc2Fpa2JhbiwgZGUgYXogYWRtaW5pc3p0csOhdG9yb2tuYWsgdG92w6FiYnJhIGlzIGxlaGV0xZF2w6kgdGVzemkgYSBiZcOhbGzDrXTDoXNvayBzemVya2VzenTDqXPDqXQgZWd5IG3DoXNpayBmZWxoYXN6bsOhbMOzIG5ldsOpYmVuLiBIYXN6bsOhbGphIGEg4oCeUHJlZmVyZW5jZUdyb3Vw4oCdIGt1bGNzb3QgYW5uYWsgc3phYsOhbHlvesOhc8OhaG96LCBob2d5IGV6ZWtuZWsgYSBiZcOhbGzDrXTDoXNva25hayBtZWx5IHRlcsO8bGV0ZW4ga2VsbCBtZWdqZWxlbm5pw7xrIGEgZmVsaGFzem7DoWzDs2kgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbWVnamVsZW7DrXRldHQgw7xneWbDqWx2w6FsbGFsYXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMOpc8OpbmVrIHZlesOpcmzFkXB1bHQgaMOhdHTDqXJwcm9ncmFtasOhaG96LiBBIOKAnkxpbWl04oCdIGEga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5b25rw6ludCBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgYmVqZWd5esOpc2VrIHN6w6FtYS4gQSDigJ5Hcm91cOKAnSBoYXN6bsOhbGhhdMOzIGEgaG96esOhZsOpcsOpcyBrb3Jsw6F0b3rDoXPDoWhveiBhIGLFkXbDrXRtw6lueXJlIChww6lsZMOhdWwgR3JvdXA6IGFkbWluO2Nzb3BvcnQxO2Nzb3BvcnQyOykuIEEg4oCeRGVmYXVsdOKAnSBhenQgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgYSBixZF2w610bcOpbnkgYWxhcMOpcnRlbG1lemV0dGVuIGVuZ2Vkw6lseWV6dmUgdmFuLCB2YWd5IGhvZ3kgYSBmZWxoYXN6bsOhbMOzbmFrIGvDqXp6ZWwga2VsbCBlbmdlZMOpbHllem5pZSBhenQuIEEg4oCeQ2FjaGVUVExMb2NhbOKAnSBhIGLFkXbDrXRtw6lueSBneW9yc8OtdMOzdMOhciBpZGVqZSBwZXJjYmVuLiBBIOKAnkNvbmZpZ0l0ZW1LZXnigJ0gYW5uYWsgbWVnYWTDoXPDoXJhIHZhbMOzLCBob2d5IG1lbHkgw7xneWbDqWwtZmVsaGFzem7DoWzDsyBoaXZhdGtvesOhcyBkaW5hbWlrdXMgbWV6xZEgdmFuIGhhc3puw6FsdmEgYSBraXbDoWxhc3p0b3R0IMO8Z3lmw6lsdsOhbGxhbGF0IHN6xbFyw6lzw6loZXouIEEg4oCeU2hvd25DbGFzc2Vz4oCdIGVneSBsaXN0YSBhIG1lZ2plbGVuw610ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrIG9zenTDoWx5YWluYWsgdsOhbGFzenRoYXTDsyBrb3Jsw6F0b3rDoXPDoWhvei4gSGEgZXp0IGEgbGlzdMOhdCDDvHJlc2VuIGhhZ3lqYSwgYWtrb3IgYWxhcMOpcnRlbG1lemV0dGVuIGF6IMO2c3N6ZXMgb2x5YW4gb3N6dMOhbHl0IHRhcnRhbG1henphLCBhbWVseSBlZ3llemlrIGEg4oCeQ29uZmlnSXRlbUtleeKAnSBtZXrFkWJlbiBiZcOhbGzDrXRvdHQgZGluYW1pa3VzIG1lesWRYmVuIGzDqXbFkSDDvGd5ZsOpbC1mZWxoYXN6bsOhbMOzdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIG1lZ2plbGVuw610ZXR0IMO8Z3lmw6lsdsOhbGxhbGF0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTDqXPDqW5layB2ZXrDqXJsxZFwdWx0IGjDoXR0w6lycHJvZ3JhbWrDoWhvei4gQSDigJ5MaW1pdOKAnSBheiBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgYmVqZWd5esOpc2VrIHN6w6FtYS4gQSDigJ5Hcm91cOKAnSBoYXN6bsOhbGhhdMOzIGEgaG96esOhZsOpcsOpcyBrb3Jsw6F0b3rDoXPDoWhveiBhIGLFkXbDrXRtw6lueXJlIChww6lsZMOhdWwgR3JvdXA6IGFkbWluO2Nzb3BvcnQxO2Nzb3BvcnQyOykuIEEg4oCeRGVmYXVsdOKAnSBhenQgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgYSBixZF2w610bcOpbnkgYWxhcMOpcnRlbG1lemV0dGVuIGVuZ2Vkw6lseWV6dmUgdmFuLCB2YWd5IGhvZ3kgYSBmZWxoYXN6bsOhbMOzbmFrIGvDqXp6ZWwga2VsbCBlbmdlZMOpbHllem5pZSBhenQuIEEg4oCeQ2FjaGVUVExMb2NhbOKAnSBhIGLFkXbDrXRtw6lueSBneW9yc8OtdMOzdMOhciBpZGVqZSBwZXJjYmVuLiBBIOKAnkNvbmZpZ0l0ZW1LZXnigJ0gYW5uYWsgbWVnYWTDoXPDoXJhIHZhbMOzLCBob2d5IG1lbHkgw7xneWbDqWx2w6FsbGFsYXQgaGl2YXRrb3rDoXMgZGluYW1pa3VzIG1lesWRIHZhbiBoYXN6bsOhbHZhIGEga2l2w6FsYXN6dG90dCDDvGd5ZsOpbHbDoWxsYWxhdCBzesWxcsOpc8OpaGV6LiBBIOKAnlNob3duQ2xhc3Nlc+KAnSBlZ3kgbGlzdGEgYSBtZWdqZWxlbsOtdGV0dCBrb25maWd1csOhY2nDs2VsZW1layBvc3p0w6FseWFpbmFrIHbDoWxhc3p0aGF0w7Mga29ybMOhdG96w6Fzw6Fob3ouIEhhIGV6dCBhIGxpc3TDoXQgw7xyZXNlbiBoYWd5amEsIGFra29yIGFsYXDDqXJ0ZWxtZXpldHRlbiBheiDDtnNzemVzIG9seWFuIG9zenTDoWx5dCB0YXJ0YWxtYXp6YSwgYW1lbHkgZWd5ZXppayBhIOKAnkNvbmZpZ0l0ZW1LZXnigJ0gbWV6xZFiZW4gYmXDoWxsw610b3R0IGRpbmFtaWt1cyBtZXrFkWJlbiBsw6l2xZEgw7xneWbDqWx2w6FsbGFsYXR0YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3RvayBzesOtbmVpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2hveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogw6FsdGFsw6Fub3Mga2F0YWzDs2d1cyBhdHRyaWLDunR1bWFpbmFrIHDDqWxkYSBqb2dvc3VsdHPDoWcgY3NvcG9ydGphaWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBrb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHlvayBuw6l2bW9kdWxqw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGtvbmZpZ3Vyw6FjacOzZWxlbS1vc3p0w6FseW9rIHN6w6FtbW9kdWxqw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IG9sZGFsYWtob3ogKGFtZWx5ZWtlbiBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIG1lZ2plbGVubmVrKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGEga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5b2sgdmVyemnDs2thcmFrdGVybMOhbmMtbW9kdWxqw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBrb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHlvayB2ZXJ6acOzLWthcmFrdGVybMOhbmPDoW5hayBUZW1wbGF0ZTo6VG9vbGtpdC1tb2R1bGrDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBrb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHlvayB2ZXJ6acOzYWt0aXbDoWzDs2rDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICdWw6lncmVoYWp0amEgYSBiZcOhbGzDrXRvdHQgbcWxdmVsZXRldCBtaW5kZW4gZWd5ZXMgZXNlbcOpbnloZXogKG1lZ2jDrXbDs2vDqW50KSBtaW5kZW4gYmXDoWxsw610b3R0IHdlYnN6b2xnw6FsdGF0w6FzbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0pvZ29zdWx0c8OhZ2kgY3NvcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdBIG55aWx2w6Fub3MgZmVsaGFzem7DoWzDs2sgbMOhdGhhdGrDoWsgYSBrb3LDoWJiaSBrb25maWd1csOhY2nDs2VsZW0tdmVyemnDs2thdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbGhhc3puw6Fsw7NrbmFrIGxlaGV0xZFzw6lnw7xrIHZhbiBrw6l6aWxlZyB2w6FsdGFuaSBhIGtvcsOhYmJpIGtvbmZpZ3Vyw6FjacOzZWxlbS12ZXJ6acOzayBrw7Z6w7Z0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBtZWxsw6lrbGV0bcWxdmVsZXTDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTS1rb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lmw6lsZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIGZhbsOpemV0IGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBob3p6w6FhZMOhc2Ega8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ta29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBzemVya2VzenTDqXNlIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBlbMWRem3DqW55ZWsga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNLWtvbmZpZ3Vyw6FjacOzZWxlbSBueW9tdGF0w6FzYSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGEga29uZmlndXLDoWNpw7NlbGVtZWsgdMO2cmzDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdLb25maWd1csOhY2nDs2VsZW1layBrZXJlc8Opc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFZ3kga29uZmlndXLDoWNpw7NlbGVtIGluY2lkZW5zw6FsbGFwb3TDoW5hayBhdXRvbWF0aWt1cyBiZcOhbGzDrXTDoXNhLCBhbWlrb3IgZWd5IGplZ3lldCBrYXBjc29sbmFrIGVneSBrb25maWd1csOhY2nDs2VsZW1oZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYXogw7x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdG90IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGvDqXBlcm55xZFqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBheiBpbmNpZGVuc8OhbGxhcG90b3QgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQga8OpcGVybnnFkWrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiwgYW1lbHkgbGVoZXTFkXbDqSB0ZXN6aSBlZ3kga29uZmlndXLDoWNpw7NlbGVtIMO2c3N6ZWthcGNzb2zDoXPDoXQgZWd5IG3DoXNpayBvYmpla3R1bW1hbCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaW5layBlbMOpcsOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpbmVrIGVsw6lyw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIHTDtnJsw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGEga29uZmlndXLDoWNpw7NlbGVtIGhpdmF0a296w6FzYWluYWsgZmFuw6l6ZXRrw6ludCB2YWzDsyBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXR0xZF6w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXR0xZF6w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gc3plcmtlc3p0w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldGhleiB2YWzDsyB2aXNzemF0w6lyw6lzaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBueW9tdGF0w6Fzw6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtYmUgdMO2cnTDqW7FkSBuYWd5w610w6FzaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdqZWxlbsOtdGkgYSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpdCAoZm9yZMOtdG90dCBzb3JyZW5kYmVuKSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0F6IGFsYXDDqXJ0ZWxtZXpldHQga2F0ZWfDs3JpYSwgYW1lbHkgYWtrb3IgamVsZW5payBtZWcsIGhhIHNlbW1pIHNpbmNzIGtpdsOhbGFzenR2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VneSBrb25maWd1csOhY2nDs2VsZW0gYXpvbm9zw610w7NqYSwgcMOpbGTDoXVsOiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gQXogYWxhcMOpcnRlbG1lemV0dDogQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgw6F0dGVraW50w6lzw6luZWsgY8OtbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IGtlcmVzw6lzw6luZWsgY8OtbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQXV0b21hdGlrdXNhbiBha3RpdsOhbGphIGEga29uZmlndXLDoWNpw7NlbGVtLWxla8OpcsOpcyBtZWdow612w7N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJ6acOzLWthcmFrdGVybMOhbmMga2lmZWplesOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyemnDsy1rYXJha3RlcmzDoW5jIG1vZHVsamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyemnDs2FrdGl2w6Fsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnQSBtZXrFkWsgYXV0b21hdGlrdXNhbiBraSBsZWd5ZW5lay1lIHTDtmx0dmUgKDEpLCDDqXMgZWJiZW4gYXogZXNldGJlbiBlbCBsZWd5ZW5lay1lIHJlanR2ZSBhIGplZ3nFsXJsYXBva3LDs2wgKDIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdFbGtlcsO8bGhldMWRIGxlZ3llbi1lIGEga29uZmlndXLDoWNpw7NlbGVtIEFDTCB2w6lncmVoYWp0w6FzYSBhIGd5b3Jzw610w7N0w6FyYXpvdHQgbWV6xZFmw7xnZ8WRc8OpZ2VrIGVsbGVuxZFyesOpc8OpdmVsLiBFeiBqYXbDrXRoYXRqYSBheiDFsXJsYXBvayBiZXTDtmx0w6lzaSBpZGVqw6l0LCBkZSBsZSBrZWxsIHRpbHRhbmksIGhhIEFDTC1tb2R1bG9rIHZhbm5hayBoYXN6bsOhbGF0YmFuIElUU00ta29uZmlndXLDoWNpw7NlbGVtLSDDqXMgxbFybGFwLXZpc3N6YXTDqXLDqXNpIHTDrXB1c29raG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnTWVseWlrIMOhbHRhbMOhbm9zIGluZm9ybcOhY2nDsyBqZWxlbmplbiBtZWcgYSBmZWpsw6ljYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ29zenTDoWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LDoWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbMOpcyB1dMOhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnYmXDvHplbWVsw6lzIGVsxZF0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnYmXDvHplbWVsdmUnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgaMO8dmVseWsgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBow7x2ZWx5ayAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IGjDvHZlbHlrICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGjDvHZlbHlrICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgaMO8dmVseWtlcyByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBow7x2ZWx5ayAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBow7x2ZWx5ayAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgaMO8dmVseWtlcyByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBow7x2ZWx5ayAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzIGjDvHZlbHlrZXMgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaMO8dmVseWsgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGjDvHZlbHlrICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBow7x2ZWx5ayAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGjDvHZlbHlrICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGjDvHZlbHlrICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBow7x2ZWx5ayAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaMO8dmVseWsgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGjDvHZlbHlrICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBow7x2ZWx5ayAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGjDvHZlbHlrICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgaMO8dmVseWsgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBow7x2ZWx5ayAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaMO8dmVseWsgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgaMO8dmVseWsgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgaMO8dmVseWsgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBow7x2ZWx5ayAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGjDvHZlbHlrICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgaMO8dmVseWsgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGjDvHZlbHlrICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBow7x2ZWx5ayAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBow7x2ZWx5ayAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBow7x2ZWx5ayAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBow7x2ZWx5ayAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnU3rDoW12aXRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnU3rDoW12aXRlbGkgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdDw61tbGVmb2dsYWzDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN6dHLDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsw7NnIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICdBcGFjaGUgbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnS8Opc3rDvGzDqWsgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnQlNEIGxpY2VuYyAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0Fra3VtdWzDoXRvciBrYXBhY2l0w6FzYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0Fra3VtdWzDoXRvciB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnw4lww7xsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1c3ogY3NhdG9sw7NqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICdDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzc3pvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdQcm9jZXNzem9yIG9zenTDoWx5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYWNpdMOhcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnR3JhZmlrdXMga8OhcnR5w6Fua8OpbnRpIGthcGFjaXTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLw6FydHlhc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLw6FydHlhb2x2YXPDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLw6FydHlhIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ8OcZ3lmw6lsdGFuw7pzw610dsOhbnlvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfDnGd5ZsOpbHN6b2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ8OcZ3lmw6lsLWthdGVnw7NyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnw5NyYWplbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnw5NyYWplbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS8OzZGFsw6HDrXLDoXNpIHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuY2lhdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1RhbsOhY3NhZMOzaSBzemVyesWRZMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS2FwY3NvbGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLYXBjc29sYXRmZWx2w6l0ZWwgYSBmb3JnYWxtYXrDs3ZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnTDqW5lcmtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1N6ZXJ6xZFkw6lzIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdTemVyesWRZMOpc2VzIGlkxZFzemFrIGtlemRldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnU3plcnrFkWTDqXNlcyBpZMWRc3phayB2w6lnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdWZXpldMOpayBuw6lsa8O8bGkgdGVsZWZvbiAoREVDVCB0ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLw7ZsdHPDqWcgbcOpcnTDqWtlZ3lzw6lnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0xpY2VuY2VrIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTMOpdHJlaG96w6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJ0NyZWF0aXZlIENvbW1vbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdFZ3nDqW5pIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Agw6FsdGFsIGxlZm9nbGFsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLWtpc3pvbGfDoWzDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnU3rDoW1sYSBkw6F0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdSZW5kZWzDqXMgZMOhdHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnSsOzdMOhbGzDoXMgZMOhdHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdLaWFkw6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0FzenRhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50dW0tYWzDocOtcsOhc2kgdGFuw7pzw610dsOhbnlvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbC10YW7DunPDrXR2w6FueW9rIChTL01JTUUtdGFuw7pzw610dsOhbnlvayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJ0Jlw6FneWF6b3R0IFNJTSAoZVNJTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ011bmthc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdCZWZlamV6xZEgSVAtY8OtbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1TDoW1vZ2F0w6FzIHbDqWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnTGVqw6FyYXRpIGTDoXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnS8O8bHPFkSBtZXJldmxlbWV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVMWxemZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0JlbHPFkSB2ZXrDqXJsxZFwcm9ncmFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnTGVuZGtlcsOpay1hbGFww7ogZW5lcmdpYXTDoXJvbMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0tpYWxha8OtdMOhc2kgbcOpcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2Utc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnw4FsdGFsw6Fub3MgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpa3VzIGvDoXJ0ecOhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlrdXMga8OhcnR5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkdmVybW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0hhcmR2ZXIgc8O6bHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdGZWpoYWxsZ2F0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUC1wcm90b2tvbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnU3plbcOpbHlhem9ub3Nzw6FnLSDDqXMgaG96esOhZsOpcsOpcy1rZXplbMOpcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTGVsdMOhcmkgc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJ0JlZmVrdGV0w6lzaSBrw7ZsdHPDqWdlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ1N6w6FtbGEgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnQmlsbGVudHnFsXpldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QtbW9uaXRvciAoZm9seWFkw6lra3Jpc3TDoWx5b3Mga2lqZWx6xZEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtbW9uaXRvciAoZsOpbnlraWJvY3PDoXTDsyBkacOzZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1ZlemV0w6lrZXMgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdTesOpbGVzc8OpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJzEuIHLDqXRlZzogZml6aWthaSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnMi4gcsOpdGVnOiBhZGF0a2FwY3NvbGF0aSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJzMuIHLDqXRlZzogaMOhbMOzemF0aSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMy4gcsOpdGVnOiBow6Fsw7N6YXRpIHLDqXRlZyAoc3p1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICc0LiByw6l0ZWc6IMOhdHZpdGVsaSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJzUuIHLDqXRlZzogdmlzem9ueSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnNi4gcsOpdGVnOiBtZWdqZWxlbsOtdMOpc2kgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNy4gcsOpdGVnOiBhbGthbG1hesOhcyByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTMOtemluZ3N6ZXJ6xZFkw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jZWd5ZXptw6lueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnTGljZW5jc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbmNrdWxjcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbmMgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jaWTFkXN6YWsga2V6ZGV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VuY2lkxZFzemFrIHbDqWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMw610aXVtLXZhc2Zvc3pmw6F0IChMaUZlUE80KSBha2t1bXVsw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0zDrXRpdW1pb24gKExpLWlvbikgYWtrdW11bMOhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnS8O2bGNzw7Zuc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0ViYmVuIHRhbMOhbGhhdMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0hvc3N6w7pzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnTUlUIGxpY2VuYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdHecOhcnTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTGVnbmFneW9iYiB0ZXJoZWzDqXMga2FwYWNpdMOhc2EgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnTWVtw7NyaWEgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICdNaWtybyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaSByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbHRlbGVmb25zesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9iZcOhZ3lhem90dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsbCBsZcOtcsOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvciBmZWxib250w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yIG3DqXJldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdFZ8Opcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJ05hbm8gU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdIw6Fsw7N6YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSMOhbMOzemF0aSBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdIw6Fsw7N6YXRpIGluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0jDoWzDs3phdGkgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWthZG1pdW0gKE5pQ2QpIGFra3VtdWzDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1mw6ltIGhpZHJpZCAoTmlNSCkgYWtrdW11bMOhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1RpdG9rdGFydMOhc2kgbWVnw6FsbGFwb2TDoXMgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ1Byb2Nlc3N6b3JvayBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFNLW1vZHVsb2sgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0dyYWZpa3VzIGvDoXJ0ecOhayBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtbW9uaXRvciAob3JnYW5pa3VzIGbDqW55a2lib2Nzw6F0w7MgZGnDs2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfDnHplbWVsdGV0w6lzaSBrw7ZsdHPDqWdlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdSZW5kZWzDqXNzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0VnecOpYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnS2ltZW5ldGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJzw6lnaSBtZWfDoWxsYXBvZMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICfDlnLDtmvDtnMgbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJ1RlbGVmb24gLyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25zesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbiB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6aWthaSBtYWdvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1TDoXBlbGzDoXTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJ0vDtnpraW5jcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdNZWd2w6Fzw6Fyb2x2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjayBtw6lseXPDqWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFjayBlZ3lzw6lnIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnU3pvYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta8OhcnR5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtdGFuw7pzw610dsOhbnlvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0Fkw6FzdsOpdGVsaSBzemVyesWRZMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdNxbFob2xkYXMgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdaw6FydCDDs2xvbXNhdmFzIChTTEEpIGFra3VtdWzDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnRmVsaGFzem7DoWzDs2kgbGljZW5jZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU29yb3phdHN6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ0tpc3pvbGfDoWzDs3N6b2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU3pvbGfDoWx0YXTDoXNpIG1lZ8OhbGxhcG9kw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU3pvbGfDoWx0YXTDoXNjw61ta2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnU2hhcmV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnQ3NhdGxha296w7MgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1N6b2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSGFuZ3N6w7Nyw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N6YWJ2w6FueW9zIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnS2V6ZMWRIElQLWPDrW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1TDoXJoZWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnVMOhcm9sw7MgcGFydMOtY2nDs2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJ0VsxZFmaXpldMOpcyBhbGFww7ogbGljZW5jZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0xlw6FueXbDoWxsYWxhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnw5Zzc3plZm9nbGFsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdWw6lrb255IGtsaWVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnU3rDoWxhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUZWxqZXMgZ3JhZmlrdXMga8OhcnR5YSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RlbGplcyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnw4lyaW50xZFrw6lwZXJuecWRcyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9yb255JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0ItZWxvc3p0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1mZWpoYWxsZ2F0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICdWaXJ0dcOhbGlzIGtsaWVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnTWVubnlpc8OpZ2kgbGljZW5jZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Via2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/id_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRhIG9wZXJhc2kgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGVuZ2F0dXJhbiB1bnR1ayBkYXRhIHBlcm1pbnRhYW4geWFuZyBtYXN1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1BlbmdhdHVyYW4gdW50dWsgZGF0YSByZXNwb25zIGtlbHVhcic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1BlbmdlbG9sYWFuIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICd1YmFoIGRlZmluaXNpIGtlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNZW5ndWJhaCBkZWZpbmlzaSBwZXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0J1bmRlbCBLZWxhcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdEaSBzaW5pIEFuZGEgZGFwYXQgbWVuZ2ltcG9yIGJ1bmRlbCBrZWxhcyBSZWFkeTJJbXBvcnQgeWFuZyBtZW5hbXBpbGthbiBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgcGFsaW5nIHVtdW0uIEhhcmFwIGRpY2F0YXQgYmFod2EgYmViZXJhcGEga29uZmlndXJhc2kgdGFtYmFoYW4gbXVuZ2tpbiBkaXBlcmx1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNZW1wZXJiYXJ1aSBlbnRpdGFzIHlhbmcgYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnTWVuZ2ltcG9yIGJ1bmRlbCBrZWxhcyBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tlbGFzIEl0ZW0gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1BlcmFuIEl0ZW0gS29uZmlndXJhc2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdTYXJpbmdhbiB1bnR1ayBrZWxhcy1rZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBzYXR1IGtlbGFzIGRhcmkgZGF0YXIgdW50dWsgbWVtYnVhdCBzZWJ1YWggaXRlbSBrb25maWd1cmFzaSBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2VsYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdUaW5kYWthbiBtYXNhbCBJdGVtS29uZmlndXJhc2kgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhdHVzIHBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGF0dXMgaW5zaWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdUYXV0YW4gdW50dWsga2UgbGFpbm55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTm9tb3IgaXRlbSBrb25maWd1cmFzaSB0aWRhayBzYWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnSnVtbGFoIGl0ZW0ga29uZmlndXJhc2kgbGFpbm55YSB5YW5nIGFrYW4gZGkgaHVidW5na2FuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQXBha2FoIEFuZGEgYmVuYXItYmVuYXIgaW5naW4gbWVuZ2hhcHVzIGl0ZW0ga29uZmlndXJhc2kgaW5pPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYW1hIGluaSB0ZWxhaCBkaSBndW5ha2FuIG9sZWggSXRlbUtvbmZpZ3VyYXNpIGRlbmdhbiBub21vcihub21vci1ub21vcikgYmVyaWt1dDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOb21vciB2ZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTm9tb3IgdmVyc2kgaXRlbSBrb25maWd1cmFzaSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOb21vciBWZXJzaSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tb3IgYmVyaWt1dCBpbmk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0dXMgcGVueWViYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0tvbmRpc2kgaW5zaWRlbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnUml3YXlhdCBJdGVtIEtvbmZpZ3VyYXNpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc2kgc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQnVhdFdha3R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1BhbmRhbmdhbiBkZWthdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGtvbmZpZ3VyYXNpIHBlciBoYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdUaWRhayBkaXRlbXVrYW4gZGF0YSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1BpbGloIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnTXVsYWkgUGVuY2FyaWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgdW50dWsgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1RpbmdrYXQgS2VkYWxhbWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnTWVtcGVyYmVzYXIvTWVtcGVya2VjaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnVGluZ2thdCB0YXV0YW4gbWFrc2ltdW0gdGVyY2FwYWkgdW50dWsgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJdGVtIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXR1cyBwZW55ZWJhcmFhbiBzYWF0IGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnS29uZGlzaSBpbnNpZGVuIHNhYXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1RlcmFraGlyIGRpdWJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdUZXJha2hpciBkaXJ1YmFoIG9sZWgnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdJdGVtIEtvbmZpZ3VyYXNpIEFuZGEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUGVuY2FyaWFuIEl0ZW0gS29uZmlndXJhc2knOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdLZWxhcy1rZWxhcyBiZXJpa3V0IGFrYW4gZGlpbXBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdQZXJhbi1wZXJhbiBiZXJpa3V0IGluaSBha2FuIGRpaW1wb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnUGVyaGF0aWthbiBiYWh3YSBiaWRhbmcgZGluYW1pcyBkYW4ga2VsYXMgR2VuZXJhbENhdGFsb2cgeWFuZyBzZXN1YWkganVnYSBha2FuIGRpYnVhdCBkYW4gdGlkYWsgYWRhIHBlbmdoYXB1c2FuIG90b21hdGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0FwYWthaCBBbmRhIGluZ2luIG1lbGFuanV0a2FuPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdCdXR1aCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pc2kgdGlkYWsgYWRhIGhhc2ggWUFNTCB5YW5nIHZhbGlkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0dhbWJhcmFuIHVtdW06IEl0ZW0gS29uZmlndXJhc2kgSVRTTSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgQ29uZmlnSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0FuZGEgbWVtZXJsdWthbiBzZXRpZGFrbnlhIHNhdHUgSXRlbSBLb25maWd1cmFzaSB5YW5nIGRpcGlsaWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnQW5kYSB0aWRhayBtZW1pbGlraSBha3NlcyB0dWxpcyBrZSBpdGVtIGtvbmZpZ3VyYXNpIGluaTogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ1RpZGFrIGFkYSBkZWZpbmlzaSB5YW5nIGRpZGVmaW5pc2lrYW4gdW50dWsga2VsYXMgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJdGVtIGtvbmZpZ3VyYXNpICIlcyIgdGlkYWsgZGl0ZW11a2FuIGRhbGFtIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1RpZGFrIGRhcGF0IG1lbmdoYXB1cyBJRCBrb25maWd1cmFzaSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1RpZGFrIGRpdGVtdWthbiB2ZXJzaSB1bnR1ayBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGF0YXUgQ2xhc3NJRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBha3NlcyB5YW5nIGRpYmVyaWthbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgZGFwYXQgbWVuYW1waWxrYW4gcml3YXlhdCwgdGlkYWsgYWRhIENvbmZpZ0l0ZW1JRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdUaWRhayBkYXBhdCBtZW5hbXBpbGthbiByaXdheWF0LCB0aWRhayBhZGEgaGFrIGFrc2VzIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnSXRlbSBLb25maWd1cmFzaSBCYXJ1IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1ZlcnNpIGJhcnUgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXR1cyBwZW5lcmFwYW4gZGlwZXJiYXJ1aSAoYmFydSA9ICVzLCBsYW1hID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXR1cyBpbnNpZGVuIGRpcGVyYmFydWkgKGJhcnUgPSAlcywgbGFtYSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBkaWhhcHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnVGF1dGFuIGtlICVzICh0aXBlID0gJXMpIGRpdGFtYmFoa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdUYXV0YW4ga2UgJXMgKHRpcGUgPSAlcykgZGloYXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pc2kgQ29uZmlnSXRlbSBkaXBlcmJhcnVpIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1hIGRpcGVyYmFydWkgKGJhcnUgPSAlcywgbGFtYSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXQgJXMgZGlwZXJiYXJ1aSBkYXJpICIlcyIgbWVuamFkaSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpICVzIGRpaGFwdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhIENvbmZpZ0l0ZW1JRCBhdGF1IFZlcnNpb25JRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnVGlkYWsgZGFwYXQgbWVuYW1waWxrYW4gaXRlbSBrb25maWd1cmFzaSwgdGlkYWsgYWRhIGhhayBha3NlcyB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQlIHRpZGFrIGRpdGVtdWthbiBkYWxhbSBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0l0ZW1Lb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnZGljZXRhayBvbGVoJXMgcGFkYSVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuc2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lEIHRpZGFrIHZhbGlkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBDbGFzc0lEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBoYWsgYWtzZXMgdW50dWsga2VsYXMgaW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnVGlkYWsgYWRhIGhhc2lsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3VyYXNpIHBlbmNhcmlhbiBuaWxhaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnVGlkYWsgZGFwYXQgbWVuYW1waWxrYW4gaXRlbSwgdGlkYWsgYWRhIGhhayBha3NlcyB1bnR1ayBDb25maWdJdGVtIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIHRpZGFrIGRpdGVtdWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnVGlkYWsgYWRhIHZlcnNpIHlhbmcgZGl0ZW11a2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhc2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdwZXJpbmdhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5zaWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdHVzIHBlbnllYmFyYW4gaXRlbSBrb25maWd1cmFzaSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF0dXMgaW5zaWRlbiBpdGVtIGtvbmZpZ3VyYXNpIGluaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1RpZGFrIGFkYSBpemluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciB0aWRhayB2YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcmFtZXRlciBwZW5jYXJpYW4gdGlkYWsgdmFsaWQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnSXRlbSBrb25maWd1cmFzaSB5YW5nIGRpdGFtcGlsa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcGUgc3RhdHVzIHBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwZSBTdGF0dXMgaW5zaWRlbiBzYWF0IGluaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdEaWFudGFyYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUGVtYmF0YXNhbiBrZWxhcyB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdQaWxpaCBzYXR1IGtlbGFzIGF0YXUgbGViaWggdW50dWsgbWVtYmF0YXNpIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkYXBhdCBkaXBpbGloJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdQZW1iYXRhc2FuIGtlbGFzIHVudHVrIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdQaWxpaCBzYXR1IGtlbGFzIGF0YXUgbGViaWggdW50dWsgbWVtYmF0YXNpIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkYXBhdCBkaXBpbGloJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pcyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpcyAoVmVyc2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0plbmlzIFJlZmVyZW5zaSBUYXV0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQXBha2FoIHRhdXRhbiBpbmkgYmVybGFrdSB1bnR1ayBDb25maWdJdGVtIGF0YXUgdmVyc2kgc3RhdGlzIGRhcmkgb2JqZWsgcmVmZXJlbnNpLiBQZXJoaXR1bmdhbiBTdGF0dXMgSW5zaWRlbiBzYWF0IGluaSBoYW55YSBkaWxha3VrYW4gcGFkYSB0YXV0YW4gZGluYW1pcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdQaWxpaCBhdHJpYnV0IHlhbmcgYWthbiBkaWNhcmkgYmVyZGFzYXJrYW4gaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnU3RydWt0dXIgZGFzYXIgdGlkYWsgdmFsaWQuIEJlcmlrYW4gaGFzaCBkZW5nYW4gZGF0YSBkYWxhbSBmb3JtYXQgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdNZW11bGFpIHN0cmluZyBZQU1MIGRlbmdhbiBcJy0tLVwnIGRpcGVybHVrYW4uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ1RpZGFrIGRhcGF0IG1lbWJlcnNpaGthbiB0YWJlbCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdUaWRhayBhZGEgYmlkYW5nIGRpbmFtaXMgeWFuZyByZWxldmFuIHlhbmcgZGl0ZW11a2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVGlkYWsgZGFwYXQgbWVueWlzaXBrYW4ga2UgZGFsYW0gdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdNZW55aXNpcGthbiAwIGJhcmlzIGtlIGRhbGFtIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdKdW1sYWggbWFrc2ltdW0gZGFyaSAxIGVsZW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdTdHJpbmcgVmVyc2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnS2VzYWxhaGFuIG1lbnlpbmtyb25rYW4gZGVmaW5pc2kuIFNpbGFrYW4gcGVyaWtzYSBsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnQW5kYSBtZW1pbGlraSBkZWZpbmlzaSBJVFNNQ29uZmlnSXRlbSB5YW5nIHRpZGFrIHRlcnNpbmtyb25pc2FzaS4gVGVyYXBrYW4gcGVydWJhaGFuIGJpZGFuZyBkaW5hbWlzIElUU01Db25maWdJdGVtIEFuZGEuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdUZWxhaCBrYWRhbHVhcnNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnUGVtZWxpaGFyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RlbGFoIGRpcmVuY2FuYWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdQZXJiYWlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2l1bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdVbGFzYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1VqaS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnSWtodGlzYXIgZGFuIEtvbmZpcm1hc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnTWVuZ2ltcG9yIGtlbGFzL3BlcmFuIGRhbiBiaWRhbmcgdGVya2FpdG55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1RlcmphZGkga2VzYWxhaGFuIHNhYXQgbWVuZ2ltcG9yIGtlbGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVGVyc2VtYnVueWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIERpdGFtcGlsa2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4ga29uZGlzaSBwZW5jYXJpYW4geWFuZyBkaXBlcmx1YXMgZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgYWdlbi4gRGVuZ2FuIGZpdHVyIGluaSwgQW5kYSBkYXBhdCBtZW5jYXJpLCBtaXNhbG55YSBuYW1hIGl0ZW0ga29uZmlndXJhc2kgZGVuZ2FuIGtvbmRpc2kgc2VwZXJ0aSBpbmksIHNlcGVydGkgIigqa2V5MSomJiprZXkyKikiIGF0YXUgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4ga29uZGlzaSBwZW5jYXJpYW4geWFuZyBkaXBlcmx1YXMgZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBEZW5nYW4gZml0dXIgaW5pLCBBbmRhIGRhcGF0IG1lbmNhcmksIG1pc2FsbnlhIG5hbWEgaXRlbSBrb25maWd1cmFzaSBkZW5nYW4ga29uZGlzaSBzZXBlcnRpIGluaSBzZXBlcnRpICIoKmtleTEqJiYqa2V5MiopIiBhdGF1ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQ0kgeWFuZyBkaXR1Z2Fza2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHlhbmcgZGl0dWdhc2thbiBrZSBwZXJ1c2FoYWFuIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHlhbmcgZGliZXJpa2FuIGtlcGFkYSBwZW5nZ3VuYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1BlbmdhdHVyYW4gQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUGVyaWtzYSBoYW55YSBuYW1hIHVuaWsgc2FqYSBkaSBkYWxhbSBrZWxhcyhcJ2tlbGFzXCcpIGl0ZW1rb25maWd1cmFzaSB5YW5nIHNhbWEgYXRhdSBzZWNhcmEgZ2xvYmFsIChcJ2dsb2JhbCksIHlhbmcgYmVyYXJ0aSBzZXRpYXAgSXRlbUtvbmZpZ3VyYXNpIHlhbmcgYWRhIGFrYW4gZGlwZXJoaXR1bmdrYW4ga2V0aWthIG1lbmNhcmkgZHVwbGlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1BpbGloIG1vZHVsIHVudHVrIG1lbmVyYXBrYW4gc2tlbWEgcGVuYW1hYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdQaWxpaCBtb2R1bCB1bnR1ayBtZW5lcmFwa2FuIHNrZW1hIGFuZ2thLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdQaWxpaCBtb2R1bCB1bnR1ayBtZW5lcmFwa2FuIHNrZW1hIHN0cmluZyB2ZXJzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdQaWxpaCBhdHJpYnV0IHVudHVrIG1lbWljdSBwZW1idWF0YW4gdmVyc2kgYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnUGlsaWgga2F0ZWdvcmkgeWFuZyBha2FuIGRpdGV0YXBrYW4ga2Uga2VsYXMgaXRlbSBrb25maWd1cmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdGVyIGl0ZW0ga29uZmlndXJhc2kga29sb20gdW50dWsgSWtodGlzYXIgSXRlbSBLb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9tIHlhbmcgZGFwYXQgZGlmaWx0ZXIgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBDYXRhdGFuOiBIYW55YSBhdHJpYnV0IEl0ZW0gS29uZmlndXJhc2kgZGFuIEJpZGFuZyBEaW5hbWlzIChEeW5hbWljRmllbGRfTmFtZVgpIHlhbmcgZGlwZXJib2xlaGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnVGFtYmFoIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdCBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgbWVuZ2FrdGlma2FuIGxvZ2dpbmcga2Ugcml3YXlhdCBwYWRhIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgbWVtcGVyYmFydWkgaXRlbSBrb25maWd1cmFzaSBrZSBkZWZpbmlzaSBzYWF0IGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdSaXdheWF0IGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NldGFrIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnWm9vbSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1RhbXBpbGFuIFBvaG9uIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc2kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkYXJpIGtlbGFzLWtlbGFzIGJlcmlrdXQgaW5pIHRpZGFrIGFrYW4gZGlzaW1wYW4gZGkgc2VydmVyIEVsYXN0aWNzZWFyY2guIFVudHVrIG1lbmVyYXBrYW4gaW5pIHBhZGEgQ0kgeWFuZyBzdWRhaCBhZGEsIG1pZ3Jhc2kgQ0kgaGFydXMgZGlqYWxhbmthbiBtZWxhbHVpIGtvbnNvbCwgc2V0ZWxhaCBtZW5ndWJhaCBvcHNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGVuZ2FuIHN0YXR1cyBwZW55ZWJhcmFuIGJlcmlrdXQgdGlkYWsgYWthbiBkaXNpbXBhbiBkaSBzZXJ2ZXIgRWxhc3RpY3NlYXJjaC4gVW50dWsgbWVuZXJhcGthbiBpbmkgcGFkYSBDSSB5YW5nIHN1ZGFoIGFkYSwgbWlncmFzaSBDSSBoYXJ1cyBkaWphbGFua2FuIG1lbGFsdWkga29uc29sLCBzZXRlbGFoIG1lbmd1YmFoIG9wc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdCYXRhcyBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFzaSBCYXRhcyBpdGVtIHBlciBoYWxhbWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzaXMgRGF0YSBNYW5hamVtZW4gS29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bCBtYXNzYWwgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm91dGVyIHBlbmNhcmlhbiBiYWNrZW5kIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQnVhdCBkYW4gYXR1ciBkZWZpbmlzaSAtIGRlZmluaXNpIHVudHVrIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdNZW1idWF0IFRpa2V0IHVudHVrIENvbmZpZ0l0ZW1zIHBhZGEgdGl0aWsgd2FrdHUgdGVydGVudHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1BlbGFuZ2dhbiBkYXBhdCBtZWxpaGF0IHZlcnNpIENJIGhpc3RvcmlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdQZWxhbmdnYW4gZGFwYXQgYmVyYWxpaCBzZWNhcmEgbWFudWFsIGRpIGFudGFyYSB2ZXJzaSBDSSB0ZXJkYWh1bHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0YSBkZWZhdWx0IHlhbmcgYWthbiBkaWd1bmFrYW4gcGFkYSBhdHJpYnV0IHVudHVrIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpLiBDb250b2g6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCA9IHRhaHVuOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0ID0gVGVyYWtoaXI7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50ID0gMjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGEgZGVmYXVsdCB5YW5nIGFrYW4gZGlndW5ha2FuIHBhZGEgYXRyaWJ1dCB1bnR1ayBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaS4gQ29udG9oOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyID0gMjAxMDsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aCA9IDEwOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheSA9IDQ7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyID0gMjAxMDsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoID0gMTE7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXkgPSAzOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdUZW50dWthbiBUaW5kYWthbiBhZGFsYWggdG9tYm9sIHBlbmdhdHVyYW4gdGVyc2VkaWEgZGkgb2JqZWsgd2lkZ2V0IHRlcmthaXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gSGFyYXAgZGljYXRhdCBiYWh3YSBUaW5kYWthbiBpbmkgaGFydXMgdGVsYWggbWVuZGFmdGFya2FuIGJlcmlrdXQgSlMgZGFuIENTUyBmaWxlOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIHNrZW1hIFRlbXBsYXRlOjpUb29sa2l0IHVudHVrIHN0cmluZyB2ZXJzaS4gSGFueWEgZGlndW5ha2FuIGppa2EgTW9kdWwgU3RyaW5nIFZlcnNpIGRpYXR1ciBrZSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdUZW50dWthbiBzZXJhbmdrYWlhbiBrb25kaXNpIGRpIG1hbmEgcGVsYW5nZ2FuIGRpaXppbmthbiB1bnR1ayBtZWxpaGF0IGl0ZW0ga29uZmlndXJhc2kuIEtvbmRpc2kgZGFwYXQgc2VjYXJhIG9wc2lvbmFsIGRpYmF0YXNpIHVudHVrIGdydXAgcGVsYW5nZ2FuIHRlcnRlbnR1LiBOYW1hIGFkYWxhaCBzYXR1LXNhdHVueWEgYXRyaWJ1dCB3YWppYi4gSmlrYSB0aWRhayBhZGEgcGlsaWhhbiBsYWluIHlhbmcgZGliZXJpa2FuLCBzZW11YSBpdGVtIGtvbmZpZ3VyYXNpIGFrYW4gdGVybGloYXQgZGkgYmF3YWgga2F0ZWdvcmkgdGVyc2VidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5naGFwdXMgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFybXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gaXppbiB5YW5nIGRpIGJ1dHVoa2FuIHVudHVrIG1lbmRhcGF0a2FuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkZW5nYW4gbWVuZ2d1bmFrYW4gYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBpemluIHlhbmcgZGkgYnV0dWhrYW4gdW50dWsgbWVuY2FyaSBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGVuZ2FuIG1lbmdndW5ha2FuIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2F0dXIgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFybXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBtb2R1bCBnYW1iYXJhbiB1bnR1ayBtZW51bmp1a2FuIHRhbXBpbGFuIGtlY2lsIGRhcmkgc2VidWFoIGRhZnRhciBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYXBha2FoIGxhYmVsIGplbmlzIHRhdXRhbiBoYXJ1cyBkaXRhbXBpbGthbiBkaSBrb25la3NpIG5vZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBla3NwcmVzaSByZWd1bGFyIHNlY2FyYSBpbmRpdmlkdWFsIHVudHVrIHNldGlhcCBrZWxhcyBJdGVtS29uZmlndXJhc2kgdW50dWsgbWVtZXJpa3NhIG5hbWEgSXRlbUtvbmZpZ3VyYXNpIHVudHVrIG1lbnVuanVrYW4gcGVzYW4gZXJyb3IgeWFuZyBzZXN1YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBrb2xvbSBDSSB5YW5nIHRlcnNlZGlhIGRhbGFtIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgdGVyZGlyaSBkYXJpIG5hbWEga2VsYXMgZGFuIGxhcmlrIGtvbG9tIHlhbmcgdGVyc2VkaWEgdW50dWsga2VsYXMgeWFuZyBiZXJzYW5na3V0YW4uIEVudHJpIGJpZGFuZyBkaW5hbWlzIGhhcnVzIHNlc3VhaSBkZW5nYW4gc2tlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGF0cmlidXQgaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IHVudHVrIHBlbmd1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCB1bnR1ayBwZW5ndXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGFyaSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCB1bnR1ayBwZW5ndXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGFyaSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gVHVydW46IHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBUdXJ1bjogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTWVuZW50dWthbiBrb2xvbSBDSSB5YW5nIGRpdGFtcGlsa2FuIHNlY2FyYSBkZWZhdWx0IGRhbGFtIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgdGVyZGlyaSBkYXJpIG5hbWEga2VsYXMgZGFuIGxhcmlrIGJpZGFuZyB5YW5nIHRlcnNlZGlhIHVudHVrIGtlbGFzIHlhbmcgc2VzdWFpLiBFbnRyaSBiaWRhbmcgZGluYW1pcyBoYXJ1cyBzZXN1YWkgZGVuZ2FuIHNrZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ01lbmVudHVrYW4ga2VkYWxhbWFuIHJlbGFzaSBkZWZhdWx0IHlhbmcgYWthbiBkaXRhbXBpbGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGl0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQgdW50dWsgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGF0cmlidXQgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkaXRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdCB1bnR1ayBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaS4gQ29udG9oOiAiS2V5IiBoYXJ1cyBtZW1pbGlraSBuYW1hIEJpZGFuZyBEaW5hbWlzIGRhbGFtIGhhbCBpbmkgXCdYXCcsICJDb250ZW50IiBoYXJ1cyBtZW1pbGlraSBuaWxhaSBCaWRhbmcgRGluYW1pcyB0ZXJnYW50dW5nIHBhZGEgamVuaXMgQmlkYW5nIERpbmFtaXMsIFRla3M6IFwndGVrc1wnLCBEcm9wZG93bjogXCcxXCcsIFRhbmdnYWwvV2FrdHU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGggPSAwMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheSA9IDI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91ciA9IDAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlID0gMDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQgPSAwMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhciA9IDIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoID0gMDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheSA9IDI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyID0gMjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZSA9IDU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQgPSA1OTtcJyBkYW4gYXRhdSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdCA9IG1pbmdndTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQgPSBTZWJlbHVtOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZSA9IDdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBzdWJvYmplayBkZWZhdWx0IGRhcmkga2VsYXMgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4ga29sb20gQ0kgeWFuZyB0ZXJzZWRpYSBkYWxhbSBpa2h0aXNhciBpdGVtIGtvbmZpZ3VyYXNpIHRlcmdhbnR1bmcgcGFkYSBrZWxhcyBDSS4gU2V0aWFwIGVudHJpIGhhcnVzIHRlcmRpcmkgZGFyaSBuYW1hIGtlbGFzIGRhbiBsYXJpayBrb2xvbSB5YW5nIHRlcnNlZGlhIHVudHVrIGtlbGFzIHlhbmcgYmVyc2FuZ2t1dGFuLiBFbnRyaSBiaWRhbmcgZGluYW1pcyBoYXJ1cyBzZXN1YWkgZGVuZ2FuIHNrZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIHRpbmdnaSB1bnR1ayBrb21wb25lbiBlZGl0b3IgdGVrcyBrYXlhIHVudHVrIGxheWFyIGluaS4gTWFzdWtrYW4gbm9tb3IgKHBpa3NlbCkgYXRhdSBuaWxhaSBwZXJzZW4gKHJlbGF0aWYpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBqdW1sYWggYmFyaXMgdW50dWsgcGVuZ3ViYWggZGVmaW5pc2lDSSBwYWRhIGFudGFybXVrYSBBZG1pbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIHVydXRhbiBzdGF0dXMgaW5zaWRlbiBkYXJpIHRpbmdnaSAobWlzLiBrcnVzaWFsKSBrZSByZW5kYWggKG1pcy4gZnVuZ3Npb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gc3RhdHVzIHBlbnllYmFyYW4geWFuZyByZWxldmFuIGRpIG1hbmEgdGlrZXQgeWFuZyBkaXRhdXRrYW4gZGFwYXQgbWVtZW5nYXJ1aGkgc3RhdHVzIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGJhdGFzIHBlbmNhcmlhbiB1bnR1ayBsYXlhciBBZ2VudElUU01Db25maWdJdGVtICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGJhdGFzIHBlbmNhcmlhbiB1bnR1ayBMYXlhciBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYmF0YXMgcGVuY2FyaWFuIHVudHVrIGxheWFyIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVuZW50dWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgbGF5YXIgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVuZW50dWthbiBrb2xvbSBDSSB5YW5nIGRpdGFtcGlsa2FuIGRhbGFtIHRhbXBpbGFuIGtvbXBsZWtzIHRhYmVsIHRhdXRhbiB1bnR1ayBzZW11YSBrZWxhcyBDSS4gSmlrYSB0aWRhayBhZGEgZW50cmksIG1ha2Ega29sb20gZGVmYXVsdCBha2FuIGRpdGFtcGlsa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4ga29sb20geWFuZyBkaXRhbXBpbGthbiBkYXJpIENJIGRpIGxpbmsgdGFiZWwgdGFtcGlsYW4geWFuZyBrb21wbGVrcywgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgZGlhd2FsaSBkZW5nYW4gbmFtYSBrZWxhcyBkYW4gdGl0aWsgZHVhIGdhbmRhIChpLmUuIENvbXB1dGVyOjopLiBBZGEgYmViZXJhcGEgQ0ktQXRyaWJ1dCB5YW5nIHVtdW0gdW50dWsgc2VtdWEgQ0kgKENvbnRvaCB1bnR1ayBLb21wdXRlciBrZWxhczogS29tcHV0ZXIgOjogTmFtYSwgS29tcHV0ZXIgOjogQ3VyRGVwbFN0YXRlLCBLb21wdXRlciA6OiBDcmVhdGVUaW1lKS4gVW50dWsgbWVudW5qdWtrYW4gaW5kaXZpZHUgQ0ktQXRyaWJ1dCBzZWJhZ2FpbWFuYSBkaWRlZmluaXNpa2FuIGRhbGFtIENJLURlZmluaXRpb24sIHNrZW1hIGJlcmlrdXQgaGFydXMgZGlndW5ha2FuIChtaXNhbG55YSB1bnR1ayBLb21wdXRlciBrZWxhcyk6ICBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmlrYSB0aWRhayBhZGEgZW50cmkgdW50dWsga2VsYXMgQ0ksIG1ha2Ega29sb20gc3RhbmRhciBkaXRhbXBpbGthbiBzZWJhZ2FpbWFuYSBkaWRlZmluaXNpa2FuIGRhbGFtIHBlbmdhdHVyYW4gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXRlbSBtYW5hIHlhbmcgdGVyc2VkaWEgdW50dWsgXCdUaW5kYWthblwnIGRpIHRpbmdrYXQga2V0aWdhIGRhcmkgc3RydWt0dXIgQUNMIEl0ZW0gS29uZmlndXJhc2kgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBpdGVtIG1hbmEgeWFuZyB0ZXJzZWRpYSBkaSB0aW5na2F0IHBlcnRhbWEgc3RydWt0dXIgQUNMIEl0ZW0gS29uZmlndXJhc2kgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXRlbSBtYW5hIHlhbmcgdGVyc2VkaWEgZGkgdGluZ2thdCBrZWR1YSBkYXJpIHN0cnVrdHVyIEFDTCBJdGVtIEtvbmZpZ3VyYXNpIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGplbmlzIHRhdXRhbiBtYW5hIChkaW5hbWFpIGRhcmkgcGVyc3Bla3RpZiB0aWtldCkgeWFuZyBkYXBhdCBtZW1lbmdhcnVoaSBzdGF0dXMgQ0kgeWFuZyBkaXRhdXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gamVuaXMgdGlrZXQgbWFuYSB5YW5nIGRhcGF0IG1lbWVuZ2FydWhpIHN0YXR1cyBDSSB5YW5nIGRpdGF1dGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdQZW1iYXJ1YW4gRGVmaW5pc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ01lbmdoYXB1cyBJdGVtIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnV2FybmEgU3RhdHVzIFBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgcGVyaXN0aXdhIGJpZGFuZyBkaW5hbWlzIHlhbmcgbWVuYW5kYWkgZGVmaW5pc2kgaXRlbSBrb25maWd1cmFzaSBzZWJhZ2FpIHRpZGFrIHNpbmtyb24sIGppa2EgbWVuZ2FuZHVuZyBwZXJ1YmFoYW4gYmlkYW5nIGRpbmFtaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGxheWFyIGJpZGFuZyBJVFNNIHRhbWJhaGFuIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgbGF5YXIgaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpZGFuZyBkaW5hbWlzIHlhbmcgZGl0YW1waWxrYW4gZGkgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIGl0ZW0ga29uZmlndXJhc2kgdGluZGFrYW4gbWFzc2FsIHVudHVrIGFnZW4gZnJvbnRlbmQgdW50dWsgYmVrZXJqYSBwYWRhIGxlYmloIGRhcmkgc2F0dSBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgc3VhdHUgd2FrdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgdGluZGFrYW4gbWFzc2FsIGl0ZW0ga29uZmlndXJhc2kgaGFueWEgdW50dWsga2Vsb21wb2sgdGVyZGFmdGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBwZXJpc3Rpd2EgdW50dWsgbWVuZ2F0dXIgc3RhdHVzIGtvbmZpZ3VyYXNpIHBhZGEgdGF1dGFuIGtvbmZpZ3VyYXNpIHRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdCaWRhbmcgaW5kZWtzIGl0ZW0ga29uZmlndXJhc2ksIGRpZ3VuYWthbiB1bnR1ayBwZW5jYXJpYW4gdGVrcyBsZW5na2FwLiBCaWRhbmcganVnYSBkaXNpbXBhbiwgdGV0YXBpIHRpZGFrIHdhamliIHVudHVrIGZ1bmdzaW9uYWxpdGFzIGtlc2VsdXJ1aGFuLiBQZW55ZXJ0YWFuIGxhbXBpcmFuIGRhcGF0IGRpbm9uYWt0aWZrYW4gZGVuZ2FuIG1lbmdhdHVyIGVudHJpIGtlIDAgYXRhdSBtZW5naGFwdXNueWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdCaWRhbmcgeWFuZyBkaXNpbXBhbiBkYWxhbSBpbmRla3MgaXRlbSBrb25maWd1cmFzaSB5YW5nIGRpZ3VuYWthbiB1bnR1ayBoYWwtaGFsIGxhaW4gc2VsYWluIHBlbmNhcmlhbiB0ZWtzIGxlbmdrYXAuIFVudHVrIGZ1bmdzaW9uYWxpdGFzIHlhbmcgbGVuZ2thcCwgc2VtdWEgYmlkYW5nIHdhamliIGRpaXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhc2kgbW9kdWwgR2VuZXJpY0ludGVyZmFjZSB1bnR1ayBsYXBpc2FuIHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFzaSBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVtYW5nZ2lsIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFzaSBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVtYW5nZ2lsIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSXRlbSBLb25maWd1cmFzaSBJVFNNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1N0YXR1c0luc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rlcm1hc3VrIHN0YXR1cyBwZW5lcmFwYW4gZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZXJtYXN1ayBzdGF0dXMgaW5zaWRlbiBkYWxhbSBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0p1bWxhaCBtYWtzaW11bSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkYWxhbSBoYXNpbCBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB1bnR1ayBtZW1lcmlrc2Ega2Vsb21wb2sgeWFuZyBiZXJ0YW5nZ3VuZyBqYXdhYiB1bnR1ayBrZWxhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW1lcmlrc2Ega2Vsb21wb2sgeWFuZyBiZXJ0YW5nZ3VuZyBqYXdhYiB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHVudHVrIG1lbmdoYXNpbGthbiBzdGF0aXN0aWsgY29uZmlnIGJhcmFuZyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ01vZHVsIE5hbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ01vZHVsIEFuZ2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBzZXRpYXAgaGFsYW1hbiBoYXNpbCBwZW5jYXJpYW4gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBzZXRpYXAgaGFsYW1hbiBoYXNpbCBwZW5jYXJpYW4gZGkgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWsgeWFuZyBha2FuIGRpY2FyaSwgYmVyYXBhIGJhbnlhayBlbnRyaSBkYW4gYXRyaWJ1dCBtYW5hIHlhbmcgYWthbiBkaXRhbXBpbGthbi4gQXRyaWJ1dCBDb25maWdJdGVtIGhhcnVzIHNlY2FyYSBla3NwbGlzaXQgZGlzaW1wYW4gbWVsYWx1aSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdHYW1iYXJhbiB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGthdGVnb3JpIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGkgdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgZmlsdGVyIGtvbG9tIHBhZGEgaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBrZWNpbC4gSGFyYXAgZGlwZXJoYXRpa2FuOiBtZW5nYXR1ciBcJ0FjdGl2ZVwnIGtlIDAgaGFueWEgYWthbiBtZW5jZWdhaCBhZ2VuIG1lbmdlZGl0IHBlbmdhdHVyYW4gZ3J1cCBpbmkgZGFsYW0gcHJlZmVyZW5zaSBwcmliYWRpIG1lcmVrYSwgdGV0YXBpIG1hc2loIG1lbXVuZ2tpbmthbiBhZG1pbmlzdHJhdG9yIHVudHVrIG1lbmdlZGl0IHBlbmdhdHVyYW4gYXRhcyBuYW1hIHBlbmdndW5hIGxhaW4uIEd1bmFrYW4gXCdQcmVmZXJlbmNlR3JvdXBcJyB1bnR1ayBtZW5nb250cm9sIGRpIGFyZWEgbWFuYSBwZW5nYXR1cmFuIGluaSBoYXJ1cyBkaXRhbXBpbGthbiBkaSBhbnRhcm11a2EgcGVuZ2d1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIHdhcm5hIHN0YXRlIHBlbnllYmFyYW4gZGFsYW0gcHJlZmVyZW5zaSBtZWxpaGF0IGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBzdGF0ZSBwZW55ZWJhcmFuIGRhbGFtIHByZWZlcmVuc2kgbWVsaWhhdCBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGdydXAgY29ub3RoIHBlcml6aW5hbiBkYXJpIGF0cmlidXQga2F0YWxvZyB1bXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIG5hbWEgdW50dWsga2VsYXMgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiBwcmVmZXJlbnNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIG5vbW9yIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpIG1hbmEgaXRlbSBrb25maWd1cmFzaSBha2FuIGRpdGFtcGlsa2FuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIHN0cmluZyB2ZXJzaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIHRvb2xraXQgdGVtcGxhdGUgc3RyaW5nIHZlcnNpIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGkgdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIHBlbWljdSB2ZXJzaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cCBJemluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gdGluZGFrYW4gbGFtcGlyYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBJVFNNIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIGtvbmZpZ3VyYXNpIElUU00gbGF5YXIgcGVuY2FyaWFuIGl0ZW0gZGFsYW0gYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkaSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIGxheWFyIHRhbXBpbGFuIHBvaG9uIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4ga29uZmlndXJhc2kgSVRTTSBpdGVtIGxheWFyIHpvb20gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gYWRkIElUU00gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBkYWxhbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1hc3NhbCBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbWVuZ2VkaXQgSVRTTSBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBzZWphcmFoIElUU00gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBkYWxhbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0l6aW4gWWFuZyBkaXBlcmx1a2FuIHVudHVrIHJldmlldyB1c2luZyBTZWphcmFoIElUU00gTGF5YXIgSXRlbSBLb25maWd1cmFzaSBBbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ0hhayBpc3RpbWV3YSB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2hhcHVzIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnTWVuY2FyaSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnTWVuZ2F0dXIgc3RhdHVzIGluc2lkZW4gQ0kgc2VjYXJhIG90b21hdGlzIGtldGlrYSBUaWtldCBkaXRhdXRrYW4ga2UgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXR1ciBzdGF0dXMgcGVueWViYXJhbiBkaSBpdGVtIGtvbmZpZ3VyYXNpIGxheWFyIHRlcmJlc2FyIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F0dXIgc3RhdHVzIGtlamFkaWFuIHBhZGEgaXRlbSBrb25maWd1cmFzaSBsYXlhciB0ZXJiZXNhciBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB5YW5nIG1lbXVuZ2tpbmthbiBtZW5naHVidW5na2FuIGl0ZW0ga29uZmlndXJhc2kgZGVuZ2FuIG9iamVrIGxhaW4gZGkgY29uZmlnIGJhcmFuZyBwYW5kYW5nYW4gem9vbSBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgaXRlbSBrb25maWd1cmFzaSBnYW1iYXJhbiBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2Frc2VzIHNlamFyYWggaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiB6b29tLW55YSBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmFtcGlsa2FuIHRhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmdoYXB1cyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20gYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNZW5hbXBpbGthbiB0YXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW5hbXBpbGthbiB0YXV0YW4gaXRlbSBrb25maWd1cmFzaSBzZWJhZ2FpIFRhbXBpbGFuIFBvaG9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5kdXBsaWthc2kgaXRlbSBrb25maWd1cmFzaSBwYWRhIGl0ZW0ga29uZmlndXJhc2kgZ2FtYmFyYW4gZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmR1cGxpa2FzaSBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2VkaXQgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiB6b29tLW55YSBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuY2V0YWsgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiB6b29tLW55YSBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBzZWphcmFoIGNvbmZpZyBpdGVtICh1cnV0YW4gdGVyYmFsaWspIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdLYXRlZ29yaSBkZWZhdWx0IHlhbmcgZGl0YW1waWxrYW4sIGppa2EgdGlkYWsgYWRhIHlhbmcgZGlwaWxpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1BlbmdlbmFsIHVudHVrIGl0ZW0ga29uZmlndXJhc2ksIG1pc2FsbnlhIENvbmZpZ0l0ZW0gIywgTXlDb25maWcgSXRlbSAjLiBkZWZhdWx0IGFkYWxhaCBDb25maWdJdGVtICMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdNZW1pY3UgcGVtYW5nZ2lsIENvbmZpZ0l0ZW1GZXRjaCBzZWNhcmEgb3RvbWF0aXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0Vrc3ByZXNpIFN0cmluZyBWZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNb2R1bCBTdHJpbmcgVmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnUGVtaWN1IFZlcnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdBcGFrYWggZWtzZWt1c2kgQ29uZmlnSXRlbUFDTCBkYXBhdCBkaWhpbmRhcmkgZGVuZ2FuIG1lbWVyaWtzYSBrZXRlcmdhbnR1bmdhbiBiaWRhbmcgeWFuZyBkaS1jYWNoZS4gSGFsIGluaSBkYXBhdCBtZW5pbmdrYXRrYW4gd2FrdHUgcGVtdWF0YW4gZm9ybXVsYXIsIHRldGFwaSBoYXJ1cyBkaW5vbmFrdGlma2FuLCBqaWthIEFDTE1vZHVsZXMgYWthbiBkaWd1bmFrYW4gdW50dWsgSVRTTUNvbmZpZ0l0ZW0gZGFuIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdJbmZvcm1hc2kgdW11bSBtYW5hIHlhbmcgZGl0YW1waWxrYW4gZGkgaGVhZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bhc2NhcHJvZHVrdGlmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmFwcm9kdWt0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3RpZic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBpbmNpICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgaW5jaSAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IGluY2kgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgaW5jaSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhayAxOSBpbmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBpbmNpICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IGluY2kgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ1JhayAyMSBpbmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBpbmNpICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnUmFrIDIzIGluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGluY2kgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGluY2kgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGluY2kgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBpbmNpICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGluY2kgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGluY2kgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IGluY2kgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGluY2kgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGluY2kgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBpbmNpICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgaW5jaSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IGluY2kgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IGluY2kgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgaW5jaSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBpbmNpICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgaW5jaSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGluY2kgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBpbmNpICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBpbmNpICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBpbmNpICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGluY2kgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgaW5jaSAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBpbmNpICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdBa3VudGFuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBbG9rYXNpIEFsYW1hdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlcG9uIEFuYWxvZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0plbmlzIEFsYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhc2l0YXMgQmF0ZXJhaSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0plbmlzIEJhdGVyYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdNZW1iYW5ndW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0FudGFybXVrYSBCdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdLZWxhcyBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFzaXRhcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYXNpdGFzIHBlciBrYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOb21vciBLYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ1BlbWJhY2EgS2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnSmVuaXMgS2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ1NlcnRpZmlrYXQgS2xpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnUGVyYW5na2F0IEx1bmFrIEtsaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpIGtsaWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnS2VjZXBhdGFuIGphbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnU2VydGlmaWthdCBQZW5hbmRhdGFuZ2FuYW4gS29kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZXBvbiBLb25mZXJlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBLb25zdWx0YXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0h1YnVuZ2kgRGlzdHJpYnV0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gS29udGFpbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnS29udHJhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnSmVuaXMgS29udHJhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0phbmdrYSB3YWt0dSBrb250cmFrIGRhcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnSmFuZ2thIHdha3R1IGtvbnRyYWsgc2FtcGFpIGRlbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWxlcG9uIFRhbnBhIEthYmVsIChUZWxlcG9uIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaXQgYmlheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdKdW1sYWggbGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnVGFuZ2dhbCBQZW1idWF0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1JhayBLaHVzdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgRGljYWRhbmdrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZlciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ1RhbmdnYWwgRmFrdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdUYW5nZ2FsIFBlbWVzYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnVGFuZ2dhbCBXYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdUYW5nZ2FsIHJpbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdTZXJ0aWZpa2F0IFBlbmFuZGF0YW5nYW5hbiBEb2t1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ1NlcnRpZmlrYXQgRW1haWwgKFNlcnRpZmlrYXQgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdLb250cmFrIEtlcmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnQWxhbWF0IElQIEFraGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnQWtoaXIgZHVrdW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdUYW5nZ2FsIEtlZGFsdXdhcnNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdIYXJkIERyaXZlIEVrc3Rlcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdQZW55aW1wYW5hbiBFbmVyZ2kgUm9kYSBHaWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFrdG9yIEJlbnR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBXYXJhbGFiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBVbXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnS2FydHUgR3JhZmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdLYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdQZXJhbmdrYXQga2VyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBQZXJhbmdrYXQgS2VyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnQmVyYXQgUGVyYW5na2F0IEtlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnTWFuYWplbWVuIElkZW50aXRhcyBkYW4gQWtzZXMgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ05vbW9yIFBlcnNlZGlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ05vbW9yIEZha3R1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tleWJvYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChMYXlhciBLcmlzdGFsIENhaXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVwb24gcnVtYWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGludGFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xhcGlzYW4gMTogTGFwaXNhbiBGaXNpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYXBpc2FuIDI6IExhcGlzYW4gVGF1dGFuIERhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhcGlzYW4gMzogTGFwaXNhbiBKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYXBpc2FuIDM6IExhcGlzYW4gSmFyaW5nYW4gKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYXBpc2FuIDQ6IExhcGlzYW4gVHJhbnNwb3J0YXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYXBpc2FuIDU6IExhcGlzYW4gU2VzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMYXBpc2FuIDY6IExhcGlzYW4gUHJlc2VudGFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhcGlzYW4gNzogTGFwaXNhbiBBcGxpa2FzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIFNld2EgTWVueWV3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ1BlcmphbmppYW4gTGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnS3VuY2kgTGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdKZW5pcyBMaXNlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQZXJpb2RlIGxpc2Vuc2kgZGFyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ01hc2EgYmVybGFrdSBsaXNlbnNpIHNhbXBhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXJhaSBMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXJhaSBMaXRoaXVtLUlvbiAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ1BlcmphbmppYW4gUGluamFtYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0Jlcmxva2FzaSBkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdCdWp1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2R1c2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdLYXBhc2l0YXMgQmViYW4gTWFrc2ltdW0gKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ0plbmlzIE1lbW9yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnUmFrIE1pbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ05vbW9yIHBvbnNlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdTZWx1bGVyIC8gVGVydGFuYW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2tyaXBzaSBNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHVzaSBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1VrdXJhbiBNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ0phcmluZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm8gSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTGFwaXNhbiBKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyYWkgTmlrZWwtS2FkbWl1bSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXRlcmFpIE5pa2VsLUxvZ2FtIEhpZHJpZGEgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1BlcmphbmppYW4gS2VyYWhhc2lhYW4gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdCdWt1IGNhdGF0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdKdW1sYWggQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0p1bWxhaCBtb2R1bCBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnSnVtbGFoIGthcnR1IGdyYWZpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChEaW9kYSBQZW1hbmNhciBDYWhheWEgT3JnYW5payknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQmlheWEgb3BlcmFzaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTm9tb3IgUGVzYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0xhaW4tbGFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnS2VsdWFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBLZW1pdHJhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOb21vciBUZWxlcG9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdKZW5pcyBUZWxlcG9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnSW50aSBGaXNpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1BlbmdpcmltYW4gRGF5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0RpYmVsaSBkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnS2VkYWxhbWFuIFJhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaXQgUmFrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUnVhbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0thcnR1IFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NlcnRpZmlrYXQgU1NMIC8gVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnS29udHJhayBQZW5qdWFsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZXBvbiBTYXRlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyYWkgQXNhbSBUaW1iYWwgVGVyc2VnZWwgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOb21vciBzZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1BlcmFuZ2thdCBMdW5hayBTZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIExheWFuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdUYWcgTGF5YW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdKZW5pcyBTb2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1BlcmFuZ2thdCBsdW5hayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1BlbWJpY2FyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdNdWxhaSBBbGFtYXQgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1BlbnlpbXBhbmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGlzaSBQZW55aW1wYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0FuYWsgUGVydXNhaGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUmluZ2thc2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnS2xpZW4gVGlwaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0JlbmFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1BldGlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0ga2FydHUgZ3JhZmlzIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBMYXlhciBTZW50dWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdNZW5hcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdIZWFkc2V0IFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVwb24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnS2FtZXJhIHdlYic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/it_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRpIGdlbmVyYWxpIGRpIGZ1bnppb25hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0ltcG9zdGF6aW9uaSBwZXIgaSBkYXRpIGRpIHJpY2hpZXN0YSBpbiBlbnRyYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSW1wb3N0YXppb25pIHBlciBpIGRhdGkgZGkgcmlzcG9zdGEgaW4gdXNjaXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbmUgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdNb2RpZmljYSBsYSBkZWZpbml6aW9uZSBkZWxsYSBjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhIGRlbGxhIGRlZmluaXppb25lIGRlbCBydW9sbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhY2NoZXR0aSBkaSBjbGFzc2kgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnUXVpIMOoIHBvc3NpYmlsZSBpbXBvcnRhcmUgaSBwYWNjaGV0dGkgZGkgY2xhc3NpIFJlYWR5MkltcG9ydCwgY2hlIHByZXNlbnRhbm8gZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHBpw7kgY29tdW5pLiBTaSBub3RpIGNoZSBwb3RyZWJiZXJvIGVzc2VyZSBuZWNlc3NhcmllIGFsY3VuZSBjb25maWd1cmF6aW9uaSBhZ2dpdW50aXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBZ2dpb3JuYXJlIGxlIGVudGl0w6AgZXNpc3RlbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXJlIGkgYnVuZGxlIGRlbGxhIGNsYXNzZSBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgVm9jZSBSdW9sbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGVyIGNsYXNzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlemlvbmFyZSB1bmEgY2xhc3NlIGRhbGxcJ2VsZW5jbyBwZXIgY3JlYXJlIHVuIG51b3ZvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0F6aW9uZSBpbiBibG9jY28gZGkgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF0byBkaSBkaXN0cmlidXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0NvbGxlZ2EgYSB1biBhbHRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtZXJvIGFydGljb2xvIGRpIGNvbmZpZ3VyYXppb25lIG5vbiB2YWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0lsIG51bWVybyBkaSB1biBhbHRybyBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gY3VpIGNvbGxlZ2Fyc2kuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVnVvaSBkYXZ2ZXJvIGVsaW1pbmFyZSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0lsIG5vbWUgZGkgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdJbCBub21lIMOoIGdpw6AgaW4gdXNvIGRhIENvbmZpZ0l0ZW1zIGNvbiBpIHNlZ3VlbnRlL2kgbnVtZXIobylpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ051bWVybyBkaSB2ZXJzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTnVtZXJvIGRpIHZlcnNpb25lIGRpIHF1ZXN0byBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0lsIG51bWVybyBkaSB2ZXJzaW9uZSDDqCBnacOgIHV0aWxpenphdG8gZGFpIENvbmZpZ0l0ZW0gY29uIGlsIHNlZ3VlbnRlIG51bWVybzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXRvIGRpIGltcGxlbWVudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1N0YXRvIGRlbGxcJ2luY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnU3RvcmlhIGRlbGxhIHZvY2UgZGkgY29uZmlndXJhemlvbmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbnV0byBkZWxsbyBzdG9yaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdJc3RhbnRlIGRpIGNyZWF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSBkaSBEZXR0YWdsaW8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnLiBhcnRpY29saSBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZXNzdW4gZGF0byBkaSBjb25maWd1cmF6aW9uZSB0cm92YXRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGV6aW9uYXJlIHF1ZXN0YSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRXNlZ3VpIHJpY2VyY2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdWaXN1YWxpenphemlvbmUgYWQgYWxiZXJvIHBlciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTGl2ZWxsbyBkaSBwcm9mb25kaXTDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1pvb20gYXZhbnRpL2luZGlldHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0xpdmVsbG8gbWFzc2ltbyBkaSBjb2xsZWdhbWVudGkgcmFnZ2l1bnRvIHBlciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBzdWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0byBhdHR1YWxlIGRpIGltcGxlbWVudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnU3RhdG8gYXR0dWFsZSBkZWxsXCdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVWx0aW1hIG1vZGlmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1VsdGltYSBtb2RpZmljYSBkaSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0kgdm9zdHJpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1JpY2VyY2EgZGkgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1ZlcnJhbm5vIGltcG9ydGF0ZSBsZSBzZWd1ZW50aSBjbGFzc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVmVycmFubm8gaW1wb3J0YXRpIGkgc2VndWVudGkgcnVvbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnU2kgbm90aSBjaGUgdmVycmFubm8gY3JlYXRpIGFuY2hlIGkgY2FtcGkgZGluYW1pY2kgZSBsZSBjbGFzc2kgR2VuZXJhbENhdGFsb2cgY29ycmlzcG9uZGVudGkgZSBub24gw6ggcHJldmlzdGEgbGEgcmltb3ppb25lIGF1dG9tYXRpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVnVvaSBjb250aW51YXJlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdTZXJ2b25vIGNsYXNzaSBkaSBlc2VtcGlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbml6aW9uZSBub24gw6ggdW4gaGFzaCBZQU1MIHZhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQYW5vcmFtaWNhOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm9uIHZpZW5lIGZvcm5pdG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8OIIG5lY2Vzc2FyaW8gYWxtZW5vIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vbiBoYWkgYWNjZXNzbyBpbiBzY3JpdHR1cmEgYSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOZXNzdW5hIGRlZmluaXppb25lIMOoIHN0YXRhIGRlZmluaXRhIHBlciBsYSBjbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdWb2NlIGRpIGNvbmZpZ3VyYXppb25lICIlcyIgbm9uIHRyb3ZhdGEgbmVsIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0ltcG9zc2liaWxlIGVsaW1pbmFyZSBsXCdJRCBkaSBjb25maWd1cmF6aW9uZSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05lc3N1bmEgdmVyc2lvbmUgdHJvdmF0YSBwZXIgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05lc3N1biBhY2Nlc3NvIMOoIGNvbmNlc3NvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbXBvc3NpYmlsZSBtb3N0cmFyZSBsYSBjcm9ub2xvZ2lhLCBub24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJpbGUgbW9zdHJhcmUgbGEgY3Jvbm9sb2dpYSwgbmVzc3VuIGRpcml0dG8gZGkgYWNjZXNzbyBjb25jZXNzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ051b3ZvIENvbmZpZ0l0ZW0gKElEID0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ051b3ZhIHZlcnNpb25lIChJRCA9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdG8gZGkgZGlzdHJpYnV6aW9uZSBhZ2dpb3JuYXRvIChudW92bz0lcywgdmVjY2hpbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZWxpbWluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0NvbGxlZ2FtZW50byBhICVzICh0aXBvPSVzKSBhZ2dpdW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnQ29sbGVnYW1lbnRvIGEgJXMgKHRpcG89JXMpIGVsaW1pbmF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pemlvbmUgZGkgQ29uZmlnSXRlbSBhZ2dpb3JuYXRhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0byAlcyBhZ2dpb3JuYXRvIGRhICIlcyIgYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb25lICVzIGVsaW1pbmF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBuZXNzdW4gZGlyaXR0byBkaSBhY2Nlc3NvIGNvbmNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBub24gdHJvdmF0byBuZWwgZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdzdGFtcGF0byBkYSAlcyBhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSaWZlcmltZW50byc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgbm9uIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZXNzdW4gQ2xhc3NJRCDDqCBkYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05lc3N1biBkaXJpdHRvIGRpIGFjY2Vzc28gcGVyIHF1ZXN0YSBjbGFzc2UgZGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lc3N1biByaXN1bHRhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlndXJhIGkgcmlzdWx0YXRpIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvLCBub24gdmllbmUgY29uY2Vzc28gYWxjdW4gZGlyaXR0byBkaSBhY2Nlc3NvIHBlciBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5vbiB0cm92YXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOZXNzdW5hIHZlcnNpb25lIHRyb3ZhdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdnZlcnRpbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xvIHN0YXRvIGRpIGltcGxlbWVudGF6aW9uZSBkaSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMbyBzdGF0byBkaSBpbmNpZGVudGUgZGkgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmVzc3VuIHBlcm1lc3NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRybyBub24gdmFsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyYW1ldHJpIGRpIHJpY2VyY2Egbm9uIHZhbGlkaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBtb3N0cmF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRpIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBkaSBzdGF0byBkZWxsXCdpbmNpZGVudGUgY29ycmVudGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnZnJhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cml6aW9uaSBkaSBjbGFzc2UgcGVyIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlemlvbmFyZSB1bmEgbyBwacO5IGNsYXNzaSBwZXIgbGltaXRhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYWJpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaXppb25pIGRpIGNsYXNzZSBwZXIgbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlemlvbmFyZSB1bmEgbyBwacO5IGNsYXNzaSBwZXIgbGltaXRhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYWJpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpY2EgKHZlcnNpb25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRpIHJpZmVyaW1lbnRvIGRlbCBjb2xsZWdhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2UgcXVlc3RvIGNvbGxlZ2FtZW50byBzaSBhcHBsaWNhIGFsIENvbmZpZ0l0ZW0gbyBhbGxhIHZlcnNpb25lIHN0YXRpY2EgZGVsbFwnb2dnZXR0byBkaSByaWZlcmltZW50by4gSWwgY2FsY29sbyBkZWxsbyBTdGF0byBjb3JyZW50ZSBkZWxsXCdpbmNpZGVudGUgdmllbmUgZXNlZ3VpdG8gc29sbyBzdWkgY29sbGVnYW1lbnRpIGRpbmFtaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGV6aW9uYXJlIGxcJ2F0dHJpYnV0byBpbiBiYXNlIGFsIHF1YWxlIGdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSB2ZXJyYW5ubyByaWNlcmNhdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIHN0cnV0dHVyYSBkaSBiYXNlIG5vbiDDqCB2YWxpZGEuIEZvcm5pcmUgdW4gaGFzaCBjb24gaSBkYXRpIGluIGZvcm1hdG8gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfDiCBuZWNlc3NhcmlvIGluaXppYXJlIGxhIHN0cmluZ2EgWUFNTCBjb24gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnSW1wb3NzaWJpbGUgZWxpbWluYXJlIGxhIHRhYmVsbGEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm9uIHNvbm8gc3RhdGkgdHJvdmF0aSBjYW1waSBkaW5hbWljaSByaWxldmFudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbXBvc3NpYmlsZSBpbnNlcmlyZSBuZWxsYSB0YWJlbGxhIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zZXJpdGUgMCByaWdoZSBuZWxsYSB0YWJlbGxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOdW1lcm8gbWFzc2ltbyBkaSB1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uZSBTdHJpbmdhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yZSBuZWxsYSBzaW5jcm9uaXp6YXppb25lIGRlbGxlIGRlZmluaXppb25pLiBDb250cm9sbGFyZSBpbCByZWdpc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdMZSBkZWZpbml6aW9uaSBkaSBJVFNNQ29uZmlnSXRlbSBub24gc29ubyBzaW5jcm9uaXp6YXRlLiBEaXN0cmlidWlyZSBsZSBtb2RpZmljaGUgYWkgY2FtcGkgZGluYW1pY2kgZGkgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdTY2FkdXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudXRlbnppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BpYW5pZmljYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JpcGFyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSaXRpcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc2lvbmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdCc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUGFub3JhbWljYSBlIGNvbmZlcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGF6aW9uZSBkaSBjbGFzc2kvcnVvbGkgZSBkZWkgcmVsYXRpdmkgY2FtcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdTaSDDqCB2ZXJpZmljYXRvIHVuIGVycm9yZSBkdXJhbnRlIGxcJ2ltcG9ydGF6aW9uZSBkZWxsYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBOYXNjb3N0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9zdHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0NvbnNlbnRlIGNvbmRpemlvbmkgZGkgcmljZXJjYSBlc3Rlc2UgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuIENvbiBxdWVzdGEgZnVuemlvbmUgw6ggcG9zc2liaWxlIGNlcmNhcmUsIGFkIGVzZW1waW8sIGlsIG5vbWUgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgY29uIGNvbmRpemlvbmkgZGVsIHRpcG8gIigqa2V5MSomJiprZXkyKikiIG8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdDb25zZW50ZSBjb25kaXppb25pIGRpIHJpY2VyY2EgZXN0ZXNlIG5lbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4gQ29uIHF1ZXN0YSBmdW56aW9uZSDDqCBwb3NzaWJpbGUgY2VyY2FyZSwgYWQgZXNlbXBpbywgaWwgbm9tZSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gY29uZGl6aW9uaSBkZWwgdGlwbyAiKCprZXkxKiYmKmtleTIqKSIgbyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0NJcyBhc3NlZ25hdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lzIGFzc2VnbmF0aSBhbGxhIHNvY2lldMOgIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNzZWduYXRpIGFsbFwndXRlbnphIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0ltcG9zdGF6aW9uaSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDZXJjYSB1biBub21lIHVuaXZvY28gc29sbyBhbGxcJ2ludGVybm8gZGVsbGEgc3Rlc3NhIGNsYXNzZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBpbCBjaGUgc2lnbmlmaWNhIGNoZSBvZ25pIENvbmZpZ0l0ZW0gZXNpc3RlbnRlIHZpZW5lIHByZXNvIGluIGNvbnNpZGVyYXppb25lIHF1YW5kbyBzaSBjZXJjYW5vIGR1cGxpY2F0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1NjZWdsaWVyZSB1biBtb2R1bG8gcGVyIGFwcGxpY2FyZSB1bm8gc2NoZW1hIGRpIGRlbm9taW5hemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdTY2VnbGllcmUgdW4gbW9kdWxvIHBlciBhcHBsaWNhcmUgdW5vIHNjaGVtYSBudW1lcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnU2NlZ2xpZXJlIHVuIG1vZHVsbyBwZXIgYXBwbGljYXJlIHVubyBzY2hlbWEgZGkgc3RyaW5naGUgZGkgdmVyc2lvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU2NlZ2xpZXJlIGdsaSBhdHRyaWJ1dGkgcGVyIGF0dGl2YXJlIGxhIGNyZWF6aW9uZSBkaSB1bmEgbnVvdmEgdmVyc2lvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1NjZWdsaWVyZSBsZSBjYXRlZ29yaWUgZGEgYXNzZWduYXJlIGEgcXVlc3RhIGNsYXNzZSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmkgcGVyIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsYSBjb2xvbm5hIHBlciBsYSBwYW5vcmFtaWNhIGRpIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2xvbm5lIGNoZSBwb3Nzb25vIGVzc2VyZSBmaWx0cmF0ZSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4gTm90YTogU29ubyBhbW1lc3NpIHNvbG8gZ2xpIGF0dHJpYnV0aSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBlIGkgY2FtcGkgZGluYW1pY2kgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZ2dpdW5naSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdNb2RpZmljYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRpIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGNoZSBjb25zZW50ZSBsYSByZWdpc3RyYXppb25lIG5lbGxhIGNyb25vbG9naWEgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgY2hlIGFnZ2lvcm5hIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBhbGxhIGxvcm8gZGVmaW5pemlvbmUgY29ycmVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlndXJhIGNyb25vbG9naWEgYXJ0aWNvbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1N0YW1wYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmEgbG8gem9vbSBkZWxsXCdvZ2dldHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGFkIGFsYmVybyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnSSBDb25maWdJdGVtIGRlbGxlIHNlZ3VlbnRpIGNsYXNzaSBub24gc2FyYW5ubyBtZW1vcml6emF0aSBzdWwgc2VydmVyIEVsYXN0aWNzZWFyY2guIFBlciBhcHBsaWNhcmUgcXVlc3RvIGFpIENJIGVzaXN0ZW50aSwgw6ggbmVjZXNzYXJpbyBlc2VndWlyZSBsYSBtaWdyYXppb25lIGRlbCBDSSB0cmFtaXRlIGxhIGNvbnNvbGUsIGRvcG8gYXZlciBtb2RpZmljYXRvIHF1ZXN0YSBvcHppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdJIENvbmZpZ0l0ZW0gY29uIGkgc2VndWVudGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBub24gc2FyYW5ubyBtZW1vcml6emF0aSBzdWwgc2VydmVyIEVsYXN0aWNzZWFyY2guIFBlciBhcHBsaWNhcmUgcXVlc3RvIGFpIENJIGVzaXN0ZW50aSwgw6ggbmVjZXNzYXJpbyBlc2VndWlyZSBsYSBtaWdyYXppb25lIGRlbCBDSSB0cmFtaXRlIGxhIGNvbnNvbGUsIGRvcG8gYXZlciBtb2RpZmljYXRvIHF1ZXN0YSBvcHppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgcGFnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhc2UgZGkgZ2VzdGlvbmUgZGVsbGEgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bG8gZGkgbWFzc2EgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZvY2UgZGkgY29uZmlndXJhemlvbmUgcmljZXJjYSByb3V0ZXIgYmFja2VuZCBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhIGUgZ2VzdGlzY2kgbGUgZGVmaW5pemlvbmkgcGVyIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhIGJpZ2xpZXR0aSBwZXIgaSBDb25maWdJdGVtIGluIG1vbWVudGkgc3BlY2lmaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdJIGNsaWVudGkgcG9zc29ubyB2ZWRlcmUgbGUgdmVyc2lvbmkgc3RvcmljaGUgZGVpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdJIGNsaWVudGkgaGFubm8gbGEgcG9zc2liaWxpdMOgIGRpIHBhc3NhcmUgbWFudWFsbWVudGUgdHJhIGxlIHZlcnNpb25pIHN0b3JpY2hlIGRpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdGkgcHJlZGVmaW5pdGkgZGEgdXNhcmUgbmVsbFwnYXR0cmlidXRvIHBlciBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4gRXNlbXBpbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PWFubm87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD11bHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGkgcHJlZGVmaW5pdGkgZGEgdXNhcmUgbmVsbFwnYXR0cmlidXRvIHBlciBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4gRXNlbXBpbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXJlIGxlIGF6aW9uaSBpbiBjdWkgw6ggZGlzcG9uaWJpbGUgdW4gcHVsc2FudGUgZGkgaW1wb3N0YXppb25lIG5lbCB3aWRnZXQgZGVnbGkgb2dnZXR0aSBjb2xsZWdhdGkgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gU2kgbm90aSBjaGUgcXVlc3RlIGF6aW9uaSBkZXZvbm8gYXZlciByZWdpc3RyYXRvIGkgc2VndWVudGkgZmlsZSBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmlzY2UgdW5vIHNjaGVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwZXIgbGUgc3RyaW5naGUgZGkgdmVyc2lvbmUuIFV0aWxpenphdG8gc29sbyBzZSBpbCBtb2R1bG8gU3RyaW5nYSBkaSB2ZXJzaW9uZSDDqCBpbXBvc3RhdG8gc3UgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5pcmUgdW4gaW5zaWVtZSBkaSBjb25kaXppb25pIGluIGJhc2UgYWxsZSBxdWFsaSB1biBjbGllbnRlIHB1w7IgdmVkZXJlIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lLiBMZSBjb25kaXppb25pIHBvc3Nvbm8gZXNzZXJlIGZhY29sdGF0aXZhbWVudGUgbGltaXRhdGUgYSBkZXRlcm1pbmF0aSBncnVwcGkgZGkgY2xpZW50aS4gSWwgbm9tZSDDqCBsXCd1bmljbyBhdHRyaWJ1dG8gb2JibGlnYXRvcmlvLiBTZSBub24gdmVuZ29ubyBmb3JuaXRlIGFsdHJlIG9wemlvbmksIHR1dHRpIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBzYXJhbm5vIHZpc2liaWxpIHNvdHRvIHF1ZWxsYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIGVsaW1pbmFyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSB1dGlsaXp6YW5kbyBsXCdpbnRlcmZhY2NpYSBnZW5lcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgb3R0ZW5lcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSB1dGlsaXp6YW5kbyBsXCdpbnRlcmZhY2NpYSBnZW5lcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBhdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciBpbXBvc3RhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSB1biBtb2R1bG8gZGkgcGFub3JhbWljYSBwZXIgbW9zdHJhcmUgbGEgdmlzdGEgcmlkb3R0YSBkaSB1biBlbGVuY28gZGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBzZSBsZSBldGljaGV0dGUgZGVsIHRpcG8gZGkgY29sbGVnYW1lbnRvIGRldm9ubyBlc3NlcmUgbW9zdHJhdGUgbmVsbGUgY29ubmVzc2lvbmkgZGVpIG5vZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgZXNwcmVzc2lvbmkgcmVnb2xhcmkgc2luZ29sYXJtZW50ZSBwZXIgY2lhc2N1bmEgY2xhc3NlIENvbmZpZ0l0ZW0gcGVyIGNvbnRyb2xsYXJlIGlsIG5vbWUgQ29uZmlnSXRlbSBlIG1vc3RyYXJlIGkgbWVzc2FnZ2kgZGkgZXJyb3JlIGNvcnJpc3BvbmRlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIGRpc3BvbmliaWxpIGRlaSBDSSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCBhIHNlY29uZGEgZGVsbGEgY2xhc3NlIGRlbCBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIGNvbXBvc3RhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZGEgdW4gYXJyYXkgZGkgY2FtcGkgZGlzcG9uaWJpbGkgcGVyIGxhIGNsYXNzZSBjb3JyaXNwb25kZW50ZS4gTGUgdm9jaSBkZWkgY2FtcGkgZGluYW1pY2kgZGV2b25vIHJpc3BldHRhcmUgbG8gc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIHByZWRlZmluaXRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciBsXCdvcmRpbmFtZW50byBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ2F0dHJpYnV0byBwcmVkZWZpbml0byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgbFwnb3JkaW5hbWVudG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ2F0dHJpYnV0byBwcmVkZWZpbml0byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgbFwnb3JkaW5hbWVudG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgZGVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGRpIHF1ZXN0YSBvcGVyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBwcmVkZWZpbml0byBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLiBTdTogaWwgcGnDuSB2ZWNjaGlvIGluIGNpbWEuIEdpw7k6IGxcJ3VsdGltbyBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBwcmVkZWZpbml0byBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4gU3U6IGlsIHBpw7kgdmVjY2hpbyBpbiBjaW1hLiBHacO5OiBpbCBwacO5IHJlY2VudGUgaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIHByZWRlZmluaXRlIGRlaSBDSSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCBhIHNlY29uZGEgZGVsbGEgY2xhc3NlIGRlbCBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIGNvbXBvc3RhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZGEgdW4gYXJyYXkgZGkgY2FtcGkgZGlzcG9uaWJpbGkgcGVyIGxhIGNsYXNzZSBjb3JyaXNwb25kZW50ZS4gTGUgdm9jaSBkZWkgY2FtcGkgZGluYW1pY2kgZGV2b25vIHJpc3BldHRhcmUgbG8gc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluaXNjZSBsYSBwcm9mb25kaXTDoCBwcmVkZWZpbml0YSBkZWxsZSByZWxhemlvbmkgZGEgbW9zdHJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gcHJlZGVmaW5pdG8gZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBwZXIgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIGRpIHJpY2VyY2EgcHJlZGVmaW5pdG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLiBFc2VtcGlvOiAiS2V5IiBkZXZlIGF2ZXJlIGlsIG5vbWUgZGVsIGNhbXBvIGRpbmFtaWNvLCBpbiBxdWVzdG8gY2FzbyBcJ1hcJywgIkNvbnRlbnQiIGRldmUgYXZlcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBkaW5hbWljbywgYSBzZWNvbmRhIGRlbCB0aXBvIGRpIGNhbXBvIGRpbmFtaWNvLCBUZXh0OiBcJ3VuIHRlc3RvXCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgZSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBzb3R0by1vZ2dldHRvIHByZWRlZmluaXRvIGRlbGxhIGNsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSBkaXNwb25pYmlsaSBkZWkgQ0kgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBkZWwgQ0kuIE9nbmkgdm9jZSBkZXZlIGVzc2VyZSBjb21wb3N0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGRhIHVuIGFycmF5IGRpIGNhbXBpIGRpc3BvbmliaWxpIHBlciBsYSBjbGFzc2UgY29ycmlzcG9uZGVudGUuIExlIHZvY2kgZGVpIGNhbXBpIGRpbmFtaWNpIGRldm9ubyByaXNwZXR0YXJlIGxvIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYWx0ZXp6YSBkZWwgY29tcG9uZW50ZSBkZWxsXCdlZGl0b3IgZGkgdGVzdG8gcmljY28gcGVyIHF1ZXN0YSBzY2hlcm1hdGEuIEluc2VyaXJlIHVuIG51bWVybyAocGl4ZWwpIG8gdW4gdmFsb3JlIHBlcmNlbnR1YWxlIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBudW1lcm8gZGkgcmlnaGUgcGVyIENJIGxcJ2VkaXRvciBkZWxsZSBkZWZpbml6aW9uaSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBuZWxsXCdpbnRlcmZhY2NpYSBkaSBhbW1pbmlzdHJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgZGVnbGkgc3RhdGkgZGVnbGkgaW5jaWRlbnRpIGRhIGFsdG8gKGVzLiBjcml0aWNvKSBhIGJhc3NvIChlcy4gZnVuemlvbmFsZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIHBlcnRpbmVudGkgaW4gY3VpIGkgdGlja2V0IGNvbGxlZ2F0aSBwb3Nzb25vIGluZmx1aXJlIHN1bGxvIHN0YXRvIGRpIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIGxpbWl0ZSBkaSByaWNlcmNhIHBlciBsYSBzY2hlcm1hdGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgaWwgbGltaXRlIGRpIHJpY2VyY2EgcGVyIGxhIHNjaGVybWF0YSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIGRpIHZpc3VhbGl6emF0ZSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBkaSBDSXMgbmVsbGEgdmlzdGEgY29tcGxlc3NhIGRlbGxhIHRhYmVsbGEgZGVpIGNvbGxlZ2FtZW50aSBwZXIgdHV0dGUgbGUgY2xhc3NpIENJLiBTZSBub24gw6ggcHJlc2VudGUgYWxjdW5hIHZvY2UsIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSB2aXN1YWxpenphdGUgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgbmVsbGEgdmlzdGEgY29tcGxlc3NhIGRlbGxhIHRhYmVsbGEgZGVpIGNvbGxlZ2FtZW50aSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIHByZWNlZHV0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGR1ZSBwdW50aSAoYWQgZXNlbXBpbyBDb21wdXRlcjo6KS4gRXNpc3Rvbm8gYWxjdW5pIGF0dHJpYnV0aSBDSSBjb211bmkgYSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5vbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUGVyIG1vc3RyYXJlIHNpbmdvbGkgYXR0cmlidXRpIENJIGNvbWUgZGVmaW5pdGkgbmVsbGEgZGVmaW5pemlvbmUgQ0ksIMOoIG5lY2Vzc2FyaW8gdXRpbGl6emFyZSBpbCBzZWd1ZW50ZSBzY2hlbWEgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBTZSBub24gw6ggcHJlc2VudGUgYWxjdW5hIHZvY2UgcGVyIHVuYSBjbGFzc2UgQ0ksIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxpIHZvY2kgc29ubyBkaXNwb25pYmlsaSBwZXIgbFwnIkF6aW9uZSIgbmVsIHRlcnpvIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsaSB2b2NpIHNvbm8gZGlzcG9uaWJpbGkgbmVsIHByaW1vIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGkgdm9jaSBzb25vIGRpc3BvbmliaWxpIG5lbCBzZWNvbmRvIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGUgdGlwbyBkaSBjb2xsZWdhbWVudG8gKGRlbm9taW5hdG8gZGFsbGEgcHJvc3BldHRpdmEgZGVsIHRpY2tldCkgcHXDsiBpbmZsdWlyZSBzdWxsbyBzdGF0byBkaSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZSBjb2xsZWdhdG8gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxlIHRpcG8gZGkgdGlja2V0IHB1w7IgaW5mbHVpcmUgc3VsbG8gc3RhdG8gZGkgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUgY29sbGVnYXRvIENJLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBZ2dpb3JuYW1lbnRvIGRlbGxhIGRlZmluaXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGltaW5hIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ1N0YXRvIGRpIGRlcGxvcmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29sb3JlIGRlbGxvIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnU3RhdG8gZGkgZGlzdHJpYnV6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBjYW1waSBkaW5hbWljaSBjaGUgY29udHJhc3NlZ25hIGxlIGRlZmluaXppb25pIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIGNvbWUgbm9uIHNpbmNyb25penphdGUsIHNlIGkgY2FtcGkgZGluYW1pY2kgY2hlIGxlIGNvbnRlbmdvbm8gY2FtYmlhbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1waSBkaW5hbWljaSB2aXN1YWxpenphdGkgbmVsbGEgc2NoZXJtYXRhIGRlbCBjYW1wbyBJVFNNIGFnZ2l1bnRpdmEgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1waSBkaW5hbWljaSB2aXN1YWxpenphdGkgbmVsbGEgc2NoZXJtYXRhIGRpIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcGkgZGluYW1pY2kgdmlzdWFsaXp6YXRpIG5lbGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGFmZmluY2jDqSBpbCBmcm9udGVuZCBkZWxsXCdhZ2VudGUgZnVuemlvbmkgc3UgcGnDuSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBhbGxhIHZvbHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNvbG8gcGVyIGkgZ3J1cHBpIGVsZW5jYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBpbXBvc3RhcmUgbG8gc3RhdG8gZGkgY29uZmlndXJhemlvbmUgc3UgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2FtcGkgZGVsbFwnaW5kaWNlIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCB1dGlsaXp6YXRpIHBlciBsYSByaWNlcmNhIGZ1bGwtdGV4dC4gSSBjYW1waSBzb25vIGFuY2hlIG1lbW9yaXp6YXRpLCBtYSBub24gc29ubyBvYmJsaWdhdG9yaSBwZXIgbGEgZnVuemlvbmFsaXTDoCBjb21wbGVzc2l2YS4gTFwnaW5jbHVzaW9uZSBkZWdsaSBhbGxlZ2F0aSBwdcOyIGVzc2VyZSBkaXNhdHRpdmF0YSBpbXBvc3RhbmRvIGxhIHZvY2Ugc3UgMCBvIGNhbmNlbGxhbmRvbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1waSBtZW1vcml6emF0aSBuZWxsXCdpbmRpY2UgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUsIHV0aWxpenphdGkgcGVyIGFsdHJpIHNjb3BpIG9sdHJlIGFsbGEgcmljZXJjYSBmdWxsLXRleHQuIFBlciBsYSBmdW56aW9uYWxpdMOgIGNvbXBsZXRhLCB0dXR0aSBpIGNhbXBpIHNvbm8gb2JibGlnYXRvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmF6aW9uZSBkZWwgbW9kdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGVyIGlsIGxpdmVsbG8gZGkgaW52b2NhemlvbmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhemlvbmUgZGVsIG1vZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBlciBpbCBsaXZlbGxvIGRpIGludm9jYXppb25lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmF6aW9uZSBkZWwgbW9kdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGVyIGlsIGxpdmVsbG8gZGkgaW52b2NhemlvbmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ1N0YXRvIEluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1N0YXRvIGRlbGxcJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZSBnbGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBuZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGUgZ2xpIHN0YXRpIGRlZ2xpIGluY2lkZW50aSBuZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ051bWVybyBtYXNzaW1vIGRpIHZvY2kgZGkgY29uZmlndXJhemlvbmUgZGEgdmlzdWFsaXp6YXJlIG5lbCByaXN1bHRhdG8gZGkgcXVlc3RhIG9wZXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxvIHBlciBjb250cm9sbGFyZSBpbCBncnVwcG8gcmVzcG9uc2FiaWxlIHBlciB1bmEgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsbyBwZXIgdmVyaWZpY2FyZSBpbCBncnVwcG8gcmVzcG9uc2FiaWxlIGRpIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsbyBwZXIgZ2VuZXJhcmUgbGUgc3RhdGlzdGljaGUgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdNb2R1bG8gTm9tZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtZXJvIE1vZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1lcm8gZGkgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBkYSB2aXN1YWxpenphcmUgaW4gb2duaSBwYWdpbmEgZGkgdW4gcmlzdWx0YXRvIGRpIHJpY2VyY2EgbmVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1lcm8gZGkgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBkYSB2aXN1YWxpenphcmUgaW4gb2duaSBwYWdpbmEgZGkgdW4gcmlzdWx0YXRvIGRpIHJpY2VyY2EgbmVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2dnZXR0aSBkYSBjZXJjYXJlLCBxdWFudGUgdm9jaSBlIHF1YWxpIGF0dHJpYnV0aSBtb3N0cmFyZS4gR2xpIGF0dHJpYnV0aSBkaSBDb25maWdJdGVtIGRldm9ubyBlc3NlcmUgbWVtb3JpenphdGkgZXNwbGljaXRhbWVudGUgdHJhbWl0ZSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXN0YSBHbG9iYWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsZSBjYXRlZ29yaWUgZGVsbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaSBmaWx0cmkgZGVsbGUgY29sb25uZSBkZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHBpY2NvbGkuIE5vdGEgYmVuZTogaW1wb3N0YW5kbyBcJ0F0dGl2b1wnIHN1IDAsIHNpIGltcGVkaXLDoCBhZ2xpIGFnZW50aSBkaSBtb2RpZmljYXJlIGxlIGltcG9zdGF6aW9uaSBkaSBxdWVzdG8gZ3J1cHBvIG5lbGxlIGxvcm8gcHJlZmVyZW56ZSBwZXJzb25hbGksIG1hIHNpIHBlcm1ldHRlcsOgIGFnbGkgYW1taW5pc3RyYXRvcmkgZGkgbW9kaWZpY2FyZSBsZSBpbXBvc3RhemlvbmkgZGkgdW4gYWx0cm8gdXRlbnRlLiBVc2FyZSBcJ0dydXBwbyBkaSBwcmVmZXJlbnplXCcgcGVyIGNvbnRyb2xsYXJlIGluIHF1YWxlIGFyZWEgcXVlc3RlIGltcG9zdGF6aW9uaSBkZXZvbm8gZXNzZXJlIHZpc3VhbGl6emF0ZSBuZWxsXCdpbnRlcmZhY2NpYSB1dGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSSBwYXJhbWV0cmkgcGVyIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIGNvbG9yYW5vIG5lbGxhIHZpc3RhIGRlbGxlIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgZ2xpIHN0YXRpIGRpIGRpc3RyaWJ1emlvbmUgbmVsbGEgdmlzdGEgZGVsbGUgcHJlZmVyZW56ZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaSBncnVwcGkgZGkgcGVybWVzc2kgZGkgZXNlbXBpbyBkZWdsaSBhdHRyaWJ1dGkgZGVsIGNhdGFsb2dvIGdlbmVyYWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIGRlaSBub21pIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIG51bWVyaWNvIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsZSBwYWdpbmUgKG5lbGxlIHF1YWxpIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBzb25vIG1vc3RyYXRpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpbCBtb2R1bG8gc3RyaW5nYSBkaSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIGRlbCB0b29sa2l0IGRpIG1vZGVsbGkgZGkgc3RyaW5naGUgZGkgdmVyc2lvbmUgcGVyIGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsXCdhdHRpdmF6aW9uZSBkZWxsYSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBwbyBkaSBhdXRvcml6emF6aW9uaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIHV0aWxpenphcmUgbFwnYXppb25lIGRpIGNvbGxlZ2FtZW50byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHZpc3VhbGl6emF6aW9uZSBhZCBhbGJlcm8gZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgem9vbSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIEFnZ2l1bmdpIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIGRpIG1hc3NhIG5lbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSBtb2RpZmljYSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIGRlbGxhIGNyb25vbG9naWEgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSBzdGFtcGEgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWxlZ2kgcmljaGllc3RpIHBlciBlbGltaW5hcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0NlcmNhIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnSW1wb3N0YSBhdXRvbWF0aWNhbWVudGUgbG8gc3RhdG8gZGVsbFwnaW5jaWRlbnRlIGRpIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lIHF1YW5kbyB1biB0aWNrZXQgw6ggY29sbGVnYXRvIGEgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW1wb3N0YSBsbyBzdGF0byBkaSBkaXN0cmlidXppb25lIG5lbGxhIHNjaGVybWF0YSBkaSBtYXNzYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ltcG9zdGEgbG8gc3RhdG8gZGVsbFwnaW5jaWRlbnRlIG5lbGxhIHNjaGVybWF0YSBpbiBibG9jY28gZGVsbFwnYXJ0aWNvbG8gZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgY2hlIGNvbnNlbnRlIGRpIGNvbGxlZ2FyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gdW4gYWx0cm8gb2dnZXR0byBuZWxsYSB2aXN0YSB6b29tIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBhY2NlZGVyZSBhbGxhIGNyb25vbG9naWEgZGkgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGFjY2VkZXJlIGFsbGEgY3Jvbm9sb2dpYSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBlbGltaW5hcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgc3VhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgdmlzdWFsaXp6YXJlIGkgY29sbGVnYW1lbnRpIGFsbGUgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBjb21lIHVuYSBzdHJ1dHR1cmEgYWQgYWxiZXJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGR1cGxpY2FyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgZHVwbGljYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHN1YSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIG1vZGlmaWNhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgc3VhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgdG9ybmFyZSBpbmRpZXRybyBuZWxsYSB2aXN0YSB6b29tIGRlbGxhIHZvY2UgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIHN0YW1wYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHN1YSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBpbmdyYW5kaXJlIHVuYSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHBhbm9yYW1pY2EgZGVsbGUgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBsYSBjcm9ub2xvZ2lhIGRlZ2xpIGFydGljb2xpIGRpIGNvbmZpZ3VyYXppb25lIChvcmRpbmUgaW52ZXJzbykgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXRlZ29yaWEgcHJlZGVmaW5pdGEgY2hlIHZpZW5lIG1vc3RyYXRhIHNlIG5vbiDDqCBzZWxlemlvbmF0YSBuZXNzdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmljYXRvcmUgcGVyIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBhZCBlcy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIExcJ2ltcG9zdGF6aW9uZSBwcmVkZWZpbml0YSDDqCBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F0dGl2YSBhdXRvbWF0aWNhbWVudGUgbFwnaW52b2NhdG9yZSBkaSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpb25lIEVzcHJlc3Npb25lIHN0cmluZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvbmUgTW9kdWxvIFN0cmluZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvbmUgVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2UgbFwnZXNlY3V6aW9uZSBkaSBDb25maWdJdGVtQUNMIHB1w7IgZXNzZXJlIGV2aXRhdGEgY29udHJvbGxhbmRvIGxlIGRpcGVuZGVuemUgZGVpIGNhbXBpIG5lbGxhIGNhY2hlLiBRdWVzdG8gcHXDsiBtaWdsaW9yYXJlIGkgdGVtcGkgZGkgY2FyaWNhbWVudG8gZGVpIG1vZHVsaSwgbWEgZGV2ZSBlc3NlcmUgZGlzYWJpbGl0YXRvIHNlIHNpIHZvZ2xpb25vIHVzYXJlIGkgbW9kdWxpIEFDTE0gcGVyIGkgdGlwaSBJVFNNQ29uZmlnSXRlbSBlIEZvcm0tUmV0dXJuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnTGUgaW5mb3JtYXppb25pIGdlbmVyYWxpIHNvbm8gcmlwb3J0YXRlIG5lbGxcJ2ludGVzdGF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdXR0aXZhJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHBvbGxpY2kgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwb2xsaWNpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcG9sbGljaSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwb2xsaWNpICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayBkYSAxOSBwb2xsaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwb2xsaWNpICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBvbGxpY2kgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0NyZW1hZ2xpZXJhIGRhIDIxIHBvbGxpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBvbGxpY2kgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdDcmVtYWdsaWVyYSBkYSAyMyBwb2xsaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwb2xsaWNpICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwb2xsaWNpICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwb2xsaWNpICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcG9sbGljaSAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwb2xsaWNpICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb2xsaWNpICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwb2xsaWNpICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwb2xsaWNpICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwb2xsaWNpICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcG9sbGljaSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBvbGxpY2kgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwb2xsaWNpICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBwb2xsaWNpICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBvbGxpY2kgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcG9sbGljaSAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBvbGxpY2kgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwb2xsaWNpICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcG9sbGljaSAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcG9sbGljaSAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgcG9sbGljaSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwb2xsaWNpICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBvbGxpY2kgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgcG9sbGljaSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpdMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXNzZWduYXppb25lIGRlZ2xpIGluZGlyaXp6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQW1taW5pc3RyYXRvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsZWZvbm8gYW5hbG9naWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkaSBhcHBhcmVjY2hpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaXTDoCBkZWxsYSBiYXR0ZXJpYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGkgYmF0dGVyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYWNjaWEgYnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc3NlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdMOgIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2l0w6AgcGVyIHNjaGVkYSBncmFmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIGNhcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGV0dG9yZSBkaSBzY2hlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkaSBjYXJ0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdGkgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmlhIGRpIGNsaWVudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnRnJlcXVlbnphIGRlbGxcJ29yb2xvZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdWZWxvY2l0w6AgZGVsbFwnb3JvbG9naW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRpIGRpIGZpcm1hIGRlbCBjb2RpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbGVmb25vIGRpIGNvbmZlcmVuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgY29uc3VsZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGF0dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhdHRvIGNvbiBpbCBkaXN0cmlidXRvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uZSBkZWkgY29udGVuaXRvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGkgY29udHJhdHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnRHVyYXRhIGRlbCBjb250cmF0dG8gZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnRHVyYXRhIGRlbCBjb250cmF0dG8gZmlubyBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVmb25vIGNvcmRsZXNzICh0ZWxlZm9ubyBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdVbml0w6AgZGkgY29zdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdOdW1lcm8gZGkgbGljZW56ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSBkaSBjcmVhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0NyZW1hZ2xpZXJhIHBlcnNvbmFsaXp6YXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJpc2VydmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmVyIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBkZWxsYSBmYXR0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRhIGRlbGxcJ29yZGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0YSBkZWxsYSBnYXJhbnppYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRhIGRpIHJpbGFzY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0aSBkaSBmaXJtYSBkZWkgZG9jdW1lbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2F0aSBlLW1haWwgKGNlcnRpZmljYXRpIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdHRvIGRpIGxhdm9ybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0luZGlyaXp6byBJUCBmaW5hbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW5lIGRlbCBzdXBwb3J0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGEgZGkgc2NhZGVuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc2NvIHJpZ2lkbyBlc3Rlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FjY3VtdWxvIGRpIGVuZXJnaWEgYSB2b2xhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYXR0b3JlIGRpIGZvcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgZnJhbmNoaXNpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hemlvbmkgZ2VuZXJhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdTY2hlZGUgZ3JhZmljaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1NjaGVkYSBncmFmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbGxvIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZGVsbFwnaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0N1ZmZpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGlvbmUgZGVsbFwnaWRlbnRpdMOgIGUgZGVsbFwnYWNjZXNzbyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIGludmVudGFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bWVybyBkaSBmYXR0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGllcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGRpc3BsYXkgYSBjcmlzdGFsbGkgbGlxdWlkaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kbyBhIGVtaXNzaW9uZSBsdW1pbm9zYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZWZvbm8gZmlzc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUG9ydGF0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xpdmVsbG8gMTogbGl2ZWxsbyBmaXNpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGl2ZWxsbyAyOiBMaXZlbGxvIGRpIGNvbGxlZ2FtZW50byBkYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMaXZlbGxvIDM6IGxpdmVsbG8gZGkgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMaXZlbGxvIDM6IExpdmVsbG8gZGkgcmV0ZSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xpdmVsbG8gNDogbGl2ZWxsbyBkaSB0cmFzcG9ydG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xpdmVsbG8gNTogbGl2ZWxsbyBkaSBzZXNzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMaXZlbGxvIDY6IExpdmVsbG8gZGkgcHJlc2VudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xpdmVsbG8gNzogTGl2ZWxsbyBhcHBsaWNhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdHRvIGRpIGxvY2F6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBsaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDaGlhdmUgZGkgbGljZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUaXBvIGRpIGxpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcmlvZG8gZGkgbGljZW56YSBkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1BlcmlvZG8gZGkgbGljZW56YSBmaW5vIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmlhIGFsIGxpdGlvIGZlcnJvIGZvc2ZhdG8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhZ2xpIGlvbmkgZGkgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgcHJlc3RpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1NpdHVhdG8gaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdXR0b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2l0w6AgZGkgY2FyaWNvIG1hc3NpbWEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUaXBvIGRpIG1lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIGNlbGx1bGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpemlvbmUgZGVsIG1vZGVsbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUmlzb2x1emlvbmUgZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnRGltZW5zaW9uaSBkZWwgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWF6aW9uaSBzdWxsYSByZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hemlvbmkgc3VsbGEgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTGl2ZWxsbyBkaSByZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWEgYWwgbmljaGVsLWNhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhbCBuaWNoZWwtbWV0YWxsbyBpZHJ1cm8gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjY29yZG8gZGkgbm9uIGRpdnVsZ2F6aW9uZSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ1RhY2N1aW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTnVtZXJvIGRpIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOdW1lcm8gZGkgbW9kdWxpIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOdW1lcm8gZGkgc2NoZWRlIGdyYWZpY2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKGRpb2RvIG9yZ2FuaWNvIGEgZW1pc3Npb25lIGRpIGx1Y2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RpIG9wZXJhdGl2aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOdW1lcm8gZFwnb3JkaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQWx0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1VzY2l0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY2NvcmRvIGRpIHBhcnRlbmFyaWF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ051bWVybyBkaSB0ZWxlZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkaSB0ZWxlZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ051Y2xlaSBmaXNpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdFcm9nYXppb25lIGRpIGVuZXJnaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdBY3F1aXN0YXRvIHByZXNzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZm9uZGl0w6AgZGVsIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0w6AgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1N0YW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NjaGVkYSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0aSBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdHRvIGRpIHZlbmRpdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZWZvbm8gc2F0ZWxsaXRhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWEgYWwgcGlvbWJvIHNpZ2lsbGF0YSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ051bWVybyBkaSBzZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBwZXIgc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdHRvIGRpIHNlcnZpemlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpY2hldHRhIGRpIHNlcnZpemlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGkgcHJlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0FsdG9wYXJsYW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnSW5kaXJpenpvIElQIGRpIHBhcnRlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdJbW1hZ2F6emluYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGl6aW9uZSBkaSBhcmNoaXZpYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2ludGVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RoaW4gQ2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnRm9sZ29yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsZSBkZWxsYSBzY2hlZGEgZ3JhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIHRvdWNoc2NyZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDdWZmaWUgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWZvbm8gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/ja_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzpgYvou6Ljg4fjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+WPl+S/oeODquOCr+OCqOOCueODiOODh+ODvOOCv+OBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+mAgeS/oeODrOOCueODneODs+OCueODu+ODh+ODvOOCv+OBruioreWumic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+OCr+ODqeOCueWumue+qeOCkuWkieabtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5b255Ymy5a6a576p44Gu5aSJ5pu0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOOCr+ODqeOCueODkOODs+ODieODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+OBk+OBk+OBp+OBr+OAgVJlYWR5MkltcG9ydOOCr+ODqeOCueODkOODs+ODieODq+OCkuOCpOODs+ODneODvOODiOOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgui/veWKoOioreWumuOBjOW/heimgeOBquWgtOWQiOOCguOBguOCiuOBvuOBmeOBruOBp+OBlOazqOaEj+OBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfml6LlrZjjga7jgqjjg7Pjg4bjgqPjg4bjgqPjga7mm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdOOCr+ODqeOCueOBruODkOODs+ODieODq+OCkuOCpOODs+ODneODvOODiOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruOCr+ODqeOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn6Kit5a6a6aCF55uuIOW9ueWJsic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn44Kv44Op44K544Gn44OV44Kj44Or44K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+aWsOimj+OBruani+aIkOOCouOCpOODhuODoOOCkuS9nOaIkOOBmeOCi+OBq+OBr+OAgeODquOCueODiOOBi+OCieOCr+ODqeOCueOCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+OCr+ODqeOCuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ+ani+aIkOOCouOCpOODhuODoOS4gOaLrOOCouOCr+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+S7luOBqOODquODs+OCr+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5YCk44GM5LiN5q2j44Gn44GZISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfku5bjga7mp4vmiJDjgqLjgqTjg4bjg6Djgbjjga7jg6rjg7Pjgq/mlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfmnKzlvZPjgavjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44GuIOani+aIkOOCouOCpOODhuODoCDjga7lkI3np7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+OBk+OBruWQjeensOOBr+OBmeOBp+OBqyBOdW1iZXIocyk6ICVzIOOBruani+aIkOOCouOCpOODhuODoOOBp+S9v+eUqOS4reOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ+ODkOODvOOCuOODp+ODs+ODiuODs+ODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44Gu44OQ44O844K444On44Oz55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn44OQ44O844K444On44Oz55Wq5Y+344Gv44CB5Lul5LiL44Gu55Wq5Y+344GuIENvbmZpZ0l0ZW1zIOOBq+OCiOOBo+OBpuaXouOBq+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOOBruOCueODhuODvOOCv+OCuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q20OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfjgrPjg6Hjg7Pjg4jlsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+S9nOaIkOaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfjgrrjg7zjg6Djg7vjg5Pjg6Xjg7wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnMeODmuODvOOCuOavjuOBruioreWumumgheebric7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn6Kit5a6a6aCF55uu44Gu44OH44O844K/44GM6KaL44Gk44GL44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44KS6YG45oqe44GZ44KLJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn5qSc57Si44KS5a6f6KGMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAn44Kz44Oz44OV44Kj44Kw6aCF55uu44Gu44OE44Oq44O844OT44Ol44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn44OH44OX44K544Os44OZ44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAn44K644O844Og44Kk44OzL+OCuuODvOODoOOCouOCpuODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdDb25maWdJdGVt44Gu5pyA5aSn44Oq44Oz44Kv44Os44OZ44Or44Gr6YGU44GX44Gf77yBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og77yIQ29uZmlndXJhdGlvbiBJdGVt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ+ani+aIkOOCouOCpOODhuODoOaDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfnj77lnKjjga7jg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+ePvuWcqOOBruOCpOODs+OCt+ODh+ODs+ODiOOBruOCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDntYLmm7TmlrDml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5pyA57WC5pu05paw6ICFJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn6Kit5a6a6aCF55uuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ+ioreWumumgheebruaknOe0oic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+S7peS4i+OBruOCr+ODqeOCueOBjOOCpOODs+ODneODvOODiOOBleOCjOOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfku6XkuIvjga7lvbnlibLjgYzjgqTjg7Pjg53jg7zjg4jjgZXjgozjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn5a++5b+c44GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44GoR2VuZXJhbENhdGFsb2fjgq/jg6njgrnjgoLkvZzmiJDjgZXjgozjgIHoh6rli5XnmoTjgavliYrpmaTjgZXjgozjgarjgYTjgZPjgajjgavms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfntprooYzjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnRXhhbXBsZUNsYXNzZXPjgYzlv4XopoHvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn5a6a576p44Gv5pyJ5Yq544GqIFlBTUwg44OP44OD44K344Ol44Gn44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn5LiA6KanOiDmp4vmiJDjgqLjgqTjg4bjg6AnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn5bCR44Gq44GP44Go44KCMeOBpOOBrumBuOaKnuOBleOCjOOBn+ani+aIkOOCouOCpOODhuODoOOBjOW/heimgeOBp+OBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+OBk+OBruani+aIkOOCouOCpOODhuODoOOBuOOBruabuOOBjei+vOOBv+OCouOCr+OCu+OCueaoqeOBjOOBguOCiuOBvuOBm+OCkzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn44Kv44Op44K5JXPjga7lrprnvqnjgYzlrprnvqnjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+ani+aIkOOCouOCpOODhuODoCAiJXMi44GM44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn5qeL5oiQ44Ki44Kk44OG44OgSUQlc+OCkuWJiumZpOOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEJXPjga7jg5Djg7zjgrjjg6fjg7PjgYzopovjgaTjgYvjgorjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44CBRHVwbGljYXRlSUTjgIFDbGFzc0lE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfjgqLjgq/jgrvjgrnmqKnjga/jgYLjgorjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5bGl5q2044KS6KGo56S644GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44GM44CBQ29uZmlnSXRlbUlE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5bGl5q2044KS6KGo56S644GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CC44Ki44Kv44K744K55qip44Gv5LiO44GI44KJ44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDjgZfjgYTmp4vmiJDjgqLjgqTjg4bjg6AoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfmlrDjgZfjgYTjg5Djg7zjgrjjg6fjg7PvvIhJRCA9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/jgILvvIjmlrDopo89JXPjgIHliY09JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25oWL44GM5pu05paw44GV44KM44G+44GX44Gf77yI5paw6KaPPSVz44CB5Y+k44GEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5YmK6ZmkIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICclc++8iOOCv+OCpOODlz0lc++8ieOBuOOBruODquODs+OCr+OBjOi/veWKoOOBleOCjOOBvuOBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJXPvvIjjgr/jgqTjg5c9JXPvvInjgbjjga7jg6rjg7Pjgq/jgYzliYrpmaTjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW3lrprnvqnjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/vvIhJRCA9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICflkI3liY3jgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/vvIjmlrDopo89JXPjgIHlj6TjgYQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICflsZ7mgKclc+OBjCAiJXMi44GL44KJICIlcyLjgavmm7TmlrDjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn44OQ44O844K444On44OzJXPjgYzliYrpmaTjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAn44OV44Kh44Kk44OrICIlcyIg44KS44Ki44OD44OX44Ot44O844OJ44GX44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAn44OV44Kh44Kk44OrICIlcyIg44KS5YmK6Zmk44GX44G+44GX44GfJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44G+44Gf44GvVmVyc2lvbklE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuihqOekuuOBp+OBjeOBvuOBm+OCk+OAguOCouOCr+OCu+OCueaoqeOBr+OBguOCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCVz44Gv44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICclc+OBpyVz44Gn5Y2w5Yi344GV44KM44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfnlKjkvosnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lE44GM54Sh5Yq544Gn44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJROOBr+aMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+OBk+OBruOCr+ODqeOCueOBruOCouOCr+OCu+OCueaoqeOBr+OBguOCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn57WQ5p6c44Gq44GXISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruaknOe0oue1kOaenCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44KS6KGo56S644Gn44GN44G+44Gb44KT44CC5qeL5oiQ44Ki44Kk44OG44Og44Gu44Ki44Kv44K744K55qip44Gv5LiO44GI44KJ44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW3jgYzopovjgaTjgYvjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn44OQ44O844K444On44Oz44Gv6KaL44Gk44GL44KK44G+44Gb44KT44Gn44GX44Gf77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn56i85YON5LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICforablkYonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfjgqTjg7Pjgrfjg4fjg7Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+OBk+OBruani+aIkOOCouOCpOODhuODoOOBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+OBk+OBruani+aIkOOCouOCpOODhuODoOOBruOCpOODs+OCt+ODh+ODs+ODiOeKtuaFiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+aoqemZkOOBjOOBguOCiuOBvuOBm+OCkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfjg5XjgqPjg6vjgr/jg7znhKHlirnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ+aknOe0ouODkeODqeODoeODvOOCv+OBjOeEoeWKueOBp+OBme+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+ihqOekuuOBleOCjOOCi+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjga7jgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn54++5Zyo44Gu44Kk44Oz44K344OH44Oz44OI44O744K544OG44O844K/44K544Gu44K/44Kk44OXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+OBk+OBrumWkyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6Kit5a6a6aCF55uu44Gu44Kv44Op44K55Yi26ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgbjmip7lj6/og73jgaroqK3lrprpoIXnm67jgpLliLbpmZDjgZnjgovjgZ/jgoHjgavjgIEx44Gk5Lul5LiK44Gu44Kv44Op44K544KS6YG45oqe44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfoqK3lrprpoIXnm67jga7jgq/jg6njgrnliLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgbjmip7lj6/og73jgaroqK3lrprpoIXnm67jgpLliLbpmZDjgZnjgovjgZ/jgoHjgavjgIEx44Gk5Lul5LiK44Gu44Kv44Op44K544KS6YG45oqe44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAn5YuV55qEICjjgrPjg7Pjg5XjgqPjgrDpoIXnm64pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfjgrnjgr/jg4bjgqPjg4Pjgq/vvIjjg7TjgqHjg7zjgrjjg6fjg7PvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn44Oq44Oz44Kv5Y+C54Wn44K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ+OBk+OBruODquODs+OCr+OBjOWPgueFp+OCquODluOCuOOCp+OCr+ODiOOBriBDb25maWdJdGVtIOOBqOmdmeeahOODkOODvOOCuOODp+ODs+OBruOBqeOBoeOCieOBq+mBqeeUqOOBleOCjOOCi+OBi+OAguePvuWcqOOBruOCpOODs+OCt+ODh+ODs+ODiOODu+OCueODhuODvOODiOOBruioiOeul+OBr+OAgeODgOOCpOODiuODn+ODg+OCr+ODu+ODquODs+OCr+OBq+WvvuOBl+OBpuOBruOBv+Wun+ihjOOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ+ioreWumumgheebruOCkuaknOe0ouOBmeOCi+WxnuaAp+OCkumBuOaKnuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAn5aSW6YOo44K944O844K544Gu44Kt44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAn6KGo56S644Gu44K/44Kk44OX44KS6YG45oqe44GX44Gm44GP44Gg44GV44GEJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DjgZTjgajjgavjgrDjg6vjg7zjg5fljJbjgZfjgabjgIHlgKTjgpLjg4Tjg6rjg7zooajnpLrjgZnjgovjgavjga/jgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgpLmnInlirnjgavjgZfjgabjgY/jgaDjgZXjgYTjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn44OZ44O844K55qeL6YCg44GM54Sh5Yq544Gn44GZ44CCWUFNTOW9ouW8j+OBruODh+ODvOOCv+OCkuWQq+OCgOODj+ODg+OCt+ODpeOCkuaMh+WumuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUzmloflrZfliJfjgpJcJy0tLVwn44Gn5aeL44KB44KL44GT44Go44GM5b+F6KaB44Gn44GZ44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ2NvbmZpZ2l0ZW1fbGluayDjg4bjg7zjg5bjg6vjgpLjg5Hjg7zjgrjjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+mWoumAo+OBmeOCi+WLleeahOODleOCo+ODvOODq+ODieOBr+imi+OBpOOBi+OCiuOBvuOBm+OCk+OBp+OBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGlua+ODhuODvOODluODq+OBq+aMv+WFpeOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnY29uZmlnaXRlbV9saW5r44OG44O844OW44Or44GrMOihjOOCkuaMv+WFpeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfkuIDjgqjjg6zjg6Hjg7Pjg4jjgYLjgZ/jgorjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcx44Gk44Gu44K744OD44OI44O744OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ6KaB57Sg44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJ+OCu+ODg+ODiOODu+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieimgee0oOWGheOBrjHjgaTjga7opoHntKDjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn5a6a576p44Gu5ZCM5pyf44Gr44Ko44Op44O844GM55m655Sf44GX44G+44GX44Gf44CC44Ot44Kw44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnSVRTTUNvbmZpZ0l0ZW3jga7lrprnvqnjgYzlkIzmnJ/jgZXjgozjgabjgYTjgb7jgZvjgpPjgIJJVFNNQ29uZmlnSXRlbeOBruWLleeahOODleOCo+ODvOODq+ODieOBruWkieabtOOCkuWxlemWi+OBl+OBpuOBj+OBoOOBleOBhOOAgic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn5pyf6ZmQ5YiH44KMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn44Oh44Oz44OG44OK44Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn44OR44Kk44Ot44OD44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfoqIjnlLsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn5L+u55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICflvJXpgIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn44Os44OT44Ol44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfjg4bjgrnjg4ggLyBRQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn5qaC6KaB44Go56K66KqNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ+OCr+ODqeOCuS/lvbnlibLjgajjgZ3jga7plqLpgKPjg5XjgqPjg7zjg6vjg4njga7jgqTjg7Pjg53jg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfjgq/jg6njgrnjga7jgqTjg7Pjg53jg7zjg4jkuK3jgavjgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIOmdnuihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJ+ODl+ODreOCu+OCueeuoeeQhuOBrumBt+enu+OCouOCr+OCt+ODp+ODsyBDb25maWdJdGVtQWRkIOOBiuOCiOOBsyBDb25maWdJdGVtVXBkYXRlIOOBp+S9v+eUqOOBleOCjOOCi+WGhemDqOODleOCo+ODvOODq+ODieWQjeOBruWvvuW/nOS7mOOBkeOAguOCreODvOOBr+OAgUNJIOOBruS9nOaIkO+8j+abtOaWsOOBq+S9v+eUqOOBleOCjOOCi+OAgeOCquODluOCuOOCp+OCr+ODiOOCv+OCpOODl+OBjOODgeOCseODg+ODiOOBruOCu+ODg+ODiOOBruWGhemDqOODleOCo+ODvOODq+ODieWQjeOBp+OAgeWApOOBr+OCquODluOCuOOCp+OCr+ODiOOCv+OCpOODl+OBjCBJVFNNQ29uZmlnSXRlbSDjga7jgrvjg4Pjg4jjga7lhoXpg6jjg5XjgqPjg7zjg6vjg4nlkI3jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si44Gn44CB5ouh5by15qSc57Si5p2h5Lu244KS5L2/55So44Gn44GN44KL44KI44GG44Gr44GX44G+44GZ44CC44GT44Gu5qmf6IO944Gr44KI44KK44CB5L6L44GI44GwICIoKmtleTEqJiYqa2V5MiopIiDjgoQgIigqa2V5MSp8fCprZXkyKikiIOOBruOCiOOBhuOBquadoeS7tuOBp+ani+aIkOOCouOCpOODhuODoOWQjeOCkuaknOe0ouOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLjgafjgIHmi6HlvLXmpJzntKLmnaHku7bjgpLkvb/nlKjjgafjgY3jgovjgojjgYbjgavjgZfjgb7jgZnjgILjgZPjga7mqZ/og73jgavjgojjgorjgIHkvovjgYjjgbAgIigqa2V5MSomJiprZXkyKikiIOOChCAiKCprZXkxKnx8KmtleTIqKSIg44Gu44KI44GG44Gq5p2h5Lu244Gn5qeL5oiQ44Ki44Kk44OG44Og5ZCN44KS5qSc57Si44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ+WJsuOCiuW9k+OBpuOCieOCjOOBn0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAn6Kit5a6a44GX44Gf5p2h5Lu244KS5rqA44Gf44GZ5aC05ZCI44Gr44CB54m55a6a44Gu5pmC54K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gr5a++44GZ44KL44OB44Kx44OD44OI44KS5L2c5oiQ44GX44G+44GZ44CC5pmC54K544Gv44CB5qeL5oiQ44Ki44Kk44OG44Og44GuICJUaW1lQ0lLZXkiIOOBp+ioreWumuOBl+OBn+aXpeS7mOOCv+OCpOODl+OBruODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieOBruWApOOBp+axuuOBvuOCiuOAgSJUaW1lTW9kaWZpZXIiIOOBp+iqv+aVtOOBleOCjOOBvuOBmeOAgiJUaW1lTW9kaWZpZXIiIOOBq+OBr+aVsOWApOOBruOBv+OAgeOBvuOBn+OBr+espuWPt++8iCsvLe+8ieOAgeaVsOWApOOAgeWNmOS9je+8iGQvaC9t77yJ44KS5oyH5a6a44Gn44GN44G+44GZ44CCIjciIOOBryAiKzdkIiDjgajlkIzjgZjjgafjgZnjgILkvZzmiJDjgZXjgozjgZ/jg4HjgrHjg4Pjg4jjga7orZjliKXjgavjga/jgIHjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4kgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiDjgYzkvb/nlKjjgZXjgozjgb7jgZnvvIjlrZjlnKjjgZfjgabjgYTjgovlv4XopoHjgYzjgYLjgorjgb7jgZnvvInjgIIiVGlja2V0LT5UZXh0IiDlhoXjga7jg5Xjg6njgrAgXDxPVE9CT19DT05GSUdJVEVNX1hcPiDvvIhYIOOBryBOQU1F44CBTlVNQkVS44CBREFURe+8ieOBr+OAgeOBneOCjOOBnuOCjOOBruWApOOBq+e9ruaPm+OBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICfjg6njgqTjgrvjg7PjgrnmlbDjga7nrqHnkIbnlKjjga7lsZ7mgKfjgIIiVG90YWxMaWNlbnNlc0RGIuOAgSJBdmFpbGFibGVMaWNlbnNlc0RGIuOAgSJMaWNlbnNlUmVmZXJlbmNlREYiIOOBr+OAgeaui+OCiuOBruODqeOCpOOCu+ODs+OCueaVsOOCkui/vei3oeOBmeOCi+OBn+OCgeOBruODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieOBruWQjeWJjeOBp+OBmeOAguS9v+eUqOOBmeOCi+WgtOWQiOOBr+OAgSJWYWxpZERlcGxTdGF0ZXMiIOOBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruOBv+OBjOWvvuixoeOBq+OBquOCiuOBvuOBmeOAgiJNaW5pbXVtTGljZW5zZXMiIOOBq+OBl+OBjeOBhOWApOOCkuWumue+qeOBmeOCi+OBqOOAgeWIqeeUqOWPr+iDveOBquODqeOCpOOCu+ODs+OCueaVsOOBjOOBneOCjOOCkuS4i+WbnuOBo+OBn+WgtOWQiOOBq+iHquWLleeahOOBq+ODgeOCseODg+ODiOOBjOS9nOaIkOOBleOCjOOBvuOBmeOAguOBk+OBruOBn+OCgeOBq+OBr+OAgeODgeOCp+ODg+OCr+ODnOODg+OCr+OCueODu+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODiSAiVGlja2V0LT5EeW5hbWljRmllbGQiIOOBjOWtmOWcqOOBl+OBpuOBhOOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgiJUaWNrZXQtPlRleHQiIOWGheOBruOCv+OCsCBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IO+8iFgg44GvIE5BTUXjgIFOVU1CRVLjgIFMSUNFTlNFU19BVkFJTOOAgUxJQ0VOU0VTX01JTu+8ieOBr+OAgeOBneOCjOOBnuOCjOani+aIkOOCouOCpOODhuODoOWQjeOAgeeVquWPt+OAgeWIqeeUqOWPr+iDveOBquODqeOCpOOCu+ODs+OCueaVsOOAgeW/heimgeOBquacgOWwj+ODqeOCpOOCu+ODs+OCueaVsOOBq+e9ruaPm+OBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ+mhp+WuouS8gealreOBq+WJsuOCiuW9k+OBpuOCieOCjOOBn0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn6aGn5a6i44Om44O844K244O844Gr5Ymy44KK5b2T44Gm44KJ44KM44GfQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNRELjga7oqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ+WQjeWJjeOBruS4gOaEj+aAp+OCkuWQjOOBmOani+aIkOOCouOCpOODhuODoOOCr+ODqeOCueWGhe+8iFwnY2xhc3NcJ++8ieOBp+OBruOBv+ODgeOCp+ODg+OCr+OBmeOCi+OBi+OAgeWFqOS9k++8iFwnZ2xvYmFsXCfvvInjgafjg4Hjgqfjg4Pjgq/jgZnjgovjgYvjgIJcJ2dsb2JhbFwnIOOBruWgtOWQiOOAgemHjeikh+OBrueiuuiqjeaZguOBq+aXouWtmOOBruOBmeOBueOBpuOBruani+aIkOOCouOCpOODhuODoOOBjOWvvuixoeOBq+OBquOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn5ZG95ZCN44K544Kt44O844Og44KS5by35Yi244GZ44KL44Oi44K444Ol44O844Or44KS6YG45oqe44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfnlarlj7fjgrnjgq3jg7zjg6DjgpLlvLfliLbjgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgpLpgbjmip7jgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn44OQ44O844K444On44Oz5paH5a2X5YiX44K544Kt44O844Og44KS5by35Yi244GZ44KL44Oi44K444Ol44O844Or44KS6YG45oqe44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn5paw44GX44GE44OQ44O844K444On44Oz44KS5L2c5oiQ44GZ44KL44OI44Oq44Ks44O844Go44Gq44KL5bGe5oCn44KS6YG45oqe44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ+OBk+OBruioreWumumgheebruOCr+ODqeOCueOBq+WJsuOCiuW9k+OBpuOCi+OCq+ODhuOCtOODquOCkumBuOaKnuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu6Imy44Gu5a6a576p44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0NvbmZpZ0l0ZW3mpoLopoHjga7jgqvjg6njg6DoqK3lrprpoIXnm67jg5XjgqPjg6vjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOS4gOimp+OBp+ODleOCo+ODq+OCv+ODvOWPr+iDveOBquWIl+OAguazqOaEjzog5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGe5oCn44Go44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ77yIRHluYW1pY0ZpZWxkX05hbWVY77yJ44Gu44G/5L2/55So44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS6L+95Yqg44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5L+u5q2j44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJ+aMh+WumuOBl+OBn+ani+aIkOOCouOCpOODhuODoOOBruODqeOCpOOCu+ODs+OCueioiOS4iuOCkuWPr+iDveOBq+OBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruOCpOODmeODs+ODiOODouOCuOODpeODvOODq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gn5bGl5q2044G444Gu6KiY6Yyy44KS5Y+v6IO944Gr44GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOCkuePvuWcqOOBruWumue+qeOBq+WQiOOCj+OBm+OBpuabtOaWsOOBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruOCpOODmeODs+ODiOODouOCuOODpeODvOODq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruWxpeattCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLljbDliLcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7jgrrjg7zjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfoqK3lrprpoIXnm67jg4Tjg6rjg7zjg5Pjg6Xjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn6Kit5a6a6aCF55uu44OQ44O844K444On44OzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+S7peS4i+OBruOCr+ODqeOCueOBruani+aIkOOCouOCpOODhuODoOOBryBFbGFzdGljc2VhcmNoIOOCteODvOODkOODvOOBq+S/neWtmOOBleOCjOOBvuOBm+OCk+OAguaXouWtmOOBriBDSSDjgavpgannlKjjgZnjgovjgavjga/jgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgpLlpInmm7TjgZfjgZ/lvozjgIHjgrPjg7Pjgr3jg7zjg6vjgYvjgokgQ0kg44Gu56e76KGM44KS5a6f6KGM44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+S7peS4i+OBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruani+aIkOOCouOCpOODhuODoOOBryBFbGFzdGljc2VhcmNoIOOCteODvOODkOODvOOBq+S/neWtmOOBleOCjOOBvuOBm+OCk+OAguaXouWtmOOBriBDSSDjgavpgannlKjjgZnjgovjgavjga/jgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgpLlpInmm7TjgZfjgZ/lvozjgIHjgrPjg7Pjgr3jg7zjg6vjgYvjgokgQ0kg44Gu56e76KGM44KS5a6f6KGM44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruWItumZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn44Oa44O844K444GC44Gf44KK44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu6KGo56S65Yi26ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfmp4vmiJDnrqHnkIbjg4fjg7zjgr/jg5njg7zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS4gOaLrOODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLjg5Djg4Pjgq/jgqjjg7Pjg4njg7vjg6vjg7zjgr/jg7zjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJ+WvvuW/nOOBmeOCi+aoqemZkOadoeS7tuOBruWIl+OBjOWAi+WIpeOBq+ioreWumuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOBq+OAgemhp+WuouOCpOODs+OCv+ODleOCp+ODvOOCueOBp+aoqemZkOadoeS7tuOBruihqOekuuOBq+S9v+eUqOOBp+OBjeOCi+WIl+OCkuioreWumuOBl+OBvuOBmeOAguOBk+OBruioreWumuOBr+OAgeS7luOBruaoqemZkOadoeS7tuOBruWIl+ioreWumuOBruODleOCqeODvOODq+ODkOODg+OCr+OBqOOBl+OBpuS9v+eUqOOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJ+WvvuW/nOOBmeOCi+aoqemZkOadoeS7tuOBruWIl+OBjOWAi+WIpeOBq+ioreWumuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOBq+OAgeWFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueOBp+aoqemZkOadoeS7tuOBruihqOekuuOBq+S9v+eUqOOBp+OBjeOCi+WIl+OCkuioreWumuOBl+OBvuOBmeOAguOBk+OBruioreWumuOBr+OAgeS7luOBruaoqemZkOadoeS7tuOBruWIl+ioreWumuOBruODleOCqeODvOODq+ODkOODg+OCr+OBqOOBl+OBpuS9v+eUqOOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODleOCp+ODvOOCueOBp+OAgeWvvuW/nOOBmeOCi+aoqemZkOadoeS7tuOCkuihqOekuuOBmeOCi+mam+OBq+S9v+eUqOOBp+OBjeOCi+WIl+OCkuioreWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgafjgIHlr77lv5zjgZnjgovmqKnpmZDmnaHku7bjgpLooajnpLrjgZnjgovpmpvjgavkvb/nlKjjgafjgY3jgovliJfjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS9nOaIkOOBqOeuoeeQhuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+eJueWumuOBruaZgueCueOBp0NvbmZpZ0l0ZW1z44Gu44OB44Kx44OD44OI44KS5L2c5oiQ44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+mhp+WuouOBr+mBjuWOu+OBriBDSSDjg5Djg7zjgrjjg6fjg7PjgpLplrLopqfjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn6aGn5a6i44Gv6YGO5Y6744GuIENJIOODkOODvOOCuOODp+ODs+OCkuaJi+WLleOBp+WIh+OCiuabv+OBiOOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOaknOe0oueUu+mdouOBruWxnuaAp+OBp+S9v+eUqOOBmeOCi+ODh+ODleOCqeODq+ODiOODh+ODvOOCv+OAguS+izogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOaknOe0oueUu+mdouOBruWxnuaAp+OBp+S9v+eUqOOBmeOCi+ODh+ODleOCqeODq+ODiOODh+ODvOOCv+OAguS+izogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn44Oq44Oz44Kv44Kq44OW44K444Kn44Kv44OI44O744Km44Kj44K444Kn44OD44OI77yITGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCLvvInjgafoqK3lrprjg5zjgr/jg7PjgpLkvb/nlKjjgafjgY3jgovjgqLjgq/jgrfjg6fjg7PjgpLlrprnvqnjgZfjgb7jgZnjgILjgZPjgozjgonjga7jgqLjgq/jgrfjg6fjg7Pjgavjga/jgIHmrKHjga4gSlMg44GK44KI44GzIENTUyDjg5XjgqHjgqTjg6vjgYznmbvpjLLjgZXjgozjgabjgYTjgovlv4XopoHjgYzjgYLjgorjgb7jgZk6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz44CBQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc+OAgUNvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpz44CBQ29yZS5BZ2VudC5MaW5rT2JqZWN0Lmpz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJfnlKjjga4gVGVtcGxhdGU6OlRvb2xraXQg44K544Kt44O844Og44KS5a6a576p44GX44G+44GZ44CC44OQ44O844K444On44Oz5paH5a2X5YiX44Oi44K444Ol44O844Or44GMIFRlbXBsYXRlVG9vbGtpdCDjgavoqK3lrprjgZXjgozjgabjgYTjgovloLTlkIjjgavjga7jgb/kvb/nlKjjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4nnlLvpnaLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgpLku4vjgZfjgabjgIHjgZPjga7jg5Hjg4PjgrHjg7zjgrjjga7jgqLjgq/jgrfjg6fjg7PjgavlibLjgorlvZPjgabjgovjgZPjgajjgYzjgafjgY3jgovjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njga7jgqrjg5bjgrjjgqfjgq/jg4jjgr/jgqTjg5fjga7kuIDopqfjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOCkuWFrOmWi+OBp+ihqOekuuOBp+OBjeOCi+adoeS7tuOBruOCu+ODg+ODiOOCkuWumue+qeOBl+OBvuOBmeOAguW/hemgiOOBruWxnuaAp+OBryBOYW1lIOOBruOBv+OBp+OBmeOAguS7luOBruOCquODl+OCt+ODp+ODs+OCkuaMh+WumuOBl+OBquOBhOWgtOWQiOOAgeOBmeOBueOBpuOBruani+aIkOOCouOCpOODhuODoOOBjOOBneOBruOCq+ODhuOCtOODquODvOOBq+ihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+mhp+WuouOBjOani+aIkOOCouOCpOODhuODoOOCkumWsuimp+OBp+OBjeOCi+adoeS7tuOBruOCu+ODg+ODiOOCkuWumue+qeOBl+OBvuOBmeOAguadoeS7tuOBr+OAgeW/heimgeOBq+W/nOOBmOOBpueJueWumuOBrumhp+WuouOCsOODq+ODvOODl+OBq+mZkOWumuOBp+OBjeOBvuOBmeOAguW/hemgiOOBruWxnuaAp+OBryBOYW1lIOOBruOBv+OBp+OBmeOAguS7luOBruOCquODl+OCt+ODp+ODs+OCkuaMh+WumuOBl+OBquOBhOWgtOWQiOOAgeOBmeOBueOBpuOBruani+aIkOOCouOCpOODhuODoOOBjOOBneOBruOCq+ODhuOCtOODquODvOOBq+ihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5rGO55So44Kk44Oz44K/44OV44Kn44O844K577yIR2VuZXJpYyBJbnRlcmZhY2XvvInjgpLkvb/nlKjjgZfjgaYgSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+axjueUqOOCpOODs+OCv+ODleOCp+ODvOOCue+8iEdlbmVyaWMgSW50ZXJmYWNl77yJ44KS5L2/55So44GX44GmIElUU00g5qeL5oiQ44Ki44Kk44OG44Og44KS5Y+W5b6X44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfmsY7nlKjjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnvvIhHZW5lcmljIEludGVyZmFjZe+8ieOCkuS9v+eUqOOBl+OBpiBJVFNNIOani+aIkOOCouOCpOODhuODoOOCkuaknOe0ouOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZXJpYyBJbnRlcmZhY2XjgpLkvb/nlKjjgZfjgaZJVFNN5qeL5oiQ6aCF55uu44KS6Kit5a6a44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOS4gOimp+OCkuWwj+OCteOCpOOCuuOBp+ihqOekuuOBmeOCi+S4gOimp+ODouOCuOODpeODvOODq+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfjg47jg7zjg4njga7mjqXntprjgavjg6rjg7Pjgq/jgr/jgqTjg5fjga7jg6njg5njg6vjgpLooajnpLrjgZnjgovjgYvjganjgYbjgYvjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBruWQjeWJjeOCkuODgeOCp+ODg+OCr+OBl+OAgeWvvuW/nOOBmeOCi+OCqOODqeODvOODoeODg+OCu+ODvOOCuOOCkuihqOekuuOBmeOCi+OBn+OCgeOBruato+imj+ihqOePvuOCkuOAgeani+aIkOOCouOCpOODhuODoOOCr+ODqeOCueOBlOOBqOOBq+Wumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIOOCr+ODqeOCueOBlOOBqOOBq+OAgeani+aIkOOCouOCpOODhuODoOS4gOimp+OBp+WIqeeUqOWPr+iDveOBqiBDSSDjga7liJfjgpLlrprnvqnjgZfjgb7jgZnjgILlkITjgqjjg7Pjg4jjg6rjg7zjga/jgIHjgq/jg6njgrnlkI3jgajjgIHjgZ3jga7jgq/jg6njgrnjgafliKnnlKjlj6/og73jgarjg5XjgqPjg7zjg6vjg4njga7phY3liJfjgafmp4vmiJDjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njga7jgqjjg7Pjg4jjg6rjg7zjga8gRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjga7lvaLlvI/jgavlvpPjgYblv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0oue1kOaenOOBp+OAgeOCveODvOODiOOBq+S9v+eUqOOBmeOCi+ODh+ODleOCqeODq+ODiOOBruani+aIkOOCouOCpOODhuODoOWxnuaAp+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si57WQ5p6c44Gn44CB44K944O844OI44Gr5L2/55So44GZ44KL44OH44OV44Kp44Or44OI44Gu5qeL5oiQ44Ki44Kk44OG44Og5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si57WQ5p6c44Gn44CB44K944O844OI44Gr5L2/55So44GZ44KL44OH44OV44Kp44Or44OI44Gu5qeL5oiQ44Ki44Kk44OG44Og5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn44GT44Gu44Kq44Oa44Os44O844K344On44Oz44Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si57WQ5p6c44Gn44CB44K944O844OI44Gr5L2/55So44GZ44KL44OH44OV44Kp44Or44OI44Gu5qeL5oiQ44Ki44Kk44OG44Og5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLntZDmnpzjgavjgYrjgZHjgovjgIHjg4fjg5Xjgqnjg6vjg4jjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7kuKbjgbPpoIbjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE44KC44Gu44GM5LiK44CCRG93bjog5paw44GX44GE44KC44Gu44GM5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLntZDmnpzjgavjgYrjgZHjgovjgIHjg4fjg5Xjgqnjg6vjg4jjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7kuKbjgbPpoIbjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE44KC44Gu44GM5LiK44CCRG93bjog5paw44GX44GE44KC44Gu44GM5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si57WQ5p6c44Gr44GK44GR44KL44CB44OH44OV44Kp44Or44OI44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5Lim44Gz6aCG44KS5a6a576p44GX44G+44GZ44CCVXA6IOWPpOOBhOOCguOBruOBjOS4iuOAgkRvd246IOaWsOOBl+OBhOOCguOBruOBjOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+OBk+OBruOCquODmuODrOODvOOCt+ODp+ODs+OBruani+aIkOOCouOCpOODhuODoOaknOe0oue1kOaenOOBq+OBiuOBkeOCi+OAgeODh+ODleOCqeODq+ODiOOBruani+aIkOOCouOCpOODhuODoOOBruS4puOBs+mghuOCkuWumue+qeOBl+OBvuOBmeOAglVwOiDlj6TjgYTjgoLjga7jgYzkuIrjgIJEb3duOiDmlrDjgZfjgYTjgoLjga7jgYzkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIOOCr+ODqeOCueOBlOOBqOOBq+OAgeani+aIkOOCouOCpOODhuODoOS4gOimp+OBp+ODh+ODleOCqeODq+ODiOOBp+ihqOekuuOBmeOCiyBDSSDjga7liJfjgpLlrprnvqnjgZfjgb7jgZnjgILlkITjgqjjg7Pjg4jjg6rjg7zjga/jgIHjgq/jg6njgrnlkI3jgajjgIHjgZ3jga7jgq/jg6njgrnjgafliKnnlKjlj6/og73jgarjg5XjgqPjg7zjg6vjg4njga7phY3liJfjgafmp4vmiJDjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njga7jgqjjg7Pjg4jjg6rjg7zjga8gRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjga7lvaLlvI/jgavlvpPjgYblv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn44OH44OV44Kp44Or44OI44Gn6KGo56S644GZ44KL6Zai6YCj44Gu5rex44GV44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOaknOe0oueUu+mdouOBp+OAgeODh+ODleOCqeODq+ODiOOBp+ihqOekuuOBmeOCi+ani+aIkOOCouOCpOODhuODoOaknOe0ouWxnuaAp+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si55S76Z2i44Gn44CB44OH44OV44Kp44Or44OI44Gn6KGo56S644GZ44KL5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si5bGe5oCn44KS5a6a576p44GX44G+44GZ44CC5L6LOiAiS2V5IiDjgavjga/jg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njga7lkI3liY3vvIjjgZPjga7loLTlkIjjga8gXCdYXCfvvInjgpLjgIEiQ29udGVudCIg44Gr44Gv44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44Gu44K/44Kk44OX44Gr5b+c44GY44Gf5YCk44KS5oyH5a6a44GX44G+44GZ44CC44OG44Kt44K544OIOiBcJ2EgdGV4dFwn44CB44OJ44Ot44OD44OX44OA44Km44OzOiBcJzFcJ+OAgeaXpeS7mO+8j+aXpeaZgjogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIOOBiuOCiOOBs++8j+OBvuOBn+OBryBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+OCr+ODqeOCuSBcJ0lUU01Db25maWdJdGVtXCcg44Gu44OH44OV44Kp44Or44OI44Gu44K144OW44Kq44OW44K444Kn44Kv44OI44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSeOCr+ODqeOCueOBq+W/nOOBmOOBpuOAgeioreWumumgheebruOBruamguimgeOBp+WIqeeUqOWPr+iDveOBqkNJ44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE6aCF55uu44Gv44CB44Kv44Op44K55ZCN44Go44CB5a++5b+c44GZ44KL44Kv44Op44K544Gn5Yip55So5Y+v6IO944Gq44OV44Kj44O844Or44OJ44Gu6YWN5YiX44GL44KJ5qeL5oiQ44GV44KM44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CC5YuV55qE44OV44Kj44O844Or44OJ44Gu44Ko44Oz44OI44Oq44Gv44CBRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjgrnjgq3jg7zjg6DjgavlvpPjgo/jgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn44GT44Gu55S76Z2i44Gu44Oq44OD44OB44OG44Kt44K544OI44Ko44OH44Kj44K/44O844Gu6auY44GV44KS5a6a576p44GX44G+44GZ44CC5pWw5YCk77yI44OU44Kv44K744Or77yJ44G+44Gf44Gv44OR44O844K744Oz44OI5YCk77yI55u45a++5YCk77yJ44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+euoeeQhuiAheOCpOODs+OCv+ODleOCp+ODvOOCueOBriBDSSDlrprnvqnjgqjjg4fjgqPjgr/jg7zjga7ooYzmlbDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn44Kk44Oz44K344OH44Oz44OI54q25rOB44Gu6aCG5bqP44KS44CB6auY44GE77yI5L6LOiBjcml0aWNhbO+8ieOCguOBruOBi+OCieS9juOBhO+8iOS+izogZnVuY3Rpb25hbO+8ieOCguOBruOBuOOBqOWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJ0VsYXN0aWNzZWFyY2gg44Km44Kj44K444Kn44OD44OI44O744OQ44OD44Kv44Ko44Oz44OJ44Gu44OR44Op44Oh44O844K/44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44Gf44OB44Kx44OD44OI44GMIENJIOOBruOCueODhuODvOOCv+OCueOBq+W9semfv+OCkuS4juOBiOOCi+OBk+OBqOOBjOOBp+OBjeOCi+OAgeWvvuixoeOBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0g55S76Z2i44Gu5qSc57Si5LiK6ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDnlLvpnaLjga7mpJzntKLkuIrpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtIOeUu+mdouOBruaknOe0ouS4iumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gg55S76Z2i44Gu5qSc57Si5LiK6ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ1B1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIOeUu+mdouOBruaknOe0ouS4iumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+OBmeOBueOBpuOBriBDSSDjgq/jg6njgrnjgavjgaTjgYTjgabjgIHjg6rjg7Pjgq/jg4bjg7zjg5bjg6vjga7oqbPntLDooajnpLrjgafooajnpLrjgZnjgosgQ0kg44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC44Ko44Oz44OI44Oq44O844GM44Gq44GE5aC05ZCI44Gv44CB44OH44OV44Kp44Or44OI44Gu5YiX44GM6KGo56S644GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdDSSDjgq/jg6njgrnjgZTjgajjgavjgIHjg6rjg7Pjgq/jg4bjg7zjg5bjg6vjga7oqbPntLDooajnpLrjgafooajnpLrjgZnjgosgQ0kg44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE44Ko44Oz44OI44Oq44O844Gr44Gv44CB44Kv44Op44K55ZCN44Go44OA44OW44Or44Kz44Ot44Oz44KS5o6l6aCt6L6e44Go44GX44Gm5LuY44GR44KL5b+F6KaB44GM44GC44KK44G+44GZ77yI5L6LOiBDb21wdXRlcjo677yJ44CC44GZ44G544Gm44GuIENJIOOBq+WFsemAmuOBmeOCiyBDSSDlsZ7mgKfjgYzjgYTjgY/jgaTjgYvjgYLjgorjgb7jgZnvvIjjgq/jg6njgrkgQ29tcHV0ZXIg44Gu5L6LOiBDb21wdXRlcjo6TmFtZeOAgUNvbXB1dGVyOjpDdXJEZXBsU3RhdGXjgIFDb21wdXRlcjo6Q3JlYXRlVGltZe+8ieOAgkNJIOOBruWumue+qeOBp+Wumue+qeOBl+OBn+WAi+OAheOBriBDSSDlsZ7mgKfjgpLooajnpLrjgZnjgovjgavjga/jgIHmrKHjga7lvaLlvI/jgpLkvb/nlKjjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnvvIjjgq/jg6njgrkgQ29tcHV0ZXIg44Gu5L6L77yJOiBDb21wdXRlcjo6SGFyZERpc2s6OjHjgIFDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5Ojox44CBQ29tcHV0ZXI6OkhhcmREaXNrOjoy44CBQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MeOAgkNJIOOCr+ODqeOCueOBruOCqOODs+ODiOODquODvOOBjOOBquOBhOWgtOWQiOOBr+OAgeODh+ODleOCqeODq+ODiOOBruWIl+OBjOihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g5qeL5oiQ44Ki44Kk44OG44Og44GuIEFDTCDmp4vpgKDjga7nrKwz6ZqO5bGk44GnIFwnQWN0aW9uXCcg44Gr5L2/55So44Gn44GN44KL6aCF55uu44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6Djga4gQUNMIOani+mAoOOBruesrDHpmo7lsaTjgafkvb/nlKjjgafjgY3jgovpoIXnm67jgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6Djga4gQUNMIOani+mAoOOBruesrDLpmo7lsaTjgafkvb/nlKjjgafjgY3jgovpoIXnm67jgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44GfIENJIOOBruOCueODhuODvOOCv+OCueOBq+W9semfv+OCkuS4juOBiOOCi+OBk+OBqOOBjOOBp+OBjeOCi+ODquODs+OCr+OBruOCv+OCpOODl++8iOODgeOCseODg+ODiOWBtOOBi+OCieimi+OBn+WQjeWJje+8ieOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+ODquODs+OCr+OBleOCjOOBnyBDSSDjga7jgrnjg4bjg7zjgr/jgrnjgavlvbHpn7/jgpLkuI7jgYjjgovjgZPjgajjgYzjgafjgY3jgovjg4HjgrHjg4Pjg4jjga7jgr/jgqTjg5fjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICflrprnvqnjga7mm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuWJiumZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICfjg4fjg5fjg6vjgrnjg4bjg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruOCq+ODqeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICflsZXplovnirbmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn44Kz44OU44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn5ZCr44G+44KM44KL44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44GM5aSJ5pu044GV44KM44Gf5aC05ZCI44Gr44CB5qeL5oiQ44Ki44Kk44OG44Og44Gu5a6a576p44KS6Z2e5ZCM5pyf44Go44GX44Gm44Oe44O844Kv44GZ44KL44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44Gu44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ov73liqAgSVRTTSDjg5XjgqPjg7zjg6vjg4nnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA6Kan55S76Z2i44Gr6KGo56S644GZ44KL44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DkuIDopqfnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4njgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0oueUu+mdouOBq+ihqOekuuOBmeOCi+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfmi4XlvZPogIXjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njgafmp4vmiJDjgqLjgqTjg4bjg6Djga7kuIDmi6zlh6bnkIbmqZ/og73jgpLmnInlirnjgavjgZfjgIHopIfmlbDjga7mp4vmiJDjgqLjgqTjg4bjg6DjgpLlkIzmmYLjgavlh6bnkIbjgafjgY3jgovjgojjgYbjgavjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+S4gOimp+OBq+iomOi8ieOBl+OBn+OCsOODq+ODvOODl+OBq+WvvuOBl+OBpuOBruOBv+OAgeani+aIkOOCouOCpOODhuODoOOBruS4gOaLrOWHpueQhuapn+iDveOCkuacieWKueOBq+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0lUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5ZCN5YmN44Gu5LiA5oSP5oCn44KS44OB44Kn44OD44Kv44GZ44KL5qmf6IO944KS5pyJ5Yq577yP54Sh5Yq544Gr44GX44G+44GZ44CC44GT44Gu44Kq44OX44K344On44Oz44KS5pyJ5Yq544Gr44GZ44KL5YmN44Gr44CB5ZCN5YmN44GM6YeN6KSH44GX44Gm44GE44KL5pei5a2Y44Gu5qeL5oiQ44Ki44Kk44OG44Og44GM44Gq44GE44GL56K66KqN44GX44Gm44GP44Gg44GV44GE44CC56K66KqN44Gr44Gv44Kz44Oz44K944O844Or44Kz44Oe44Oz44OJIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcyDjgpLkvb/nlKjjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn44OB44Kx44OD44OI44Go5qeL5oiQ44Ki44Kk44OG44Og44Gu44Oq44Oz44Kv44Gr44CB5qeL5oiQ44Ki44Kk44OG44Og44Gu44K544OG44O844K/44K544KS6Kit5a6a44GZ44KL44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ+WFqOaWh+aknOe0ouOBq+S9v+eUqOOBleOCjOOCi+ani+aIkOOCouOCpOODhuODoOOCpOODs+ODh+ODg+OCr+OCueOBruODleOCo+ODvOODq+ODieOAguODleOCo+ODvOODq+ODieOBr+S/neWtmOOCguOBleOCjOOBvuOBmeOBjOOAgeWFqOS9k+OBruapn+iDveOBq+OBr+W/hemgiOOBp+OBr+OBguOCiuOBvuOBm+OCk+OAgua3u+S7mOODleOCoeOCpOODq+OCkuWQq+OCgeOBquOBhOOCiOOBhuOBq+OBmeOCi+OBq+OBr+OAgeOCqOODs+ODiOODquODvOOCkiAwIOOBq+ioreWumuOBmeOCi+OBi+WJiumZpOOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn5YWo5paH5qSc57Si5Lul5aSW44Gu55So6YCU44Gr44KC5L2/55So44GV44KM44KL44CB5qeL5oiQ44Ki44Kk44OG44Og44Kk44Oz44OH44OD44Kv44K544Gr5L+d5a2Y44GV44KM44KL44OV44Kj44O844Or44OJ44CC44GZ44G544Gm44Gu5qmf6IO944KS5Yip55So44GZ44KL44Gr44Gv44CB44GZ44G544Gm44Gu44OV44Kj44O844Or44OJ44GM5b+F6aCI44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICdXZWIg44K144O844OT44K577yI44Kt44O877yJ44GU44Go44Gr44CB44Kk44Oz44Od44O844OI44KS5Yi26ZmQ44GZ44KL44Kv44Op44K544Gu6YWN5YiX77yI5YCk77yJ44KS5a6a576p44Gn44GN44G+44GZ44CC6YG45oqe44GX44Gf44GZ44G544Gm44Gu44Kv44Op44K544CB44G+44Gf44Gv5pei5a2Y44Gu44GZ44G544Gm44Gu44Kv44Op44K544Gr44Gk44GE44Gm44CBSW52b2tlciDjga7oqK3lrprjgaforZjliKXnlKjjga7lsZ7mgKfjgpLpgbjmip7jgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIGludm9rZXLjg6zjgqTjg6Tjg7zjga5HZW5lcmljSW50ZXJmYWNl44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIEludm9rZXIg44Os44Kk44Ok44O855So44GuIEdlbmVyaWNJbnRlcmZhY2Ug44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCBpbnZva2Vy44Os44Kk44Ok44O844GuR2VuZXJpY0ludGVyZmFjZeODouOCuOODpeODvOODq+eZu+mMsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIOioreWumumgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfjgqTjg7Pjgrfjgrnjg4bjg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOOCueODhuODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLjgavjgq/jg6njgrnjgpLlkKvjgoHjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si44Gr44OH44OX44Ot44Kk44O744K544OG44O844K/44K544KS5ZCr44KB44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DmpJzntKLjgavjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgpLlkKvjgoHjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0ouOBq+OCpOODs+OCt+ODh+ODs+ODiOeKtuazgeOCkuWQq+OCgeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0ouOBq+OCpOODs+OCt+ODh+ODs+ODiOeKtuazgeOCkuWQq+OCgeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5qSc57Si44Gr5ZCN5YmN44KS5ZCr44KB44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOaknOe0ouOBq+eVquWPt+OCkuWQq+OCgeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICfjg6njgqTjgrvjg7PjgrnoqIjkuIrnlKjjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7jgqTjg5njg7Pjg4jjg6Ljgrjjg6Xjg7zjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ+WFrOmWi+OCpOODs+OCv+ODleOCp+ODvOOCueeUqOOBruODreODvOODgOODvOODouOCuOODpeODvOODq+OBrueZu+mMsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfjgZPjga7jgqrjg5rjg6zjg7zjgrfjg6fjg7Pjga7ntZDmnpzjgavooajnpLrjgZnjgovmp4vmiJDjgqLjgqTjg4bjg6Djga7mnIDlpKfmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfjgq/jg6njgrnjga7osqzku7vjgrDjg6vjg7zjg5fjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7osqzku7vjgrDjg6vjg7zjg5fjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdJVFNNIOani+aIkOOCouOCpOODhuODoOOBrue1seioiOOCkueUn+aIkOOBmeOCi+ODouOCuOODpeODvOODq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ+WQjeWJjeODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn44OK44Oz44OQ44O844O744Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruaknOe0oue1kOaenOOBruWQhOODmuODvOOCuOOBq+ihqOekuuOBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mpJzntKLntZDmnpzjga7lkITjg5rjg7zjgrjjgavooajnpLrjgZnjgovmp4vmiJDjgqLjgqTjg4bjg6Djga7mlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44OV44Kn44O844K544Gu5ZCE44Oa44O844K444Gr6KGo56S644GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Gu5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn5qSc57Si5a++6LGh44Gu44Kq44OW44K444Kn44Kv44OI44CB44Ko44Oz44OI44Oq44O85pWw44CB6KGo56S644GZ44KL5bGe5oCn44CC5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGe5oCn44Gv44CBRWxhc3RpY3NlYXJjaCDjgavmmI7npLrnmoTjgavkv53lrZjjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn5qaC6KaBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7lgIvkurroqK3lrprjg5Pjg6Xjg7zjgavjgYrjgZHjgovjgIHmp4vmiJDjgqLjgqTjg4bjg6Djgq/jg6njgrnjga7jgqvjg4bjgrTjg6rjg7zjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DkuIDopqfvvIjlsI/jgrXjgqTjgrrooajnpLrvvInjga7liJfjg5XjgqPjg6vjgr/jg7zjga7jg5Hjg6njg6Hjg7zjgr/jgILms6jmhI86IFwnQWN0aXZlXCcg44KSIDAg44Gr6Kit5a6a44GX44Gm44KC44CB5ouF5b2T6ICF44GM6Ieq5YiG44Gu5YCL5Lq66Kit5a6a44Gn44GT44Gu44Kw44Or44O844OX44Gu6Kit5a6a44KS57eo6ZuG44Gn44GN44Gq44GP44Gq44KL44Gg44GR44Gn44CB566h55CG6ICF44Gv5byV44GN57aa44GN5LuW44Gu44Om44O844K244O844Gr5Luj44KP44Gj44Gm6Kit5a6a44KS57eo6ZuG44Gn44GN44G+44GZ44CCXCdQcmVmZXJlbmNlR3JvdXBcJyDjgpLkvb/nlKjjgZfjgabjgIHjgZPjgozjgonjga7oqK3lrprjgpLjg6bjg7zjgrbjg7zjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7jganjga7poJjln5/jgavooajnpLrjgZnjgovjgYvjgpLliLblvqHjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBq+ihqOekuuOBleOCjOOCi+mhp+WuouODpuODvOOCtuODvOOBruani+aIkOOCouOCpOODhuODoOS4gOimp+OBruODgOODg+OCt+ODpeODnOODvOODieODu+ODkOODg+OCr+OCqOODs+ODieOBruODkeODqeODoeODvOOCv+OAgiJMaW1pdCIg44Gv44OH44OV44Kp44Or44OI44Gn6KGo56S644GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Kv44Op44K544GU44Go44Gu44Ko44Oz44OI44Oq44O85pWw44Gn44GZ44CCIkdyb3VwIiDjga/jg5fjg6njgrDjgqTjg7Pjgbjjga7jgqLjgq/jgrvjgrnjgpLliLbpmZDjgZnjgovjgZ/jgoHjgavkvb/nlKjjgZfjgb7jgZnvvIjkvos6IEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyO++8ieOAgiJEZWZhdWx0IiDjga/jgIHjg5fjg6njgrDjgqTjg7PjgpLjg4fjg5Xjgqnjg6vjg4jjgafmnInlirnjgavjgZnjgovjgYvjgIHjg6bjg7zjgrbjg7zjgYzmiYvli5XjgafmnInlirnjgavjgZnjgovlv4XopoHjgYzjgYLjgovjgYvjgpLmsbrlrprjgZfjgb7jgZnjgIIiQ2FjaGVUVExMb2NhbCIg44Gv44OX44Op44Kw44Kk44Oz44Gu44Kt44Oj44OD44K344Ol5pmC6ZaT77yI5YiG77yJ44Gn44GZ44CCIkNvbmZpZ0l0ZW1LZXkiIOOBp+OBr+OAgemBuOaKnuOBl+OBn+mhp+WuouODpuODvOOCtuODvOOBp+OBrue1nuOCiui+vOOBv+OBq+S9v+eUqOOBmeOCi+mhp+WuouODpuODvOOCtuODvOWPgueFp+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieOCkuaMh+WumuOBl+OBvuOBmeOAgiJTaG93bkNsYXNzZXMiIOOBr+OAgeihqOekuuOBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruOCr+ODqeOCueOCkuS7u+aEj+OBp+WItumZkOOBmeOCi+OBn+OCgeOBruS4gOimp+OBp+OBmeOAguepuuashOOBruWgtOWQiOOBr+OAgSJDb25maWdJdGVtS2V5IiDjgafoqK3lrprjgZfjgZ/jg4DjgqTjg4rjg5/jg4Pjgq/jg5XjgqPjg7zjg6vjg4nlhoXjga7poaflrqLjg6bjg7zjgrbjg7zjgavkuIDoh7TjgZnjgovjgZnjgbnjgabjga7jgq/jg6njgrnjgYzlr77osaHjgavjgarjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gr6KGo56S644GV44KM44KL6aGn5a6i5LyB5qWt44Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA6Kan44Gu44OA44OD44K344Ol44Oc44O844OJ44O744OQ44OD44Kv44Ko44Oz44OJ44Gu44OR44Op44Oh44O844K/44CCIkxpbWl0IiDjga/jg4fjg5Xjgqnjg6vjg4jjgafooajnpLrjgZnjgovjgqjjg7Pjg4jjg6rjg7zmlbDjgafjgZnjgIIiR3JvdXAiIOOBr+ODl+ODqeOCsOOCpOODs+OBuOOBruOCouOCr+OCu+OCueOCkuWItumZkOOBmeOCi+OBn+OCgeOBq+S9v+eUqOOBl+OBvuOBme+8iOS+izogR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI777yJ44CCIkRlZmF1bHQiIOOBr+OAgeODl+ODqeOCsOOCpOODs+OCkuODh+ODleOCqeODq+ODiOOBp+acieWKueOBq+OBmeOCi+OBi+OAgeODpuODvOOCtuODvOOBjOaJi+WLleOBp+acieWKueOBq+OBmeOCi+W/heimgeOBjOOBguOCi+OBi+OCkuaxuuWumuOBl+OBvuOBmeOAgiJDYWNoZVRUTExvY2FsIiDjga/jg5fjg6njgrDjgqTjg7Pjga7jgq3jg6Pjg4Pjgrfjg6XmmYLplpPvvIjliIbvvInjgafjgZnjgIIiQ29uZmlnSXRlbUtleSIg44Gn44Gv44CB6YG45oqe44GX44Gf6aGn5a6i5LyB5qWt44Gn44Gu57We44KK6L6844G/44Gr5L2/55So44GZ44KL6aGn5a6i5LyB5qWt5Y+C54Wn44OA44Kk44OK44Of44OD44Kv44OV44Kj44O844Or44OJ44KS5oyH5a6a44GX44G+44GZ44CCIlNob3duQ2xhc3NlcyIg44Gv44CB6KGo56S644GZ44KL5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kv44Op44K544KS5Lu75oSP44Gn5Yi26ZmQ44GZ44KL44Gf44KB44Gu5LiA6Kan44Gn44GZ44CC56m65qyE44Gu5aC05ZCI44Gv44CBIkNvbmZpZ0l0ZW1LZXkiIOOBp+ioreWumuOBl+OBn+ODgOOCpOODiuODn+ODg+OCr+ODleOCo+ODvOODq+ODieWGheOBrumhp+WuouS8gealreOBq+S4gOiHtOOBmeOCi+OBmeOBueOBpuOBruOCr+ODqeOCueOBjOWvvuixoeOBq+OBquOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruWAi+S6uuioreWumuODk+ODpeODvOOBq+OBiuOBkeOCi+OAgeODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruiJsuOBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruWAi+S6uuioreWumuODk+ODpeODvOOBq+OBiuOBkeOCi+OAgeODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfkuIDoiKzjgqvjgr/jg63jgrDlsZ7mgKfjga7mqKnpmZDjgrDjg6vjg7zjg5fkvovjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7lgIvkurroqK3lrprjg5Pjg6Xjg7zjgavjgYrjgZHjgovjgIHmp4vmiJDjgqLjgqTjg4bjg6Djgq/jg6njgrnjga7lkI3liY3jg6Ljgrjjg6Xjg7zjg6vjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruWAi+S6uuioreWumuODk+ODpeODvOOBq+OBiuOBkeOCi+OAgeani+aIkOOCouOCpOODhuODoOOCr+ODqeOCueOBrueVquWPt+ODouOCuOODpeODvOODq+OBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfvvIjmp4vmiJDjgqLjgqTjg4bjg6DjgpLooajnpLrjgZnjgovvvInjg5rjg7zjgrjjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5YCL5Lq66Kit5a6a44OT44Ol44O844Gr44GK44GR44KL44CB5qeL5oiQ44Ki44Kk44OG44Og44Kv44Op44K544Gu44OQ44O844K444On44Oz5paH5a2X5YiX44Oi44K444Ol44O844Or44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5YCL5Lq66Kit5a6a44OT44Ol44O844Gr44GK44GR44KL44CB5qeL5oiQ44Ki44Kk44OG44Og44Kv44Op44K544Gu44OQ44O844K444On44Oz5paH5a2X5YiXIFRlbXBsYXRlIFRvb2xraXQg44Oi44K444Ol44O844Or44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruWAi+S6uuioreWumuODk+ODpeODvOOBq+OBiuOBkeOCi+OAgeani+aIkOOCouOCpOODhuODoOOCr+ODqeOCueOBruODkOODvOOCuOODp+ODs+ODiOODquOCrOODvOOBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICfoqK3lrprjgZXjgozjgZ/lkIQgV2ViIOOCteODvOODk+OCueOBq+OBpOOBhOOBpuOAgeOCpOODmeODs+ODiOOBlOOBqOOBq+ioreWumuOBleOCjOOBn+OCouOCr+OCt+ODp+ODs+OCku+8iEludm9rZXIg44Go44GX44Gm77yJ5a6f6KGM44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfmqKnpmZDjgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn5YWs6ZaL44Om44O844K244O844Gv6YGO5Y6744GuIENJIOODkOODvOOCuOODp+ODs+OCkumWsuimp+OBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICflhazplovjg6bjg7zjgrbjg7zjga/pgY7ljrvjga4gQ0kg44OQ44O844K444On44Oz44KS5omL5YuV44Gn5YiH44KK5pu/44GI44KL44GT44Go44GM44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBp0lUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5re75LuY44OV44Kh44Kk44Or5pON5L2c44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBp0lUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544GnIElUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GnSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6Djga7jg4Tjg6rjg7zjg5Pjg6Xjg7znlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GnSVRTTSDmp4vmiJDjgqLjgqTjg4bjg6Djga7jgrrjg7zjg6DnlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOOBrui/veWKoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOOBruS4gOaLrOWHpueQhueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOOBrue3qOmbhueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgadJVFNNIOani+aIkOOCouOCpOODhuODoOOBruWxpeattOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GnIElUU00g5qeL5oiQ44Ki44Kk44OG44Og44Gu5Y2w5Yi355S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+ODgeOCseODg+ODiOOBjCBDSSDjgavjg6rjg7Pjgq/jgZXjgozjgZ/jgajjgY3jgavjgIFDSSDjga7jgqTjg7Pjgrfjg4fjg7Pjg4jnirbms4HjgpLoh6rli5XnmoTjgavoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DkuIDmi6zlh6bnkIbnlLvpnaLjgafjgIHjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA5ous5Yem55CG55S76Z2i44Gn44CB44Kk44Oz44K344OH44Oz44OI54q25rOB44KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og44K644O844Og44OT44Ol44O844Gn44CB5qeL5oiQ44Ki44Kk44OG44Og44KS5LuW44Gu44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA6Kan44Gn44CB5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q2044KS6KGo56S644GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOOCuuODvOODoOODk+ODpeODvOOBp+OAgeani+aIkOOCouOCpOODhuODoOOBruWxpeattOOCkuihqOekuuOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOOCuuODvOODoOODk+ODpeODvOOBp+OAgeani+aIkOOCouOCpOODhuODoOOCkuWJiumZpOOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44Gu44Oq44Oz44Kv44KS44OE44Oq44O844OT44Ol44O844Gn6KGo56S644GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA6Kan44Gn44CB5qeL5oiQ44Ki44Kk44OG44Og44KS6KSH6KO944GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOOCuuODvOODoOODk+ODpeODvOOBp+OAgeani+aIkOOCouOCpOODhuODoOOCkuikh+ijveOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu5qeL5oiQ44Ki44Kk44OG44Og44K644O844Og44OT44Ol44O844Gn44CB5qeL5oiQ44Ki44Kk44OG44Og44KS57eo6ZuG44GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djgrrjg7zjg6Djg5Pjg6Xjg7zjgafjgIHliY3jga7nlLvpnaLjgavmiLvjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djgrrjg7zjg6Djg5Pjg6Xjg7zjgafjgIHmp4vmiJDjgqLjgqTjg4bjg6DjgpLljbDliLfjgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6DkuIDopqfjgafjgIHmp4vmiJDjgqLjgqTjg4bjg6Djga7oqbPntLDjgpLooajnpLrjgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q2044KS77yI5paw44GX44GE6aCG44Gr77yJ6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ+S9leOCgumBuOaKnuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOBq+ihqOekuuOBleOCjOOCi+ODh+ODleOCqeODq+ODiOOBruOCq+ODhuOCtOODquODvOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44Gu6K2Y5Yil5a2Q77yI5L6LOiBDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPvvInjgILjg4fjg5Xjgqnjg6vjg4jjga8gQ29uZmlnSXRlbSMg44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7kuIDopqfjga7jgr/jgqTjg4jjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7mpJzntKLjga7jgr/jgqTjg4jjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdDb25maWdJdGVtRmV0Y2ggSW52b2tlciDjgpLoh6rli5XnmoTjgavjg4jjg6rjgqzjg7zjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn44OQ44O844K444On44Oz5paH5a2X5YiX5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ+ODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfjg5Djg7zjgrjjg6fjg7Pjg7vjg4jjg6rjgqzjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAn44OV44Kj44O844Or44OJ44KS6Ieq5YuV55qE44Gr5YWl5Yqb44GZ44KL77yIMe+8ieOBi+OAgeOBneOBruWgtOWQiOOBq+ODgeOCseODg+ODiOOBruODleOCqeODvOODoOOBi+OCiemdnuihqOekuuOBq+OCguOBmeOCi++8iDLvvInjgYvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn44Kt44Oj44OD44K344Ol44GV44KM44Gf44OV44Kj44O844Or44OJ44Gu5L6d5a2Y6Zai5L+C44KS56K66KqN44GZ44KL44GT44Go44Gn44CBQ29uZmlnSXRlbUFDTCDjga7lrp/ooYzjgpLnnIHnlaXjgafjgY3jgovjgYvjganjgYbjgYvjgILjg5Xjgqnjg7zjg6Djga7oqq3jgb/ovrzjgb/mmYLplpPjgpLmlLnlloTjgafjgY3jgb7jgZnjgYzjgIFBQ0xNb2R1bGVzIOOCkiBJVFNNQ29uZmlnSXRlbSDjgYrjgojjgbMgRm9ybSDjga4gUmV0dXJuVHlwZSDjgavkvb/nlKjjgZnjgovloLTlkIjjga/nhKHlirnjgavjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ+ODmOODg+ODgOODvOOBq+ihqOekuuOBmeOCi+WFqOiIrOaDheWgseOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+OCr+ODqeOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfjgrDjg63jg7zjg5Djg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfmrKHjga7nlJ/nlKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ+WGjeeUn+eUoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn55Sf55SjJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBV77yaMTcuNeOCpOODs+ODge+8iDQ0LjQ1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVe+8mjIx44Kk44Oz44OB77yINTMuMzRjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVV77yaMjYuMjXjgqTjg7Pjg4HvvIg2Ni42OGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4Ve+8mjMxLjXjgqTjg7Pjg4HvvIg4MC4wMWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE544Kk44Oz44OB44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVe+8mjEuNzXjgqTjg7Pjg4HvvIg0LjQ1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBV77yaMzXjgqTjg7Pjg4HvvIg4OC45Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjHjgqTjg7Pjg4Hjg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNeOCpOODs+ODge+8iDk3Ljc5Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjPjgqTjg7Pjg4Hjg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy4244Kk44Oz44OB77yINjAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFXvvJo0MuOCpOODs+ODge+8iDEwNi42OGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdV77yaNDcuMjXjgqTjg7Pjg4HvvIgxMjAuMDJjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVe+8mjMuNeOCpOODs+ODge+8iDguODljbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBV77yaNTIuNeOCpOODs+ODge+8iDEzMy4zNWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNeOCpOODs+ODge+8iDgwMG1t77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNV77yaNTcuNzXjgqTjg7Pjg4HvvIgxNDYuNjhjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjTjgqTjg7Pjg4HvvIg5MDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2Ve+8mjYz44Kk44Oz44OB77yIMTYwLjAyY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNOOCpOODs+ODge+8iDEwMDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5Ve+8mjY4LjI144Kk44Oz44OB77yIMTczLjM1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVe+8mjUuMjXjgqTjg7Pjg4HvvIgxMy4zNGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlXvvJo3My4144Kk44Oz44OB77yIMTg2LjY5Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLjPjgqTjg7Pjg4HvvIgxMTAwbW3vvInvvJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVXvvJo3OC43NeOCpOODs+ODge+8iDIwMC4wMmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjLjgqTjg7Pjg4HvvIgxMjAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFXvvJo4NOOCpOODs+ODge+8iDIxMy4zNmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFXvvJo344Kk44Oz44OB77yIMTcuNzhjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVV77yaOC43NeOCpOODs+ODge+8iDIyLjIzY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2Ve+8mjEwLjXjgqTjg7Pjg4HvvIgyNi42N2Nt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdV77yaMTIuMjXjgqTjg7Pjg4HvvIgzMS4xMmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhV77yaMTTjgqTjg7Pjg4HvvIgzNS41NmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlV77yaMTUuNzXjgqTjg7Pjg4HvvIg0MC4wMWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ0FHUEzvvIhBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn5Lya6KiIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICfoqIjkuIrmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn44Ki44OJ44Os44K55Ymy44KK5b2T44GmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfnrqHnkIbogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn44Ki44OK44Ot44Kw6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnQXBhY2hlIExpY2Vuc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfjgqLjg5fjg6njgqTjgqLjg7Pjgrnjg7vjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJ0JTRCBMaWNlbnNl77yIQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2XvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn44OQ44OD44OG44Oq44O85a656YeP77yIQWjvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn44OQ44OD44OG44Oq44O844K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn5qeL56+JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfjg5Djgrnjg7vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnQ0Mw77yIQ3JlYXRpdmUgQ29tbW9ucyBaZXJv77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFXjgq/jg6njgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHjyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44K544Kr44O844OJMeaemuOBguOBn+OCiuOBruWuuemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ+OCq+ODvOODieeVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ+OCq+ODvOODieODquODvOODgOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfjgqvjg7zjg4njga7nqK7poZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ+OCr+ODqeOCpOOCouODs+ODiOiovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfjgq/jg6njgqTjgqLjg7Pjg4jjg7vjgr3jg5Xjg4jjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn6aGn5a6i44Kr44OG44K044Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ+OCr+ODreODg+OCr+ODrOODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn44Kv44Ot44OD44Kv44K544OU44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfjgrPjg7zjg4nnvbLlkI3oqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ+mbu+ipseS8muitsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ+OCs+ODs+OCteODq+ODhuOCo+ODs+OCsOWlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn6YCj57Wh5YWIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfosqnlo7Lku6PnkIblupcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfjgrPjg7Pjg4bjg4rnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICflpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ+Wlkee0hOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ+Wlkee0hOacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICflpZHntITmnJ/plpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn44Kz44O844OJ44Os44K56Zu76Kmx77yIREVDVOmbu+ipse+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfjgrPjgrnjg4jljZjkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfjg6njgqTjgrvjg7PjgrnmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+S9nOaIkOaXpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAn44Kv44Oq44Ko44Kk44OG44Kj44OW44O744Kz44Oi44Oz44K6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn44Kr44K544K/44Og44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICfjg4fjgqPjg7zjgqjjgqTjg4Hjgrfjg7zjg5Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1DkuojntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROU+OCteODvOODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICfjg4fjgqPjg7TjgqMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn6KuL5rGC5pu444Gu5pel5LuYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfms6jmlofml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+ODr+ODqeODs+ODiOWPluW+l+aXpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfjg6rjg6rjg7zjgrnml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+ODh+OCueOCr+ODiOODg+ODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ+ODh+OCo+OCueODl+ODrOOCpOODneODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+aWh+abuOe9suWQjeiovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnRVBM77yIRWNsaXBzZSBQdWJsaWMgTGljZW5zZe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJ44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfpm7vlrZDjg6Hjg7zjg6voqLzmmI7mm7jvvIhTL01JTUUg6Ki85piO5pu477yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICfntYTjgb/ovrzjgb8gU0lN77yIZVNJTe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH55So5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57WC5LqGSVDjgqLjg4njg6zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfjgrXjg53jg7zjg4jntYLkuoYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfmnInlirnmnJ/pmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ+WkluS7mOOBkeODj+ODvOODieODieODqeOCpOODlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ+ODleOCoeOCpOOCouOCpuOCqeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ+ODleOCoeODvOODoOOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ+ODleODqeOCpOODm+OCpOODvOODq+ODu+OCqOODjeODq+OCruODvOiyr+iUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ+ODleOCqeODvOODoOODleOCoeOCr+OCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn44OV44Op44Oz44OB44Oj44Kk44K65aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn44OV44Oq44O844Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICdHUEzvvIhHZW5lcmFsIFB1YmxpYyBMaWNlbnNl77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfkuIDoiKzmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfjgrDjg6njg5XjgqPjg4Pjgq/jgrnjgqvjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCueOCq+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ+ODj+ODvOODieOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ+ODj+ODvOODieOCpuOCp+OCouODu+ODouODh+ODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfjg4/jg7zjg4njgqbjgqfjgqLph43ph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ+ODmOODg+ODieOCu+ODg+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQ44OX44Ot44OI44Kz44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ+OCouOCpOODh+ODs+ODhuOCo+ODhuOCo+OBqOOCouOCr+OCu+OCueeuoeeQhu+8iElBTe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn5Zyo5bqr55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICfmipXos4fjgrPjgrnjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfjgqTjg7Pjg5zjgqTjgrnnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfjgq3jg7zjg5zjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENE44Oi44OL44K/44O877yI5ray5pm244OH44Kj44K544OX44Os44Kk77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUTjg6Ljg4vjgr/jg7zvvIjnmbrlhYnjg4DjgqTjgqrjg7zjg4nvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnTEdQTO+8iExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn5Zu65a6a6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+ODjuODvOODiFBDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn57ev5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn44Os44Kk44Ok44O8Me+8mueJqeeQhuODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7wy77ya44OH44O844K/44Oq44Oz44Kv44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7wz77ya44ON44OD44OI44Ov44O844Kv44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+ODrOOCpOODpOODvDPvvJrjg43jg4Pjg4jjg6/jg7zjgq/jg7vjg6zjgqTjg6Tjg7zvvIjjgrnjg7zjg5Hjg7zjg43jg4Pjg4jvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn44Os44Kk44Ok44O8NO+8muODiOODqeODs+OCueODneODvOODiOODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8Ne+8muOCu+ODg+OCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7w277ya44OX44Os44K844Oz44OG44O844K344On44Oz44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8N++8muOCouODl+ODquOCseODvOOCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfjg6rjg7zjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfjg6njgqTjgrvjg7PjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJ+ODqeOCpOOCu+ODs+OCueaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+ODqeOCpOOCu+ODs+OCueOCreODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfjg6njgqTjgrvjg7Pjgrnjga7nqK7poZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+ODqeOCpOOCu+ODs+OCueacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+ODqeOCpOOCu+ODs+OCueacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn44Oq44Oz6YW46YmE44Oq44OB44Km44Og77yITGlGZVBPNO+8iembu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn44Oq44OB44Km44Og44Kk44Kq44Oz77yITGktaW9u77yJ44OQ44OD44OG44Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn44Ot44O844Oz5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfoqK3nva7loLTmiYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57WM5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnTUlUIExpY2Vuc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ01QTO+8iE1vemlsbGEgUHVibGljIExpY2Vuc2XvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn44Oh44O844Kr44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfmnIDlpKfosqDojbflrrnph48gKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ+ODoeODouODquODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ+ODoeODouODquODvOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICdNaWNybyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn44Of44OL44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfmkLrluK/pm7voqbHnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn44Oi44OQ44Kk44OrL+e1hOOBv+i+vOOBvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ+ODouODh+ODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ+ODouODh+ODq+iqrOaYjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfjg6Ljg4vjgr/jg7zop6Plg4/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn44Oi44OL44K/44O844K144Kk44K6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn44Oe44Km44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnTmFubyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+ODjeODg+ODiOODr+ODvOOCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfjg43jg4Pjg4jjg6/jg7zjgq/mg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+ODjeODg+ODiOODr+ODvOOCr+aDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn44ON44OD44OI44Ov44O844Kv5bGkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn44OL44OD44Kx44Or44Kr44OJ44Of44Km44Og77yITmlDZO+8iembu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+ODi+ODg+OCseODq+awtOe0oOmbu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfnp5jlr4bkv53mjIHlpZHntITvvIhOREHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfjg47jg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFXmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFN44Oi44K444Ol44O844Or5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCq+ODvOODieOBruaemuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFROODouODi+OCv+ODvO+8iOacieapn+eZuuWFieODgOOCpOOCquODvOODie+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfllrbmpa3osrvnlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn5rOo5paH55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5LuWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICflh7rlipsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn5pqX6Ki855Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn5pqX6Ki855Wq5Y+3Mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfjg5Hjg7zjg4jjg4rjg7zjgrfjg4Pjg5flpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAn5rC457aa44Op44Kk44K744Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJ+mbu+ipse+8j1ZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn6Zu76Kmx55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfpm7voqbHjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfjg5XjgqPjgrjjgqvjg6vjg7vjgrPjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfjg5Hjg6/jg7zjg7vjg4fjg6rjg5Djg6rjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJ+ODkeODluODquODg+OCr+ODieODoeOCpOODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfjgafos7zlhaXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+ODqeODg+OCr+OBruWlpeihjOOBjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+ODqeODg+OCr+ODpuODi+ODg+ODiCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+WupOWGhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTeOCq+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFPoqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICflo7LosrflpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn6KGb5pif6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ+WvhumWieWei+mJm+iThOmbu+axoCAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAn44K344O844OI44Op44Kk44K744Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+OCt+ODquOCouODq+eVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfjgrXjg7zjg5Djg7zjg7vjgr3jg5Xjg4jjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfjgrXjg7zjg5PjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfjgrXjg7zjg5Pjgrnjgr/jgrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAn44K344Kn44Ki44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn44K944Kx44OD44OI44K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn44K944OV44OI44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn44K544OU44O844Kr44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+OCueOCv+ODs+ODgOODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn6ZaL5aeLSVDjgqLjg4njg6zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ+OCueODiOODrOODvOOCuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ+OCueODiOODrOODvOOCuOODu+ODkeODvOODhuOCo+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICfjgrXjg5bjgrnjgq/jg6rjg5fjgrfjg6fjg7Plnovjg6njgqTjgrvjg7PjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ+WtkOS8muekvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn5qaC6KaBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn44K344Oz44Kv44Op44Kk44Ki44Oz44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfjgrnjg6zjg4Pjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICfjgrXjg7Pjg4Djg7zjg5zjg6vjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCueOCq+ODvOODiVJBTeWQiOioiO+8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn5ZCI6KiIUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ+OCv+ODg+ODgeOCueOCr+ODquODvOODs+ODouODi+OCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ+OCv+ODr+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNC44OP44OWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAn44OW44Kk44K444O844Ko44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ+OBi+OBneOBhuOBuOOBhOOBhOOBjeOCguOBhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlLjg5jjg4Pjg4njgrvjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICfku67mg7Pjgq/jg6njgqTjgqLjg7Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfjg5Djg7zjg4Hjg6Pjg6vjg6rjg7Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVDjg5Xjgqnjg7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAn44Oc44Oq44Ol44O844Og44Op44Kk44K744Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+OCpuOCp+ODluOCq+ODoeODqSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ko_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmtvX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfsnbzrsJgg7Jq07JiBIOuNsOydtO2EsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn7IiY7IugIOyalOyyrSDrjbDsnbTthLAg7ISk7KCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn67Cc7IugIOydkeuLtSDrjbDsnbTthLAg7ISk7KCVJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn6rWs7ISxIO2VreuqqSDqtIDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICftgbTrnpjsiqQg7KCV7J2YIOuzgOqyvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn7Jet7ZWgIOygleydmCDrs4Dqsr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQg7YG0656Y7IqkIOuyiOuTpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+yXrOq4sOyXkOyEnCDqsIDsnqUg7J2867CY7KCB7J24IOq1rOyEsSDtla3rqqnsnYQg67O07Jes7KO864qUIFJlYWR5MkltcG9ydCDtgbTrnpjsiqQg67KI65Ok7J2EIOqwgOyguOyYrCDsiJgg7J6I7Iq164uI64ukLiDrqocg6rCA7KeAIOy2lOqwgCDqtazshLHsnbQg7ZWE7JqU7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+q4sOyhtCDsl5TthLDti7Ag7JeF642w7J207Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQg7YG0656Y7IqkIOuyiOuTpCDqsIDsoLjsmKTquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfqtazshLEg7ZWt66qpIO2BtOuemOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn6rWs7ISxIO2VreuqqSDsl63tlaAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfsiJjsl4Ug7ZWE7YSw66eBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+uqqeuhneyXkOyEnCDtgbTrnpjsiqTrpbwg7ISg7YOd7ZWY7JesIOyDiCDqtazshLEg7ZWt66qp7J2EIOunjOuTreuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICftgbTrnpjsiqQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn67Cw7Y+sIOyDge2DnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ+yduOyLnOuNmO2KuCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn64uk66W4IOunge2BrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn6rWs7ISxIO2VreuqqSDrsojtmLjqsIAg7J6Y66q765CY7JeI7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfsl7DqsrDtlaAg64uk66W4IOq1rOyEsSDtla3rqqnsnZgg67KI7Zi47J6F64uI64ukLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2EIOygleunkCDsgq3soJztlZjsi5zqsqDsirXri4jquYw/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2YIOydtOumhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn7J2066aE7J20IOydtOuvuCDri6TsnYwg67KI7Zi47J2YIOq1rOyEsSDtla3rqqnsl5DshJwg7IKs7JqpIOykkeyeheuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn67KE7KCEIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn7J20IOq1rOyEsSDtla3rqqnsnZgg67KE7KCEIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+uyhOyghCDrsojtmLjqsIAg64uk7J2MIOuyiO2YuOydmCBDb25maWdJdGVtc+yXkOyEnCDsnbTrr7gg7IKs7JqpIOykkeyeheuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn7J247Iuc642Y7Yq4IOyDge2DnCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn6rWs7ISxIO2VreuqqSDquLDroZ06ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ+q4sOuhnSDsvZjthZDsuKAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+2BrOumrOyXkOydtO2DgOyehCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICftmZXrjIAg67O06riwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ+2OmOydtOyngOuLuSDqtazshLEg7ZWt66qpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfqtazshLEg7ZWt66qpIOuNsOydtO2EsOulvCDssL7snYQg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfsnbQg6rWs7ISxIO2VreuqqeydhCDshKDtg53tlanri4jri6QuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn6rKA7IOJIOyLpO2WiSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+q1rOyEsSDtla3rqqnsmqkg7Yq466as67ewJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn6rmK7J20IOugiOuyqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+2ZleuMgC/stpXshownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn6rWs7ISxIO2VreuqqeydmCDstZzrjIAg66eB7YGsIOugiOuyqOyXkCDrj4Tri6ztlojsirXri4jri6QhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfqtazshLEg7ZWt66qpIOygleuztCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICftmITsnqwg67Cw7Y+sIOyDge2DnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn7ZiE7J6sIOyduOyLnOuNmO2KuCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn66eI7KeA66eJIOuzgOqyveuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfrp4jsp4Drp4kg67OA6rK97J6QJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn6rWs7ISxIO2VreuqqSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfqtazshLEg7ZWt66qpIOqygOyDiSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+uLpOydjCDtgbTrnpjsiqTrpbwg6rCA7KC47Ji164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfri6TsnYwg7Jet7ZWg7J2EIOqwgOyguOyYteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn7ZW064u5IOuPmeyggSDtlYTrk5zsmYAg7J2867CYIOy5tO2DiOuhnOq3uCDtgbTrnpjsiqTrj4Qg7IOd7ISx65CY66mwIOyekOuPmeycvOuhnCDsoJzqsbDrkJjsp4Ag7JWK64qU64uk64qUIOygkOyXkCDsnKDsnZjtlZjshLjsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn6rOE7IaNIOynhO2Wie2VmOyLnOqyoOyKteuLiOq5jD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn7JiI7KCcIO2BtOuemOyKpOqwgCDtlYTsmpTtlanri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ+ygleydmOyXkCDsnKDtmqjtlZwgWUFNTCDtlbTsi5zqsIAg7JeG7Iq164uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ+qwnOyalDogSVRTTSDqtazshLEg7ZWt66qpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JROqwgCDsp4DsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+yEoO2Dne2VnCDqtazshLEg7ZWt66qp7J20IO2VmOuCmCDsnbTsg4Eg7ZWE7JqU7ZWp64uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+ydtCDqtazshLEg7ZWt66qp7JeQIOuMgO2VnCDsk7DquLAg6raM7ZWc7J20IOyXhuyKteuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ+2BtOuemOyKpOyXkCDrjIDtlZwg7KCV7J2Y6rCAIOygleydmOuQmOyngCDslYrslZjsirXri4jri6QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfrjbDsnbTthLDrsqDsnbTsiqTsl5DshJwg6rWs7ISxIO2VreuqqSAiJXMi66W8IOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ+q1rOyEsSDtla3rqqkgSUQgJXPrpbwg7IKt7KCc7ZWgIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXPsl5Ag64yA7ZWcIOuyhOyghOydhCDssL7snYQg7IiYIOyXhuyKteuLiOuLpCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn6rWs7ISxIO2VreuqqSBJRCwg7KSR67O1IElEIOuYkOuKlCDtgbTrnpjsiqQgSUTqsIAg7KeA7KCV65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ+yVoeyEuOyKpCDqtoztlZzsnbQg7JeG7Iq164uI64ukISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICftnojsiqTthqDrpqzrpbwg7ZGc7Iuc7ZWgIOyImCDsl4bqs6AsIENvbmZpZ0l0ZW1JROqwgCDsp4DsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+q4sOuhneydhCDtkZzsi5ztlaAg7IiYIOyXhuycvOupsCDslaHshLjsiqQg6raM7ZWc7J20IOu2gOyXrOuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfsg4gg6rWs7ISxIO2VreuqqShJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ+yDiCDrsoTsoIQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+uwsO2PrCDsg4Htg5wg7JeF642w7J207Yq465CoKOyDiD0lcywg7J207KCEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfsnbjsi5zrjZjtirgg7IOB7YOcIOyXheuNsOydtO2KuCjsg4g9JXMsIOydtOyghD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfqtazshLEg7ZWt66qpKElEPSVzKSDsgq3soJzrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdzKOycoO2YlT0lcynsl5Ag64yA7ZWcIOunge2BrOqwgCDstpTqsIDrkJjsl4jsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdzKOycoO2YlT0lcynsl5Ag64yA7ZWcIOunge2BrCDsgq3soJzrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ+q1rOyEsSDtla3rqqkg7KCV7J2YIOyXheuNsOydtO2KuOuQqChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfsnbTrpoQg7JeF642w7J207Yq4KOyDiD0lcywg7J207KCEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ+yGjeyEsSAlc+qwgCAiJXMi7JeQ7IScICIlcyLroZwg7JeF642w7J207Yq465CY7JeI7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfrsoTsoIQgJXMg7IKt7KCc65CoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ+q1rOyEsSDtla3rqqkgSUQg65iQ64qUIOuyhOyghCBJROqwgCDsp4DsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfshKTsoJUg7ZWt66qp7J2EIO2RnOyLnO2VoCDsiJgg7JeG7Jy866mwIOyVoeyEuOyKpCDqtoztlZzsnbQg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlc+ulvCDrjbDsnbTthLDrsqDsnbTsiqTsl5DshJwg7LC+7J2EIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfqtazshLEg7ZWt66qpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfsl5DshJwgJXPqsIAg7J247IeE7ZaI7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn7LC46rOgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn7J6Y66q765CcIENsYXNzSUTsnoXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJROqwgCDsoJzqs7XrkJjsp4Ag7JWK7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+ydtCDtgbTrnpjsiqTsl5Ag64yA7ZWcIOyVoeyEuOyKpCDqtoztlZzsnbQg67aA7Jes65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+qysOqzvCDsl4bsnYwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO8JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICftla3rqqnsnYQg7ZGc7Iuc7ZWgIOyImCDsl4bsirXri4jri6QuIOq1rOyEsSDtla3rqqnsl5Ag64yA7ZWcIOyVoeyEuOyKpCDqtoztlZzsnbQg67aA7Jes65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAn6rWs7ISxIO2VreuqqeydhCDssL7snYQg7IiYIOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn67KE7KCE7J2EIOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ+yatOyYgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn6rK96rOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn7J247Iuc642Y7Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfsnbQg6rWs7ISxIO2VreuqqeydmCDrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn7J20IOq1rOyEsSDtla3rqqnsnZgg7J247Iuc642Y7Yq4IOyDge2DnCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+u5hO2XiOqwgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICftlYTthLDqsIAg7Jyg7Zqo7ZWY7KeAIOyViuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ+qygOyDiSDrp6TqsJzrs4DsiJjqsIAg7J6Y66q765CY7JeI7Iq164uI64ukISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+2RnOyLnOuQnCDqtazshLEg7ZWt66qpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+uwsO2PrCDsg4Htg5wg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+2YhOyerCDsnbjsi5zrjZjtirgg7IOB7YOcIOycoO2YlSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfsgqzsnbQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+q1rOyEsSDtla3rqqnsnZgg7YG0656Y7IqkIOygnO2VnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn7ZWY64KYIOydtOyDgeydmCDtgbTrnpjsiqTrpbwg7ISg7YOd7ZWY7JesIOyEoO2DnSDqsIDriqXtlZwg6rWs7ISxIO2VreuqqeydhCDsoJztlZztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfqtazshLEg7ZWt66qp7J2YIO2BtOuemOyKpCDsoJztlZwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICftlZjrgpgg7J207IOB7J2YIO2BtOuemOyKpOulvCDshKDtg53tlZjsl6wg7ISg7YOdIOqwgOuKpe2VnCDqtazshLEg7ZWt66qp7J2EIOygnO2VnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfrj5nsoIEo6rWs7ISxIO2VreuqqSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ+ygleyggSjrsoTsoIQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ+unge2BrCDssLjsobAg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ+ydtCDrp4HtgazqsIAg6rWs7ISxIO2VreuqqeyXkCDsoIHsmqnrkJjripTsp4Ag65iQ64qUIOywuOyhsCDqsJzssrTsnZgg7KCV7KCBIOuyhOyghOyXkCDsoIHsmqnrkJjripTsp4Ag7Jes67aA7J6F64uI64ukLiDtmITsnqwg7J247Iuc642Y7Yq4IOyDge2DnCDqs4TsgrDsnYAg64+Z7KCBIOunge2BrOyXkOyEnOunjCDsiJjtlonrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn6rWs7ISxIO2VreuqqeydhCDqsoDsg4ntlaAg7IaN7ISx7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ+q4sOuzuCDqtazsobDqsIAg7Jyg7Zqo7ZWY7KeAIOyViuyKteuLiOuLpC4gWUFNTCDtmJXsi53snZgg642w7J207YSwIO2VtOyLnOulvCDsnoXroKXtlZjshLjsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnWUFNTCDrrLjsnpDsl7TsnYAgXCctLS1cJ+uhnCDsi5zsnpHtlbTslbwg7ZWp64uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdjb25maWdpdGVtX2xpbmsg7YWM7J2067iU7J2EIOygnOqxsO2VoCDsiJgg7JeG7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn6rSA66CoIOuPmeyggSDtlYTrk5zrpbwg7LC+7J2EIOyImCDsl4bsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnY29uZmlnaXRlbV9saW5rIO2FjOydtOu4lOyXkCDsgr3snoXtlaAg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGluayDthYzsnbTruJTsl5Ag7ZaJIDDqsJzrpbwg7IK97J6F7ZaI7Iq164uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICftlZjrgpjsnZgg7JqU7IaM7J2YIOy1nOuMgCDqsJzsiJgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn67KE7KCEIOusuOyekOyXtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICfsoJXsnZgg64+Z6riw7ZmUIOykkSDsmKTrpZjqsIAg67Cc7IOd7ZaI7Iq164uI64ukLiDroZzqt7jrpbwg7ZmV7J247ZW0IOyjvOyEuOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfrj5nquLDtmZTrkJjsp4Ag7JWK7J2AIElUU01Db25maWdJdGVtIOygleydmOqwgCDsnojsirXri4jri6QuIElUU01Db25maWdJdGVtIOuPmeyggSDtlYTrk5wg67OA6rK9IOyCrO2VreydhCDrsLDtj6ztlZjshLjsmpQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfrp4zro4zrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfsnKDsp4Ag6rSA66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn7YyM7J2865+/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfqs4Ttmo3rkJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn7IiY66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfsnYDth7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn6rKA7YagJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfthYzsiqTtirgvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ+qwnOyalCDrsI8g7ZmV7J24JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ+2BtOuemOyKpC/sl63tlaAg67CPIOq0gOugqCDtlYTrk5wg6rCA7KC47Jik6riwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn7YG0656Y7IqkIOqwgOyguOyYpOq4sCDspJHsl5Ag7Jik66WY6rCAIOuwnOyDne2WiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIOyIqOq5gCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g7ZGc7Iuc65CoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJ7JeQ7IScIO2ZleyepSDqsoDsg4kg7KGw6rG07J2EIO2XiOyaqe2VqeuLiOuLpC4g7J20IOq4sOuKpeydhCDsgqzsmqntlZjrqbQg7JiI66W8IOuTpOyWtCAiKCprZXkxKiYmKmtleTIqKSIg65iQ64qUICIoKmtleTEqfHwqa2V5MiopIuyZgCDqsJnsnYAg7KGw6rG07Jy866GcIOq1rOyEsSDtla3rqqkg7J2066aE7J2EIOqygOyDie2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOyEpOyglSDtla3rqqkg6rKA7IOJ7JeQ7IScIO2ZleyepSDqsoDsg4kg7KGw6rG07J2EIO2XiOyaqe2VqeuLiOuLpC4g7J20IOq4sOuKpeydhCDsgqzsmqntlZjrqbQg7JiI66W8IOuTpOyWtCAiKCprZXkxKiYmKmtleTIqKSIg65iQ64qUICIoKmtleTEqfHwqa2V5MiopIuyZgCDqsJnsnYAg7KGw6rG07Jy866GcIOq1rOyEsSDtla3rqqkg7J2066aE7J2EIOqygOyDie2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICftlaDri7nrkJwgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn6rOg6rCd7IKs7JeQIO2VoOuLueuQnCBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ+qzoOqwnSDsgqzsmqnsnpDsl5Dqsowg7ZWg64u565CcIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIOyEpOyglSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn64+Z7J287ZWcIOq1rOyEse2VreuqqSDtgbTrnpjsiqQoXCdjbGFzc1wnKSDrmJDripQg7KCE7JetKFwnZ2xvYmFsXCcpIOuCtOyXkOyEnOunjCDqs6DsnKDtlZwg7J2066aE7J2EIO2ZleyduO2VmOuvgOuhnCDspJHrs7XsnYQg7LC+7J2EIOuVjCDquLDsobTsnZgg66qo65OgIOq1rOyEse2VreuqqeydtCDqs6DroKTrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfrqoXrqoUg7LK06rOE66W8IOyggeyaqe2VoCDrqqjrk4jsnYQg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn67KI7Zi4IOyytOqzhOulvCDsoIHsmqntlaAg66qo65OI7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn67KE7KCEIOusuOyekOyXtCDssrTqs4Trpbwg7KCB7Jqp7ZWgIOuqqOuTiOydhCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn7IOIIOuyhOyghCDsg53shLHsnYQg7Yq466as6rGw7ZWgIOyGjeyEseydhCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ+ydtCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOyXkCDtlaDri7ntlaAg7Lm07YWM6rOg66as66W8IOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfqtazshLEg7ZWt66qpIOqwnOyalOyXkCDrjIDtlZwg7Je0IOq1rOyEsSDtla3rqqkg7ZWE7YSwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkOyEnCDtlYTthLDrp4HtlaAg7IiYIOyeiOuKlCDsl7TsnoXri4jri6QuIOywuOqzoDog6rWs7ISxIO2VreuqqSDsho3shLHqs7wg64+Z7KCBIO2VhOuTnChEeW5hbWljRmllbGRfTmFtZVgpIOunjCDtl4jsmqnrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+q1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ+q1rOyEsSDtla3rqqkg7LaU6rCALic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ+q1rOyEsSDtla3rqqkg7Y647KeRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwg6riw66Gd7JeQIOuhnOq5he2VoCDsiJgg7J6I64qUIOq1rOyEsSDtla3rqqkg7J2067Kk7Yq4IOuqqOuTiOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqeydhCDtmITsnqwg7KCV7J2Y66GcIOyXheuNsOydtO2KuO2VmOuKlCDqtazshLEg7ZWt66qpIOydtOuypO2KuCDrqqjrk4jsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn6rWs7ISxIO2VreuqqSDquLDroZ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ+q1rOyEsSDtla3rqqkg7J247IeELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ+q1rOyEsSDtla3rqqkg7ZmV64yAL+y2leyGjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfqtazshLEg7ZWt66qpIO2KuOumrCDrs7TquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn6rWs7ISxIO2VreuqqSDrsoTsoIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn64uk7J2MIO2BtOuemOyKpOydmCDqtazshLEg7ZWt66qp7J2AIEVsYXN0aWNzZWFyY2gg7ISc67KE7JeQIOyggOyepeuQmOyngCDslYrsirXri4jri6QuIOydtOulvCDquLDsobQgQ0nsl5Ag7KCB7Jqp7ZWY66Ck66m0IOydtCDsmLXshZjsnYQg67OA6rK97ZWcIO2bhCDsvZjshpTsnYQg7Ya17ZW0IENJIOuniOydtOq3uOugiOydtOyFmOydhCDsi6TtlontlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfri6TsnYwg67Cw7Y+sIOyDge2DnOydmCDqtazshLEg7ZWt66qp7J2AIEVsYXN0aWNzZWFyY2gg7ISc67KE7JeQIOyggOyepeuQmOyngCDslYrsirXri4jri6QuIOydtOulvCDquLDsobQgQ0nsl5Ag7KCB7Jqp7ZWY66Ck66m0IOydtCDsmLXshZjsnYQg67OA6rK97ZWcIO2bhCDsvZjshpTsnYQg7Ya17ZW0IENJIOuniOydtOq3uOugiOydtOyFmOydhCDsi6TtlontlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfqtazshLEg7ZWt66qpIOygnO2VnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn7Y6Y7J207KeA64u5IOq1rOyEsSDtla3rqqkg7KCc7ZWcLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn6rWs7ISxIOq0gOumrCDrjbDsnbTthLDrsqDsnbTsiqQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfqtazshLEg7ZWt66qpIOydvOq0hCDrqqjrk4guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg67Cx7JeU65OcIOudvOyasO2EsOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+q1rOyEsSDtla3rqqnsl5Ag64yA7ZWcIOygleydmOulvCDrp4zrk6Tqs6Ag6rSA66as7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+2KueyglSDsi5zsoJDsl5Ag6rWs7ISxIO2VreuqqeyXkCDrjIDtlZwg7Yuw7LyT7J2EIOunjOuTreuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn6rOg6rCd7J2AIOqzvOqxsCBDSSDrsoTsoITsnYQg67O8IOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ+qzoOqwneydgCDsnbTsoIQgQ0kg67KE7KCEIOqwhOyXkCDsiJjrj5nsnLzroZwg7KCE7ZmY7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07J2YIOyGjeyEseyXkCDsgqzsmqntlaAg6riw67O4IOuNsOydtO2EsOyeheuLiOuLpC4g7JiIOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydmCDsho3shLHsl5Ag7IKs7Jqp7ZWgIOq4sOuzuCDrjbDsnbTthLDsnoXri4jri6QuIOyYiDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+unge2BrCDqsJ3ssrQg7JyE7KCv7JeQ7IScIOyEpOyglSDrsoTtirzsnYQg7IKs7Jqp7ZWgIOyImOyeiOuKlCDslaHshZgg7KCV7J2YIChMaW5rT2JqZWN0IDo6IFZpZXdNb2RlID0gImNvbXBsZXgiKS4g7J2065+s7ZWcIOyekeyXheydgCDri6TsnYwgSlMg67CPIENTUyDtjIzsnbzsnYQg65Ox66Gd7ZW07JW87ZWp64uI64ukLiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ+uyhOyghCDrrLjsnpDsl7Tsl5Ag64yA7ZWcIO2FnO2UjOumvzo67Yi07YK3IOyytOqzhOulvCDsoJXsnZjtlanri4jri6QuIOuyhOyghCDrrLjsnpDsl7Qg66qo65OI7J20IFRlbXBsYXRlVG9vbGtpdOycvOuhnCDshKTsoJXrkJwg6rK97Jqw7JeQ66eMIOyCrOyaqeuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+qzoOqwneydtCDqtazshLEg7ZWt66qp7J2EIOuzvCDsiJgg7J6I64+E66GdIO2XiOyaqeuQmOuKlCDsobDqsbQg7KeR7ZWp7J2EIOygleydmO2VqeuLiOuLpC4g7KGw6rG07J2AIOyEoO2DneyggeycvOuhnCDtirnsoJUg6rOg6rCdIOq3uOujueycvOuhnCDsoJztlZztlaAg7IiYIOyeiOyKteuLiOuLpC4g7J2066aE7J2AIOycoOydvO2VnCDtlYTsiJgg7IaN7ISx7J6F64uI64ukLiDri6Trpbgg7Ji17IWY7J2EIOyngOygle2VmOyngCDslYrsnLzrqbQg66qo65OgIOq1rOyEsSDtla3rqqnsnbQg7ZW064u5IOy5tO2FjOqzoOumrCDslYTrnpjsl5Ag7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn7J2867CYIOyduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjsl6wgSVRTTSDqtazshLEg7ZWt66qp7J2EIOyCreygnO2VmOuKlCDrjbAg7ZWE7JqU7ZWcIOq2jO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfsnbzrsJgg7J247YSw7Y6Y7J207Iqk66W8IOyCrOyaqe2VmOyXrCBJVFNNIOq1rOyEsSDtla3rqqnsnYQg6rCA7KC47Jik64qUIOuNsCDtlYTsmpTtlZwg6raM7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+ydvOuwmCDsnbjthLDtjpjsnbTsiqTrpbwg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqeydhCDqsoDsg4ntlZjripQg642wIO2VhOyalO2VnCDqtoztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn7J2867CYIOyduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjsl6wgSVRTTSDqtazshLEg7ZWt66qp7J2EIOyEpOygle2VmOuKlCDrjbAg7ZWE7JqU7ZWcIOq2jO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg66qp66Gd7J2YIOyekeydgCDrs7TquLDrpbwg7ZGc7Iuc7ZWY64qUIOqwnOyalCDrqqjrk4jsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfrhbjrk5wg7Jew6rKw7JeQIOunge2BrCDsnKDtmJUg66CI7J2067iU7J2EIO2RnOyLnO2VoOyngCDsl6zrtoDrpbwg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn6rCBIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIOuMgO2VtCDqsJzrs4TsoIHsnLzroZwg7KCV6rec7Iud7J2EIOygleydmO2VmOyXrCDqtazshLEg7ZWt66qpIOydtOumhOydhCDtmZXsnbjtlZjqs6Ag7ZW064u5IOyYpOulmCDrqZTsi5zsp4Drpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIO2BtOuemOyKpOyXkCDrlLDrnbwg6rWs7ISxIO2VreuqqSDqsJzsmpTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCBDSSDsl7TsnYQg7KCV7J2Y7ZWp64uI64ukLiDqsIEg7ZWt66qp7J2AIO2BtOuemOyKpCDsnbTrpoTqs7wg7ZW064u5IO2BtOuemOyKpOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIO2VhOuTnCDrsLDsl7TroZwg6rWs7ISx65CY7Ja07JW8IO2VqeuLiOuLpC4g64+Z7KCBIO2VhOuTnCDtla3rqqnsnYAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDsiqTtgqTrp4jrpbwg65Sw65287JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO87J2YIOq1rOyEsSDtla3rqqkg7KCV66Cs7J2EIOychO2VnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsnZgg6rWs7ISxIO2VreuqqSDsoJXroKzsnYQg7JyE7ZWcIOq4sOuzuCDqtazshLEg7ZWt66qpIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn7J20IOyekeyXheydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsnZgg6rWs7ISxIO2VreuqqSDsoJXroKzsl5Ag64yA7ZWcIOq4sOuzuCDqtazshLEg7ZWt66qpIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOyXkOyEnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsiJzshJzrpbwg7KCV7J2Y7ZWp64uI64ukLiDsnITsqr06IOqwgOyepSDsmKTrnpjrkJwg7ZWt66qp7J2EIOunqCDsnITsl5Ag67Cw7LmY7ZWp64uI64ukLiDslYTrnpjroZw6IOy1nOyLoCDtla3rqqnsnbQg66eoIOychOyXkCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOyXkOyEnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsiJzshJzrpbwg7KCV7J2Y7ZWp64uI64ukLiDsnITsqr06IOqwgOyepSDsmKTrnpjrkJwg7ZWt66qp7J2EIOunqCDsnITsl5Ag7ZGc7Iuc7ZWp64uI64ukLiDslYTrnpjroZw6IOy1nOyLoCDtla3rqqnsnYQg66eoIOychOyXkCDrsLDsuZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIO2RnOyLnOuQmOuKlCBDSeydmCDquLDrs7gg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqeydgCDtgbTrnpjsiqQg7J2066aE6rO8IO2VtOuLuSDtgbTrnpjsiqTsl5Ag7IKs7JqpIOqwgOuKpe2VnCDtlYTrk5wg67Cw7Je066GcIOq1rOyEseuQmOyWtOyVvCDtlanri4jri6QuIOuPmeyggSDtlYTrk5wg7ZWt66qp7J2AIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg7Iqk7YKk66eI66W8IOuUsOudvOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ+2RnOyLnO2VoCDquLDrs7gg6rSA6rOEIOq5iuydtOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOyXkCDquLDrs7jsoIHsnLzroZwg7ZGc7Iuc65CY64qUIOq1rOyEsSDtla3rqqkg6rKA7IOJIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qpIOqygOyDiSDtmZTrqbTsl5Ag6riw67O47KCB7Jy866GcIO2RnOyLnOuQmOuKlCDqtazshLEg7ZWt66qpIOqygOyDiSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLiDsmIg6ICLtgqQi64qUIOuPmeyggSDtlYTrk5zsnZgg7J2066aEKOydtCDqsr3smrAgXCdYXCcpLCAi7L2Y7YWQ7LigIuuKlCDrj5nsoIEg7ZWE65OcIOycoO2YleyXkCDrlLDrnbwg64+Z7KCBIO2VhOuTnOydmCDqsJIo7YWN7Iqk7Yq4OiBcJ+2FjeyKpO2KuFwnLCDrk5zroa3ri6TsmrQ6IFwnMVwnLCDrgqDsp5wv7Iuc6rCEKeydtOyWtOyVvCDtlanri4jri6Q6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMFwnOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIOuwjyDrmJDripQgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnXCdJVFNNQ29uZmlnSXRlbVwnIO2BtOuemOyKpOydmCDquLDrs7gg7ZWY7JyEIOqwneyytOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQ7IScIOyCrOyaqSDqsIDriqXtlZwgQ0kg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqeydgCDtgbTrnpjsiqQg7J2066aE6rO8IO2VtOuLuSDtgbTrnpjsiqTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCDtlYTrk5wg67Cw7Je066GcIOq1rOyEseuQmOyWtOyVvCDtlanri4jri6QuIOuPmeyggSDtlYTrk5wg7ZWt66qp7J2AIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg7Iqk7YKk66eI66W8IOuUsOudvOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ+ydtCDtmZTrqbTsnZgg7ISc7Iud7J6I64qUIO2FjeyKpO2KuCDtjrjsp5HquLAg6rWs7ISxIOyalOyGjOydmCDrhpLsnbTrpbwg7KCV7J2Y7ZWp64uI64ukLiDsiKvsnpAgKO2UveyFgCkg65iQ64qUIO2NvOyEvO2KuCDqsJIgKOyDgeuMgCnsnYQg7J6F66Cl7ZWY7Iut7Iuc7JikLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqtIDrpqzsnpAg7J247YSw7Y6Y7J207Iqk7JeQ7IScIENJIOygleydmCDtjrjsp5HquLDsnZgg7ZaJIOyImOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ+yduOyLnOuNmO2KuCDsg4Htg5zsnZgg7Iic7ISc66W8IOuGkuydjCjsmIg6IO2BrOumrOyLnO2DiCnsl5DshJwg64Ku7J2MKOyYiDog6riw64qlKeycvOuhnCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn7Jew6rKw65CcIO2LsOy8k+ydtCBDSeydmCDsg4Htg5zsl5Ag7JiB7Zal7J2EIOykhCDsiJgg7J6I64qUIOq0gOugqCDrsLDtj6wg7IOB7YOc66W8IOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdBZ2VudElUU01Db25maWdJdGVtIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIO2ZlOuptOydmCDqsoDsg4kg7KCc7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn66qo65OgIENJIO2BtOuemOyKpOyXkCDrjIDtlbQg66eB7YGsIO2FjOydtOu4lCDrs7Xtlakg67O06riw7JeQIO2RnOyLnOuQmOuKlCBDSSDsl7TsnYQg7KCV7J2Y7ZWp64uI64ukLiDtla3rqqnsnbQg7JeG7Jy866m0IOq4sOuzuCDsl7TsnbQg7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ0kg7YG0656Y7Iqk7JeQIOuUsOudvCDrp4Htgawg7YWM7J2067iUIOuzte2VqSDrs7TquLDsl5Ag7ZGc7Iuc65CY64qUIENJIOyXtOydhCDsoJXsnZjtlanri4jri6QuIOqwgSDtla3rqqkg7JWe7JeQ64qUIO2BtOuemOyKpCDsnbTrpoTqs7wg7J207KSRIOy9nOuhoCjsmIg6IOy7tO2TqO2EsDo6KeydtCDsmYDslbwg7ZWp64uI64ukLiDrqqjrk6AgQ0nsl5Ag6rO17Ya17Jy866GcIOyggeyaqeuQmOuKlCDrqocg6rCA7KeAIENJIOyGjeyEseydtCDsnojsirXri4jri6Qo7JiIOiBDb21wdXRlciDtgbTrnpjsiqTsnZgg6rK97JqwOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBDSSDsoJXsnZjsl5Ag7KCV7J2Y65CcIOuMgOuhnCDqsJzrs4QgQ0kg7IaN7ISx7J2EIO2RnOyLnO2VmOugpOuptCDri6TsnYwg7Iqk7YKk66eI66W8IOyCrOyaqe2VtOyVvCDtlanri4jri6Qo7JiIOiBDb21wdXRlciDtgbTrnpjsiqTsnZgg6rK97JqwKTog7Lu07ZOo7YSwOjrtlZjrk5zrlJTsiqTtgaw6OjEsIOy7tO2TqO2EsDo67ZWY65Oc65SU7Iqk7YGsOjoxOjrsmqnrn4k6OjEsIOy7tO2TqO2EsDo67ZWY65Oc65SU7Iqk7YGsOjoyLCDsu7Ttk6jthLA6Ou2VmOuTnOuUlOyKpO2BrDo6Mjo67Jqp65+JOjoxLiBDSSDtgbTrnpjsiqTsl5Ag64yA7ZWcIO2VreuqqeydtCDsl4bripQg6rK97JqwIOq4sOuzuCDsl7TsnbQg7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g6rWs7ISxIO2VreuqqSBBQ0wg6rWs7KGw7J2YIOyEuCDrsojsp7gg7IiY7KSA7JeQ7IScIFwn64+Z7J6RXCfsl5Ag7IKs7Jqp7ZWgIOyImCDsnojripQg7ZWt66qp7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOq1rOyEsSDtla3rqqkgQUNMIOq1rOyhsOydmCDssqsg67KI7Ke4IOyImOykgOyXkOyEnCDsgqzsmqntlaAg7IiYIOyeiOuKlCDtla3rqqnsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOq1rOyEsSDtla3rqqkgQUNMIOq1rOyhsOydmCDrkZAg67KI7Ke4IOyImOykgOyXkOyEnCDsgqzsmqntlaAg7IiYIOyeiOuKlCDtla3rqqnsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfsl7DqsrDrkJwgQ0nsnZgg7IOB7YOc7JeQIOyYge2WpeydhCDrr7jsuaAg7IiYIOyeiOuKlCDrp4Htgawg7Jyg7ZiVKO2LsOy8kyDqtIDsoJDsl5DshJwg66qF66qF65CoKeydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn7Jew6rKw65CcIENJ7J2YIOyDge2DnOyXkCDsmIHtlqXsnYQg7KSEIOyImCDsnojripQg7Yuw7LyTIOycoO2YleydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn7KCV7J2YIOyXheuNsOydtO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSDsgq3soJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfrsLDtj6wg7IOB7YOcIOyDieyDgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+ykkeuztSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ+uPmeyggSDtlYTrk5wg67OA6rK9IOyCrO2VreydtCDtj6ztlajrkJwg6rK97JqwIOq1rOyEsSDtla3rqqkg7KCV7J2Y6rCAIOuPmeq4sO2ZlOuQmOyngCDslYrsnYAg6rKD7Jy866GcIO2RnOyLnO2VmOuKlCDrj5nsoIEg7ZWE65OcIOydtOuypO2KuCDrqqjrk4jsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOy2lOqwgCBJVFNNIO2VhOuTnCDtmZTrqbTsl5Ag7ZGc7Iuc65CY64qUIOuPmeyggSDtlYTrk5zsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+qzoOqwnSDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsJzsmpQg7ZmU66m07JeQIO2RnOyLnOuQmOuKlCDrj5nsoIEg7ZWE65Oc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOyXkCDtkZzsi5zrkJjripQg64+Z7KCBIO2VhOuTnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn7IOB64u07JuQIO2UhOufsO2KuOyXlOuTnOyXkOyEnCDtlZwg67KI7JeQIOuRkCDqsJwg7J207IOB7J2YIOq1rOyEsSDtla3rqqnsl5Ag64yA7ZW0IOyekeyXhe2VoCDsiJgg7J6I64+E66GdIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSDquLDriqXsnYQg7IKs7JqpIOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+uCmOyXtOuQnCDqt7jro7nsl5Ag64yA7ZW07ISc66eMIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSDquLDriqXsnYQg7Zmc7ISx7ZmU7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfsnbTrsqTtirgg66qo65OI7J2EIOyCrOyaqe2VmOyXrCDti7DsvJMtY29uZmlnaXRlbS1saW5r7JeQ7IScIGNvbmZpZ2l0ZW0tc3RhdHVz66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn7KCE7LK0IO2FjeyKpO2KuCDqsoDsg4nsl5Ag7IKs7Jqp65CY64qUIOq1rOyEsSDtla3rqqkg7J24642x7Iqk7J2YIO2VhOuTnOyeheuLiOuLpC4g7ZWE65Oc64+EIOyggOyepeuQmOyngOunjCDsoITssrQg6riw64ql7JeQIO2VhOyImOyggeyduCDqsoPsnYAg7JWE64uZ64uI64ukLiDssqjrtoAg7YyM7J28IO2PrO2VqOydgCDtla3rqqnsnYQgMOycvOuhnCDshKTsoJXtlZjqsbDrgpgg7IKt7KCc7ZWY7JesIOu5hO2ZnOyEse2ZlO2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn7KCE7LK0IO2FjeyKpO2KuCDqsoDsg4kg7Jm47JeQIOuLpOuluCDsmqnrj4TroZwg7IKs7Jqp65CY64qUIOq1rOyEsSDtla3rqqkg7J24642x7Iqk7JeQIOyggOyepeuQnCDtlYTrk5zsnoXri4jri6QuIOyghOyytCDquLDriqXsnYQg7IKs7Jqp7ZWY66Ck66m0IOuqqOuToCDtlYTrk5zqsIAg7ZWE7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCDsnbjrs7Tsu6Qg66CI7J207Ja07JeQIOuMgO2VnCBHZW5lcmljSW50ZXJmYWNlIOuqqOuTiCDrk7HroZ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pCDroIjsnbTslrTsl5Ag64yA7ZWcIEdlbmVyaWNJbnRlcmZhY2Ug66qo65OIIOuTseuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pCDroIjsnbTslrTsl5Ag64yA7ZWcIEdlbmVyaWNJbnRlcmZhY2Ug66qo65OIIOuTseuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSDqtazshLEg7ZWt66qpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSDqtazshLEg7ZWt66qpIOqwnOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfsnbjsi5zrjZjtirgg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJ7JeQIOuwsO2PrCDsg4Htg5zrpbwg7Y+s7ZWo7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJ7JeQIOyduOyLnOuNmO2KuCDsg4Htg5zrpbwg7Y+s7ZWo7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfsnbQg7J6R7JeF7J2YIOqysOqzvOyXkCDtkZzsi5ztlaAg7LWc64yAIOq1rOyEsSDtla3rqqkg7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ+uqqOuTiOydhCDsgqzsmqntlZjsl6wg7YG0656Y7Iqk66W8IOuLtOuLue2VmOuKlCDqt7jro7nsnYQg7ZmV7J247ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ+uqqOuTiOydhCDtgbTrpq3tlZjsl6wg6rWs7ISxIO2VreuqqeydhCDri7Tri7ntlZjripQg6re466O57J2EIO2ZleyduO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfrqqjrk4jsnYQg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqSDthrXqs4Trpbwg7IOd7ISx7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ+ydtOumhCDrqqjrk4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ+yIq+yekCDrqqjrk4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCDqsoDsg4kg6rKw6rO87J2YIOqwgSDtjpjsnbTsp4Dsl5Ag7ZGc7Iuc7ZWgIOq1rOyEsSDtla3rqqnsnZgg7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7JeQ7IScIOqygOyDiSDqsrDqs7zsnZgg6rCBIO2OmOydtOyngOyXkCDtkZzsi5ztlaAg6rWs7ISxIO2VreuqqSDsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ+qygOyDie2VoCDqsJzssrQsIO2RnOyLnO2VoCDtla3rqqkg7IiYLCDtkZzsi5ztlaAg7IaN7ISxLiDqtazshLEg7ZWt66qpIOyGjeyEseydgCBFbGFzdGljc2VhcmNo66W8IO2Gte2VtCDrqoXsi5zsoIHsnLzroZwg7KCA7J6l7ZW07JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn6rCc7JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOydmCDsubTthYzqs6Drpqzsl5Ag64yA7ZWcIOunpOqwnCDrs4DsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7J6R7J2AIOq1rOyEsSDtla3rqqkg6rCc7JqU7J2YIOyXtCDtlYTthLDsl5Ag64yA7ZWcIOunpOqwnCDrs4DsiJjsnoXri4jri6QuIOywuOqzoDogXCftmZzshLFcJ+ydhCAw7Jy866GcIOyEpOygle2VmOuptCDsg4Hri7Tsm5DsnbQg6rCc7J24IOq4sOuzuCDshKTsoJXsl5DshJwg7J20IOq3uOujueydmCDshKTsoJXsnYQg7Y647KeR7ZWgIOyImCDsl4bsp4Drp4wg6rSA66as7J6Q6rCAIOuLpOuluCDsgqzsmqnsnpDsnZgg7ISk7KCV7J2EIOuMgOyLoCDtjrjsp5HtlaAg7IiYIOyeiOyKteuLiOuLpC4g7IKs7Jqp7J6QIOyduO2EsO2OmOydtOyKpOyXkOyEnCDsnbTrn6ztlZwg7ISk7KCV7J20IO2RnOyLnOuQoCDsmIHsl63snYQg7KCc7Ja07ZWY66Ck66m0IFwnUHJlZmVyZW5jZUdyb3VwXCfsnYQg7IKs7Jqp7ZWY7IS47JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg67Cw7Y+sIOyDge2DnOydmCDrp6TqsJzrs4DsiJgg7IOJ7IOB7J2EIOyngOygle2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg67Cw7Y+sIOyDge2DnOyXkCDrjIDtlZwg66ek6rCc67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfsnbzrsJgg7Lm07YOI66Gc6re4IOyGjeyEseydmCDsmIjsi5wg6raM7ZWcIOq3uOujueyXkCDrjIDtlZwg66ek6rCc67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg7J2066aEIOuqqOuTiOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg67KI7Zi4IOuqqOuTiOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn7Y6Y7J207KeA7J2YIOunpOqwnOuzgOyImCjqtazshLEg7ZWt66qp7J20IO2RnOyLnOuQmOuKlCDtjpjsnbTsp4Ap7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq4sOuzuCDshKTsoJUg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIOuMgO2VnCDrsoTsoIQg66y47J6Q7Je0IOuqqOuTiOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsl5Ag64yA7ZWcIOuyhOyghCDrrLjsnpDsl7Qg7YWc7ZSM66a/IO2ItO2CtyDrqqjrk4jsnZgg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOyXkCDrjIDtlZwg67KE7KCEIO2KuOumrOqxsOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ+q2jO2VnCDqt7jro7knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDssqjrtoAg7J6R7JeF7J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7Yq466asIOuztOq4sCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDtmZXrjIAg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDstpTqsIAg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCDsnbzqtIQgSVRTTSDqtazshLEg7ZWt66qpIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIO2OuOynkSDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIOq4sOuhnSBJVFNNIOq1rOyEsSDtla3rqqkg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIOyduOyHhCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn6rWs7ISxIO2VreuqqeydhCDsgq3soJztlZjroKTrqbQg7ZWE7JqU7ZWcIOq2jO2VnOydtCDtlYTsmpTtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn6rWs7ISxIO2VreuqqeydhCDqsoDsg4ntlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfti7DsvJPsnbQgQ0nsl5Ag7Jew6rKw65CY66m0IOyekOuPmeycvOuhnCBDSeydmCDsnbjsi5zrjZjtirgg7IOB7YOc66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7J286rSEIO2ZlOuptOyXkOyEnCDrsLDtj6wg7IOB7YOc66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOydvOq0hCDtmZTrqbTsl5DshJwg7J247Iuc642Y7Yq4IOyDge2DnOulvCDshKTsoJXtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIO2ZleuMgC/stpXshowg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg64uk66W4IOqwnOyytOyZgCDsl7DqsrDtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOyeiOuKlCDqtazshLEg7ZWt66qp7J2YIOq4sOuhneyXkCDslaHshLjsiqTtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOyDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg7ZmV64yAIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qp7J2YIOq4sOuhneyXkCDslaHshLjsiqTtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+uplOuJtOyXkCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDsgq3soJztlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn66mU64m07JeQIOq1rOyEsSDtla3rqqkg66eB7YGs66W8IO2KuOumrCDrs7TquLDroZwg7ZGc7Iuc7ZWY64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkCDsnojripQg6rWs7ISxIO2VreuqqeydhCDrs7XsoJztlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOunge2BrOulvCDtkZzsi5ztlZjsl6wg7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAv7LaV7IaMIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qp7J2EIOuzteygnO2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg7Y647KeR7ZWgIOyImCDsnojripQg66eB7YGs66W8IOuplOuJtOyXkCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIO2ZleuMgC/stpXshowg67O06riw66GcIOuPjOyVhOqwiCDsiJgg7J6I64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOunge2BrOulvCDtkZzsi5ztlZjsl6wg7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg7J247IeE7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkCDsnojripQg6rWs7ISxIO2VreuqqeydhCDtmZXrjIDtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkCDqtazshLEg7ZWt66qpIOq4sOuhneydhCDtkZzsi5ztlanri4jri6Qo7Jet7IicKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn7ISg7YOd65CY7KeAIOyViuydgCDqsr3smrAg7ZGc7Iuc65CY64qUIOq4sOuzuCDsubTthYzqs6DrpqzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qp7J2YIOyLneuzhOyekCjsmIg6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jKeyeheuLiOuLpC4g6riw67O46rCS7J2AIENvbmZpZ0l0ZW0j7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pOulvCDsnpDrj5nsnLzroZwg7Yq466as6rGw7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfrsoTsoIQg66y47J6Q7Je0IO2RnO2YhOyLnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfrsoTsoIQg66y47J6Q7Je0IOuqqOuTiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfrsoTsoIQg7Yq466as6rGwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfsupDsi5zrkJwg7ZWE65OcIOyiheyGjeyEseydhCDtmZXsnbjtlZjsl6wgQ29uZmlnSXRlbUFDTOydmCDsi6TtlonsnYQg7ZS87ZWgIOyImCDsnojripTsp4Ag7Jes67aALiDsnbQg7Ji17IWY7J2AIOyImOyLneydmCDroZzrlKkg7Iuc6rCE7J2EIOqwnOyEoO2VoCDsiJgg7J6I7KeA66eMLCBBQ0xNb2R1bGXsnYQgSVRTTUNvbmZpZ0l0ZW0g67CPIEZvcm0tUmV0dXJuVHlwZXPsl5Ag7IKs7Jqp7ZWY66Ck64qUIOqyveyasCDruYTtmZzshLHtmZTtlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn7Zek642U7JeQIO2RnOyLnOuQmOuKlCDsnbzrsJgg7KCV67O07J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+2BtOuemOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfquIDroZzrsownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICftj6zsiqTtirgg7ZSE66Gc642V7IWYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfsgqzsoIQg7IOd7IKw7ISxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfsg53sgrDshLEnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LjXsnbjsuZgoNDQuNDVjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjHsnbjsuZgoNTMuMzRjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYuMjXsnbjsuZgoNjYuNjhjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMS417J247LmYKDgwLjAxY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE57J247LmYIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEuNzXsnbjsuZgoNC40NWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM17J247LmYKDg4LjljbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjHsnbjsuZgg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzguNeyduOy5mCg5Ny43OWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyM+yduOy5mCDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy427J247LmYKDYwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDLsnbjsuZgoMTA2LjY4Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0Ny4yNeyduOy5mCgxMjAuMDJjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMuNeyduOy5mCg4Ljg5Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLjXsnbjsuZgoMTMzLjM1Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNeyduOy5mCg4MDBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3Ljc17J247LmYKDE0Ni42OGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjTsnbjsuZgoOTAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2M+yduOy5mCgxNjAuMDJjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNOyduOy5mCgxMDAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OC4yNeyduOy5mCgxNzMuMzVjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNS4yNeyduOy5mCgxMy4zNGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3My417J247LmYKDE4Ni42OWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuM+yduOy5mCgxMTAwbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzguNzXsnbjsuZgoMjAwLjAyY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjLsnbjsuZgoMTIwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODTsnbjsuZgoMjEzLjM2Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDfsnbjsuZgoMTcuNzhjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOC43NeyduOy5mCgyMi4yM2NtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMC417J247LmYKDI2LjY3Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMi4yNeyduOy5mCgzMS4xMmNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTTsnbjsuZgoMzUuNTZjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1Ljc17J247LmYKDQwLjAxY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn7ZqM6rOEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn7KO87IaMIO2VoOuLuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn6rSA66as7J6QJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+yVhOuCoOuhnOq3uCDsoITtmZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfslrTtlIzrnbzsnbTslrjsiqQg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn67Cw7YSw66asIOyaqeufiShBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn67Cw7YSw66asIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+u5jOuUqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn67KE7IqkIOyduO2EsO2OmOydtOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDtgbTrnpjsiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+yaqeufiShHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfqt7jrnpjtlL0g7Lm065Oc64u5IOyaqeufiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ+y5tOuTnCDrsojtmLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfsubTrk5wg66as642UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+y5tOuTnCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ+2BtOudvOydtOyWuO2KuCDsnbjspp3shJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn7YG065287J207Ja47Yq4IOyGjO2UhO2KuOybqOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfqs6DqsJ0g7Lm07YWM6rOg66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ+yLnOqzhCDsho3rj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ+yLnOqzhCDsho3rj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+y9lOuTnCDshJzrqoUg7J247Kad7IScJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICftmozsnZjsmqkg7KCE7ZmUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn7Luo7ISk7YyFIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn7Jew65297LKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfstJ3tjJAg7Jew65297LKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn7Luo7YWM7J2064SIIOq0gOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+qzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn6rOE7JW9IOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ+qzhOyVvSDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn6rOE7JW9IOq4sOqwhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfrrLTshKAg7KCE7ZmU6riwKERFQ1Qg7KCE7ZmU6riwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfruYTsmqkg64uo7JyEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn65287J207ISg7IqkIOyImCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn7IOd7ISxIOuCoOynnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn66ee7Lak7ZiVIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDsmIjslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyDshJzrsoQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ+yGoeyepSDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ+yjvOusuCDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+uztOymnSDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn7Lac7IucIOuCoOynnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn642w7Iqk7YGs7YaxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAn65SU7Iqk7ZSM66CI7J20IO2PrO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+usuOyEnCDshJzrqoUg7J247Kad7IScJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+ydtOuplOydvCDsnbjspp3shJwoUy9NSU1FIOyduOymneyEnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6rOg7JqpIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ+y1nOyihSBJUCDso7zshownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfsp4Dsm5Ag7KKF66OMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn66eM66OMIOuCoOynnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn7Jm47J6lIO2VmOuTnCDrk5zrnbzsnbTruIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfrsKntmZTrsr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICftjozsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICftlIzrnbzsnbTtnKAg7JeQ64SI7KeAIOyggOyepSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ+2PvCDtjKnthLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ+2UhOuenOywqOydtOymiCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICftlITrpqzsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn7J2867CYIOygleuztCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ+q3uOuemO2UvSDsubTrk5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ+q3uOuemO2UvSDsubTrk5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICftlZjrk5zsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICftlZjrk5zsm6jslrQg66qo6424JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ+2VmOuTnOybqOyWtCDrrLTqsownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ+2XpOuTnOyFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIO2UhOuhnO2GoOy9nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJRCDrsI8g7JWh7IS47IqkIOq0gOumrChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfsnqzqs6Ag67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfshqHsnqUg67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn7YKk67O065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCDrqqjri4jthLAo7JWh7KCVIOuUlOyKpO2UjOugiOydtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCDrqqjri4jthLAo67Cc6rSRIOuLpOydtOyYpOuTnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn7Jyg7ISgIOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfrhbjtirjrtoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfsnITrj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfroIjsnbTslrQgMTog66y866as7KCBIOugiOydtOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfroIjsnbTslrQgMjog642w7J207YSwIOunge2BrCDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ+ugiOydtOyWtCAzOiDrhKTtirjsm4ztgawg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+ugiOydtOyWtCAzOiDrhKTtirjsm4ztgawg66CI7J207Ja0KOyKiO2NvOuEtyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn66CI7J207Ja0IDQ6IOyghOyGoSDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ+ugiOydtOyWtCA1OiDshLjshZgg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ+ugiOydtOyWtCA2OiDtlITroIjsoKDthYzsnbTshZgg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn66CI7J207Ja0IDc6IOyVoO2UjOumrOy8gOydtOyFmCDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn7J6E64yAIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ+udvOydtOyEoOyKpCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+udvOydtOyEoOyKpCDtgqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn65287J207ISg7IqkIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn65287J207ISg7IqkIOq4sOqwhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+udvOydtOyEoOyKpCDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ+umrO2KrCDsnbjsgrDssqAoTGlGZVBPNCkg67Cw7YSw66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfrpqztiqwg7J207JioKOumrO2KrCDsnbTsmKgpIOuwsO2EsOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ+uMgOy2nCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ+ychOy5mCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfqsr3rj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfsoJzsobDsl4XssrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ+y1nOuMgCDrtoDtlZgg7Jqp65+JKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ+uplOuqqOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ+uplOuqqOumrCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ+uvuOuLiCDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ+2ctOuMgO2PsCDrsojtmLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn66qo67CU7J28L+yehOuyoOuUlOuTnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ+uqqOuNuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ+uqqOuNuCDshKTrqoUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn66qo64uI7YSwIO2VtOyDgeuPhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfrqqjri4jthLAg7YGs6riwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn66eI7Jqw7IqkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfrhKTtirjsm4ztgawnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAn64Sk7Yq47JuM7YGsIOygleuztCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn64Sk7Yq47JuM7YGsIOygleuztCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn64Sk7Yq47JuM7YGsIOqzhOy4tSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ+uLiOy8iCDsubTrk5zrrrQoTmlDZCkg67Cw7YSw66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn64uI7LyILeq4iOyGjSDsiJjshowg67Cw7YSw66asKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ+q4sOuwgCDsnKDsp4Ag6rOE7JW9KE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfrhbjtirjrtoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFUg7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTSDrqqjrk4gg7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ+q3uOuemO2UvSDsubTrk5wg7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIOuqqOuLiO2EsCjsnKDquLAg67Cc6rSRIOuLpOydtOyYpOuTnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn7Jq07JiBIOu5hOyaqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfso7zrrLgg67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn6riw7YOAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfstpzroKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn7YyM7Yq464SI7IutIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ+yghO2ZlOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn7KCE7ZmUIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ+usvOumrOyggSDsvZTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfsoITroKUg6rO16riJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn64uk7J2M7JeQ7IScIOq1rOunpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn656ZIOq5iuydtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+uemSDsnKDri5soVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+uwqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDsubTrk5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIOyduOymneyEnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ+2MkOunpCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn7JyE7ISxIOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfrsIDtj5DtmJUg64Kp7LaVKFNMQSkg67Cw7YSw66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn7J2866Co67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ+yEnOuyhCDshoztlITtirjsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfshJzruYTsiqQg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAn7ISc67mE7IqkIO2DnOq3uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfshozsvJMg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn7IaM7ZSE7Yq47Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn7Iqk7ZS87LukJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+2RnOykgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnSVAg7KO87IaMIOyLnOyekSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn7Iqk7Yag66as7KeAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn7Iqk7Yag66as7KeAIO2MjO2LsOyFmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ+yekO2ajOyCrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn7JqU7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn7JSsIO2BtOudvOydtOyWuO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn7Iqk66CI65OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn7I2s642U67O87Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfstJ0g6re4656Y7ZS9IOy5tOuTnCBSQU0oR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn7LSdIFJBTShHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ+2EsOy5mOyKpO2BrOumsCDrqqjri4jthLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICftg4Dsm4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDtl4jruIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiDtl6Trk5zshYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCDsoITtmZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+ybuey6oCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/lt_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omx0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdCZW5kcmllamkgdmVpa2ltbyBkdW9tZW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnxK5laW5hbsSNacWzIHXFvmtsYXVzxbMgZHVvbWVuxbMgbnVzdGF0eW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0nFoWVpbmFuxI1pxbMgYXRzYWt5bW8gZHVvbWVuxbMgbnVzdGF0eW1haSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdmFsZHltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdLZWlzdGkga2xhc8SXcyBhcGlicsSXxb50xK8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0tlaXN0aSB2YWlkbWVucyBhcGlicsSXxb50xK8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICciUmVhZHkySW1wb3J0IiBrbGFzacWzIHBha2V0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfEjGlhIGdhbGl0ZSBpbXBvcnR1b3RpICJSZWFkeTJJbXBvcnQiIGtsYXNpxbMgcGFrZXR1cywga3VyaXVvc2UgZGVtb25zdHJ1b2phbWkgxK9wcmFzdGluaWFpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkuIEF0a3JlaXBraXRlIGTEl21lc8SvLCBrYWQgZ2FsaSBwcmlyZWlrdGkgdGFtIHRpa3JvcyBwYXBpbGRvbW9zIGtvbmZpZ8WrcmFjaWpvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXRuYXVqaW50aSBlc2FtdXMgc3ViamVrdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0dW90aSAiUmVhZHkyQWRvcHQiIGtsYXPEl3MgcGFrZXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byB2YWlkbXVvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnS2xhc2nFsyBmaWx0cmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ05vcsSXZGFtaSBzdWt1cnRpIG5hdWrEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLCBzxIVyYcWhZSBwYXNpcmlua2l0ZSBrbGFzxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc8SXJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudG8gYsWrc2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdOdW9yb2RhIMSvIGtpdMSFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOZXRlaXNpbmdhcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gbnVtZXJpcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnS2l0byBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8sIHN1IGt1cml1byBub3JpdGUgc3VzaWV0aSwgbnVtZXJpcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBciB0aWtyYWkgbm9yaXRlIGnFoXRyaW50aSDFocSvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgaW8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdQYXZhZGluaW1hcyBqYXUgbmF1ZG9qYW1hcyBDb25maWdJdGVtcyBzdSDFoWl1byAoLWlhaXMpIG51bWVyaXUgKC1pYWlzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byB2ZXJzaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqb3MgbnVtZXJpcyBqYXUgbmF1ZG9qYW1hcyAiQ29uZmlnSXRlbXMiIHN1IMWhaXVvICgtaWFpcykgbnVtZXJpdSAoLWlhaXMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSW5jaWRlbnRvIGLFq2tsxJcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpc3RvcmlqYTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSXN0b3Jpam9zIHR1cmlueXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUHJpdHJhdWt0aSBhcMW+dmFsZ8SFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkgdmllbmFtZSBwdXNsYXB5amUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkdW9tZW7FsyBuZXJhc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Bhc2lyaW5raXRlIMWhxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Z5a2R5dGkgcGFpZcWha8SFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnIkNvbmZpZ0l0ZW0iIG1lZMW+aW8gcm9kaW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0d5bGlvIGx5Z2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUGFkaWRpbnRpIC8gc3VtYcW+aW50aSBtYXN0ZWzEryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdQYXNpZWt0YXMgbWFrc2ltYWx1cyBDb25maWdJdGVtIG51b3JvZMWzIGx5Z2lzISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RhYmFydGluxJcgZGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdEYWJhcnRpbsSXIGluY2lkZW50byBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Bhc2t1dGluxK8ga2FydMSFIHBha2Vpc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Bhc2t1dGluxK8ga2FydMSFIHBha2VpdMSXJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSsWrc8WzIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gUGFpZcWha2EnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1b2phbW9zIMWhaW9zIGtsYXPEl3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQnVzIGltcG9ydHVvamFtaSDFoWllIHZhaWRtZW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdBdGtyZWlwa2l0ZSBkxJdtZXPErywga2FkIHRhaXAgcGF0IGJ1cyBzdWt1cnRpIGF0aXRpbmthbWkgZGluYW1pbmlhaSBsYXVrYWkgaXIgIkdlbmVyYWxDYXRhbG9nIiBrbGFzxJdzLCBvIGF1dG9tYXRpbmlvIHBhxaFhbGluaW1vIG5lYnVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0FyIG5vcml0ZSB0xJlzdGk/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1JlaWtpYSBwYXZ5emTFvmnFsyBrbGFzacWzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdBcGlicsSXxb50aXMgbsSXcmEgZ2FsaW9qYW50aXMgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0Fwxb52YWxnYTogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbnVyb2R5dGFzIGpva3MgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1JlaWtpYSBiZW50IHZpZW5vIHBhc2lyaW5rdG8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0rFq3MgbmV0dXJpdGUgcHJpZWlnb3MgcHJpZSDFoWlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByYcWheXRpOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc2VpICVzIG5lYXBpYnLEl8W+dGFzIGpva3MgYXBpYnLEl8W+aW1hcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMgIiVzIiBuZXJhc3RhcyBkdW9tZW7FsyBiYXrEl2plISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05lcGF2eWtvIGnFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXMgdmVyc2lqYSBuZXJhc3RhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW51cm9keXRhcyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGFyYmEgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1ByaWVpZ2EgbmVzdXRlaWtpYW1hISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZWdhbGltYSByb2R5dGkgaXN0b3Jpam9zLCBuZXBhdGVpa3RhcyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVnYWxpbWEgcm9keXRpIGlzdG9yaWpvcywgbmVzIG5lc3V0ZWlrdG9zIHByaWVpZ29zIHRlaXPEl3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOYXVqYXMga29uZmlnxatyYWNpam9zIGVsZW1lbnRhcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOYXVqYSB2ZXJzaWphIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdBdG5hdWppbnRhIGRpZWdpbW8gYsWrc2VuYSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0bmF1amludGEgaW5jaWRlbnRvIGLFq3NlbmEgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMgKElEPSVzKSBpxaF0cmludGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUHJpZMSXdGEgbnVvcm9kYSDEryAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ051b3JvZGEgxK8gJXMgKHR5cGU9JXMpIHBhxaFhbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0F0bmF1amludGEgQ29uZmlnSXRlbSBhcGlicsSXxb50aXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1BhdmFkaW5pbWFzIGF0bmF1amludGFzIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0YXMgJXMgYXRuYXVqaW50YXMgacWhICIlcyIgxK8gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaWphICVzIGnFoXRyaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOZW51cm9keXRhcyBDb25maWdJdGVtSUQgYXJiYSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lZ2FsaW1hIHBhcm9keXRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50bywgbmVzIG5lc3V0ZWlrdG9zIHByaWVpZ29zIHRlaXPEl3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRHVvbWVuxbMgYmF6xJdqZSBuZXJhc3RhIENvbmZpZ0l0ZW1JRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyVzIHNwYXVzZGluYSAlcyBhZHJlc3UgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ051b3JvZGEgKFJlZmVyZW5jZSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZXRlaXNpbmdhcyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lbnVyb2R5dGFzIGpva3MgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfFoGlhaSBrbGFzZWkgcHJpZWlnb3MgdGVpc8SXcyBuZXN1dGVpa3RvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0pva2lvIHJlenVsdGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha29zIHJlenVsdGF0YWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05lZ2FsaW1hIHBhcm9keXRpIGVsZW1lbnRvLCBuZXMgbmVzdXRlaWt0b3MgcHJpZWlnb3MgdGVpc8SXcyBwcmllIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmVyYXN0YXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpasWzIG5lcmFzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAndmVpa2xvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnxK9zcMSXamltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpbmNpZGVudG8gYsWrc2VuYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0xlaWRpbW8gbsSXcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJhcyBuZWdhbGlvamEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYWllxaFrb3MgcGFyYW1ldHJhaSBuZWdhbGlvamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUm9kb21pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnRGllZ2ltbyBixatzZW5vcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdEYWJhcnRpbmlzIGluY2lkZW50byBixatzZW5vcyB0aXBhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdUYXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8ga2xhc8SXcyBhcHJpYm9qaW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGFzaXJpbmtpdGUgdmllbsSFIGFyIGRhdWdpYXUga2xhc2nFsywga2FkIGFwcmlib3R1bcSXdGUgcGFzaXJlbmthbXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBrbGFzxJdzIGFwcmlib2ppbWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGFzaXJpbmtpdGUgdmllbsSFIGFyIGRhdWdpYXUga2xhc2nFsywga2FkIGFwcmlib3R1bcSXdGUgcGFzaXJlbmthbXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWluaXMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aW5pcyAodmVyc2lqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTnVvcm9kb3MgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQXIgxaFpIHPEhXNhamEgdGFpa29tYSBDb25maWdJdGVtLCBhciBzdGF0aW5laSBudW9yb2TEhSBwYXRlaWtpYW7EjWlvIG9iamVrdG8gdmVyc2lqYWkuIERhYmFydGluxJdzIGluY2lkZW50byBixatzZW5vcyBza2FpxI1pYXZpbWFzIGF0bGlla2FtYXMgdGlrIGRpbmFtaW7El21zIG51b3JvZG9tcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdQYXNpcmlua2l0ZSBhdHJpYnV0xIUsIHBhZ2FsIGt1csSvIGJ1cyBpZcWha29tYSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXppbsSXIHN0cnVrdMWrcmEgbmVnYWxpb2phLiBQYXRlaWtpdGUgaGFzaCBzdSBkdW9tZW5pbWlzIFlBTUwgZm9ybWF0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MIGVpbHV0xJkgcmVpa2lhIHByYWTEl3RpIG51byBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZXBhdnlrbyBpxaF2YWx5dGkgbGVudGVsxJdzIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05lcmFzdGFzIG7ElyB2aWVuYXMgc3ZhcmJ1cyBkaW5hbWluaXMgbGF1a2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVwYXZ5a28gxK90ZXJwdGkgxK8gbGVudGVsxJkgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfEriBsZW50ZWzEmSBjb25maWdpdGVtX2xpbmsgxK90ZXJwdGEgMCBlaWx1xI1pxbMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnRGlkxb5pYXVzaWFzIHZpZW5vIGVsZW1lbnRvIHNrYWnEjWl1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaWpvcyBlaWx1dMSXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0tsYWlkYSBzaW5jaHJvbml6dW9qYW50IGFwaWJyxJfFvnRpcy4gUGF0aWtyaW5raXRlIMW+dXJuYWzEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUdXJpdGUgSVRTTUNvbmZpZ0l0ZW0gYXBpYnLEl8W+dGlzLCBrdXJpb3MgbsSXcmEgc2luY2hyb25penVvdG9zLiDErmRpZWtpdGUgc2F2byBJVFNNQ29uZmlnSXRlbSBkaW5hbWluacWzIGxhdWvFsyBwYWtlaXRpbXVzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnUGFzaWJhaWfEmXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdUZWNobmluxJcgcHJpZcW+acWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdCYW5kb21hc2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFudW9qYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdJxaHEl2rEmXMgxK8gcGVuc2lqxIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUGVyxb5pxatyxJdraXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0YXZpbWFzIC8ga29reWLEl3MgdcW+dGlrcmluaW1hcyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnQXDFvnZhbGdhIGlyIHBhdHZpcnRpbmltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnS2xhc2nFsyBpciAoYXJiYSkgdmFpZG1lbsWzIGJlaSBzdSBqYWlzIHN1c2lqdXNpxbMgbGF1a8WzIGltcG9ydGF2aW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0ltcG9ydHVvamFudCBrbGFzxJkgxK92eWtvIGtsYWlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFBhc2zEl3B0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gcGFyb2R5dGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaWTFvmlhIHRhaWt5dGkgacWhcGzEl3N0aW5lcyBwYWllxaFrb3Mgc8SFbHlnYXMgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha2FpLiBOYXVkb2RhbWkgxaFpxIUgZnVua2NpasSFIGdhbGl0ZSBpZcWha290aSwgcHZ6Liwga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbW8gc3UgdG9raW9taXMgc8SFbHlnb21pcywga2FpcCAiKCprZXkxKiYmKmtleTIqKSIgYXJiYSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaWTFvmlhIHRhaWt5dGkgacWhcGzEl3N0aW5lcyBwYWllxaFrb3Mgc8SFbHlnYXMga2xpZW50xbMgc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb2plLiBOYXVkb2RhbWkgxaFpxIUgZnVua2NpasSFIGdhbGl0ZSBpZcWha290aSwgcHZ6Liwga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbW8gc3UgdG9raW9taXMgc8SFbHlnb21pcywga2FpcCAiKCprZXkxKiYmKmtleTIqKSIgYXJiYSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1ByaXNraXJ0aSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLbGllbnRvIMSvbW9uZWkgcHJpc2tpcnRpIEtJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnS2xpZW50byBuYXVkb3RvanVpIHByaXNraXJ0aSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBudXN0YXR5bWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdVbmlrYWxhdXMgcGF2YWRpbmltbyB0aWtyaW5hbWEgdGlrIHRvamUgcGHEjWlvamUgQ29uZmlnSXRlbSBrbGFzxJdqZSAoImNsYXNzIikgYXJiYSBwYXNhdWxpbml1IG1hc3R1ICgiZ2xvYmFsIiksIHRvZMSXbCBpZcWha2FudCBwYXNpa2FydG9qaW3FsyBhdHNpxb52ZWxnaWFtYSDEryBraWVrdmllbsSFIGVzYW3EhSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnUGFzaXJpbmtpdGUgbW9kdWzErywga3VyaXMgdcW+dGlrcmlucyBwYXZhZGluaW3FsyBzY2hlbcSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnUGFzaXJpbmtpdGUgbW9kdWzErywga3VyaXMgdcW+dGlrcmlucyBudW1lcmnFsyBzY2hlbcSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdQYXNpcmlua2l0ZSBtb2R1bMSvLCBrdXJpcyB1xb50aWtyaW5zIHZlcnNpasWzIGVpbHXEjWnFsyBzY2hlbcSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1Bhc2lyaW5raXRlIGF0cmlidXR1cywga2FkIGLFq3TFsyBzdWt1cnRhIG5hdWphIHZlcnNpamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1Bhc2lyaW5raXRlIGthdGVnb3JpamFzLCBrdXJpYXMgbm9yaXRlIHByaXNraXJ0aSDFoWlhaSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdTdHVscGVsaW8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBmaWx0cmFpIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTdHVscGVsaWFpLCBrdXJpdW9zIGdhbGltYSBmaWx0cnVvdGkgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUuIFBhc3RhYmE6IExlaWTFvmlhbWkgdGlrIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBhdHJpYnV0YWkgaXIgZGluYW1pbmlhaSBsYXVrYWkgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlkxJdqaW1hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcmVkYWdhdmltYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlnxatydW9raXRlIGVsZW1lbnRvIMSvdnlracWzIG1vZHVsxK8sIGt1cmlzIGxlaWTFvmlhIHJlZ2lzdHJ1b3RpIGlzdG9yaWrEhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIMSvdnlracWzIG1vZHVsaXMsIGt1cmlzIGF0bmF1amluYSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGRhYmFydGluxJkgYXBpYnLEl8W+dMSvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgaXN0b3JpamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBzcGF1c2RpbmltYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlnxatydW90aSBlbGVtZW50byBwcmlhcnRpbmltxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBtZWTFvmlvIHZhaXpkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ8WgacWzIGtsYXNpxbMgQ29uZmlnSXRlbXMgbmVidXMgc2F1Z29taSAiRWxhc3RpY3NlYXJjaCIgc2VydmVyeWplLiBOb3JpbnQgdGFpIHByaXRhaWt5dGkgZXNhbWllbXMgQ0ksIENJIG1pZ3JhY2lqxIUgcmVpa2lhIHBhbGVpc3RpIHBlciBrb25zb2zEmSwgcGFrZWl0dXMgxaFpxIUgcGFyaW5rdMSvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICciRWxhc3RpY3NlYXJjaCIgc2VydmVyeWplIG5lYnVzIHNhdWdvbWkgIkNvbmZpZ0l0ZW1zIiBzdSDFoWlvbWlzIGRpZWdpbW8gYsWrc2Vub21pcy4gTm9yaW50IHRhaSBwcml0YWlreXRpIGVzYW1pZW1zIENJLCBDSSBwZXJrxJdsaW3EhSByZWlraWEgcGFsZWlzdGkgcGVyIGtvbnNvbMSZLCBwYWtlaXR1cyDFoWnEhSBwYXJpbmt0xK8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByaWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGxpbWl0YXMgdmllbmFtZSBwdXNsYXB5amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWfFq3JhY2lqb3MgdmFsZHltbyBkdW9tZW7FsyBiYXrEly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBtYXNpbmlzIG1vZHVsaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYWllxaFrYSBhZ2VudG8gc8SFc2Fqb3MgZ2FsaW5pYW1lIG1hcsWhcnV0aXphdG9yaXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1N1a3Vya2l0ZSBpciB0dmFya3lraXRlIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXBpYnLEl8W+dGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1N1a3VyaWEgIkNvbmZpZ0l0ZW1zIiBiaWxpZXR1cyB0YW0gdGlrcmFpcyBsYWlrbyBtb21lbnRhaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsaWVudGFpIGdhbGkgbWF0eXRpIGlzdG9yaW5lcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xpZW50YWkgdHVyaSBnYWxpbXlixJkgcmFua2luaXUgYsWrZHUgcGVyanVuZ3RpIGlzdG9yaW5lcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdOdW1hdHl0aWVqaSBkdW9tZW55cywga3VyaXVvcyByZWlraWEgbmF1ZG90aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha29zIGVrcmFubyBhdHJpYnV0dWkuIFBhdnl6ZHlzOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ051bWF0eXRpZWppIGR1b21lbnlzLCBrdXJpdW9zIHJlaWtpYSBuYXVkb3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYWllxaFrb3MgZWtyYW5vIGF0cmlidXR1aS4gUGF2eXpkeXM6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdBcGlicsSXxb50aSB2ZWlrc211cywga2FpIHN1c2lldMWzIG9iamVrdMWzIHZhbGRpa2x5amUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKSB5cmEgbnVzdGF0eW3FsyBteWd0dWthcy4gQXRrcmVpcGtpdGUgZMSXbWVzxK8sIGthZCDFoWl1b3NlIHZlaWtzbXVvc2UgdHVyaSBixat0aSB1xb5yZWdpc3RydW90aSDFoWllIEpTIGlyIENTUyBmYWlsYWk6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGlyIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmtpdGUgIlRlbXBsYXRlOjpUb29sa2l0IiBzY2hlbcSFLCBza2lydMSFIHZlcnNpasWzIGVpbHV0xJdtcy4gTmF1ZG9qYW1hIHRpayB0YWRhLCBqZWkgdmVyc2lqxbMgZWlsdcSNacWzIG1vZHVsaXMgbnVzdGF0eXRhcyDEryBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdBcGlicsSXxb5raXRlIHPEhWx5Z8WzLCBrdXJpb21pcyBrbGllbnR1aSBsZWlkxb5pYW1hIG1hdHl0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLCByaW5raW7Ery4gU8SFbHlnYXMgZ2FsaW1hIGFwcmlib3RpIHRhbSB0aWtyb21zIGtsaWVudMWzIGdydXDEl21zLiBQYXZhZGluaW1hcyB5cmEgdmllbmludGVsaXMgcHJpdmFsb21hcyBhdHJpYnV0YXMuIEplaSBraXTFsyBwYXJpbmvEjWnFsyBuZW51cm9keXRhLCB2aXNpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkgYnVzIG1hdG9taSB0b2plIGthdGVnb3Jpam9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbWkgcmVpa2FsaW5naSBsZWlkaW1haSBpxaF0cmludGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHVzIG5hdWRvamFudCBiZW5kcsSFasSFIHPEhXNhasSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWFtaSByZWlrYWxpbmdpIGxlaWRpbWFpIGdhdXRpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnR1cyBuYXVkb2phbnQgYmVuZHLEhWrEhSBzxIVzYWrEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbWkgcmVpa2FsaW5naSBsZWlkaW1haSBpZcWha290aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSBSZWlrYWxpbmdpIGxlaWRpbWFpIG51c3RhdHl0aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIGFwxb52YWxnb3MgbW9kdWzErywgc2tpcnTEhSBtYcW+YWphbSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHPEhXJhxaFvIHZhaXpkdWkgcm9keXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdOdXN0YXRvLCBhciBtYXpnxbMganVuZ3R5c2UgdHVyaSBixat0aSByb2RvbW9zIG51b3JvZG9zIHRpcG8gZXRpa2V0xJdzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWEgcmVndWxpYXJpYXMgacWhcmFpxaFrYXMgYXRza2lyYWkga2lla3ZpZW5haSAiQ29uZmlnSXRlbSIga2xhc2VpLCBrYWQgYsWrdMWzIGdhbGltYSBwYXRpa3JpbnRpICJDb25maWdJdGVtIiBwYXZhZGluaW3EhSBpciByb2R5dGkgYXRpdGlua2FtdXMga2xhaWTFsyBwcmFuZcWhaW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOdXN0YXRvIGdhbGltdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXRvam8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHLFq8WhaWF2aW11aSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgcmV6dWx0YXR1b3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0xIVqxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHLFq8WhaWF2aW11aSBrbGllbnTFsyBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVvc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0b2pvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBhdHJpYnV0xIUsIHNraXJ0xIUgxaFpb3Mgb3BlcmFjaWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVpIHLFq8WhaXVvdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXTEhWrEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHR2YXJrxIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4gQXVrxaF0eW46IHNlbmlhdXNpYXMgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVtYXR5dG9qaSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHR2YXJrYSBrbGllbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4gQXVrxaF0eW46IHNlbmlhdXNpYXMgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ051c3RhdG8gcGFnYWwgbnV0eWzEl2ppbcSFIHJvZG9tdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0FwaWJyxJfFvmlhbWFzIG51bWF0eXRhc2lzIHJvZG9txbMgc2FudHlracWzIGd5bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOdXN0YXRvIHBhZ2FsIG51dHlsxJdqaW3EhSByb2RvbcSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdOdXN0YXRvIHBhZ2FsIG51dHlsxJdqaW3EhSByb2RvbcSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuIFBhdnl6ZHlzOiAiS2V5IiAocmFrdGFzKSB0dXJpIHR1csSXdGkgZGluYW1pbmlvIGxhdWtvIHBhdmFkaW5pbcSFLCDFoWl1byBhdHZlanUgIlgiLCAiQ29udGVudCIgKHR1cmlueXMpIHR1cmkgdHVyxJd0aSBkaW5hbWluaW8gbGF1a28gcmVpa8WhbcSZLCBwcmlrbGF1c2FuxI1pxIUgbnVvIGRpbmFtaW5pbyBsYXVrbyB0aXBvLCAiVGV4dCIgKHRla3N0YXMpOiAiYSB0ZXh0IiAodGVrc3RhcyksICJEcm9wZG93biIgKGnFoXNrbGVpZMW+aWFtYSk6ICIxIiAoacWhc2tsZWlkxb5pYW1hKSwgIkRhdGUvVGltZSIgKGRhdGEgaXIgbGFpa2FzKTogUGFpZcWha2FfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGlyIGFyYmEgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9c2F2YWl0xJc7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIG51bWF0eXTEhWrEryBrbGFzxJdzICJJVFNNQ29uZmlnSXRlbSIgc3Vib2JqZWt0xIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOdXN0YXRvIGdhbGltdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ051c3RhdG8gxaFpbyBla3Jhbm8gdGVrc3RvIHJlZGFrdG9yaWF1cyBrb21wb25lbnRvIGF1a8WhdMSvLiDErnZlc2tpdGUgc2thacSNacWzIChwaWtzZWxpYWkpIGFyYmEgcHJvY2VudGluxJkgdmVydMSZIChzYW50eWtpbsSXKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBDSSBhcGlicsSXxb5pbW8gcmVkYWt0b3JpYXVzIGVpbHXEjWnFsyBza2FpxI1pxbMgYWRtaW5pc3RyYXRvcmlhdXMgc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdOdXN0YXRvIMSvdnlraW8gYsWrc2VuxbMgZWlsacWha3VtxIUgbnVvIGF1a8WhdMWzIChwdnouLCBrcml0acWha8WzKSBpa2kgxb5lbcWzIChwdnouLCBmdW5rY2luacWzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdBcGlicsSXxb5pYW1vcyBhdGl0aW5rYW1vcyBkaWVnaW1vIGLFq3Nlbm9zLCBrdXJpb3NlIHN1c2lldGkgYmlsaWV0YWkgZ2FsaSB0dXLEl3RpIMSvdGFrb3MgQ0kgYsWrc2VuYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBBZ2VudElUU01Db25maWdJdGVtIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBDdXN0b21lcklUU01Db25maWdJdGVtIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVvcm9kxbMgbGVudGVsxJdzIHN1ZMSXdGluZ2FtZSByb2RpbnlqZSByb2RvbXVzIHZpc8WzIGtsYXNpxbMgS0kgc3R1bHBlbGl1cy4gSmVpIMSvcmHFoW8gbsSXcmEsIHJvZG9taSBudW1hdHl0aWVqaSBzdHVscGVsaWFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTnVzdGF0byBudW9yb2TFsyBsZW50ZWzEl3Mgc3VkxJd0aW5nYW1lIHJvZGlueWplIHJvZG9tdXMgS0kgc3R1bHBlbGl1cywgcHJpa2xhdXNvbWFpIG51byBLSSBrbGFzxJdzLiBQcmllxaEga2lla3ZpZW7EhSDEr3JhxaHEhSB0dXJpIGLFq3RpIMSvcmHFoXl0YXMga2xhc8SXcyBwYXZhZGluaW1hcyBpciBkdmlndWJpIGR2aXRhxaFraWFpICh0LiB5LiBDb21wdXRlcjo6KS4gWXJhIGtlbGV0YXMgQ0kgYXRyaWJ1dMWzLCBrdXJpZSBiZW5kcmkgdmlzaWVtcyBDSSAocGF2eXpkeXMga2xhc8SXcyBDb21wdXRlciAoS29tcGl1dGVyaXMpOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBOb3JpbnQgcGFyb2R5dGkgYXRza2lydXMgQ0kgYXRyaWJ1dHVzLCBhcGlicsSXxb50dXMgQ0kgYXBpYnLEl8W+dHlqZSwgcmVpa2lhIG5hdWRvdGkgdG9racSFIHNjaGVtxIUgKGtsYXPEl3MgQ29tcHV0ZXIgcGF2eXpkeXMpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmVpIG7El3JhIENJIGtsYXPEl3MgxK9yYcWhbywgcm9kb21pIG51bWF0eXR1b3NpdXMgbnVzdGF0eW11cyBhdGl0aW5rYW50eXMgc3R1bHBlbGlhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSwga3VyaXVvcyBlbGVtZW50dXMgZ2FsaW1hIG5hdWRvdGkgIkFjdGlvbiIgdHJlxI1pYWphbWUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb3MgbHlneWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ051c3RhdG8sIGt1cmllIGVsZW1lbnRhaSB5cmEgcHJpZWluYW1pIHBpcm1vam8gbHlnaW8gSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOdXN0YXRvLCBrdXJpZSBlbGVtZW50YWkgeXJhIHByaWVpbmFtaSBhbnRyYWphbWUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb3MgbHlneWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSwga29raW8gdGlwbyBudW9yb2RhICjEr3ZhcmR5dGEgacWhIGJpbGlldG8gcGVyc3Bla3R5dm9zKSBnYWxpIHR1csSXdGkgxK90YWtvcyBzdXNpZXRvcyBDSSBixatrbGVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ051c3RhdG8sIGtva2lvIHRpcG8gYmlsaWV0YXMgZ2FsaSB0dXLEl3RpIMSvdGFrb3Mgc3VzaWV0b3MgQ0kgYsWra2xlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBcGlicsSXxb5pbW8gYXRuYXVqaW5pbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJxaF0cmludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RpZWdpbW8gYsWrc2Vub3Mgc3BhbHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RpZWdpbW8gYsWrc2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdWJsaWthdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRGluYW1pbmnFsyBsYXVrxbMgxK92eWtpxbMgbW9kdWxpcywga3VyaXMgxb55bWkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcGlicsSXxb50aXMga2FpcCBuZXNpbmNocm9uaXp1b3RhcywgamVpIHBhc2lrZWnEjWlhIGRpbmFtaW5pYWkgbGF1a2FpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pbmlhaSBsYXVrYWksIHJvZG9taSBhZ2VudG8gc8SFc2Fqb3MgcGFwaWxkb21vIElUU00gbGF1a28gZWtyYW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWluaWFpIGxhdWthaSwgcm9kb21pIGtsaWVudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGFwxb52YWxnb3MgZWtyYW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWluaWFpIGxhdWthaSwgcm9kb21pIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ8SuanVuZ2lhbWEga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIG1hc2luaW8gdmVpa3NtbyBmdW5rY2lqYSwga2FkIGFnZW50byBwcmlla2luxJdqZSBkYWx5amUgdmllbnUgbWV0dSBixat0xbMgZ2FsaW1hIGRpcmJ0aSBzdSBkYXVnaWF1IG5laSB2aWVudSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfErmp1bmdpYW1hIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBtYXNpbmlvIHZlaWtzbW8gZnVua2NpamEgdGlrIGnFoXZhcmR5dG9tcyBncnVwxJdtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnxK52eWtpxbMgbW9kdWxpcywgc2tpcnRhcyBudXN0YXR5dGkgInRpY2tldC1jb25maWdpdGVtLWxpbmsiIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBixatzZW7EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGluZGVrc28gbGF1a2FpLCBuYXVkb2phbWkgdmlzbyB0ZWtzdG8gcGFpZcWha2FpLiBMYXVrYWkgdGFpcCBwYXQgc2F1Z29taSwgdGHEjWlhdSBuxJdyYSBwcml2YWxvbWkgYmVuZHJhaSBmdW5rY2lqYWkuIFByaWVkxbMgxK90cmF1a2ltxIUgZ2FsaW1hIGnFoWp1bmd0aSBudXN0YXRhbnQgxK9yYcWhbyByZWlrxaFtxJkgMCBhcmJhIGrEryBpxaF0cmluYW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGluZGVrc2Ugc2F1Z29taSBsYXVrYWksIGt1cmllIG5hdWRvamFtaSBuZSB0aWsgdmlzbyB0ZWtzdG8gcGFpZcWha2FpLCBiZXQgaXIga2l0aWVtcyBkYWx5a2Ftcy4gS2FkIGZ1bmtjaWpvcyBixat0xbMgcGlsbmFpIGnFoW5hdWRvdG9zLCB2aXNpIGxhdWthaSB5cmEgcHJpdmFsb21pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyJHZW5lcmljSW50ZXJmYWNlIiBtb2R1bGlvIHJlZ2lzdHJhY2lqYSAiQ29uZmlnSXRlbUZldGNoIiBpxaFrdmlldMSXam8gc2x1b2tzbml1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICciR2VuZXJpY0ludGVyZmFjZSIgbW9kdWxpbyByZWdpc3RyYWNpamEgIkNvbmZpZ0l0ZW1GZXRjaCIgacWha3ZpZXTEl2pvIHNsdW9rc25pdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyJHZW5lcmljSW50ZXJmYWNlIiBtb2R1bGlvIHJlZ2lzdHJhY2lqYSAiQ29uZmlnSXRlbUZldGNoIiBpxaFrdmlldMSXam8gc2x1b2tzbml1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfErnRyYXVrdGkgZGllZ2ltbyBixatzZW5hcyDEryBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWvEhSBrbGllbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxK50cmF1a3RpIGluY2lkZW50byBixatzZW5hcyDEryBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWvEhSBrbGllbnTFsyBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RpZMW+aWF1c2lhcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzLCBrdXJpZSBidXMgcm9kb21pIMWhaW9zIG9wZXJhY2lqb3MgcmV6dWx0YXRlLCBza2FpxI1pdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxpcywgc2tpcnRhcyB1xb4ga2xhc8SZIGF0c2FraW5nYWkgZ3J1cGVpIHBhdGlrcmludGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxpcywgc2tpcnRhcyBwYXRpa3JpbnRpIGdydXDEmSwgYXRzYWtpbmfEhSB1xb4ga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgc3RhdGlzdGlrb3MgZ2VuZXJhdmltbyBtb2R1bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ1BhdmFkaW5pbW8gbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtZXJpbyBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMsIHJvZG9txbMga2lla3ZpZW5hbWUgcGFpZcWha29zIHJlenVsdGF0xbMgcHVzbGFweWplIGFnZW50byBzxIVzYWpvamUsIHNrYWnEjWl1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsywga3VyaWUgYnVzIHJvZG9taSBraWVrdmllbmFtZSBwYWllxaFrb3MgcmV6dWx0YXTFsyBwdXNsYXB5amUga2xpZW50byBzxIVzYWpvamUsIHNrYWnEjWl1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0xbMsIGt1cmnFsyByZWlraWEgaWXFoWtvdGksIGtpZWsgxK9yYcWhxbMgaXIga29raXVzIGF0cmlidXR1cyByb2R5dGkuIENvbmZpZ0l0ZW0gYXRyaWJ1dGFpIHR1cmkgYsWrdGkgYWnFoWtpYWkgc2F1Z29taSBwZXIgIkVsYXN0aWNzZWFyY2giLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdBcMW+dmFsZ2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFpLCBza2lydGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIGthdGVnb3Jpam9tcyBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01hxb5vc2lvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb3Mgc3R1bHBlbGnFsyBmaWx0csWzIHBhcmFtZXRyYWkuIEF0a3JlaXBraXRlIGTEl21lc8SvOiBudXN0YcSNaXVzICJBY3RpdmUiIHZlcnTEmSAwLCBhZ2VudGFpIG5lZ2FsxJdzIHJlZGFndW90aSB0aWsgxaFpb3MgZ3J1cMSXcyBudXN0YXR5bcWzIHNhdm8gYXNtZW5pbsSXc2UgcGFyaW5rdHlzZSwgdGHEjWlhdSBhZG1pbmlzdHJhdG9yaWFtcyB2aXMgdGllayBidXMgbGVpZMW+aWFtYSByZWRhZ3VvdGkga2l0byBuYXVkb3Rvam8gbnVzdGF0eW11cy4gTmF1ZG9raXRlICJQcmVmZXJlbmNlR3JvdXAiLCBub3LEl2RhbWkgdmFsZHl0aSwga3VyaW9qZSBzcml0eWplIMWhaWUgbnVzdGF0eW1haSB0dXLEl3TFsyBixat0aSByb2RvbWkgbmF1ZG90b2pvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfErmRpZWdpbW8gYsWrc2VuxbMgcGFyYW1ldHJhaSBudXNwYWx2aW50aSBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2RpZWdpbW8gYsWrc2VuxbMgcGFyYW1ldHJhaSBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdCZW5kcsWzasWzIGthdGFsb2dvIGF0cmlidXTFsyBsZWlkaW3FsyBncnVwacWzIHBhdnl6ZMW+acWzIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIHZhcmTFsyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgbnVtZXJpbyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1B1c2xhcGnFsyAoa3VyaXVvc2Ugcm9kb21pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkpIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50byBzxIVzYWpvcyBudW9zdGF0xbMgcm9kaW55amUgZXNhbsSNacWzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2nFsyB2ZXJzaWpvcyBlaWx1dMSXcyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIGtvbmZpZ8WrcmFjaWpvcyBlaWx1dMSXcyDFoWFibG9ubyDEr3JhbmtpxbMgcmlua2luaW8gbW9kdWxpbyBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgdmVyc2lqb3MgdHJpZ2VyaW8gcGFyYW1ldHJhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdMZWlkaW3FsyBncnVwxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcHJpanVuZ2ltbyB2ZWlrc23EhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBsYW5nxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbsSFIGtsaWVudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbWVkxb5pbyBwZXLFvmnFq3JvcyBla3JhbsSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlhcnRpbmltbyBla3JhbsSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWTEl2ppbW8gbGFuZ8SFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWksIGthZCBixat0xbMgZ2FsaW1hIG5hdWRvdGkgYWdlbnRvIHPEhXNham9zIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByZWRhZ2F2aW1vIGVrcmFuxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSwga2FkIGLFq3TFsyBnYWxpbWEgbmF1ZG90aSBhZ2VudG8gc8SFc2Fqb3MgaXN0b3Jpam9zIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpLCBrYWQgYsWrdMWzIGdhbGltYSBuYXVkb3RpIGFnZW50byBzxIVzYWpvcyBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBzcGF1c2RpbmltbyBla3JhbsSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUmVpa2FsaW5nb3MgcHJpdmlsZWdpam9zIG5vcmludCBpxaF0cmludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdJZcWha290aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGnFoWthaSBudXN0YXR5a2l0ZSBLSSBpbmNpZGVudG8gYsWrc2VuxIUsIGthaSBiaWxpZXRhcyBzdXNpZWphbWFzIHN1IEtJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051c3RhdG8gZGllZ2ltbyBixatzZW7EhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGRpZG1lbmluaWFtZSBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051c3RhdG8gaW5jaWRlbnRvIGLFq3NlbsSFIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gZGlkbWVuaW7El3Mga29uZmlnxatyYWNpam9zIGVrcmFuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5pdSByb2RvbWEgbnVvcm9kYSwgbGVpZMW+aWFudGkgc3VzaWV0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIHN1IGtpdHUgb2JqZWt0dSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWFydGluaW1vIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG8gbWVuaXUgbnVvcm9kxIUsIHNraXJ0xIUgcGFzaWVrdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGlzdG9yaWrEhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuaXUgcm9kb21hIG51b3JvZGEsIGt1cmlhIGdhbGltYSBwYXNpZWt0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaXN0b3JpasSFIGFnZW50byBzxIVzYWpvcyBwcmlhcnRpbmltbyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIGnFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIGpvIHByaWFydGludGFtZSBhZ2VudG8gc8SFc2Fqb3Mgcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdSb2RvIG1lbml1IG51b3JvZMSFLCBrYWQga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBudW9yb2RvcyBixat0xbMgcm9kb21vcyBtZWTFvmlvIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG9tYSBtZW5pdSBudW9yb2RhLCBza2lydGEgZHVibGl1b3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbml1IHJvZG9tYSBudW9yb2RhLCBza2lydGEga29uZmlnxatyYWNpam9zIGVsZW1lbnR1aSBkdWJsaXVvdGkgYWdlbnRvIHPEhXNham9zIHByaWFydGluaW1vIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSByZWRhZ3VvdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBhZ2VudG8gc8SFc2Fqb3MgcHJpYXJ0aW50YW1lIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuaXUgcm9kb21hIG51b3JvZGEsIGt1cmlhIGdhbGltYSBncsSvxb50aSDEryBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWFydGluaW1vIHJvZGluxK8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSBzcGF1c2RpbnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgYWdlbnRvIHPEhXNham9zIHByaWFydGludGFtZSByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIHByaWFydGludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kbyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGlzdG9yaWrEhSAoYXR2aXJrxaF0aW5lIHR2YXJrYSkgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTnVtYXR5dG9qaSBrYXRlZ29yaWphLCBrdXJpIHJvZG9tYSwgamVpIG5lcGFzaXJpbmt0YSBuxJcgdmllbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaWRlbnRpZmlrYXRvcml1cywgcHZ6LiwgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIE51bWF0eXRvamkgcmVpa8WhbcSXIHlyYSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpxaFrYWkgcGFsZWlkxb5pYSBDb25maWdJdGVtRmV0Y2ggaW52b2thdG9yacWzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaWphIFN0eWdpbmnFsyBlaWx1dMSXIEnFoXJhacWha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lqb3MgZWlsdXTEl3MgbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaWphIFRyaWdnZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnQXIgZ2FsaW1hIGnFoXZlbmd0aSAiQ29uZmlnSXRlbUFDTCIgdnlrZHltbyB0aWtyaW5hbnQgdGFscHlrbG9qZSBlc2FuxI1pxbMgbGF1a8WzIHByaWtsYXVzb215YmVzLiBUYWkgZ2FsaSBwYWdlcmludGkgZm9ybXVsaWFyxbMgxK9rxJdsaW1vIGxhaWvEhSwgdGHEjWlhdSB0dXJpIGLFq3RpIGnFoWp1bmd0YSwgamVpIEFDTE1vZHVsZXMgdHVyaSBixat0aSBuYXVkb2phbWkgSVRTTUNvbmZpZ0l0ZW0tIGlyIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdLb2tpYSBiZW5kcmEgaW5mb3JtYWNpamEgcGF0ZWlraWFtYSBhbnRyYcWhdMSXamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc8SXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ3Bhc2F1bGluaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrY2luaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByaWXFoXByb2R1a2NpbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0eXZ1cyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBjb2xpbyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIGNvbGlzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgY29saW8gKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgY29saW8gKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSBjb2xpxbMgc3RvdmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBjb2xpbyAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBjb2xpYWkgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxIGNvbGlvIHN0b3Zhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgY29saW8gKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBjb2xpxbMgc3RvdmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBjb2xpbyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgY29saWFpICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBjb2xpbyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGNvbGlvICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGNvbGlvICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBjb2xpbyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgY29saW8gKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGNvbGlvICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBjb2xpYWkgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBjb2xpbyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IGNvbGlvICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgY29saW8gKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IGNvbGlvICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGNvbGlvICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGNvbGlvICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgY29saW8gKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBjb2xpYWkgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBjb2xpYWkgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGNvbGlvICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBjb2xpbyAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBjb2xpbyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBjb2xpxbMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgY29saW8gKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0Fwc2thaXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXPFsyBwcmlza3lyaW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2dpbmlzIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1ByaWV0YWlzbyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0FrdW11bGlhdG9yaWF1cyB0YWxwYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0FrdW11bGlhdG9yaWF1cyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1Bhc3RhdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdNYWdpc3RyYWzEl3Mgc8SFc2FqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ1RhbHBhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdWaWVub3MgdmFpemRvIHBsb2vFoXTEl3MgdGFscGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0ZWzEl3MgbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0tvcnRlbGnFsyBza2FpdHl0dXZhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLb3J0ZWzEl3MgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWVudMWzIHNlcnRpZmlrYXRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRvIHByb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2xpZW50byBrYXRlZ29yaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0xhaWtyb2TFvmlvIHJvZHlrbMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdMYWlrcm9kxb5pxbMgZ3JlaXRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kbyBwYXNpcmHFoXltbyBzZXJ0aWZpa2F0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuY2luaXMgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdGF2aW1vIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdTdXNpc2lla2l0ZSBzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnU3VzaXNpZWtpdGUgc3UgcGxhdGludG9qdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnRlaW5lcmnFsyB2YWxkeW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1N1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdTdXRhcnRpZXMgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdTdXRhcnRpZXMgbGFpa290YXJwaXMgbnVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1N1dGFydGllcyBsYWlrb3RhcnBpcyBpa2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmVsYWlkaXMgdGVsZWZvbmFzIChERUNUIHRlbGVmb25hcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnScWhbGFpZMWzIHZpZW5ldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGljZW5jaWrFsyBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ1N1a8WrcmltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdQYXNpcmlua3RpbmlzIHN0b3Zhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCByZXplcnZ1b3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMgc2VydmVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ1PEhXNrYWl0b3MgZmFrdMWrcm9zIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1XFvnNha3ltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdHYXJhbnRpam9zIGnFoWRhdmltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0nFoWxlaWRpbW8gZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnU3RhbGluaXMga29tcGl1dGVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50xbMgcGFzaXJhxaF5bW8gc2VydGlmaWthdGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBzdGVsYcW+YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0VsLiBwYcWhdG8gc2VydGlmaWthdGFpIChTL01JTUUgc2VydGlmaWthdGFpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdEYXJibyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0dhbGluaXMgSVAgYWRyZXNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1BhcmFtb3MgcGFiYWlnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0dhbGlvamltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdJxaFvcmluaXMga2lldGFzaXMgZGlza2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVWduaWFzaWVuxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdQcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRW5lcmdpam9zIGthdXBpbWFzIHNtYWdyYcSNaXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3Jtb3MgZmFrdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaFpesSXcyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ05lbW9rYW1hIHByb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnQmVuZHJhIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnVmFpemRvIHBsb2vFoXTEl3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1ZhaXpkbyBwbG9rxaF0xJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdUZWNobmluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ1RlY2huaW7El3MgxK9yYW5nb3MgbW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdUZWNobmluxJdzIMSvcmFuZ29zIHN2b3Jpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVzaW7El3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBwcm90b2tvbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1RhcGF0eWLEl3MgaXIgcHJpZWlnb3MgdmFsZHltYXMgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudG9yaW5pcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdTxIVza2FpdG9zIGZha3TFq3JvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhdmlhdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIG1vbml0b3JpdXMgKHNreXN0xbNqxbMga3Jpc3RhbMWzIGVrcmFuYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgbW9uaXRvcml1cyAoxaF2aWVzb3MgZGlvZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdTdGFjaW9uYXJ1c2lzIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdOZcWhaW9qYW1hc2lzIGtvbXBpdXRlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnUGxhdHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJzEgc2x1b2tzbmlzOiBmaXppbmlzIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcyIHNsdW9rc25pczogZHVvbWVuxbMgcnnFoWlvIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMyBzbHVva3NuaXM6IHRpbmtsbyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMyBzbHVva3NuaXM6IHRpbmtsbyBzbHVva3NuaXMgKHN1cGVybmV0YXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJzQgc2x1b2tzbmlzOiB0cmFuc3BvcnRvIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnNSBzbHVva3NuaXM6IHNlc2lqb3Mgc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJzYgc2x1b2tzbmlzOiBwYXRlaWtpbW8gc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNyBzbHVva3NuaXM6IHRhaWtvbcWzasWzIHByb2dyYW3FsyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTnVvbW9zIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jaWpvcyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5jaWpvcyByYWt0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5jaWpvcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jaWpvcyBsYWlrb3RhcnBpcyBudW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbmNpam9zIGxhaWtvdGFycGlzIGlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGnEjWlvIGdlbGXFvmllcyBmb3NmYXRvIChMaUZlUE80KSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGnEjWlvIGpvbsWzIChsacSNaW8gam9uxbMpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnUGFza29sb3Mgc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ8Suc2lrxatyxJlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0lsZ3VtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0dhbWludG9qYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0RpZMW+aWF1c2lhIGFwa3Jvdm9zIGdhbGlhIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdBdG1pbnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ0F0bWludGllcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaSBzdGVsYcW+YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsaW9qbyB0ZWxlZm9ubyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsdXNpcyAvIMSvdGVycHRhc2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsaXMgQXByYcWheW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yaWF1cyBza2lyaWFtb2ppIGdlYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvcmlhdXMgZHlkaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdQZWzElyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnVGlua2xhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdUaW5rbG8gaW5mb3JtYWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ1RpbmtsbyBpbmZvcm1hY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVGlua2xvIGx5Z211byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2VsaW8ta2FkbWlvIChOaUNkKSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2VsaW8tbWV0YWxvIGhpZHJpZG8gKE5pTUgpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1N1c2l0YXJpbWFzIGTEl2wgaW5mb3JtYWNpam9zIG5lYXRza2xlaWRpbW8gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOZcWhaW9qYW1hc2lzIGtvbXBpdXRlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUHJvY2Vzb3JpxbMgc2thacSNaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ09wZXJhdHl2aW9zaW9zIGF0bWludGllcyBtb2R1bGnFsyBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnVmFpemRvIHBsb2vFocSNacWzIHNrYWnEjWl1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9yaXVzIChvcmdhbmluaXMgxaF2aWVzb3MgZGlvZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdWZWlrbG9zIHPEhW5hdWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdVxb5zYWt5bW8gbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0tpdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0nFocSXamltYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOIEtPREFTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnlzdMSXcyBzdXNpdGFyaW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25vIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb25vIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6aW5pYWkgYnJhbmR1b2xpYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdNYWl0aW5pbW8gdGlla2ltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfErnNpZ3l0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnU3Rvdm8gZ3lsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdTdG92byB2aWVuZXRhaSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0thbWJhcnlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIGtvcnRlbMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBzZXJ0aWZpa2F0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQYXJkYXZpbW8gc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnUGFseWRvdmluaXMgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1NhbmRhcnVzIMWhdmlubyByxatnxaF0aW5pcyAoU0xBKSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1Nlcmlqb3MgbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXJpbyBwcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGFzbGF1Z8WzIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnUGFzbGF1Z29zIMW+eW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ0xpemRvIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnUHJvZ3JhbWluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0dhcnNpYWthbGJpYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcnRpbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdQcmFkaW5pcyBJUCBhZHJlc2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTYXVneWtsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1NhdWd5a2xvcyBza2lyc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0R1a3RlcmluxJcgxK9tb27Elyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FudHJhdWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnUGxvbmFzaXMga2xpZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1NpxatsYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICciVGh1bmRlcmJvbHQiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdJxaEgdmlzbyBncmFmaW7El3MgcGxva8WhdMSXcyBvcGVyYXR5dmlvc2lvcyBhdG1pbnRpZXMgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0nFoSB2aXNvIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdKdXRpa2xpbmlvIGVrcmFubyBtb25pdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnQm9rxaF0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDFoWFrb3R1dmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgYXVzaW7El3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCB0ZWxlZm9uYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0ludGVybmV0byBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/lv_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omx2X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdWaXNwxIFyxKtnaSBkYXJixKtiYXMgZGF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSWVuxIFrb8WhbyBwaWVwcmFzxKtqdW11IGRhdHUgaWVzdGF0xKtqdW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSXplam/FoW8gYXRiaWxkZXMgZGF0dSBpZXN0YXTEq2p1bWknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnZhbGTEq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTWFpbsSrdCBrbGFzZXMgZGVmaW7Eq2NpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ01haW7Eq3QgbG9tYXMgZGVmaW7Eq2NpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQga2xhxaF1IGtvbXBsZWt0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ8WgZWl0IHZhcmF0IGltcG9ydMSTdCBSZWFkeTJJbXBvcnQga2xhxaF1IGtvbXBsZWt0dXMsIGt1cm9zIHBhcsSBZMSrdGkgbcWrc3UgdmlzYmllxb7EgWsgaXptYW50b3RpZSBrb25maWd1csSBY2lqYXMgZWxlbWVudGkuIEzFq2R6dSwgxYZlbWlldCB2xJNyxIEsIGthIHZhciBixat0IG5lcGllY2llxaFhbWEgcGFwaWxkdSBrb25maWd1csSBY2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXRqYXVuaW7EgXQgZXNvxaHEgXMgdmllbsSrYmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0xJN0IFJlYWR5MkFkb3B0IGtsYXNlcyBrb21wbGVrdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bWEga2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGxvbWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnS2xhxaF1IGZpbHRycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdMYWkgaXp2ZWlkb3R1IGphdW51IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSwgc2FyYWtzdMSBIGF0bGFzaWV0IGtsYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgZGFyYsSrYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0l6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0luY2lkZW50YSBzdMSBdm9rbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1NhaXRlIHV6IGNpdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ05lZGVyxKtncyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgbnVtdXJzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdDaXRhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBudW11cnMsIGFyIGt1cnUgdGFzIGrEgXNhc2Fpc3RhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZhaSB0aWXFocSBbSB2xJNsYXRpZXMgZHrEk3N0IMWhbyBrb25maWd1csSBY2lqYXMgZWxlbWVudHU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG5vc2F1a3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTm9zYXVrdW1zIGphdSB0aWVrIGl6bWFudG90cyBDb25maWdJdGVtcyBhciDFocSBZHUoLWllbSkgbnVtdXJ1KC1pZW0pOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpamFzIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxaDEqyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdmVyc2lqYXMgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqYXMgbnVtdXJ1IGphdSBpem1hbnRvIENvbmZpZ0l0ZW1zIGFyIMWhxIFkdSgtaWVtKSBudW11cnUoLWllbSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdJenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGEgdmFsc3RzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1bEk3N0dXJlcyBzYXR1cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUGFsaWVsaW7EgXQgc2thdHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIFZpZW7Eq2JhcyB1eiBsYXB1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZGF0aSBuYXYgYXRyYXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJenbEk2xpZXRpZXMgxaFvIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1BhbGFpc3QgbWVrbMSTxaFhbnUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtIFRyZWVWaWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRHppxLx1bWEgbMSrbWVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQYWxpZWxpbsSBdC9penNsxJNndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdDb25maWdJdGVtIHNhc25pZWd0cyBtYWtzaW3EgWxhaXMgc2FpxaF1IGzEq21lbmlzISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybcSBY2lqYSBwYXIga29uZmlndXLEgWNpamFzIGVsZW1lbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1BhxaFyZWl6xJNqYWlzIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnUGHFoXJlaXrEk2phaXMgaW5jaWRlbnRhIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnUMSTZMSTasSBcyBpem1hacWGYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnUMSTZMSTam8gcmVpemkgbWFpbsSrdHMgYXInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdKxatzdSBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIG1la2zEk8WhYW5hJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGlrcyBpbXBvcnTEk3RhcyDFocSBZGFzIGtsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdUaWtzIGltcG9ydMSTdGFzIMWhxIFkYXMgbG9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnxYVlbWlldCB2xJNyxIEsIGthIHRpa3MgaXp2ZWlkb3RpIGFyxKsgYXR0aWVjxKtnaWUgZGluYW1pc2tpZSBsYXVraSB1biBHZW5lcmFsQ2F0YWxvZyBrbGFzZXMsIHVuIGF1dG9txIF0aXNrYSBub8WGZW3FoWFuYSBuZW5vdGlrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWYWkgdsSTbGF0aWVzIHR1cnBpbsSBdD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVwaWVjaWXFoWFtYXMgcGllbcSTcnUga2xhc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbsSrY2lqYSBuYXYgZGVyxKtncyBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUMSBcnNrYXRzOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0p1bXMgaXIgbmVwaWVjaWXFoWFtcyB2aXNtYXogdmllbnMgaXp2xJNsxJN0cyBrb25maWd1csSBY2lqYXMgdmllbnVtcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdKdW1zIG5hdiByYWtzdMSrxaFhbmFzIHBpZWvEvHV2ZXMgxaFpbSBrb25maWd1csSBY2lqYXMgZWxlbWVudGFtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc2VpICVzIG5hdiBkZWZpbsSTdGEgZGVmaW7Eq2NpamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1csSBY2lqYXMgdmllbsSrYmEgIiVzIiBuYXYgYXRyYXN0YSBkYXR1IGLEgXrEkyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOZXZhcsSTamEgaXpkesSTc3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmF2IGF0cmFzdGEgdmVyc2lqYSBDb25maWdJdGVtRU1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCB2YWkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1BpZWvEvHV2ZSBuYXYgZG90YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IHbEk3N0dXJpLCBuYXYgbm9yxIFkxKt0cyBuZXZpZW5zIENvbmZpZ0l0ZW10ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZXZhciBwYXLEgWTEq3QgdsSTc3R1cmksIG5hdiBwaWXFocS3aXJ0YXMgcGlla8S8dXZlcyB0aWVzxKtiYXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdKYXVucyBrb25maWd1csSBY2lqYXMgZWxlbWVudHMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnSmF1bmEgdmVyc2lqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQXRqYXVuaW7EgXRzIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBpbmNpZGVudGEgc3TEgXZva2xpcyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRzIChJRD0lcykgZHrEk3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1BpZXZpZW5vdGEgc2FpdGUgdXogJXMgKHRpcHM9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdTYWl0ZSB1eiAlcyAodGlwcz0lcykgZHrEk3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQXRqYXVuaW7EgXRhIENvbmZpZ0l0ZW0gZGVmaW7Eq2NpamEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBub3NhdWt1bXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlixat0cyAlcyBhdGphdW5pbsSBdHMgbm8gIiVzIiB1eiAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpamEgJXMgZHrEk3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOYXYgbm9yxIFkxKt0cyBDb25maWdJdGVtSUQgdmFpIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSwgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtRU1JRCAlcyBuYXYgYXRyYXN0cyBkYXR1IGLEgXrEkyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2l6ZHJ1a8SBdHMgJXMgcGllICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdBdHNhdWNlIChlbiknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZWRlcsSrZ3Mga2xhc2VzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMga2xhc2VzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnxaBhaSBrbGFzZWkgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05hdiByZXp1bHTEgXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3VyxJPFoWFuYXMgdmllbnVtYSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmV2YXIgcGFyxIFkxKt0IGVsZW1lbnR1LCBuYXYgcGllxaHEt2lydGFzIHBpZWvEvHV2ZXMgdGllc8SrYmFzIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmF2IGF0cmFzdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpamFzIG5hdiBhdHJhc3RhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdkYXJixKtiYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2JyxKtkaW7EgWp1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGluY2lkZW50YSBzdMSBdm9rbGlzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmF2IGF0xLxhdWphcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cnMgbmVkZXLEq2dzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnTWVrbMSTxaFhbmFzIHBhcmFtcyBuZWRlcsSrZ3MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUGFyxIFkxKt0aWUga29uZmlndXLEgWNpamFzIGVsZW1lbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0l6dmlldG/FoWFuYXMgdmFsc3RzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnUGHFoXJlaXrEk2phaXMgaW5jaWRlbnRhIHZhbHN0cyB0aXBzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1N0YXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEga2xhc2VzIGllcm9iZcW+b2p1bWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6dsSTbGlldGllcyB2aWVudSB2YWkgdmFpcsSBa2FzIGtsYXNlcywgbGFpIGllcm9iZcW+b3R1IGF0bGFzxIFtb3Mga29uZmlndXLEgWNpamFzIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBrbGFzZXMgaWVyb2Jlxb5vanVtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6dsSTbGlldGllcyB2aWVudSB2YWkgdmFpcsSBa2FzIGtsYXNlcywgbGFpIGllcm9iZcW+b3R1IGF0bGFzxIFtb3Mga29uZmlndXLEgWNpamFzIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlza3MgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrcyAodmVyc2lqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnU2FpdGUgQXRzYXVjZXMgdmVpZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnVmFpIMWhxKsgc2FpdGUgYXR0aWVjYXMgdXogYXRzYXVjZXMgb2JqZWt0YSBDb25maWdJdGVtIHZhaSBzdGF0aXNrbyB2ZXJzaWp1LiBQYcWhcmVpesSTasSBIGluY2lkZW50YSBzdMSBdm9rxLxhIGFwcsSTxLdpbnMgdGllayB2ZWlrdHMgdGlrYWkgZGluYW1pc2thasSBbSBzYWl0xJNtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ0F0bGFzaWV0IGF0cmlixat0dSwgcMSTYyBrdXJhIHRpa3MgbWVrbMSTdGkga29uZmlndXLEgWNpamFzIGVsZW1lbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQsSBemVzIHN0cnVrdMWrcmEgbmF2IGRlcsSrZ2EuIEzFq2R6dSwgbm9yxIFkaWV0IGhhc2ggYXIgZGF0aWVtIFlBTUwgZm9ybcSBdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwgdmlya25lIGrEgXPEgWsgYXIgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmVpemRldsSBcyBhdHTEq3LEq3QgdGFidWx1IGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05ldGlrYSBhdHJhc3RpIGF0dGllY8SrZ2llIGRpbmFtaXNraWUgbGF1a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOZXZhciBpZXZpZXRvdCB0YWJ1bMSBIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVGFidWzEgSBjb25maWdpdGVtX2xpbmsgaWV2aWV0b3RhcyAwIHJpbmRhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYWtzaW3EgWxhaXMgdmllbmEgZWxlbWVudGEgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpamFzIHZpcmtuZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdLxLzFq2RhLCBzaW5ocm9uaXrEk2pvdCBkZWZpbsSrY2lqYXMuIEzFq2R6dSwgcMSBcmJhdWRpZXQgxb51cm7EgWx1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0p1bXMgaXIgSVRTTUNvbmZpZ0l0ZW0gZGVmaW7Eq2NpamFzLCBrYXMgbmF2IHNpbmhyb25pesSTdGFzLiBMxatkenUsIGlldmlldG9qaWV0IElUU01Db25maWdJdGVtIGRpbmFtaXNrbyBsYXVrdSBpem1hacWGYXMuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdEYXJixKtiYXMgdGVybWnFhsWhIGJlaWR6aWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVXp0dXLEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsxIFub3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1BlbnNpb27Ek3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1DEgXJza2F0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdMSTxaFhbmEgLyBrdmFsaXTEgXRlcyBub2Ryb8WhaW7EgcWhYW5hJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQxIFyc2thdHMgdW4gYXBzdGlwcmluxIFqdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0tsYcWhdS8gbG9tdSB1biBhciB0xIFtIHNhaXN0xKt0byBsYXVrdSBpbXBvcnTEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnS2xhc2VzIGltcG9ydMSTxaFhbmFzIGxhaWvEgSBub3Rpa2Ega8S8xatkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNsxJNwdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBhdHTEk2xvdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ8S7YXVqIHBhcGxhxaFpbsSBdCBtZWtsxJPFoWFuYXMgbm9zYWPEq2p1bXVzIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuxIEuIEl6bWFudG9qb3QgxaFvIGZ1bmtjaWp1LCBqxatzIHZhcmF0IG1la2zEk3QsIHBpZW3Ek3JhbSwga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG5vc2F1a3VtdSBhciDFocSBZGllbSBub3NhY8SranVtaWVtLCBwaWVtxJNyYW0sICIoKmtleTEqJiYqa2V5MiopIiB2YWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfEu2F1aiBwYXBsYcWhaW7EgXQgbWVrbMSTxaFhbmFzIG5vc2FjxKtqdW11cyBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbsSBLiBJem1hbnRvam90IMWhbyBmdW5rY2lqdSwgasWrcyB2YXJhdCBtZWtsxJN0LCBwaWVtxJNyYW0sIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBub3NhdWt1bXUgYXIgxaHEgWRpZW0gbm9zYWPEq2p1bWllbSwgcGllbcSTcmFtLCAiKCprZXkxKiYmJiprZXkyKikiIHZhaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1BpZcWhxLdpcnRpZSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLbGllbnRhIHV6xYbEk211bWFtIHBpZcWhxLdpcnRpZSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tsaWVudGEgbGlldG90xIFqYW0gcGllxaHEt2lydGllIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIGllc3RhdMSranVtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUMSBcmJhdWTEq3QgdW5pa8SBbHUgbm9zYXVrdW11IHRpa2FpIHRhasSBIHBhxaHEgSBDb25maWdJdGVtIGtsYXPEkyAoXCdjbGFzc1wnKSB2YWkgZ2xvYsSBbGkgKFwnZ2xvYmFsXCcpLCBrYXMgbm96xKttxJMsIGthLCBtZWtsxJNqb3QgZHVibGlrxIF0dXMsIHRpZWsgxYZlbXRzIHbEk3LEgSBrYXRycyBlc2/FoWFpcyBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnSXp2xJNsaWV0aWVzIG1vZHVsaSwgbGFpIGlldmllc3R1IG5vc2F1a3VtdSBzaMSTbXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdJenbEk2xpZXRpZXMgbW9kdWxpLCBsYWkgaWV2aWVzdHUgbnVtdXJ1IHNoxJNtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnSXp2xJNsaWV0aWVzIG1vZHVsaSwgbGFpIGlldmllc3R1IHZlcnNpanUgdmlya25lcyBzaMSTbXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnSXp2xJNsaWV0aWVzIGF0cmlixat0dXMsIGthcyBpenJhaXNhIGphdW5hcyB2ZXJzaWphcyBpenZlaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdJenbEk2xpZXRpZXMga2F0ZWdvcmlqYXMsIGtvIHBpZcWhxLdpcnQgxaFhaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc2VpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9ubnUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGZpbHRyaSBDb25maWdJdGVtIFDEgXJza2F0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9ubmFzLCBrdXJhcyB2YXIgZmlsdHLEk3QgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEuIFBpZXrEq21lOiBJciBhdMS8YXV0aSB0aWthaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYXRyaWLFq3RpIHVuIGRpbmFtaXNraWUgbGF1a2kgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHBpZXZpZW5vxaFhbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHJlZGnEo8STxaFhbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLEk2ppZXQgZWxlbWVudHUgbm90aWt1bXUgbW9kdWxpLCBrYXMgYcSjZW50YSBzYXNrYXJuxJMgxLxhdWogcmXEo2lzdHLEk3QgdsSTc3R1cmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBub3Rpa3VtdSBtb2R1bGlzLCBrYXMgYXRqYXVuaW5hIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwYcWhcmVpesSTam8gZGVmaW7Eq2NpanUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXLEk8WhYW5hcyBlbGVtZW50dSB2xJNzdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGRydWvEgcWhYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyxJNqaWV0IHZpZW51bWEgdMSBbHVtbWFpxYZ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gVHJlZSBza2F0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnxaDEgWR1IGtsYcWhdSBDb25maWdJdGVtcyBuZXRpa3Mgc2FnbGFixIF0aSBFbGFzdGljc2VhcmNoIHNlcnZlcsSrLiBMYWkgdG8gcGllbcSTcm90dSBlc2/FoWFqaWVtIENJLCBwxJNjIMWhxKtzIG9wY2lqYXMgbWFpxYZhcyBDSSBtaWdyxIFjaWphIGlyIGrEgXZlaWMsIGl6bWFudG9qb3Qga29uc29saS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgYXIgxaHEgWRpZW0gaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLxpZW0gbmV0aWtzIHNhZ2xhYsSBdGkgRWxhc3RpY3NlYXJjaCBzZXJ2ZXLEqy4gTGFpIHRvIHBpZW3Ek3JvdHUgZXNvxaFhamllbSBDSSwgcMSTYyDFocSrcyBvcGNpamFzIG1hacWGYXMgQ0kgbWlncsSBY2lqYSBpciBqxIF2ZWljLCBpem1hbnRvam90IGtvbnNvbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGllcm9iZcW+b2p1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGllcm9iZcW+b2p1bXMgdmllbsSBIGxhcMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXLEgWNpamFzIHDEgXJ2YWxkxKtiYXMgZGF0dWLEgXplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGxpZWxhIGFwam9tYSBtb2R1bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgbWVrbMSTxaFhbmEgYcSjZW50YSBpbnRlcmZlaXNhIGFpem11Z3VyxJNqxIEgbWFyxaFydXTEk3TEgWrEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0l6dmVpZG90IHVuIHDEgXJ2YWxkxKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBkZWZpbsSrY2lqYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnSXp2ZWlkbyBDb25maWdJdGVtcyBiacS8ZXRlcyBrb25rcsSTdG9zIGxhaWthIHB1bmt0b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsaWVudGkgdmFyIHNrYXTEq3QgdsSTc3R1cmlza8SBcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xpZW50aWVtIGlyIGllc3DEk2phIG1hbnXEgWxpIHDEgXJzbMSTZ3RpZXMgc3RhcnAgdsSTc3R1cmlza2FqxIFtIENJIHZlcnNpasSBbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdOb2tsdXPEk2p1bWEgZGF0aSwga2FzIGl6bWFudG9qYW1pIGF0cmlixat0YSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbsSBLiBQaWVtxJNyczogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdOb2tsdXPEk2p1bWEgZGF0aSwga2FzIGl6bWFudG9qYW1pIGF0cmlixat0YSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbsSBLiBQaWVtxJNyczogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluxJN0IERhcmLEq2Jhcywga3VyxIFzIHBpZXNhaXN0xKt0byBvYmpla3R1IGxvZ3LEq2vEgSBpciBwaWVlamFtYSBpZXN0YXTEq2p1bXUgcG9nYSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBMxatkenUsIMWGZW1pZXQgdsSTcsSBLCBrYSDFocSrbSBkYXJixKtixIFtIGlyIGrEgWLFq3QgcmXEo2lzdHLEk3RpZW0gxaHEgWRpZW0gSlMgdW4gQ1NTIGZhaWxpZW06IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHVuIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluxJN0IFRlbXBsYXRlOjpUb29sa2l0IHNoxJNtdSB2ZXJzaWp1IHZpcmtuxJNtLiBJem1hbnRvIHRpa2FpIHRhZCwgamEgdmVyc2lqYXMgdmlya25lcyBtb2R1bGlzIGlyIGllc3RhdMSrdHMgdXogVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnTm9zYWtpZXQgbm9zYWPEq2p1bXUga29wdW11LCBzYXNrYcWGxIEgYXIga3VyaWVtIGtsaWVudGFtIGlyIGF0xLxhdXRzIHNrYXTEq3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1LiBOb3NhY8SranVtdXMgcMSTYyBpenbEk2xlcyB2YXIgaWVyb2Jlxb5vdCBsxKtkeiBub3RlaWt0xIFtIGtsaWVudHUgZ3J1cMSBbS4gTm9zYXVrdW1zIGlyIHZpZW7Eq2dhaXMgb2JsaWfEgXRhaXMgYXRyaWLFq3RzLiBKYSBuYXYgbm9yxIFkxKt0YXMgY2l0YXMgb3BjaWphcywgxaFhasSBIGthdGVnb3JpasSBIGLFq3MgcmVkemFtaSB2aXNpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluxJMgTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcyBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBkesSTxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW7EkyBOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaWVnxat0dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dXMsIGl6bWFudG9qb3QgdmlzcMSBcsSTam8gc2Fza2FybmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbsSTIE5lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW7EkyBOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzIElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGllc3RhdMSrxaFhbmFpLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbsSTIHDEgXJza2F0YSBtb2R1bGksIGxhaSBwYXLEgWTEq3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzYXJha3N0YSBtYXpvIHNrYXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdOb3Nha2EsIHZhaSBtZXpnbHUgc2F2aWVub2p1bW9zIGlyIGrEgW5vcsSBZGEgc2FpdGVzIHRpcGEgZXRpxLdldGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW7EkyByZWd1bMSBcsSBcyBpenRlaWtzbWVzIGthdHJhaSBDb25maWdJdGVtIGtsYXNlaSBhdHNldmnFocS3aSwgbGFpIHDEgXJiYXVkxKt0dSBDb25maWdJdGVtIG5vc2F1a3VtdSB1biBwYXLEgWTEq3R1IGF0Ymlsc3RvxaFvcyBrxLzFq2RhcyB6acWGb2p1bXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ05vc2FrYSBwaWVlamFtxIFzIENJIGtvbG9ubmFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgXNhc3TEgXYgbm8ga2xhc2VzIG5vc2F1a3VtYSB1biBhdHRpZWPEq2fEgXMga2xhc2VzIHBpZWVqYW1vIGxhdWt1IG1hc8SrdmEuIERpbmFtaXNrbyBsYXVrdSBpZXJha3N0b3MgasSBaWV2xJNybyBzaMSTbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIHZpZW51bWEgYXRyaWLFq3R1IGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IMWhxLdpcm/FoWFuYWkgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIHZpZW51bXUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgdmllbnVtYSBhdHJpYsWrdHUga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIHZpZW51bXUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdHUgxaHEt2lyb8WhYW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGF0cmlixat0dSDFocSrcyBvcGVyxIFjaWphcyBrb25maWd1csSBY2lqYXMgdmllbnVtYSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0YSBrb25maWd1csSBY2lqYXMgdmllbnVtYSDFocS3aXJvxaFhbmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2VjxKtidSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLiBBdWfFoXVwOiB2ZWPEgWthaXMgaXIgYXVnxaFwdXPEky4gVXogbGVqdTogamF1bsSBa2FpcyBhdWfFoXB1c8STLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2VjxKtidSBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIHJlenVsdMSBdG9zLiBVeiBhdWfFoXU6IHZlY8SBa2FpcyBpciBhdWfFoXB1c8STLiBVeiBsZWp1OiBqYXVuxIFrYWlzIGF1Z8WhcHVzxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIHLEgWTEq3TEgXMgQ0kga29sb25uYXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEgYXRrYXLEq2LEgSBubyBDSSBrbGFzZXMuIEthdHJhbSBpZXJha3N0YW0gasSBc2FzdMSBdiBubyBrbGFzZXMgbm9zYXVrdW1hIHVuIGF0dGllY8SrZ8SBcyBrbGFzZXMgcGllZWphbW8gbGF1a3UgbWFzxKt2YS4gRGluYW1pc2tvIGxhdWt1IGllcmFrc3RvcyBqxIFpZXbEk3JvIHNoxJNtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdOb3Nha2EgcMSTYyBub2tsdXPEk2p1bWEgcsSBZMSBbW8gYXR0aWVjxKtidSBkemnEvHVtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSByxIFkxKt0byBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGF0cmlixat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbmFtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSByxIFkxKt0byBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGF0cmlixat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbmFtLiBQaWVtxJNyczogIktleSIgasSBYsWrdCBkaW5hbWlza8SBIGxhdWthIG5vc2F1a3VtYW0sIMWhYWrEgSBnYWTEq2p1bcSBICJYIiwgIkNvbnRlbnQiIGrEgWLFq3QgZGluYW1pc2vEgSBsYXVrYSB2xJNydMSrYmFpIGF0a2FyxKtixIEgbm8gZGluYW1pc2vEgSBsYXVrYSB0aXBhLCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB1biB2YWkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW7EkyBrbGFzZXMgIklUU01Db25maWdJdGVtIiBub2tsdXPEk2p1bWEgYXBha8Whb2JqZWt0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ05vc2FrYSBwaWVlamFtxIFzIENJIGtvbG9ubmFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgXNhc3TEgXYgbm8ga2xhc2VzIG5vc2F1a3VtYSB1biBhdHRpZWPEq2fEgXMga2xhc2VzIHBpZWVqYW1vIGxhdWt1IG1hc8SrdmEuIERpbmFtaXNrbyBsYXVrdSBpZXJha3N0b3MgasSBaWV2xJNybyBzaMSTbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTm9zYWthIHRla3N0YSByZWRha3RvcmEga29tcG9uZW50YSBhdWdzdHVtdSDFoWFqxIEgZWtyxIFuxIEuIElldmFkaWV0IHNrYWl0bGkgKHBpa3NlxLxpKSB2YWkgcHJvY2VudHXEgWxvIHbEk3J0xKtidSAocmVsYXTEq3ZpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9zYWthIHJpbmR1IHNrYWl0dSBDSSBkZWZpbsSrY2lqdSByZWRha3RvcmFtIGFkbWluaXN0cmF0b3JhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTm9zYWthIGluY2lkZW50dSBzdMSBdm9rxLx1IHNlY8SrYnUgbm8gYXVnc3RhIChwaWVtxJNyYW0sIGNyaWNpdGFsKSBsxKtkeiB6ZW1hbSAocGllbcSTcmFtLCBmdW5rY2lvbsSBbHMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluxJMgYXR0aWVjxKtnb3MgaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1cywga3Vyb3Mgc2Fpc3TEq3TEgXMgYmnEvGV0ZXMgdmFyIGlldGVrbcSTdCBLSSBzdGF0dXN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBtZWtsxJPFoWFuYXMgaWVyb2Jlxb5vanVtdSBla3LEgW5hbSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbsSTIHBhcsSBZMSrdMSBcyBDSSBrb2xvbm5hcyBzYWnFoXUgdGFidWxhcyBzYXJlxb7Eo8SrdGFqxIEgc2thdMSBIHZpc8SBbSBDSSBrbGFzxJNtLiBKYSBuYXYgaWVyYWtzdGEsIHRpZWsgcGFyxIFkxKt0YXMgbm9rbHVzxJNqdW1hIGtvbG9ubmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW7EkyBwYXLEgWTEq3TEgXMgQ0kga29sb25uYXMgc2FpxaF1IHRhYnVsYXMgc2FyZcW+xKPEq3RhasSBIHNrYXTEgSBhdGthcsSrYsSBIG5vIENJIGtsYXNlcy4gS2F0cmFtIGllcmFrc3RhbSBqxIFixat0IGFyIHByZWZpa3N1IGtsYXNlcyBub3NhdWt1bWFtIHVuIGR1YnVsdGllbSBkaXZwdW5rdHUga29tdXRhdG9yaWVtICh0LiBpLiwgQ29tcHV0ZXI6OikuIElyIGRhxb5pIENJIGF0cmlixat0aSwga2FzIGlyIGtvcMSrZ2kgdmlzaWVtIENJIChwaWVtxJNycyBrbGFzZWkgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIExhaSBwYXLEgWTEq3R1IGF0c2V2acWhxLd1cyBDSSBhdHJpYsWrdHVzLCBrYXMgZGVmaW7Ek3RpIENJIGRlZmluxKtjaWrEgSwgasSBaXptYW50byDFocSBZGEgc2jEk21hIChwaWVtxJNycyBrbGFzZWkgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmEgbmF2IGllcmFrc3RhIHBhciBDSSBrbGFzaSwgdGllayBwYXLEgWTEq3RhcyBub2tsdXPEk2p1bWEga29sb25uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTm9zYWthLCBrdXJpIGVsZW1lbnRpIGlyIHBpZWVqYW1pICJBY3Rpb24iIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMWrcmFzIHRyZcWhYWrEgSBsxKttZW7Eqy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOb3Nha2EsIGt1cmkgZWxlbWVudGkgaXIgcGllZWphbWkgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyYXMgcGlybWFqxIEgbMSrbWVuxKsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ05vc2FrYSwga3VyaSBlbGVtZW50aSBpciBwaWVlamFtaSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TFq3JhcyBvdHJhasSBIGzEq21lbsSrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdOb3Nha2EsIGvEgWRhIHZlaWRhIHNhaXRlIChub3NhdWt0YSBubyBiacS8ZXRlcyBwZXJzcGVrdMSrdmFzKSB2YXIgaWV0ZWttxJN0IHNhaXN0xKt0xIFzIENJIHN0YXR1c3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTm9zYWthLCBrxIFkYSB2ZWlkYSBiacS8ZXRlIHZhciBpZXRla23Ek3Qgc2Fpc3TEq3TEgXMgQ0kgc3RhdHVzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdEZWZpbsSrY2lqYXMgYXRqYXVuaW7EgcWhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZHrEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnSXp2aWV0b8WhYW5hcyB2YWxzdHMga3LEgXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdWJsaWvEgXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRGluYW1pc2tvIGxhdWt1IG5vdGlrdW11IG1vZHVsaXMsIGthcyBhdHrEq23EkyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZGVmaW7Eq2NpamFzIGvEgSBuZXNpbmhyb25pesSTdGFzLCBqYSBtYWluxIFzIGRpbmFtaXNraWUgbGF1a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWlza2llIGxhdWtpLCBrYXMgcmVkemFtaSBhxKNlbnRhIHNhc2thcm5lcyBwYXBpbGR1IElUU00gbGF1a2EgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaXNraWUgbGF1a2ksIGthcyByZWR6YW1pIGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdGEgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaXNraWUgbGF1a2ksIGthcyByZWR6YW1pIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0llc3DEk2pvIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIG1hc3ZlaWRhIGRhcmLEq2J1IGZ1bmtjaWp1LCBsYWkgYcSjZW50YSBmcm9udGVuZMSBIHZhcsSTdHUgc3RyxIFkxIF0IGFyIHZhaXLEgWsgbmVrxIEgdmllbnUga29uZmlndXLEgWNpamFzIHZpZW51bXUgdmllbmxhaWt1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0llc2zEk2R6IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtYXN2ZWlkYSBkYXJixKtidSBmdW5rY2lqdSB0aWthaSB1enNrYWl0xKt0YWrEgW0gZ3J1cMSBbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTm90aWt1bXUgbW9kdWxpcywgbGFpIGllc3RhdMSrdHUgY29uZmlnaXRlbS1zdGF0dXMgdXogdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGluZGVrc2EgbGF1a2ksIGthcyB0aWVrIGl6bWFudG90aSBwaWxudGVrc3RhIG1la2zEk8WhYW5haS4gTGF1a2kgYXLEqyB0aWVrIHNhZ2xhYsSBdGksIGJldCB0aWUgbmF2IG9ibGlnxIF0aSBrb3DEk2phaSBmdW5rY2lvbmFsaXTEgXRlaS4gUGllbGlrdW11IGlla8S8YXXFoWFudSB2YXIgYXRzcMSTam90LCBpZXN0YXRvdCBpZXJha3N0YW0gdsSTcnTEq2J1IDAgdmFpIGR6xJPFoW90IHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGluZGVrc8SBIHNhZ2xhYsSBdGllIGxhdWtpLCBrYXMgdGllayBpem1hbnRvdGkgbmUgdGlrYWkgcGlsbnRla3N0YSBtZWtsxJPFoWFuYWksIGJldCBhcsSrIGNpdMSBbSBsaWV0xIFtLiBQaWxuxKtnYWkgZnVua2Npb25hbGl0xIF0ZWkgdmlzaSBsYXVraSBpciBvYmxpZ8SBdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1xLxhIHJlxKNpc3RyxIFjaWphIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3JhIHNsxIFuaW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1xLxhIHJlxKNpc3RyxIFjaWphIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3JhIHNsxIFuaW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdcS8YSByZcSjaXN0csSBY2lqYSBDb25maWdJdGVtRmV0Y2ggaW52b2thdG9yYSBzbMSBbmltLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSWVrxLxhdWogaXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1cyBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJZXR2ZXIgaW5jaWRlbnR1IHN0xIF2b2vEvHVzIGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01ha3NpbcSBbGFpcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2thaXRzLCBrYXMgdGlrcyBwYXLEgWTEq3RzIMWhxKtzIG9wZXLEgWNpamFzIHJlenVsdMSBdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsaXMsIGxhaSBwxIFyYmF1ZMSrdHUgcGFyIGtsYXNpIGF0YmlsZMSrZ28gZ3J1cHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxpcywgbGFpIHDEgXJiYXVkxKt0dSBncnVwdSwga2FzIGlyIGF0YmlsZMSrZ2EgcGFyIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bGlzLCBsYWkgxKNlbmVyxJN0dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzdGF0aXN0aWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vc2F1a3VtcyBNb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW11cnUgbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2thaXRzLCBrYXMgdGlrcyBwYXLEgWTEq3RzIGthdHLEgSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0dSBsYXDEgSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNrYWl0cywga2FzIHRpa3MgcGFyxIFkxKt0cyBrYXRyxIEgbWVrbMSTxaFhbmFzIHJlenVsdMSBdHUgbGFwxIEga2xpZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGksIGt1cnVzIG1la2zEk3QsIGNpayBpZXJha3N0dSB1biBrxIFkdXMgYXRyaWLFq3R1cyBwYXLEgWTEq3QuIENvbmZpZ0l0ZW0gYXRyaWLFq3RpIGlyIHNrYWlkcmkgasSBdXpnbGFixIEsIGl6bWFudG9qb3QgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUMSBcnNrYXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGHFoXUga2F0ZWdvcmlqdSBrYXRlZ29yaWrEgW0gYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBtYXrEgSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXRhIGtvbG9ubnUgZmlsdHJpZW0uIEzFq2R6dSwgxYZlbWlldCB2xJNyxIE6IGllc3RhdG90ICJBa3TEq3ZzIiB1eiAwLCBhxKNlbnRpIG5ldmFyxJNzIHJlZGnEo8STdCB0aWthaSDFocSrcyBncnVwYXMgaWVzdGF0xKtqdW11cyBzYXbEgXMgcGVyc29uxKtnYWrEgXMgcHJlZmVyZW5jxJNzLCBiZXQgYWRtaW5pc3RyYXRvcmkgam9wcm9qxIFtIHZhcsSTcyByZWRpxKPEk3QgY2l0YSBsaWV0b3TEgWphIGllc3RhdMSranVtdXMgc2F2xIEgdsSBcmTEgS4gSXptYW50b2ppZXQgIlByZWZlcmVuY2VHcm91cCIsIGxhaSBrb250cm9sxJN0dSwga3VyxIEgYXBnYWJhbMSBIMWhaWUgaWVzdGF0xKtqdW1pIGLFq3R1IHJlZHphbWkgbGlldG90xIFqYSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIGl6dmlldG/FoWFuYXMgc3TEgXZva8S8dSBrcsSBc2FpIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJenZpZXRvxaFhbmFzIHN0xIF2b2vEvHUgcGFyYW1ldHJpIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnVmlzcMSBcsSrZ28ga2F0YWxvZ2EgYXRyaWLFq3R1IGF0xLxhdWp1IGdydXB1IHBpZW3Ek3J1IHBhcmFtZXRyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgbm9zYXVrdW1hIG1vZHXEvGEgcGFyYW1ldHJpZW0ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYXPEk20gYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGHFoXUgbnVtdXJ1IG1vZHXEvGEgcGFyYW1ldHJpZW0gYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdMYXB1IChrdXLEgXMgdGllayBwYXLEgWTEq3RpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50aSkgcGFyYW1ldHJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgdmVyc2lqYXMgdmlya25lcyBtb2R1xLxhIHBhcmFtZXRyaWVtIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzxJNtIGHEo2VudGEgaW50ZXJmZWlzYSBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHZlcnNpamFzIHZpcmtuZXMgxaFhYmxvbmEgcsSra3Uga29wdW1hIG1vZHXEvGEgcGFyYW1ldHJpZW0ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYXPEk20gYcSjZW50YSBzYXNrYXJuZXMgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgdmVyc2lqYXMgdHJpZ2VyaW0ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYcWhdSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc8STbSBhxKNlbnRhIGludGVyZmVpc2EgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0F0xLxhdWp1IGdydXBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBwaWV2aWVub8WhYW5hcyBkYXJixKtidSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbnUga2xpZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrb2thIHNrYXTEq2p1bWEgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSB0xIFsdW1tYWnFhmFzIGVrcsSBbnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwaWV2aWVub8WhYW5hcyBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgYcSjZW50YSBzYXNrYXJuxJMgaXptYW50b3R1IG1hc3ZlaWRhIElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGVrcsSBbnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcmVkacSjxJPFoWFuYXMgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGHEo2VudGEgc2Fza2FybsSTIGl6bWFudG90dSBla3LEgW51IEhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgYcSjZW50YSBzYXNrYXJuxJMgaXptYW50b3R1IGVrcsSBbnUgZHJ1a8SBdCBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ05lcGllY2llxaFhbcSBcyBwcml2aWzEk8SjaWphcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZHrEk8WhYW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdNZWtsxJN0IGtvbmZpZ3VyxIFjaWphcyB2aWVudW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0F1dG9txIF0aXNraSBpZXN0YXRpZXQgS0kgaW5jaWRlbnRhIHN0xIF2b2tsaSwga2FkIGJpxLxldGUgaXIgc2Fpc3TEq3RhIGFyIEtJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0llc3RhdGEgaXp2aWV0b8WhYW5hcyBzdMSBdm9rbGkgYcSjZW50YSBpbnRlcmZlaXNhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrb3B1bWEgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0llc3RhdGEgaW5jaWRlbnRhIHN0xIF2b2tsaSBhxKNlbnRhIGludGVyZmVpc2Ega29uZmlndXLEgWNpamFzIHZpZW51bWEga29wdW1hIGVrcsSBbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RpZWsgcGFyxIFkxKt0YSBzYWl0ZSBpenbEk2xuxJMsIGthcyDEvGF1aiBzYXZpZW5vdCBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYXIgY2l0dSBvYmpla3R1IGHEo2VudGEgaW50ZXJmZWlzYSBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgcGlla8S8xat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmVpIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBwaWVrxLzFq3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSB2xJNzdHVyZWkgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgZHrEk3N0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2FpdGVzIHRpa3R1IHBhcsSBZMSrdGFzIGvEgSBLb2t1IHNrYXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIGR1YmzEk3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGllayBwYXLEgWTEq3RhIHNhaXRlIGl6dsSTbG7EkywgbGFpIGR1YmzEk3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIHJlZGnEo8STdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGllayBwYXLEgWTEq3RhIHNhaXRlIGl6dsSTbG7EkywgbGFpIGF0Z3JpZXp0b3MgYXRwYWthxLwgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIGl6ZHJ1a8SBdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIHBhbGllbGluxIF0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBpbnRlcmZlaXNhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgdsSTc3R1cmkgKHNha8SBcnRvdHUgYXBncmllenTEgSBzZWPEq2LEgSkgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ05va2x1c8STanVtYSBrYXRlZ29yaWphLCBrYXMgdGllayByxIFkxKt0YSwgamEgbmF2IGl6dsSTbMSTdGEgbmV2aWVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBpZGVudGlmaWthdG9ycywgcGllbcSTcmFtLCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUMSTYyBub2tsdXPEk2p1bWEgaXIgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbcSBdGlza2kgaWVkYXJiaW5hIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3J1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaWphIFZpcmtuZXMgdmlya25lcyBpenRlaWtzbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lqYXMgdmlya25lcyBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpamEgVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnVmFpIENvbmZpZ0l0ZW1BQ0wgaXpwaWxkaSB2YXIgbm92xJNyc3QsIHDEgXJiYXVkb3Qga2XFoWF0bWnFhsSBIGVzb8WhbyBsYXVrdSBhdGthcsSrYmFzLiBUYXMgdmFyIHV6bGFib3QgdmVpZGxhcHUgaWVsxIFkZXMgbGFpa3UsIGJldCB0YXMgaXIgasSBYXRzbMSTZHosIGphIEFDTE1vZHVsZXMgaXIgasSBaXptYW50byBJVFNNQ29uZmlnSXRlbS0gdW4gRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0vEgWRhIHZpc3DEgXLEq2dhIGluZm9ybcSBY2lqYSBpciBub3LEgWTEq3RhIGdhbHZlbsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LEgWzEgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0xKt2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncGlybXMgcmVwcm9kdWt0xKt2xIEgcGVyaW9kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdMSrdnMnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgY29sbGFzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgY29sbGEgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBjb2xsYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgY29sbGFzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgY29sbHUgc3RhdMSrdnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGNvbGxhcyAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBjb2xsYXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxIGNvbGx1IHN0YXTEq3ZzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBjb2xsYXMgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBjb2xsdSBwbGF1a3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBjb2xsYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGNvbGxhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgY29sbGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgY29sbGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGNvbGxhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgY29sbGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBjb2xsYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGNvbGxhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgY29sbGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgY29sbGFzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgY29sbGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgY29sbGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBjb2xsYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgY29sbGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGNvbGxhcyAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIGNvbGxhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGNvbGxhcyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGNvbGxhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgY29sbGFzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBjb2xsYXMgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgY29sbGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGNvbGxhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBjb2xsYXMgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0dyxIFtYXR2ZWTEq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZcWhdSBwaWXFocS3aXLFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nYWlzIHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0llcsSrY2VzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBa3VtdWxhdG9yYSBpZXRpbHDEq2JhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWt1bXVsYXRvcmEgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ8SSa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0F1dG9idXNzIHNhc2thcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnUHJvY2Vzb3JhIGtsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdKYXVkYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2F0cmFzIGdyYWZpc2vEgXMga2FydGVzIGphdWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FydGVzIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0thcsWhdSBsYXPEq3TEgWpzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thcnRlcyB2ZWlkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50dSBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50YSBwcm9ncmFtbWF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLbGllbnR1IGthdGVnb3JpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2RhIHBhcmFrc3TEq8WhYW5hcyBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuxI11IHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHTEgWNpanUgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnU2F6aW5pZXRpZXMgYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ1NhemluaWV0aWVzIGFyIGl6cGxhdMSrdMSBanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdLb250ZWluZXJ1IHDEgXJ2YWxkxKtiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0zEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0zEq2d1bWEgdmVpZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdMxKtndW1hIHBlcmlvZHMgbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnTMSrZ3VtYSB0ZXJtacWGxaEgbMSrZHonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmV6dmFkdSB0xIFscnVuaXMgKERFQ1QgdMSBbHJ1bmlzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdJem1ha3N1IHZpZW7Eq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGljZW7EjXUgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdJenZlaWRlcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1BpZWzEgWdvdGFpcyBwbGF1a3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIHJlemVydsSTdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyBzZXJ2ZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnUsSTxLdpbmEgaXpyYWtzdMSrxaFhbmFzIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnUGFzxat0xKtqdW1hIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnR2FyYW50aWphcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnSXpkb8WhYW5hcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0RhcmJ2aXJzbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVudHUgcGFyYWtzdMSrxaFhbmFzIHNlcnRpZmlrxIF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgcGxhdWt0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1wYXN0YSBzZXJ0aWZpa8SBdGkgKFMvTUlNRSBzZXJ0aWZpa8SBdGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0RhcmJhIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdHYWxhIElQIGFkcmVzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0F0YmFsc3RhIGJlaWdhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RlcsSrZ3VtYSB0ZXJtacWGxaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ8SAcsSTamFpcyBjaWV0YWlzIGRpc2tzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVWd1bnNtxatyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1NwYXJhcmFyYXR1IGVuZXLEo2lqYXMgdXpnbGFixIHFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1hcyBmYWt0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaHEq3plcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnQmV6bWFrc2FzIHByb2dyYW1tYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1Zpc3DEgXLEq2dhIGluZm9ybcSBY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpc2vEgXMga2FydGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaXNrxIEga2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdBcGFyYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnQXBhcmF0xatyYXMgbW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdBcGFyYXTFq3JhcyBzdmFycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVzdGnFhmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAgcHJvdG9rb2xzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXTEgXRlcyB1biBwaWVrxLx1dmVzIHDEgXJ2YWxkxKtiYSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50xIFyYSBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ1LEk8S3aW5hIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIG1vbml0b3JzICjFocS3aWRybyBrcmlzdMSBbHUgZGlzcGxlanMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgbW9uaXRvcnMgKGdhaXNtYXMgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1N0YWNpb27EgXJhaXMgdMSBbHJ1bmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnRhdMSrdmFpcyBkYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdQbGF0dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnMS4gc2zEgW5pczogZml6aXNrYWlzIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnMi4gc2zEgW5pczogZGF0dSBzYWl0ZXMgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMy4gc2zEgW5pczogdMSra2xhIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMy4gc2zEgW5pczogdMSra2xhIHNsxIFuaXMgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICc0LiBzbMSBbmlzOiB0cmFuc3BvcnRhIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJzUuIHNsxIFuaXM6IHNlc2lqYXMgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICc2LiBzbMSBbmlzOiBQcmV6ZW50xIFjaWphcyBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNy4gc2zEgW5pczogbGlldG9qdW1wcm9ncmFtbXUgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdOb21hcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jZXMgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5jZXMgYXRzbMSTZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW5jZXMgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jZXMgcGVyaW9kcyBubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VuY2VzIGRlcsSrZ3VtYSB0ZXJtacWGxaEgbMSrZHonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGlqYSBkemVsenMgZm9zZsSBdGEgKExpRmVQTzQpIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpamEgam9udSAoTGktaW9uKSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0FpemRldnVtYSBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBdHJvZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ8SiZW9ncsSBZmlza2FpcyBnYXJ1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdSYcW+b3TEgWpzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW3EgWzEgSBzbG9kemVzIGphdWRhIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdBdG1pxYZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnQXRtacWGYXMgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaSBzdGF0xKt2cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWzEgSB0xIFscnXFhmEgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsYWlzL2llc3RyxIFkxIF0YWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGXEvGEgYXByYWtzdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvcmEgaXrFocS3aXJ0c3DEk2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3JhIGl6bcSTcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdQZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdUxKtrbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtxIFjaWphIHBhciB0xKtrbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ1TEq2tsYSBpbmZvcm3EgWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1TEq2tsYSBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmnEt2XEvGEta2FkbWlqYSAoTmlDZCkgYWt1bXVsYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOacS3ZcS8YS1tZXTEgWxhIGhpZHLEq2RhIChOaU1IKSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdMxKtndW1zIHBhciBpbmZvcm3EgWNpamFzIG5laXpwYXXFoWFudSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ1BpZXrEq21qZGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUHJvY2Vzb3J1IHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdPcGVyYXTEq3bEgXMgYXRtacWGYXMgbW9kdcS8dSBza2FpdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnR3JhZmlza28ga2FyxaF1IHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9ycyAob3JnYW5pc2vEgSBnYWlzbWFzIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdEYXJixKtiYXMgaXptYWtzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnUGFzxat0xKtqdW1hIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0NpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0l6ZWphcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4gS09EUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXLEq2JhcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVMSBbHJ1xYZhIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVMSBbHJ1xYZhIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGaXppc2tpZSBrb2RvbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdFbmVyxKNpamFzIHBpZWfEgWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnSWVnxIFkxIF0cyB2aWV0bsSTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdTdGF0xKt2YSBkemnEvHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1N0YXTFhnUgdmllbsSrYmFzIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnTnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIGthcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQxIFyZG/FoWFuYXMgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbMSrdGEgdMSBbHJ1bmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0hlcm3Ek3Rpc2tpIG5vc2zEk2d0cyBzdmluYS1za8SBYmVzIChTTEEpIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU8STcmlqYXMgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlcmEgcHJvZ3JhbW1hdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdQYWthbHBvanVtdSBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnUGFrYWxwb2p1bWEgYmlya2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnS29udGFrdGxpZ3pkYXMgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW1tYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnU2thxLxydcWGaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFydGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1PEgWt1bWEgSVAgYWRyZXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdVemdsYWLEgcWhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnVXpnbGFixIHFoWFuYXMgbm9kYWzEq2p1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdNZWl0YXN1esWGxJNtdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdLb3BzYXZpbGt1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdQbMSBbnMga2xpZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRGllZ2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnR3JhZmlza8SBcyBrYXJ0ZXMgUkFNIGtvcMSTamFpcyBhcGpvbXMgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0tvcMSTamFpcyBvcGVyYXTEq3bEgXMgYXRtacWGYXMgYXBqb21zIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ1NrxIFyaWVuZWtyxIFuYSBtb25pdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1Rvcm5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIGtvbmNlbnRyYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBhdXN0acWGYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCB0xIFscnVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/mk_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1rX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9Cc0LDQv9C40YDQsNGa0LUg0LfQsCDQtNC+0LHQuNCy0LDRmtC1INC90LAg0LHQsNGA0LDQvdC40YLQtSDQv9C+0LTQsNGC0L7RhtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC/0L7RmNC00L7QstC90Lgg0L7QtNCz0L7QstC+0YAg0L3QsCDQv9C+0LTQsNGC0L7RhtC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9INCc0LXQvdCw0Z/QvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9Cf0YDQvtC80LXQvdC4INC00LXRhNC40L3QuNGG0LjRmNCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzQtdC90Lgg0LTQtdGE0LjQvdC40YbQuNGY0LAg0L3QsCDQutC70LDRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvdC+0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRgtC10YAg0LfQsCDQmtC70LDRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9Ce0LTQsdC10YDQuCDQmtC70LDRgdCwINC+0LQg0LvQuNGB0YLQsNGC0LAg0LfQsCDQtNCwINC60YDQtdC40YDQsNGC0LUg0L3QvtCyINCa0L7QvdGE0LjQsyDQp9C70LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgdCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSDQmtC+0L3RhNC40LPQp9C70LXQvSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KDQsNGB0L/QvtGA0LXQtNGD0LLQsNGH0LrQsCDRgdC+0YHRgtC+0ZjQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0L7RgtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn0J/QvtCy0YDQt9C4INGB0L4g0LTRgNGD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstCw0LvQuNC00LXQvSDQmtC+0YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQsdGA0L7RmCDQvdCwINCn0LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfQkdGA0L7RmNC+0YIg0L3QsCDQtNGA0YPQsyDQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INGB0L4g0LvQuNC90Log0YjQuNGA0LjQvdCwLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CU0LDQu9C4INGB0YLQtSDRgdC40LPRg9GA0L3QuCDQtNC10LrQsCDRgdCw0LrQsNGC0LUg0LTQsCDRmNCwINC40LfQsdGA0LjRiNC10YLQtSDQvtCy0LDQsCDQkNC60YLQuNCy0L3QvtGB0YI/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LzQtdGC0L4g0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CY0LzQtdGC0L4g0LUg0LLQtdGc0LUg0LLQviDRg9C/0L7RgtGA0LXQsdCwINC+0LQg0YHRgtGA0LDQvdCwINC90LAg0JrQvtC90YTQuNCz0KfQu9C10L3QvtCy0LjRgtC1INGB0L4g0YHQu9C10LTQvdC+0LIv0YLQtSDQkdGA0L7RmCjQtdCy0LgpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ9CR0YDQvtGYINC90LAg0JLQtdGA0LfQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LzQtdGC0L4g0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80LXRgtC+INC1INCy0LXRnNC1INCy0L4g0YPQv9C+0YLRgNC10LHQsCDQvtC0INGB0YLRgNCw0L3QsCDQvdCwINCa0L7QvdGE0LjQs9Cn0LvQtdC90L7QstC40YLQtSDRgdC+INGB0LvQtdC00L3QvtCyL9GC0LUg0JHRgNC+0Zgo0LXQstC4KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Ca0YDQtdC40YDQsNGY0JLRgNC10LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfQl9GD0LzQuNGA0LDRmCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfQmtC+0L3RhNC40LMg0KfQu9C10L3QvtCy0Lgg0L/QviDRgdGC0YDQsNC90LjRhtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQn9GA0LXQstCw0YDRg9Cy0LDRmCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L0g0JjQvdGE0L7RgNC80LDRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQodC10LPQsNGI0L3QsCDQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KHQtdCz0LDRiNC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0J/QvtGB0LvQtdC00L3QviDQv9GA0L7QvNC10L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00L3QviDQv9GA0L7QvNC10L3QtdGC0L4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9Cn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cg0LXRhNC10YDQtdC90YbQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9Ce0L/QtdGA0LDRhtC40YHQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQn9GA0LXQtNGD0L/RgNC10LTRg9Cy0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn0JjQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KDQsNGB0L/QvtGA0LXQtNGD0LLQsNGH0LrQsNGC0LAg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC+0LLQvtGYINC60L7QvdGE0LjQsyDRh9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0L3QuNC00LXQvdGCINGB0L7RgdGC0L7RmNCx0LAg0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfQndC10LzQsNGC0LUg0JTQvtC30LLQvtC70LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDQvdCwINCh0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ch0LXQs9Cw0YjQtdC9INCi0LjQvyDQvdCwINCh0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9CY0LfQvNC10ZPRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvQtdC9INCx0YDQvtGYINC90LAg0LXQtNC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LXRh9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ce0LTRgNC20YPQstCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0LjQu9C+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9Cf0LvQsNC90LjRgNCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQn9C+0L/RgNCw0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0J/RgNC10LrQuNC90LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Cf0YDQtdCz0LvQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgi9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/RgNC+0LLQtdGA0Lgg0LfQsCDRg9C90LjQutCw0YLQvdC+INC40LzQtSDRgdCw0LzQviDQstC+INGA0LDQvNC60LjRgtC1INC90LAg0LjRgdGC0LAg0JrQvtC90YTQuNCz0KfQu9C10L0g0LrQu9Cw0YHQsCAoXCdjbGFzc1wnKSDQuNC70Lgg0LPQu9C+0LHQsNC70L3QviAoXCdnbG9iYWxcJyksINGI0YLQviDQt9C90LDRh9C4INC00LXQutCwINGB0LXQutC+0Zgg0L/QvtGB0YLQvtGY0LDRh9C60Lgg0JrQvtC90YTQuNCz0KfQu9C10L0g0LUg0LfQtdC80LXQvSDQstC+INC/0YDQvtGE0LjQu9C+0YIg0LrQvtCz0LAg0YHQtSDQsdCw0YDQsNCw0YIg0LTRg9C/0LvQuNC60LDRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvdC+0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC90YTQuNCzINGH0LvQtdC9INC90LDRgdGC0LDQvSDQvNC+0LTRg9C70Lgg0LrQvtC4INC+0LLQvtC30LzQvtC20YPQstCw0LDRgiDQt9Cw0L/QuNGI0YPQstCw0LDRgiDQu9C+0LPQvtCy0Lgg0LLQviDQuNGB0YLQvtGA0LjRmNCwINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INCb0LjQvNC40YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQmtGA0LXQuNGA0LDRmCDQuCDQvNC10L3QsNGf0LjRgNCw0Zgg0LTQtdGE0LjQvdC40YbQuNC4INC30LAg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvdC+0LLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQkdCw0YDQsNC90Lgg0L/QtdGA0LzQuNGB0LjQuCDQt9CwICDQtNCwINC30LXQvNC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvdC+0LLQuCDQutC+0YDQuNGB0YLQtdGY0ZzQuCDQk9C10L3QtdGA0LjRh9C60Lgg0JjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQkdCw0YDQsNC90Lgg0L/QtdGA0LzQuNGB0LjQuCDQt9CwICDQtNCwINC30LXQvNC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvdC+0LLQuCDQutC+0YDQuNGB0YLQtdGY0ZzQuCDQk9C10L3QtdGA0LjRh9C60Lgg0JjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQkdCw0YDQsNC90Lgg0L/QtdGA0LzQuNGB0LjQuCDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvdC+0LLQuCDQutC+0YDQuNGB0YLQtdGY0ZzQuCDQk9C10L3QtdGA0LjRh9C60Lgg0JjQvdGC0LXRgNGE0LXRmNGB0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCR0LDRgNCw0L3QuCDQv9C10YDQvNC40YHQuNC4INC30LAgINC00LAg0LfQtdC80LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC90L7QstC4INC60L7RgNC40YHRgtC10ZjRnNC4INCT0LXQvdC10YDQuNGH0LrQuCDQmNC90YLQtdGA0YTQtdGY0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/RgNC10LPQu9C10LQg0LzQvtC00YPQuyDQt9CwINC/0YDQuNC60LDQtyDQvdCwINC80LDQuyDQv9GA0LXQs9C70LXQtCDQvdCwINC60L7RhNC40LPRg9GA0LDRhtC40YHQutCwINC70YfQtdC9INC70LjRgdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDRgNC10LPRg9C70LDRgNC90Lgg0LjQt9GA0LDQt9C4INC40L3QtNC40LLQuNC00YPQsNC70L3QviDQt9CwINGB0LXQutC+0ZjQsCDQmtC+0L3RhNC40LPQp9C70LXQvSDQutC70LDRgdCwINC30LAg0LTQsCDQv9GA0L7QstC10YDQuCDQmtC+0L3RhNC40LPQp9C70LXQvSDQuNC80LUg0Lgg0LTQsCDQs9C4INC/0YDQuNC60LDQttC1INCz0YDQtdGI0L3QuNGC0LUg0LrQvtGA0LXRgdC/0L7QvdC00LjRgNCw0YfQutC40YLQtSDQv9C+0YDQsNC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0YHRgtCw0L3QtNCw0YDQtNC10L0g0YHRg9Cx0L7QsdGY0LXQutGCINC30LAg0LrQu9Cw0YHQsNGC0LAgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCx0YDQvtGYINC90LAg0YDQtdC00LjRhtC4INC30LAgQ0kg0LTQtdGE0LjQvdC40YbQuNGB0LrQuNC+0YIg0YPRgNC10LTQvdC40Log0LLQviDQsNC00LzQuNC9INC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW0g0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQu9C40LzQuNGCINC30LAg0LHQsNGA0LDRmtCwINC30LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDQtdC60YDQsNC90L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC70LjQvNC40YIg0LfQsCDQsdCw0YDQsNGa0LAg0LfQsCBBZ2VudElUU01Db25maWdJdGVtINC10LrRgNCw0L3QvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9GA0LjQutCw0Lcg0L3QsCDQutC+0LvQvtC90Lgg0L7QtCBDSXMg0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L3QvtGCINC/0YDQtdCz0LvQtdC00L7RgiDQstC+INC30LDQstC40YHQvdC+0YHRgiDQvtC0IENJINC60LvQsNGB0LDRgtCwLiDQodC10LrQvtGYINCy0LvQtdC3INC80L7RgNCwINC00LAg0LjQvNCwINC/0YDQtdGE0LjQutGBINGB0L4g0LrQu9Cw0YHQvdC+INC40LzQtSDQuCDQtNCy0L7RmNC90Lgg0LrQvtC70L7QvdC4IChpLmUuIENvbXB1dGVyOjopLiDQmNC80LAg0L3QtdC60L7Qu9C60YMgQ0kt0JDRgtGA0LjQsdGD0YLQuCDQutC+0Lgg0YHQtSDRh9C10YHRgtC4INGB0L4g0YHQuNGC0LUgQ0lzICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdGC0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0L/RgNC40LrQsNC3INC90LAg0LjQtNC40LLQuNC00YPQsNC70L3QuCBDSS1BdHRyaWJ1dGVzINC60LDQutC+INGI0YLQviDRgdC1INC00LXRhNC40L3QuNGA0LDQvdC4INCy0L4gIENJLdCU0LXRhNC40L3QuNGG0LjRmNCw0YLQsCwg0YHQu9C10LTQvdCw0LLQsCDRiNC10LzQsCDQvNC+0YDQsCDQtNCwINCx0LjQtNC1INC40YHQutC+0YDQuNGB0YLQtdC90LAgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0LDRgtCwICBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQkNC60L4g0L3QtdC80LAg0LLQu9C10Lcg0LfQsCBDSSDQutC70LDRgdCwLCDRgtC+0LPQsNGIINGB0YLQsNC90LTQsNGA0LTQvdC40YLQtSDQutC+0LvQvtC90Lgg0YHQtSDQv9GA0LjQutCw0LbQsNC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQlNGD0L/Qu9C40LrQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQntCy0L7Qt9C80L7QttGD0LLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9IGJ1bGsgYWN0aW9uINC60LDRgNCw0LrRgtC10YDQuNGB0YLQuNC60Lgg0LfQsCDQsNCz0LXQvdGCINC/0YDQtdC00LXQvdC00LXQuyDQt9CwINC00LAg0YDQsNCx0L7RgtC4INGB0L4g0L/QvtCy0LXRmtC1INC+0LQg0LXRhNC10L0g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC40YHRgtC+INCy0YDQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0J7QstC+0LfQvNC+0LbRg9Cy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrIGFjdGlvbiDQutCw0YDQsNC60YLQtdGA0LjRgdGC0LjQutC4INGB0LDQvNC+INC30LAg0LPRgNGD0L/QvdC40YLQtSDQu9C40YHRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9Cn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfQodC+0YHRgtC+0ZjQsdCwINC90LAg0JjQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC+0LTQs9C+0LLQvtGA0L3QvtGB0YIg0L3QsCDQs9GA0YPQv9CwINC30LAg0LrQu9Cw0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC+0LTQvtCz0L7QstGA0L3QvtGB0YIg0L3QsCDQs9GA0YPQv9CwINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YDQsNGa0LUgSVRTTSDQutC+0L3RhNC40LMg0YfQu9C10L0g0YHRgtCw0YLQuNGB0YLQuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn0J/RgNC10LPQu9C10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LHQvtGY0LAg0L3QsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC/0YDQuNC80LXRgCDQtNC+0LfQstC+0LvQuNGC0LUg0LfQsCDQs9GA0YPQv9C4INC+0LQg0LPQtdC90LXRgNCw0LvQvdC4INC60LDRgtCw0LvQvtCzINCw0YLRgNC40LHRg9GC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLRgNCw0L3QuNCy0Lgo0LLQviDQutC+0Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuNGC0LUg0YfQu9C10L3QvtCy0Lgg0YHQtSDQv9GA0LjQutCw0LbQsNC90LgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INC/0YDQtdCx0LDRgNGD0LLQsNGa0LUg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INC/0YDQtdCx0LDRgNGD0LLQsNGa0LUg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INC/0YDQtdCx0LDRgNGD0LLQsNGa0LUg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC30LPQvtC70LXQvNGD0LLQsNGH0LrQuCDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwINC00L7QtNCw0LLQsNGa0LUg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAg0YPRgNC10LTQuCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwINC40YHRgtC+0YDQuNGY0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDQv9GA0LjQvdGCINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC10YLQuNGA0LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrINC10LrRgNCw0L3QvtGCINC+0LQg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC10YLQuNGA0LAg0LjQvdGG0LjQtNC10L3RgiDRgdC+0YHRgtC+0ZjQsdCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrINC10LrRgNCw0L3QvtGCINC+0LQg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQutC+0LUg0L7QstC+0LfQvNC+0LbRg9Cy0LAg0L/QvtCy0YDQt9GD0LLQsNGa0LUg0YHQviDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INGB0L4g0LTRgNGD0LMg0L7QsdGY0LXQutGCINCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9ICDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQutC+0LUg0L/RgNC40YHRgtCw0L/Rg9Cy0LAg0LLQviDQuNGB0YLQvtGA0LjRmNCw0YLQsCDQvdCwICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LrQvtC1INC+0LLQvtC30LzQvtC20YPQstCwINC/0YDQuNGB0YLQsNC/INC00L4g0LjRgdGC0L7RgNC40ZjQsNGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9ICDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQt9CwINGD0YDQtdC00YPQstCw0ZrQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INGB0L4g0LTRg9C/0LvQuNC60LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0YHQviDQtNGD0L/Qu9C40LrQsNGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC30LAg0YPRgNC10LTRg9Cy0LDRmtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC30LPQvtC70LXQvNC10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LLQviDQvNC10L3QuNGC0L4g0LvQuNC90LrQvtGCINC30LAg0LLRgNCw0ZzQsNGa0LUg0LLQviDQtNC10YLQsNC70LXQvSDQv9C+0LPQu9C10LQg0LLQviDQuNC90YLQtdGA0YTQtdGY0YHQvtGCINC90LAg0LDQs9C10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LfQsCDQv9C10YfQsNGC0LXRmtC1INCy0L4g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDRgdC+INC30LPQvtC70LXQvNGD0LLQsNGa0LUg0L3QsCDQutC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+ICDQutC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwICDQutC+0L3RhNC40LMg0YfQu9C10L0g0LjRgdGC0L7RgNC40ZjQsCAo0LLQviDQvtCx0YDQsNGC0LXQvSDRgNC10LTQvtGB0LvQtdC0KSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00L3QtdGC0LjRhNC40LrRg9Cy0LDRh9C+0YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9LCDQvy7RgC4gIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQodGC0LDQvdC00LDRgNC00L7RgiDQtSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfQmtC70LDRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQnNC10L3QsNGf0LzQtdC90YIg0L3QsCDQktGA0LXQvNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9CT0YDQsNC00LXRmNGc0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CY0L3RgtC10YDRhNC10ZjRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQn9GA0L7RhtC10YHQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9Cg0LDQsdC+0YLQvdCwINC/0L7QstGA0YjQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQtdC9INGB0L7RhNGC0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9Ci0LDRgdGC0LDRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0JvQsNC/0YLQvtC/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfQnNC+0LTQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQk9C70YPRiNC10YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ9CU0YDRg9Cz0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9CY0LfQu9C10LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfQodC+0LHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC30LAg0J3QuNCy0L4g0L3QsCDQo9GB0LvRg9Cz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9Ch0YLQsNC90LTQsNGA0LTQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ms_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ1BlbWV0YWFuIHVudHVrIHBlcm1pbnRhYW4gbWFzdWsgZGF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdQZW1ldGFhbiB1bnR1ayB0aW5kYWsgYmFsYXMgZGF0YSB5YW5nIGtlbHVhci4nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnVWJhaCBkZWZpbmlzaSBrZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnVWJhaCBkZWZpbmlzaSBrZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnTWVuYXBpcyBLZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBLZWxhcyBkYXJpIHNlbmFyYWkgdW50dWsgbWV3dWp1ZGthbiBQZXJrYXJhIENvbmZpZyBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tlbGFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSXRlbUtvbmZpZyBJVFNNIFRpbmRha2FuIFB1a2FsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdLZWFkYWFuIHBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdLZWFkYWFuIGluc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUGF1dCBrZSBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgVGlkYWsgU2FoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgbGFpbiB1bnR1ayBkaXBhdXRrYW4gZGVuZ2FuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0FuZGEgYmVuYXIgaW5naW4gbWVtYnVhbmcgaXRlbSBjb25maWcgaW5pPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGNvbmZpZyBpdGVtIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnQmlsYW5nYW4gdmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ05hbWEgY29uZmlnIGl0ZW0gaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdLZWFkYWFuIFBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdpbnNpZGVuIGtlYWRhYW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdLYW5kdW5nYW4gc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ2lwdGEgbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQYW5kYW5nYW4gZGliZXNhcmthbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGNvbmZpZyBwZXIgaGFsYW1hbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnSmFsYW5rYW4gQ2FyaWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BlcmthcmEga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnTWFrbHVtYXQgQmFyYW5nYW4gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnUGVydHVrYXJhbiBrZWFkYWFuIHNlbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnSW5zaWRlbiBrZWFkYWFuIHNlbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdUZXJraW5pIGJlcnViYWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVGVyYWtoaXIgZGl1YmFoIG9sZWgnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdBZGFrYWggYW5kYSBpbmdpbiBtZW5lcnVza2FuPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpYWRhIEl0ZW1JRCBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnVGlkYWsgbWFtcHUgdW50dWsgbWVtYnVhbmcgYmFoYXNhICVzIGl0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1RpYWRhICVzIGRpYmVyaWthbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYm9sZWggbWVudW5qdWtrYW4gc2VqYXJhaCwgc2ViYWdhaSB0aWFkYSBJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnVGlkYWsgYm9sZWggbWVudW5qdWtrYW4gc2VqYXJhaCwgc2ViYWdhaSB0aWFkYSBJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnVGlkYWsgYm9sZWggbWVudW5qdWtrYW4gc2VqYXJhaCwgc2ViYWdhaSB0aWFkYSBJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1J1anVrYW4oZW4pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgJXMgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnVGlhZGEgS2VwdXR1c2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0hhc2lsIGNhcmlhbiBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ0FtYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0tlYWRhYW4gcGVuZW1wYXRhbiBpdGVtIGluaSBjb25maWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdLZWFkYWFuIGluc2lkZW4gYmFnaSBjb25maWcgaXRlbSBpbmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdUaWFkYSBrZWJlbmFyYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0plbmlzIFBlcnR1a2FyYW4gS2VhZGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOeWF0YWthbiBKZW5pcyBJbnNpZGVuIFNlbWFzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnQmlsYW5nYW4gbWFrc2ltdW0gc2F0dSBlbGVtZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVGFtYXQgVGVtcG9oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAncGVueWVsZW5nZ2FyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0RpcmFuY2FuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdNZW1iYWlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnYmVyc2FyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdtZW5na2FqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVWppYW4vUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1NlbWFrIG5hbWEgeWFuZyB1bmlrIHNhaGFqYSBkaSBkYWxhbSBrZWxhcyBDb25maWdJdGVtIHlhbmcgc2FtYSAoXCdrZWxhc1wnKSBhdGF1IGRpIHBlcmluZ2thdCBnbG9iYWwgKFwnZ2xvYmFsXCcpLCB5YW5nIGJlcm1ha3N1ZCBzZXRpYXAgQ29uZmlnSXRlbSBzZWRpYSBhZGEgZGlhbWJpbCBraXJhIGtldGlrYSBtZW5jYXJpIHBlbmR1YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnVGFtYmFoIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXQgaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgYWNhcmEgYmFyYW5nYW4ga29uZmlndXJhc2kgeWFuZyBtZW1iZW5hcmthbiB1bnR1ayBsb2cga2Ugc2VqYXJhaCBkYWxhbSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdTZWphcmFoIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDZXRhayBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdadW0gaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0hhZCBCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWd1cmFzaSBQZW5ndXJ1c2FuIFBhbmdrYWxhbiBEYXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhc2kgaXRlbSBtb2R1bCBwdWthbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnIFJvdXRlciBjYXJpYW4gYmVsYWthbmcgYmFyYW5nYW4ga29uZmlndXJhc2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NpcHRhIGRhbiB1cnVzIHRha3JpZmFuIHVudHVrIEJhcmFuZ2FuIEtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0YSBhc2FsIGRpZ3VuYWthbiB1bnR1ayBzaWZhdCBiYWdpIHNrcmluIGNhcmlhbiB0aWtldC4gQ29udG9oOiBUaWNrZXRDcmVhdGVUaW1lUG9pbnRGb3JtYXQ9dGFodW47VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9VGVyYWtoaXI7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRhIGFzYWwgZGlndW5ha2FuIHVudHVrIHNpZmF0IGJhZ2kgc2tyaW4gY2FyaWFuIHRpa2V0LiBDb250b2g6IFRpY2tldENyYXRlVGltZVN0YXJ0WWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO1RpY2tldENyZWF0ZVRpbWVTdGFydERheT00O1RpY2tldENyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdG9wTW9udGg9MTE7VGlja2V0Q3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnVGFrcmlma2FuIFRpbmRha2FuIGRpbWFuYSBidXRhbmcgdGV0YXBhbiBpdHUgYWRhIGRhbGFtIHdpZGdldCBvYmplayBiZXJzYW1idW5nIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFNpbGEgcGFzdGlrYW4geWFuZyBUaW5kYWthbiBpbmkgcGVybHUgZGlkYWZ0YXJrYW4geWFuZyBiZXJpa3V0IGZhaWwtZmFpbCBKUyBkYW4gQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBrZWl6aW5hbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVtYnVhbmcgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFyYW11a2EgVW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmRhcGF0a2FuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmNhcmkgYmFyYW5nYW4ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmEgTXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGtlYmVuYXJhbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZGFwYXRrYW4gYmFyYW5nYW4ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmEgTXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbW9kdWwgZ2FtYmFyYW4gdW50dWsgbWVudW5qdWtrYW4gcGFuZGFuZ2FuIHlhbmcga2VjaWwgc2VuYXJhaSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB1bmdrYXBhbiBiaWFzYSBzZWNhcmEgaW5kaXZpZHUgdW50dWsgc2V0aWFwIGtlbGFzIEl0ZW1Lb25maWcgdW50dWsgbWVtZXJpa3NhIG5hbWEgSXRlbUtvbmZpZyBkYW4gdW50dWsgbWVudW5qdWtrYW4gbWVzZWogcmFsYXQgc2VwYWRhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzaWZhdCB0aWtldCBhc2FsIHVudHVrIGF0dXJhbiB0aWtldCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gdGlrZXQgZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgdGlrZXQgYXNhbCB1bnR1ayBhdHVyYW4gdGlrZXQgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIHRpa2V0IGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBzaWZhdCB0aWtldCBkZWZhdWx0IHVudHVrIHBlbmdrZWxhc2FuIHRpa2V0IGRhbGFtIGhhc2lsIGNhcmlhbiB0aWtldCBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0dXJ1dGFuIHRpa2V0IGFzYWwgZGFsYW0gaGFzaWwgY2FyaWFuIHRpa2V0IGRhcmkgcGFwYXJhbiBlamVuLiBBdGFzOiB5YW5nIGxhbWEgZGkgYXRhcy4gQmF3YWg6IHlhbmcgdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHR1cnV0YW4gdGlrZXQgYXNhbCBkYWxhbSBoYXNpbCBjYXJpYW4gZGFyaSBwYXBhcmFuIHBlbGFuZ2dhbi4gQXRhczogeWFuZyBsYW1hIGRpIGF0YXMuIEJhd2FoOiB5YW5nIHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHNpZmF0IHBlbmNhcmlhbiB0aWtldCB5YW5nIGRpdHVuanVrIHlhbmcgYXNhbCB1bnR1ayBza3JpbiBjYXJpYW4gdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gZGVmYXVsdCB5YW5nIGRpdHVuanVra2FuIHRpa2V0IHNpZmF0IHBlbmNhcmlhbiBza3JpbiBjYXJpYW4gdGlrZXQuIENvbnRvaDogIlV0YW1hIiBtZXN0aSBtZW1wdW55YWkgbmFtYSBtZWRhbiBkaW5hbWlrIGRhbGFtIGtlcyBpbmkgXCdYXCcsICJLYW5kdW5nYW4iIG1lc3RpIG1lbXB1bnlhaSBuaWxhaSBtZWRhbiBkaW5hbWlrIGJlcmdhbnR1bmcga2VwYWRhIGplbmlzIE1lZGFuIERpbmFtaWssIFRla3M6IFwndGVrc1wnLCBqYXR1aCB0dXJ1bjogXCcxXCcsIFRhcmlraC9NYXNhOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyID0gMTk3NDsKU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1TdWJvYmplY3QgZGVyIEtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0aW5nZ2kgdW50dWsga29tcG9uZW4gZWRpdG9yIHRla3Mga2F5YSB1bnR1ayBza3JpbiBpbmkuIE1hc3Vra2FuIG5vbWJvciAocGlrc2VsKSBhdGF1IG5pbGFpIHBlcmF0dXMgKHJlbGF0aWYpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGJpbGFuZ2FuIGJhcmlzIHVudHVrIGVkaXRvciBkZWZpbmlzaSBDSSBkYWxhbSBhbnRhcmEgbXVrYSBhZG1pbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnVGFrcmlma2FuIHN1c3VuYW4ga2VhZGFhbiBpbnNpZGVuIGRhcmlwYWRhIHRpbmdnaSAoY3RoLiBrcml0aWthbCkga2UgcmVuZGFoIChjdGguIGZ1bmdzaWFuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdUYWtyaWZrYW4ga2VhZGFhbiBwZW5lbXBhdGFuIHlhbmcgcmVsZXZlbiBkaW1hbmEgdGlrZXQgYmVyc2FtYnVuZyBib2xlaCBtZW5qZWphc2thbiBzdGF0dXMgYmFnaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gaGFkIGNhcmlhbiB1bnR1ayBza3JpbiBJdGVtS29uZmlnSVRTTUFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGhhZCBjYXJpYW4gdW50dWsgc2tyaW4gQ2FyaWFuSXRlbUtvbmZpZ0lUU01BZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBoYWQgY2FyaWFuIHVudHVrIHNrcmluIEl0ZW1Lb25maWdJVFNNQWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gaGFkIGNhcmlhbiB1bnR1ayBza3JpbiBDYXJpYW5JdGVtS29uZmlnSVRTTUFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4gZGl0dW5qdWtrYW4gQ0lzIGRhbGFtIHBhbmRhbmdhbiBwYXV0YW4gamFkdWFsIGtvbXBsZWtzLCBiZXJnYW50dW5nIGtlcGFkYSBrZWxhcyBDSSAuIFNldGlhcCBwZW55ZXJ0YWFuIGhlbmRha2xhaCBkaW11bGFrYW4gZGVuZ2FuIG5hbWEga2VsYXMgZGFuIHRpdGlrIGJlcnRpbmRpaCBkdWEgKGlhaXR1IEtvbXB1dGVyOjopLiBUZXJkYXBhdCBiZWJlcmFwYSBTaWZhdC1zaWZhdC1DSSB5YW5nIHNhbWEga2VwYWRhIHNlbXVhIENJcyAoY29udG9oIHVudHVrIGtlbGFzIEtvbXB1dGVyOktvbXB1dGVyOjpOYW1hLCBLb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBLb21wdXRlcjo6Q3JlYXRlVGltZSkuIFVudHVrIG1lbnVuanVra2FuIHNpZmF0IGluZGl2aWR1IENJIHNlYmFnYWltYW5hIHlhbmcgZGl0YWtyaWZrYW4gZGFsYW0gRGVmaW5pc2ktQ0ksIHNraW0gYmVyaWt1dCBtZXN0aSBkaWd1bmFrYW4gKGNvbnRvaCB1bnR1ayBrZWxhcyBLb21wdXRlcik6IEtvbXB1dGVyOjpoYXJkZGlzazo6MSwgS29tcHV0ZXI6OmhhcmRkaXNrOjoxOjpLYXBhc2l0aTo6MSwga29tcHV0ZXI6OmhhcmRkaXNrOjoyLCBLb21wdXRlcjo6aGFyZGRpc2s6OjI6OkthcGFzaXRpOjoxLiBKaWthIHRpYWRhIHBlbnllcnRhYW4gdW50dWsga2VsYXMgQ0ksIG1ha2EgcnVhbmdhbiBkZWZhdWx0IGRpcGFwYXJrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVudGFrcmlmIGJhcmFuZ2FuIG1hbmEgYm9sZWggZGlkYXBhdGkgdW50dWsgXCdUaW5kYWthblwnIGRpIHBlcmluZ2thdCBrZXRpZ2Egc3RydWt0dXIgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYXJhbmdhbiBtYW5hIHlhbmcgdGVyZGFwYXQgcGFkYSB0YWhhcCBwZXJ0YW1hIHN0cnVrdHVyIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGJhcmFuZ2FuIG1hbmEgeWFuZyB0ZXJkYXBhdCBwYWRhIHRhaGFwIGtlZHVhIHN0cnVrdHVyIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVGFrcmlma2FuIGplbmlzIHNhbWJ1bmdhbiB5YW5nIG1hbmEgKGRpbmFtYWthbiBkYXJpcGFkYSBwZXJzcGVrdGlmIHRpa2V0KSBib2xlaCBtZW5qZWphc2thbiBzdGF0dXMgYmFnaSBzYXR1IHNhbWJ1bmdhbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdUYWtyaWZrYW4gamVuaXMgdGlrZXQgeWFuZyBtYW5hIGJvbGVoIG1lbmplamFza2FuIHN0YXR1cyBiYWdpIHNhdHUgc2FtYnVuZ2FuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnUGVya2FyYSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ1BlbmVtcGF0YW4gS2VhZGFhbiBXYXJuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnS2VhZGFhbiBQZXJ0dWthcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0dhbmRha2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBiaWRhbmcgdGFqdWsgZGFsYW0gc2tyaW4gYmlkYW5nIElUU00gdGFtYmFoYW4gYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBiaWRhbmcgdGFqdWsgZGFsYW0gc2tyaW4gYmlkYW5nIElUU00gdGFtYmFoYW4gYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBiaWRhbmcgdGFqdWsgZGFsYW0gc2tyaW4gYmlkYW5nIElUU00gdGFtYmFoYW4gYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdNZW1ib2xlaGthbiBjaXJpIHRpbmRha2FuIHB1a2FsIGl0ZW0ga29uZmlndXJhc2kgdW50dWsgZnJvbnRlbmQgZWplbiB1bnR1ayBiZWtlcmphIHBhZGEgbGViaWggZGFyaXBhZGEgc2F0dSBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgc2F0dSBtYXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnTWVtYm9sZWhrYW4gY2lyaSBpdGVtIGtvbmZpZ3VyYXNpIHRpbmRha2FuIHB1a2FsIGhhbnlhIHVudHVrIGt1bXB1bGFuIHlhbmcgZGlzZW5hcmFpa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2RlbCBhY2FyYSB1bnR1ayBtZW55ZWRpYWthbiBzdGF0dXMtaXRlbWNvbmZpZyBhdGFzIHNhbWJ1bmdhbi1pdGVtY29uZmlnLXRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW5jZXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVuY2V0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW5jZXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ3BhbmRhbmdhbiBpdGVtIGNvbmZpZyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdpbnNpZGVuIGtlYWRhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ2luc2lkZW4ga2VhZGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdKdW1sYWggdGlrZXQgbWFrc2ltdW0gdW50dWsgZGlwYW1lcmthbiBkaSBrZXB1dHVzYW4gb3BlcmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgdW50dWsgbWVueWVtYWsga3VtcHVsYW4gYmVydGFuZ2d1bmdqYXdhYiB1bnR1ayBrZWxhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW55ZW1hayBrdW1wdWxhbiBiZXJ0YW5nZ3VuZ2phd2FiIHVudHVrIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgdW50dWsgbWVuamFuYSBzdGF0aXN0aWsga29uZmlnIGl0ZW0gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggdGlrZXQgeWFuZyBha2FuIGRpcGFtZXJrYW4gZGFsYW0gc2V0aWFwIGhhbGFtYW4gZGFyaSBoYXNpbCBjYXJpYW4gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggdGlrZXQgeWFuZyBha2FuIGRpcGFtZXJrYW4gZGFsYW0gc2V0aWFwIGhhbGFtYW4gZGFyaSBoYXNpbCBjYXJpYW4gZGFsYW0gcGFwYXJhbiBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQYW5kYW5nYW4ga2VzZWx1cnVoYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayB3YXJuYSBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGNvbnRvaCBrdW1wdWxhbiB5YW5nIGRpYmVuYXJrYW4gcGFkYSBjaXJpLWNpcmkga2F0YWxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG11a2Egc3VyYXQgKGRpIG1hbmEgaXRlbSBrb25maWd1cmFzaSBkaXR1bmp1a2thbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBjYXJpYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4genVtIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gdGFtYmFoIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGVkaXQgaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gY2V0YWsgaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ0tlaXN0aW1ld2Fhbi1rZWlzdGltZXdhYW4gZGlrZWhlbmRha2kgdW50dWsgbWVtYWRhbWthbiBiYXJhbmctYmFyYW5nIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDYXJpIGJhcmFuZy1iYXJhbmcgY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnTWVuZW50dWthbiBrZWFkYWFuIGluc2lkZW4gYmFnaSBDSSBzZWNhcmEgYXV0b21hdGlrIGFwYWJpbGEgc3VhdHUgVGlrZXQgZGlzYW1idW5na2FuIGtlcGFkYSBzdWF0dSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXQga2VhZGFhbiBwZW5lbXBhdGFuIGRhbGFtIHNrcmluIHB1a2FsIGl0ZW0ga29uZmlndXJhc2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0IGtlYWRhYW4gaW5zaWRlbiBkYWxhbSBza3JpbiBwdWthbCBpdGVtIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgeWFuZyBtZW1ib2xlaGthbiBtZW5naHVidW5na2FuIGl0ZW0ga29uZmlndXJhc2kgZGVuZ2FuIG9iamVrIGxhaW4gZGFsYW0gcGFuZGFuZ2FuIHp1bSBpdGVtIGtvbmZpZyBiYWdpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHVuanVrIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmdha3NlcyBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgZGkgZGFsYW0gZ2FtYmFyYW4ga2VzZWx1cnVoYW4gaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBzYXR1IHNhbWJ1bmdhbiBrZXBhZGEgbWVudSB1bnR1ayBtZW1hZGFtIHNhdHUgYmFyYW5nIGtvbmZpZ3VyYXNpICBkYWxhbSBwYW5kYW5nYW4genVtbnlhIGRhcmlwYWRhIGFudGFyYW11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1R1bmp1ayBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW55YWxpbiBpdGVtIGtvbmZpZ3VyYXNpIGRpIGRhbGFtIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIGl0ZW0ga29uZmlndXJhc2kgYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVueWFsaW4gYmFyYW5nYW4ga29uZmlndXJhc2kgZGFsYW0gcGFuZGFuZ2FuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgZWRpdCBiYXJhbmdhbiBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdtZW51bmp1a2thbiBzdWF0dSBzYW1idW5nYW4gcGFkYSBtZW51IHVudHVrIGtlbWJhbGkgZGFsYW0gem9vbSBpdGVtIGtvbmZpZ3VyYXNpIGRhcmlwYWRhIGFudGFyYSBtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW5jZXRhayBiYXJhbmdhbiBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHVuanVrIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIHp1bSBrZSBkYWxhbSBiYXJhbmdhbiBrb25maWd1cmFzaSBkaSBkYWxhbSBnYW1iYXJhbiBrZXNlbHVydWhhbiBiYXJhbmdhbiBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgc2VqYXJhaCBiYXJhbmdhbiBrb25maWcgKHVydXRhbiB0ZXJiYWxpaykgZGFsYW0gYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdQZW5nZWNhbSB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLCBjb250b2g6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBEZWZhdWx0IGlhbGFoIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdNYXNhIFBlcmFrYXVuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1BlbnRhZGJpcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCYW5ndW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnUGFwYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdKdXJ1dGVrbmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICd0ZXRpa3VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdsYWluLWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ091dHB1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0JpbGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVGFoYXAgUGVyc2V0dWp1YW4gUGVya2hpZG1hdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdQaWF3YWlhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/nb_NO_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmVsbGUgZHJpZnRzZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSW5uc3RpbGxpbmdlciBmb3IgaW5ua29tbWVuZGUgZm9yZXNww7hyc2Vsc2RhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdJbm5zdGlsbGluZ2VyIGZvciB1dGfDpWVuZGUgc3ZhcmRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdBZG1pbmlzdHJhc2pvbiBhdiBrb25maWd1cmFzam9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdFbmRyZSBrbGFzc2VkZWZpbmlzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdFbmRyZSByb2xsZWRlZmluaXNqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQta2xhc3NlcGFra2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnSGVyIGthbiBkdSBpbXBvcnRlcmUgUmVhZHkySW1wb3J0LWtsYXNzZXBha2tlciBzb20gdmlzZXIgZGUgdmFubGlnc3RlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVuZSB2w6VyZS4gVsOmciBvcHBtZXJrc29tIHDDpSBhdCBkZXQga2FuIHbDpnJlIG7DuGR2ZW5kaWcgbWVkIHl0dGVybGlnZXJlIGtvbmZpZ3VyYXNqb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ09wcGRhdGVyIGVrc2lzdGVyZW5kZSBlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0ZXIgUmVhZHkyQWRvcHQta2xhc3NlcGFra2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldHNrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyZXJpbmdzZWxlbWVudGV0cyByb2xsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3Iga2xhc3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWZWxnIGVuIGtsYXNzZSBmcmEgbGlzdGVuIGZvciDDpSBvcHByZXR0ZSBlbiBueSBrb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTWFzc2VyZWRpZ2VyaW5nIGF2IGtvbmZpZ3VyYXNqb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnUHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnS29ibGUgdGlsIGVuIGFubmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVZ3lsZGlnIGtvbmZpZ3VyYXNqb25zZWxlbWVudG51bW1lciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTnVtbWVyZXQgcMOlIGV0IGFubmV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBzb20gc2thbCBrb2JsZXMgdGlsLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBmamVybmUgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXZuZXQgdGlsIGRlbm5lIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmF2bmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBhdiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWZXJzam9uc251bW1lciBmb3IgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzam9uc251bW1lcmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBhdiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0hlbmRlbHNlc3RpbHN0YW5kJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpZW4gdGlsIGtvbmZpZ3VyYXNqb25zZW5oZXRlbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdPcHByZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aXNuaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXRlciBwZXIgc2lkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gZGF0YSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQgZnVubmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlbGcgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDuHIgc8O4a2V0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEeWJkZW5pdsOlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBpbm4vdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWFrcyBsZW5rZW5pdsOlIG7DpWRkIGZvciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnT3BwbHlzbmluZ2VyIG9tIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdOw6V2w6ZyZW5kZSBwcm9kdWtzam9uc3NldHRpbmdzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ07DpXbDpnJlbmRlIGhlbmRlbHNlc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Npc3QgZW5kcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Npc3QgZW5kcmV0IGF2JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnRGluZSBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtLXPDuGsnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUga2xhc3NlciB2aWwgYmxpIGltcG9ydGVydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUgcm9sbGVyIHZpbCBibGkgaW1wb3J0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1bDpnIgb3BwbWVya3NvbSBww6UgYXQgb2dzw6UgdGlsc3ZhcmVuZGUgZHluYW1pc2tlIGZlbHQgb2cgR2VuZXJhbENhdGFsb2cta2xhc3NlciBibGlyIG9wcHJldHRldCwgb2cgYXQgZGUgaWtrZSBmamVybmVzIGF1dG9tYXRpc2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnw5huc2tlciBkdSDDpSBmb3J0c2V0dGU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1RyZW5nZXIgZWtzZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmlzam9uZW4gZXIgaW5nZW4gZ3lsZGlnIFlBTUwtaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdPdmVyc2lrdDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENvbmZpZ0l0ZW1JRCBlciBvcHBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IHRyZW5nZXIgbWluc3QgZXR0IHZhbGd0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaWtrZSBza3JpdmV0aWxnYW5nIHRpbCBkZXR0ZSBrb25maWd1cmFzam9uc2VsZW1lbnRldDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0luZ2VuIGRlZmluaXNqb24gYmxlIGRlZmluZXJ0IGZvciBrbGFzc2VuICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXJlcmluZ3NlbGVtZW50ZXQgIiVzIiBibGUgaWtrZSBmdW5uZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnS3VubmUgaWtrZSBzbGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50LUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnSW5nZW4gdmVyc2pvbiBmdW5uZXQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBlbGxlciBDbGFzc0lEIGVyIG9wcGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdJbmdlbiB0aWxnYW5nIGVyIGdpdHQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpa2tlIHZpc2UgaGlzdG9yaWtrLCBpbmdlbiBDb25maWdJdGVtSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGhpc3RvcmlraywgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnl0dCBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ055IHZlcnNqb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ09wcGRhdGVyaW5nIGF2IGRpc3RyaWJ1c2pvbnNzdGF0dXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdIZW5kZWxzZXNzdGF0dXMgb3BwZGF0ZXJ0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGVua2UgdGlsICVzICh0eXBlPSVzKSBsYWd0IHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnS29ibGluZyB0aWwgJXMgKHR5cGU9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0tZGVmaW5pc2pvbiBvcHBkYXRlcnQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hdm4gb3BwZGF0ZXJ0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0dCAlcyBvcHBkYXRlcnQgZnJhICIlcyIgdGlsICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2pvbiAlcyBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENvbmZpZ0l0ZW1JRCBlbGxlciBWZXJzaW9uSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBrb25maWd1cmFzam9uc2VsZW1lbnRldCwgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBibGUgaWtrZSBmdW5uZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdza3JldmV0IHV0IGF2ICVzIHDDpSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJhbnNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnVWd5bGRpZyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENsYXNzSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdJbmdlbiB0aWxnYW5nc3JldHRpZ2hldGVyIGZvciBkZW5uZSBrbGFzc2VuIGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbmdlbiByZXN1bHRhdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O4a2VyZXN1bHRhdGVyIGZvciBrb25maWd1cmVyaW5nc2VsZW1lbnRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGlra2UgdmlzZSBlbGVtZW50ZXQsIGluZ2VuIHRpbGdhbmdzcmV0dGlnaGV0ZXIgZm9yIENvbmZpZ0l0ZW0gZXIgZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBibGUgaWtrZSBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0luZ2VuIHZlcnNqb25lciBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmFyc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaGVuZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCBmb3IgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmRlbiBmb3IgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSW5nZW4gdGlsbGF0ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgdWd5bGRpZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDuGtlcGFyYW1ldGVyZSB1Z3lsZGlnZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdWaXN0ZSBrb25maWd1cmFzam9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOw6V2w6ZyZW5kZSB0eXBlIGhlbmRlbHNlc3RpbHN0YW5kJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lbGxvbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVncmVuc25pbmdlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZlbGcgw6luIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIMOlIGJlZ3JlbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZWdyZW5zbmluZ2VyIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZlbGcgw6luIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIMOlIGJlZ3JlbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pc2sgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrICh2ZXJzam9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGxlbmtlaGVudmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPbSBkZW5uZSBrb2JsaW5nZW4gZ2plbGRlciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrZSB2ZXJzam9uZW4gYXYgcmVmZXJhbnNlb2JqZWt0ZXQuIEJlcmVnbmluZyBhdiBnamVsZGVuZGUgaGVuZGVsc2Vzc3RhdHVzIHV0ZsO4cmVzIGJhcmUgcMOlIGR5bmFtaXNrZSBrb2JsaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVmVsZyBhdHRyaWJ1dHRldCBzb20ga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHNrYWwgc8O4a2VzIGV0dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNpc3N0cnVrdHVyZW4gZXIgaWtrZSBneWxkaWcuIE9wcGdpIGVuIGhhc2ggbWVkIGRhdGEgaSBZQU1MLWZvcm1hdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdEZXQgZXIgbsO4ZHZlbmRpZyDDpSBzdGFydGUgWUFNTC1zdHJlbmdlbiBtZWQgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnS3VubmUgaWtrZSByZW5zZSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdJbmdlbiByZWxldmFudGUgZHluYW1pc2tlIGZlbHQgYmxlIGZ1bm5ldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0t1bm5lIGlra2Ugc2V0dGUgaW5uIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdTYXR0ZSBpbm4gMCByYWRlciBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYWtzLiBhbnRhbGwgYXYgZXR0IGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2pvbnNzdHJlbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRmVpbCB2ZWQgc3lua3JvbmlzZXJpbmcgYXYgZGVmaW5pc2pvbmVuZS4gVmVubmxpZ3N0IHNqZWtrIGxvZ2dlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdEdSBoYXIgSVRTTUNvbmZpZ0l0ZW0tZGVmaW5pc2pvbmVyIHNvbSBpa2tlIGVyIHN5bmtyb25pc2VydC4gVmVubmxpZ3N0IGRpc3RyaWJ1ZXIgZW5kcmluZ2VuZSBpIGRlIGR5bmFtaXNrZSBmZWx0ZW5lIGkgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdVdGfDpXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVmVkbGlrZWhvbGQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVXRmYXNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdFdmFsdWVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L0t2YWxpdGV0c2tvbnRyb2xsJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdPdmVyc2lrdCBvZyBiZWtyZWZ0ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRlcmUga2xhc3Nlci9yb2xsZXIgb2cgdGlsaMO4cmVuZGUgZmVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0RldCBvcHBzdG9kIGVuIGZlaWwgdW5kZXIga2xhc3NlaW1wb3J0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa2p1bHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFZpc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGxhdGVyIHV0dmlkZWRlIHPDuGtlYmV0aW5nZWxzZXIgaSBrb25maWd1cmFzam9uc29iamVrdHPDuGsgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuIE1lZCBkZW5uZSBmdW5rc2pvbmVuIGthbiBkdSBmLmVrcy4gc8O4a2UgZXR0ZXIgbmF2biBww6Uga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgbWVkIGRlbm5lIHR5cGVuIGJldGluZ2Vsc2VyIHNvbSAiKCpuw7hra2VsMSomJipuw7hra2VsMiopIiBlbGxlciAiKCpuw7hra2VsMSp8fCpuw7hra2VsMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVGlsbGF0ZXIgdXR2aWRlZGUgc8O4a2ViZXRpbmdlbHNlciBpIGtvbmZpZ3VyZXJpbmdzZWxlbWVudC1zw7hrIGkga3VuZGVncmVuc2Vzbml0dGV0LiBNZWQgZGVubmUgZnVua3Nqb25lbiBrYW4gZHUgZi5la3MuIHPDuGtlIGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudG5hdm4gbWVkIGRlbm5lIHR5cGVuIGJldGluZ2Vsc2VyIHNvbSAiKCpuw7hra2VsMSomJipuw7hra2VsMiopIiBlbGxlciAiKCpuw7hra2VsMSp8fCpuw7hra2VsMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVGlsZGVsdGUgS0ktZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0ktZXIgc29tIGVyIHRpbGRlbHQga3VuZGVzZWxza2FwZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSS1lciB0aWxvcmRuZXQga3VuZGVicnVrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItaW5uc3RpbGxpbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU2UgZXR0ZXIgZXQgdW5pa3QgbmF2biBiYXJlIGlubmVuZm9yIHNhbW1lIENvbmZpZ0l0ZW0ta2xhc3NlIChcJ2NsYXNzXCcpIGVsbGVyIGdsb2JhbHQgKFwnZ2xvYmFsXCcpLCBub2Ugc29tIGJldHlyIGF0IGFsbGUgZWtzaXN0ZXJlbmRlIENvbmZpZ0l0ZW1zIHRhcyBtZWQgaSBiZXRyYWt0bmluZ2VuIG7DpXIgbWFuIGxldGVyIGV0dGVyIGR1cGxpa2F0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgbmF2bmVza2plbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgdGFsbHNramVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVmVsZyBlbiBtb2R1bCBmb3Igw6UgaMOlbmRoZXZlIGV0IHZlcnNqb25zc3RyZW5nc2tqZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1ZlbGcgYXR0cmlidXR0ZXIgc29tIHNrYWwgdXRsw7hzZSBvcHByZXR0ZWxzZW4gYXYgZW4gbnkgdmVyc2pvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVmVsZyBrYXRlZ29yaWVyIHNvbSBza2FsIHRpbG9yZG5lcyBkZW5uZSBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9ubmVrb25maWd1cmFzam9uc2VsZW1lbnRmaWx0cmUgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2xvbm5lciBzb20ga2FuIGZpbHRyZXJlcyBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4gTWVyazogQmFyZSBhdHRyaWJ1dHRlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgb2cgZHluYW1pc2tlIGZlbHQgKER5bmFtaWNGaWVsZF9OYW1lWCkgZXIgdGlsbGF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdMZWdnIHRpbCBrb25maWd1cmVyaW5nc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnUmVkaWdlciBrb25maWd1cmVyaW5nc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJlciBoZW5kZWxzZXNtb2R1bCBmb3Iga29uZmlndXJlcmluZ3NlbGVtZW50ZXQgc29tIG11bGlnZ2rDuHIgbG9nZ2luZyB0aWwgaGlzdG9yaWtrIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdIZW5kZWxzZXNtb2R1bCBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgc29tIG9wcGRhdGVyZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHRpbCBkZXJlcyBnamVsZGVuZGUgZGVmaW5pc2pvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnRoaXN0b3Jpa2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHV0c2tyaWZ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnSXRlbS10cmV2aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBhdiBmw7hsZ2VuZGUga2xhc3NlciB2aWwgaWtrZSBibGkgbGFncmV0IHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcmVuLiBIdmlzIGR1IHZpbCBicnVrZSBkZXR0ZSBww6UgZWtzaXN0ZXJlbmRlIENJLWVyLCBtw6UgQ0ktbWlncmVyaW5nZW4ga2rDuHJlcyB2aWEga29uc29sbGVuIGV0dGVyIGF0IGR1IGhhciBlbmRyZXQgZGV0dGUgYWx0ZXJuYXRpdmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIGRpc3RyaWJ1c2pvbnNzdGF0dXMgdmlsIGlra2UgYmxpIGxhZ3JldCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIMOlIGJydWtlIGRldHRlIHDDpSBla3Npc3RlcmVuZGUgQ0ktZXIgbcOlIENJLW1pZ3JlcmluZ2VuIGtqw7hyZXMgdmlhIGtvbnNvbGxlbiBldHRlciBhdCBkdSBoYXIgZW5kcmV0IGRldHRlIGFsdGVybmF0aXZldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXJhc2pvbiBFbGVtZW50Z3JlbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFzam9uIEVsZW1lbnRiZWdyZW5zbmluZyBwZXIgc2lkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXNlIGZvciBrb25maWd1cmFzam9uc3N0eXJpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1cmFzam9uc2VsZW1lbnRldHMgYnVsa21vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmFzam9uc2VsZW1lbnQgZm9yIHPDuGsgaSBiYWNrZW5kLXJ1dGVyZW4gdGlsIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ09wcHJldHQgb2cgYWRtaW5pc3RyZXIgZGVmaW5pc2pvbmVuZSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnT3BwcmV0dGVyIGJpbGxldHRlciBmb3IgQ29uZmlnSXRlbXMgcMOlIGJlc3RlbXRlIHRpZHNwdW5rdGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLdW5kZXIga2FuIHNlIGhpc3Rvcmlza2UgQ0ktdmVyc2pvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZW5lIGhhciBtdWxpZ2hldCB0aWwgw6UgYnl0dGUgbWFudWVsdCBtZWxsb20gaGlzdG9yaXNrZSBDSS12ZXJzam9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRhIHNvbSBza2FsIGJydWtlcyBww6UgYXR0cmlidXR0ZXQgZm9yIHPDuGtlc2tqZXJtZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLiBFa3NlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYWwgYnJ1a2VzIHDDpSBhdHRyaWJ1dHRldCBmb3Igc8O4a2Vza2plcm1lbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5lciBoYW5kbGluZ2VyIGRlciBlbiBpbm5zdGlsbGluZ3NrbmFwcCBlciB0aWxnamVuZ2VsaWcgaSB3aWRnZXRlbiBmb3Iga29ibGVkZSBvYmpla3RlciAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBWw6ZyIG9wcG1lcmtzb20gcMOlIGF0IGRpc3NlIGhhbmRsaW5nZW5lIG3DpSBoYSByZWdpc3RyZXJ0IGbDuGxnZW5kZSBKUy0gb2cgQ1NTLWZpbGVyOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZXIgZXQgVGVtcGxhdGU6OlRvb2xraXQtc2tqZW1hIGZvciB2ZXJzam9uc3N0cmVuZ2VyLiBCcnVrZXMgYmFyZSBodmlzIFZlcnNqb25zc3RyZW5nbW9kdWwgZXIgc2F0dCB0aWwgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lciBldCBzZXR0IG1lZCBiZXRpbmdlbHNlciBmb3IgYXQgZW4ga3VuZGUgc2thbCBrdW5uZSBzZSBldCBrb25maWd1cmFzam9uc2VsZW1lbnQuIEJldGluZ2Vsc2VuZSBrYW4gZXZlbnR1ZWx0IGJlZ3JlbnNlcyB0aWwgYmVzdGVtdGUga3VuZGVncnVwcGVyLiBOYXZuIGVyIGRldCBlbmVzdGUgb2JsaWdhdG9yaXNrZSBhdHRyaWJ1dHRldC4gSHZpcyBpbmdlbiBhbmRyZSBhbHRlcm5hdGl2ZXIgZXIgYW5naXR0LCB2aWwgYWxsZSBrb25maWd1cmFzam9uc2VsZW1lbnRlciB2w6ZyZSBzeW5saWdlIHVuZGVyIGRlbiBha3R1ZWxsZSBrYXRlZ29yaWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBzbGV0dGUgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciB2ZWQgaGplbHAgYXYgZGV0IGdlbmVyaXNrZSBncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBoZW50ZSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHZlZCBoamVscCBhdiBkZXQgZ2VuZXJpc2tlIGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIHPDuGtlIGkgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciB2ZWQgaGplbHAgYXYgZGV0IGdlbmVyaXNrZSBncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBhbmdpIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgdmVkIGhqZWxwIGF2IGRldCBnZW5lcmlza2UgZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcmVyIGVuIG92ZXJzaWt0c21vZHVsIHNvbSB2aXNlciBkZW4gbGlsbGUgdmlzbmluZ2VuIGF2IGVuIGxpc3RlIG1lZCBrb25maWd1cmFzam9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnQW5naXIgb20gbGVua2V0eXBlZXRpa2V0dGVuZSBza2FsIHZpc2VzIGkgbm9kZWZvcmJpbmRlbHNlbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgcmVndWzDpnJlIHV0dHJ5a2sgaW5kaXZpZHVlbHQgZm9yIGh2ZXIgQ29uZmlnSXRlbS1rbGFzc2UgZm9yIMOlIGtvbnRyb2xsZXJlIENvbmZpZ0l0ZW0tbmF2bmV0IG9nIHZpc2UgdGlsc3ZhcmVuZGUgZmVpbG1lbGRpbmdlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgdGlsZ2plbmdlbGlnZSBrb2xvbm5lciBtZWQgQ0ktZXIgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgYXZoZW5naWcgYXYgQ0kta2xhc3Nlbi4gSHZlciBvcHBmw7hyaW5nIG3DpSBiZXN0w6UgYXYgZXQga2xhc3NlbmF2biBvZyBlbiBtYXRyaXNlIG1lZCB0aWxnamVuZ2VsaWdlIGZlbHQgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2VuLiBEeW5hbWlza2UgZmVsdG9wcGbDuHJpbmdlciBtw6UgZsO4bGdlIHNramVtYWV0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmQga29uZmlnLWVsZW1lbnRhdHRyaWJ1dHQgZm9yIHNvcnRlcmluZyBhdiBrb25maWctZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWctZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkIGtvbmZpZ3VyYXNqb25zZWxlbWVudGF0dHJpYnV0dCBmb3Igc29ydGVyaW5nIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmQga29uZmlnLWVsZW1lbnRhdHRyaWJ1dHQgZm9yIHNvcnRlcmluZyBhdiBrb25maWctZWxlbWVudGV0IGkgc8O4a2VyZXN1bHRhdGV0IGZvciBkZW5uZSBvcGVyYXNqb25lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHJla2tlZsO4bGdlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBzw7hrZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0LiBPcHA6IGVsZHN0IHDDpSB0b3BwZW4uIE5lZDogbnllc3RlIMO4dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRyZWtrZWbDuGxnZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4gT3BwOiBlbGRzdCBww6UgdG9wcGVuLiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJka29sb25uZW5lIHNvbSB2aXNlcyBmb3IgQ0ktZXIgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIsIGF2aGVuZ2lnIGF2IENJLWtsYXNzZW4uIEh2ZXIgb3BwZsO4cmluZyBtw6UgYmVzdMOlIGF2IGV0IGtsYXNzZW5hdm4gb2cgZW4gbWF0cmlzZSBtZWQgdGlsZ2plbmdlbGlnZSBmZWx0IGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3Nlbi4gRHluYW1pc2tlIGZlbHRvcHBmw7hyaW5nZXIgbcOlIGbDuGxnZSBza2plbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmVyZXIgc3RhbmRhcmQgcmVsYXNqb25zZHliZGUgc29tIHNrYWwgdmlzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGF0dHJpYnV0dGV0IGZvciBzw7hrZWF0dHJpYnV0dGV0IHNvbSB2aXNlcyBmb3Igc2tqZXJtYmlsZGV0IGZvciBrb25maWd1cmFzam9uc29iamVrdHPDuGsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRhdHRyaWJ1dHRldCBzb20gdmlzZXMgZm9yIHPDuGtlYXR0cmlidXR0ZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IHDDpSBzw7hrZXNramVybWVuLiBFa3NlbXBlbDogIktleSIgbcOlIGhhIG5hdm5ldCBww6UgZGV0IGR5bmFtaXNrZSBmZWx0ZXQsIGkgZGV0dGUgdGlsZmVsbGV0ICJYIiwgIkNvbnRlbnQiIG3DpSBoYSB2ZXJkaWVuIHRpbCBkZXQgZHluYW1pc2tlIGZlbHRldCwgYXZoZW5naWcgYXYgZGVuIGR5bmFtaXNrZSBmZWx0dHlwZW4sIFRleHQ6ICJlbiB0ZWtzdCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIG9nIGVsbGVyIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHVuZGVyb2JqZWt0ZXQgZm9yIGtsYXNzZW4gXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHRpbGdqZW5nZWxpZ2Uga29sb25uZXIgbWVkIENJLWVyIGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGF2aGVuZ2lnIGF2IENJLWtsYXNzZW4uIEh2ZXIgb3BwZsO4cmluZyBtw6UgYmVzdMOlIGF2IGV0IGtsYXNzZW5hdm4gb2cgZW4gbWF0cmlzZSBtZWQgdGlsZ2plbmdlbGlnZSBmZWx0IGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3Nlbi4gRHluYW1pc2tlIGZlbHRvcHBmw7hyaW5nZXIgbcOlIGbDuGxnZSBza2plbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaMO4eWRlbiBmb3IgcmVkaWdlcmluZ3Nrb21wb25lbnRlbiBmb3IgcmlrIHRla3N0IGZvciBkZW5uZSBza2plcm1lbi4gU2tyaXYgaW5uIHRhbGwgKHBpa3NsZXIpIGVsbGVyIHByb3NlbnR2ZXJkaSAocmVsYXRpdikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBhbnRhbGwgcmFkZXIgZm9yIENJLWRlZmluaXNqb25zcmVkaWdlcmluZ3Nwcm9ncmFtbWV0IGkgYWRtaW5pc3RyYXRvcmdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciByZWtrZWbDuGxnZW4gYXYgaGVuZGVsc2VzdGlsc3RhbmRlciBmcmEgaMO4eSAoZi5la3MuIGtyaXRpc2spIHRpbCBsYXYgKGYuZWtzLiBmdW5rc2pvbmVsbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHJlbGV2YW50ZSBkaXN0cmlidXNqb25zc3RhdHVzZW5lIGRlciB0aWxrbnl0dGVkZSB0aWNrZXRzIGthbiBww6V2aXJrZSBzdGF0dXNlbiB0aWwgZW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2Uga29sb25uZXIgc29tIHNrYWwgdmlzZXMgZm9yIENJLWVyIGkgZGVuIGtvbXBsZWtzZSB2aXNuaW5nZW4gYXYga29ibGluZ3N0YWJlbGxlbiBmb3IgYWxsZSBDSS1rbGFzc2VyLiBIdmlzIGRldCBpa2tlIGZpbm5lcyBub2VuIG9wcGbDuHJpbmcsIHZpc2VzIHN0YW5kYXJka29sb25uZW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHZpc3RlIGtvbG9ubmVuZSBtZWQgQ0ktZXIgaSBkZW4ga29tcGxla3NlIHZpc25pbmdlbiBhdiBrb2JsaW5nc3RhYmVsbGVuLCBhdmhlbmdpZyBhdiBDSS1rbGFzc2VuLiBIdmVyIG9wcGbDuHJpbmcgbcOlIGlubmxlZGVzIG1lZCBrbGFzc2VuYXZuZXQgb2cgdG8ga29sb24gKGYuZWtzLiBDb21wdXRlcjo6KS4gRGV0IGZpbm5lcyBub2VuIGbDpSBDSS1hdHRyaWJ1dHRlciBzb20gZXIgZmVsbGVzIGZvciBhbGxlIENJLWVyIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gRm9yIMOlIHZpc2UgaW5kaXZpZHVlbGxlIENJLWF0dHJpYnV0dGVyIHNvbSBkZWZpbmVydCBpIENJLWRlZmluaXNqb25lbiwgbcOlIGbDuGxnZW5kZSBza2plbWEgYnJ1a2VzIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBIdmlzIGRldCBpa2tlIGZpbm5lcyBub2VuIG9wcGbDuHJpbmcgZm9yIGVuIENJLWtsYXNzZSwgdmlzZXMgc3RhbmRhcmRrb2xvbm5lbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZSBlbGVtZW50ZXIgc29tIGVyIHRpbGdqZW5nZWxpZ2UgZm9yICJIYW5kbGluZyIgcMOlIHRyZWRqZSBuaXbDpSBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZSBlbGVtZW50ZXIgc29tIGVyIHRpbGdqZW5nZWxpZ2UgcMOlIGbDuHJzdGUgbml2w6UgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlIGVsZW1lbnRlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBww6UgYW5kcmUgbml2w6UgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlbiB0eXBlIGtvYmxpbmcgKG5hdm5naXR0IGZyYSB0aWNrZXQtcGVyc3Bla3RpdmV0KSBzb20ga2FuIHDDpXZpcmtlIHN0YXR1c2VuIHRpbCBldCBrb2JsZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZW4gdHlwZSBiaWxsZXR0IHNvbSBrYW4gcMOldmlya2Ugc3RhdHVzZW4gdGlsIGVuIGtvYmxldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdPcHBkYXRlcmluZyBhdiBkZWZpbmlzam9uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1NsZXR0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0ZhcmdlIGZvciBwcm9kdWtzam9uc3NldHRpbmdzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpc8Opcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIGZvciBkeW5hbWlza2UgZmVsdGhlbmRlbHNlciBzb20gbWFya2VyZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZGVmaW5pc2pvbmVyIHNvbSB1c3lua3JvbmlzZXJ0ZSBodmlzIGRlIGR5bmFtaXNrZSBmZWx0ZW5lIGVuZHJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0IHNvbSB2aXNlcyBpIHNramVybWJpbGRldCBmb3IgSVRTTS10aWxsZWdnc2ZlbHQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0IHNvbSB2aXNlcyBpIHNramVybWJpbGRldCBmb3Igb3ZlcnNpa3Qgb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2tlIGZlbHQgc29tIHZpc2VzIGkgc2tqZXJtYmlsZGV0IGZvciBzw7hrIGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmVyZXIgZnVua3Nqb25lbiBmb3IgbWFzc2VoYW5kbGluZ2VyIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciwgc2xpayBhdCBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZWlkZSBtZWQgbWVyIGVubiBldHQga29uZmlndXJhc2pvbnNlbGVtZW50IG9tIGdhbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJlciBmdW5rc2pvbmVuIGZvciBtYXNzZWhhbmRsaW5nIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGJhcmUgZm9yIGRlIG9wcGbDuHJ0ZSBncnVwcGVuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnSGVuZGVsc2VzbW9kdWwgZm9yIMOlIGFuZ2kgY29uZmlnaXRlbS1zdGF0dXMgcMOlIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZlbHQgaSBrb25maWd1cmFzam9uc2VsZW1lbnRpbmRla3Nlbiwgc29tIGJydWtlcyB0aWwgZnVsbHRla3N0c8O4ay4gRmVsdGVuZSBsYWdyZXMgb2dzw6UsIG1lbiBlciBpa2tlIG9ibGlnYXRvcmlza2UgZm9yIGRlbiBnZW5lcmVsbGUgZnVua3Nqb25hbGl0ZXRlbi4gSW5rbHVkZXJpbmcgYXYgdmVkbGVnZyBrYW4gZGVha3RpdmVyZXMgdmVkIMOlIHNldHRlIG9wcGbDuHJpbmdlbiB0aWwgMCBlbGxlciBzbGV0dGUgZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRmVsdCBzb20gZXIgbGFncmV0IGkga29uZmlndXJhc2pvbnNlbGVtZW50aW5kZWtzZW4sIG9nIHNvbSBicnVrZXMgdGlsIGFuZHJlIHRpbmcgZW5uIGZ1bGx0ZWtzdHPDuGsuIEFsbGUgZmVsdGVuZSBlciBvYmxpZ2F0b3Jpc2tlIGZvciDDpSBmw6UgZnVsbCBmdW5rc2pvbmFsaXRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bGVuIGZvciBDb25maWdJdGVtRmV0Y2gtaW52b2tlcmluZ3NsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bGVuIGZvciBDb25maWdJdGVtRmV0Y2gtaW52b2tlcmluZ3NsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGF2IEdlbmVyaWNJbnRlcmZhY2UtbW9kdWxlbiBmb3IgQ29uZmlnSXRlbUZldGNoLWludm9rZXJpbmdzbGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJzaWt0IG92ZXIgSVRTTSBrb25maWd1cmFzam9uc2VuaGV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJlciBkaXN0cmlidXNqb25zc3RhdHVzIGkgc8O4a2V0IGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkga3VuZGVncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmVyIGhlbmRlbHNlc3RpbHN0YW5kZXIgaSBrb25maWd1cmFzam9uc3PDuGtldCBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltYWx0IGFudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBpIHJlc3VsdGF0ZXQgYXYgZGVubmUgb3BlcmFzam9uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgZm9yIMOlIHNqZWtrZSBodmlsa2VuIGdydXBwZSBzb20gZXIgYW5zdmFybGlnIGZvciBlbiBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZm9yIMOlIHNqZWtrZSBodmlsa2VuIGdydXBwZSBzb20gZXIgYW5zdmFybGlnIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgZm9yIMOlIGdlbmVyZXJlIHN0YXRpc3Rpa2sgb3ZlciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hdm4gTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lcm1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGF2IGV0IHPDuGtlcmVzdWx0YXQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGF2IGV0IHPDuGtlcmVzdWx0YXQgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGVyIGRldCBza2FsIHPDuGtlcyBldHRlciwgaHZvciBtYW5nZSBvcHBmw7hyaW5nZXIgb2cgaHZpbGtlIGF0dHJpYnV0dGVyIHNvbSBza2FsIHZpc2VzLiBDb25maWdJdGVtLWF0dHJpYnV0dGVyIG3DpSBsYWdyZXMgZWtzcGxpc2l0dCB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnT3ZlcnNpa3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBrYXRlZ29yaWVuZSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3Iga29sb25uZWZpbHRyZW5lIGkgb3ZlcnNpa3RlbiBvdmVyIHNtw6Uga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuIE1lcms6IEh2aXMgZHUgc2V0dGVyICJBY3RpdmUiIHRpbCAwLCB2aWwgZGV0IGJhcmUgaGluZHJlIGFnZW50ZXIgaSDDpSByZWRpZ2VyZSBpbm5zdGlsbGluZ2VuZSBmb3IgZGVubmUgZ3J1cHBlbiBpIHNpbmUgcGVyc29ubGlnZSBwcmVmZXJhbnNlciwgbWVuIGRldCB2aWwgZm9ydHNhdHQgdsOmcmUgbXVsaWcgZm9yIGFkbWluaXN0cmF0b3JlciDDpSByZWRpZ2VyZSBpbm5zdGlsbGluZ2VuZSBww6UgdmVnbmUgYXYgZW4gYW5uZW4gYnJ1a2VyLiBCcnVrICJQcmVmZXJlbmNlR3JvdXAiIHRpbCDDpSBrb250cm9sbGVyZSBpIGh2aWxrZXQgb21yw6VkZSBkaXNzZSBpbm5zdGlsbGluZ2VuZSBza2FsIHZpc2VzIGkgYnJ1a2VyZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBmYXJnZW5lIGZvciBkaXN0cmlidXNqb25zc3RhdHVzZW5lIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBkaXN0cmlidXNqb25zc3RhdHVzZW5lIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgdGlsZ2FuZ3NncnVwcGUtZWtzZW1wZWwgaSBhdHRyaWJ1dHRlbmUgZm9yIGdlbmVyZWxsIGthdGFsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgbmF2bmVtb2R1bGVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIG51bW1lcm1vZHVsZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZXIgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBzaWRlbmUgKGRlciBrb25maWd1cmFzam9uc2VsZW1lbnRlbmUgdmlzZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciB2ZXJzam9uc3N0cmVuZ21vZHVsZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZXIgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHZlcnNqb25zc3RyZW5nbWFsdmVya3TDuHltb2R1bGVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgdmVyc2pvbnN1dGzDuHNlcmVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdUaWxsYXRlbHNlc2dydXBwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGV0cyB2ZWRsZWdnc2hhbmRsaW5nIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciBzw7hrIGV0dGVyIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHPDuGtlc2tqZXJtZW4gZm9yIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgdHJldmlzbmluZyBhdiBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugem9vbXNramVybWJpbGRldCBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IExlZ2cgdGlsIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IFJlZGlnZXIgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIGhpc3RvcmlrayBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIHV0c2tyaWZ0IGF2IElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdOw7hkdmVuZGlnZSByZXR0aWdoZXRlciBmb3Igw6Ugc2xldHRlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1PDuGsgZXR0ZXIga29uZmlndXJhc2pvbnNlbmhldGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQW5naSBoZW5kZWxzZXNzdGF0dXMgZm9yIGVuIENJIGF1dG9tYXRpc2sgbsOlciBlbiBUaWNrZXQga29ibGVzIHRpbCBlbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdpciBkaXN0cmlidXNqb25zc3RhdHVzIGkgc2tqZXJtYmlsZGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5naXIgaGVuZGVsc2Vzc3RhdHVzIGkgc2tqZXJtYmlsZGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRldCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBzb20gZ2rDuHIgZGV0IG11bGlnIMOlIGtvYmxlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCB0aWwgZXQgYW5uZXQgb2JqZWt0IGkgem9vbXZpc25pbmdlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIGbDpSB0aWxnYW5nIHRpbCBoaXN0b3Jpa2tlbiBmb3IgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZsOlIHRpbGdhbmcgdGlsIGhpc3Rvcmlra2VuIHRpbCBldCBrb25maWd1cmFzam9uc2VsZW1lbnQgaSB6b29tdmlzbmluZ2VuIGF2IGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6Ugc2xldHRlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIHZpc2Uga29uZmlndXJhc2pvbnNlbGVtZW50bGVua2VuZSBzb20gZW4gdHJldmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZHVwbGlzZXJlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4ga29ibGluZyBpIG1lbnllbiBmb3Igw6UgZHVwbGlzZXJlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIHJlZGlnZXJlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIGfDpSB0aWxiYWtlIGkgem9vbXZpc25pbmdlbiBhdiBrb25maWd1cmFzam9uc2VsZW1lbnRldCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6Ugc2tyaXZlIHV0IGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSB6b29tZSBpbm4gcMOlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIga29uZmlndXJlcmluZ3NlbGVtZW50ZXRzIGhpc3RvcmlrayAoaSBvbXZlbmR0IHJla2tlZsO4bGdlKSBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnU3RhbmRhcmRrYXRlZ29yaWVuIHNvbSB2aXNlcyBodmlzIGluZ2VuIGVyIHZhbGd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvcmVuIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQsIGYuZWtzLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gU3RhbmRhcmRpbm5zdGlsbGluZ2VuIGVyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVXRsw7hzZXIgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmVuIGF1dG9tYXRpc2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNqb25zc3RyZW5ndXR0cnlrayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzam9uc3N0cmVuZ21vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNqb25zdXRsw7hzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnT20gZmVsdCBza2FsIGZ5bGxlcyB1dCBhdXRvbWF0aXNrICgxKSwgb2cgaSBzw6UgZmFsbCBvZ3PDpSBza2p1bGVzIGZvciBzYWtzZm9ybWxlbmUgKDIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdPbSBrasO4cmluZ2VuIGF2IENvbmZpZ0l0ZW1BQ0wga2FuIHVubmfDpXMgdmVkIMOlIHNqZWtrZSBidWZyZWRlIGZlbHRhdmhlbmdpZ2hldGVyLiBEZXR0ZSBrYW4gZm9yYmVkcmUgaW5ubGFzdGluZ3N0aWRlbiBmb3IgZm9ybXVsYXJlciwgbWVuIG3DpSBkZWFrdGl2ZXJlcyBodmlzIEFDTE1vZHVsZXMgc2thbCBicnVrZXMgZm9yIElUU01Db25maWdJdGVtLSBvZyBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnSHZpbGtlbiBnZW5lcmVsbCBpbmZvcm1hc2pvbiBzb20gdmlzZXMgaSB0b3BwdGVrc3Rlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXRvbW1lcnMgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS10b21tZXJzIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdG9tbWVyICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtdG9tbWVycyBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHRvbW1lciAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogMTA2LDY4IGNtICg0MiB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSB0b21tZXIgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDEzMywzNSBjbSAoNTIsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSB0b21tZXIgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDE0Niw2OCBjbSAoNTcsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdG9tbWVyICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCB0b21tZXIgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHRvbW1lciAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0b21tZXIgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgdG9tbWVyICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDE3LDc4IGNtICg3IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMzUsNTYgY20gKDE0IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnUmVnbnNrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc3NldGlsZGVsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBhcHBhcmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQmF0dGVyaWthcGFzaXRldCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0JhdHRlcml0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnlnbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzc2dyZW5zZXNuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9zZXNzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGV0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhc2l0ZXQgcGVyIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0bnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS29ydGxlc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0tvcnR0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnRzZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50cHJvZ3JhbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS3VuZGVrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLbG9ra2VmcmVrdmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kZXNpZ25lcmluZ3NzZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmFuc2V0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsZW50YXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IGRpc3RyaWJ1dMO4cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lcmjDpW5kdGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnS29udHJha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0tvbnRyYWt0c3R5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdLb250cmFrdHNwZXJpb2RlIGZyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdLb250cmFrdHNwZXJpb2RlIGZyZW0gdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1Ryw6VkbMO4cyB0ZWxlZm9uIChERUNULXRlbGVmb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0tvc3RuYWRzZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdBbnRhbGwgbGlzZW5zZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ09wcHJldHRlbHNlc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1RpbHBhc3NldCBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGYWt0dXJhZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0byBmb3IgYmVzdGlsbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0byBmb3IgZ2FyYW50aXN0aWxsZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRvIGZvciB1dGdpdmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0YXNqb27DpnInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50c2lnbmVyaW5nc3NlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RzZXJ0aWZpa2F0ZXIgKFMvTUlNRS1zZXJ0aWZpa2F0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0FyYmVpZHNhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdTbHV0dCBJUC1hZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnU2x1dHQgcMOlIHN0w7h0dGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVXRsw7hwc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Vrc3Rlcm4gaGFyZGRpc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdCcmFubm11cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zhc3R2YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRW5lcmdpbGFncmluZyBtZWQgc3ZpbmdoanVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybWZha3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnR3JhdGlzIHByb2dyYW12YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0dlbmVyZWxsIGluZm9ybWFzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ01hc2tpbnZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNYXNraW52YXJlbW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ01hc2tpbnZhcmUgVmVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSG9kZXRlbGVmb25lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZXRzLSBvZyB0aWxnYW5nc3N0eXJpbmcgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFybnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdGYWt0dXJhbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELXNramVybSAoZmx5dGVuZGUga3J5c3RhbGxza2plcm0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtc2tqZXJtIChseXNkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmFzdHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnQsOmcmJhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0JyZWRkZWdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYWcgMTogRnlzaXNrIGxhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdMYWcgMjogRGF0YWxpbmstbGFnZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhZyAzOiBOZXR0dmVya3NsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGFnIDM6IE5ldHR2ZXJrc2xhZyAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhZyA0OiBUcmFuc3BvcnRsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xhZyA1OiBTZXNqb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhZyA2OiBQcmVzZW50YXNqb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFnIDc6IEFwcGxpa2Fzam9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdMZWllYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGlzZW5zYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXNlbnNuw7hra2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpc2VucyB0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaXNlbnNwZXJpb2RlIGZyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpc2Vuc3BlcmlvZGUgZnJlbSB0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGl1bS1qZXJuZm9zZmF0YmF0dGVyaSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGl1bS1pb24tYmF0dGVyaSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0zDpW5lYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdMaWdnZXIgaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMZW5nZGVncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnUHJvZHVzZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW1hbCBiZWxhc3RuaW5nc2thcGFzaXRldCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnSHVrb21tZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ01pbm5ldHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsbGJlc2tyaXZlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1NramVybW9wcGzDuHNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1NramVybXN0w7hycmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHR2ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ05ldHR2ZXJrc2luZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHR2ZXJrc2luZm9ybWFzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR0dmVya3NsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWwta2FkbWl1bS1iYXR0ZXJpIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1tZXRhbGxoeWRyaWQtYmF0dGVyaSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQXZ0YWxlIG9tIHRhdXNoZXRzcGxpa3QgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RhdGJvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FudGFsbCBwcm9zZXNzb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdBbnRhbGwgUkFNLW1vZHVsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW50YWxsIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtc2tqZXJtIChvcmdhbmlzayBseXNkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnRHJpZnRza29zdG5hZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ0Jlc3RpbGxpbmdzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQW5uZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1V0Z2FuZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTi1LT0RFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNrYXBzYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbnR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXNpc2tlIGtqZXJuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHLDuG1mb3JzeW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdLasO4cHQgcMOlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdTdGF0aXZkeWJkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2stZW5oZXRlciAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1JvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUy1zZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYWxnc2tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGl0dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdGb3JzZWdsZXQgYmx5c3lyZWJhdHRlcmkgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXJwcm9ncmFtdmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2VhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlIFRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXBlIHN0aWtrb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnUHJvZ3JhbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdIw7h5dHRhbGVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnTGFncmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ0xhZ3JpbmdzcGFydGlzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRGF0dGVyc2Vsc2thcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FtbWVuZHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1R5bm4ga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdUcsOlZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVG9yZGVuYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWx0IGdyYWZpa2tvcnQtUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbHQgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0JlcsO4cmluZ3Nza2plcm0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUw6Vybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLWhvZGVzZXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Via2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/nl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGdlbWVuZSBiZWRyaWpmc2dlZ2V2ZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdJbnN0ZWxsaW5nZW4gdm9vciBpbmtvbWVuZGUgYWFudnJhYWdnZWdldmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0luc3RlbGxpbmdlbiB2b29yIHVpdGdhYW5kZSByZXNwb25zZ2VnZXZlbnMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWd1cmF0aWUtaXRlbSBiZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdXaWp6aWcgZGVmaW5pdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdSb2xkZWZpbml0aWUgd2lqemlnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQga2xhc3NlbmJ1bmRlbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdIaWVyIGt1bnQgdSBSZWFkeTJJbXBvcnQga2xhc3NlYnVuZGVscyBpbXBvcnRlcmVuIGRpZSBvbnplIG1lZXN0IGdlYnJ1aWtlbGlqa2UgY29uZmlndXJhdGllLWl0ZW1zIHRvbmVuLiBIb3VkIGVyIHJla2VuaW5nIG1lZSBkYXQgc29tbWlnZSBhYW52dWxsZW5kZSBjb25maWd1cmF0aWVzIG5vZGlnIGt1bm5lbiB6aWpuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdCZXN0YWFuZGUgZW50aXRlaXRlbiBiaWp3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdCBrbGFzc2VidW5kZWxzIGltcG9ydGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWd1cmF0aWUgSXRlbSBLbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0ZXIgb3Aga2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3RlZXIgZWVuIGtsYXNzZSB1aXQgZGUgbGlqc3Qgb20gZWVuIG5pZXV3IGNvbmZpZ3VyYXRpZS1pdGVtIGFhbiB0ZSBtYWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNLWNvbmZpZ0l0ZW0gYnVsa2FjdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaW5rIG5hYXIgZWVuIGFuZGVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnT25nZWxkaWcgQ29uZmlndXJhdGllIEl0ZW0gbnVtbWVyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdIZXQgbnVtbWVyIHZhbiBlZW4gYW5kZXIgY29uZmlndXJhdGllLWl0ZW0gb20gbWVlIHRlIGxpbmtlbi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdXaWx0IHUgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtIGVjaHQgdmVyd2lqZGVyZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlIG5hYW0gdmFuIGRpdCBjb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFhbSBpcyBhbCBpbiBnZWJydWlrIGRvb3IgZGUgQ29uZmlnSXRlbXMgbWV0IGRlIHZvbGdlbmRlIE51bW1lcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpZW51bW1lciB2YW4gZGl0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2llbnVtbWVyIGlzIGFsIGluIGdlYnJ1aWsgZG9vciBkZSBDb25maWdJdGVtcyBtZXQgaGV0IHZvbGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50c3RhdHVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdHZXNjaGllZGVuaXMgdmFuIENvbmZpZ3VyYXRpZS1pdGVtOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJbmhvdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0FhbmdlbWFha3Qgb3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnRGV0YWlsb3ZlcnppY2h0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0FhbnRhbCBjb25maWd1cmF0aWUtaXRlbXMgcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnR2VlbiBjb25maWcgaXRlbSBnZWdldmVucyBnZXZvbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY3RlZXIgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnWm9la2VuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgdm9vciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRGllcHRlIE5pdmVhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ0luLS91aXR6b29tZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWF4LiBrb3BwZWxpbmdzbml2ZWF1IGJlcmVpa3Qgdm9vciBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGluZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQWN0dWVsZSBzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FjdHVlbGUgaW5jaWRlbnRzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnTGFhc3RlIHdpanppZ2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYWFzdGUgd2lqemlnaW5nIGRvb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdVdyBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIHpvZWtlbic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0RlIHZvbGdlbmRlIGtsYXNzZW4gd29yZGVuIGdlw69tcG9ydGVlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGUgdm9sZ2VuZGUgcm9sbGVuIHdvcmRlbiBnZcOvbXBvcnRlZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ01lcmsgb3AgZGF0IG9vayBvdmVyZWVua29tc3RpZ2UgZHluYW1pc2NoZSB2ZWxkZW4gZW4gR2VuZXJhbENhdGFsb2cga2xhc3NlbiB3b3JkZW4gYWFuZ2VtYWFrdCBlbiBkYXQgZGV6ZSBuaWV0IGF1dG9tYXRpc2NoIHdvcmRlbiB2ZXJ3aWpkZXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1dpbCBqZSBkb29yZ2Fhbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVm9vcmJlZWxka2xhc3NlbiBub2RpZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pdGllIGlzIGdlZW4gZ2VsZGlnZSBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnT3ZlcnppY2h0OiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnRXIgaXMgZ2VlbiBDb25maWdJdGVtSUQgb3BnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0plIGhlYnQgdGVuIG1pbnN0ZSDDqcOpbiBnZXNlbGVjdGVlcmQgY29uZmlndXJhdGllLWl0ZW0gbm9kaWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnSmUgaGVidCBnZWVuIHNjaHJpamZ0b2VnYW5nIHRvdCBkaXQgY29uZmlndXJhdGllLWl0ZW06ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdFciBpcyBnZWVuIGRlZmluaXRpZSBnZWRlZmluaWVlcmQgdm9vciBrbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWcgaXRlbSAiJXMiIG5pZXQgZ2V2b25kZW4gaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnRGVmaW5pZWVydCBoZXQgYWFudGFsIHJpamVuIHZvb3IgZGUgQ0ktZGVmaW5pdGllLWVkaXRvciBpbiBkZSBiZWhlZXJpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdHZWVuIHZlcnNpZSBnZXZvbmRlbiB2b29yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnRXIgaXMgZ2VlbiBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9mIENsYXNzSUQgb3BnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnRXIgd29yZHQgZ2VlbiB0b2VnYW5nIGdlZ2V2ZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBnZXNjaGllZGVuaXMgbmlldCB3ZWVyZ2V2ZW4sIGVyIGlzIGdlZW4gQ29uZmlnSXRlbUlEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gZ2VzY2hpZWRlbmlzIG5pZXQgd2VlcmdldmVuLCBnZWVuIHRvZWdhbmdzcmVjaHRlbiBnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmlldXcgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOaWV1d2UgdmVyc2llIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF0aW9uc3RhdHVzIGJpamdld2Vya3QgKG5pZXV3PSVzLCBvdWQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50IHN0YXR1cyBiaWpnZXdlcmt0IChuaWV1dz0lcywgb3VkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSB2ZXJ3aWpkZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGluayBuYWFyICVzICh0eXBlPSVzKSB0b2VnZXZvZWdkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIG5hYXIgJXMgKHR5cGU9JXMpIHZlcndpamRlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0gZGVmaW5pdGllIGJpamdld2Vya3QgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hYW0gYmlqZ2V3ZXJrdCAobmlldXc9JXMsIG91ZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dXQgJXMgYmlqZ2V3ZXJrdCB2YW4gIiVzIiBuYWFyICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2llICVzIHZlcndpamRlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnRXIgaXMgZ2VlbiBDb25maWdJdGVtSUQgb2YgVmVyc2lvbklEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGNvbmZpZyBpdGVtIG5pZXQgdG9uZW4sIGdlZW4gdG9lZ2FuZ3NyZWNodGVuIGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5pZXQgZ2V2b25kZW4gaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdhZmdlZHJ1a3QgZG9vciAlcyBvcCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbnRpZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ09uZ2VsZGlnZSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ2xhc3NJRCBnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0dlZW4gdG9lZ2FuZ3NyZWNodGVuIHZvb3IgZGV6ZSBrbGFzc2UgZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0dlZW4gcmVzdWx0YWF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0NvbmZpZyBpdGVtIHpvZWtyZXN1bHRhdGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdLYW4gaXRlbSBuaWV0IHdlZXJnZXZlbiwgZXIgemlqbiBnZWVuIHRvZWdhbmdzcmVjaHRlbiB2b29yIENvbmZpZ0l0ZW0gZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuaWV0IGdldm9uZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdHZWVuIHZlcnNpZXMgZ2V2b25kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uZWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd3YWFyc2NodXdpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGUgc3RhdHVzIHZhbiBkaXQgY29uZmlndXJhdGllLWl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZSBpbmNpZGVudHN0YXR1cyB2YW4gZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnR2VlbiB0b2VzdGVtbWluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgb25nZWxkaWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdab2VrcGFyYW1ldGVycyBvbmdlbGRpZyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdXZWVyZ2VnZXZlbiBjb25maWd1cmF0aWUtaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBpbnpldHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGh1aWRpZyBpbmNpZGVudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdUdXNzZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlcGVya2luZ2VuIHZvb3IgaGV0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RlZXIgZWVuIG9mIG1lZXIga2xhc3NlbiBvbSBzZWxlY3RlZXJiYXJlIGNvbmZpZ3VyYXRpZS1pdGVtcyB0ZSBiZXBlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVwZXJraW5nZW4gdm9vciBoZXQgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RlZXIgZWVuIG9mIG1lZXIga2xhc3NlbiBvbSBzZWxlY3RlZXJiYXJlIGNvbmZpZ3VyYXRpZS1pdGVtcyB0ZSBiZXBlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaXNjaCAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpc2NoICh2ZXJzaWUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cGUgdmVyd2lqemluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPZiBkZXplIGxpbmsgdmFuIHRvZXBhc3NpbmcgaXMgb3AgaGV0IENvbmZpZ0l0ZW0gb2YgZGUgc3RhdGlzY2hlIHZlcnNpZSB2YW4gaGV0IG9iamVjdCB3YWFybmFhciB2ZXJ3ZXplbiB3b3JkdC4gRGUgYmVyZWtlbmluZyB2YW4gZGUgaHVpZGlnZSBpbmNpZGVudHRvZXN0YW5kIHdvcmR0IGFsbGVlbiB1aXRnZXZvZXJkIG9wIGR5bmFtaXNjaGUgbGlua3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWN0ZWVyIGhldCBhdHRyaWJ1dXQgd2Fhcm9wIGRlIGNvbmZpZ3VyYXRpZS1pdGVtcyBtb2V0ZW4gd29yZGVuIGRvb3J6b2NodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzaXNzdHJ1Y3R1dXIgaXMgb25nZWxkaWcuIEdlZWYgZWVuIGhhc2ggbWV0IGdlZ2V2ZW5zIGluIFlBTUwtaW5kZWxpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRGUgWUFNTC1zdHJpbmcgYmVnaW5uZW4gbWV0IFwnLS0tXCcgaXMgdmVyZWlzdC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnS29uIGRlIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayBuaWV0IHZlcndpamRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnRXIgemlqbiBnZWVuIHJlbGV2YW50ZSBkeW5hbWlzY2hlIHZlbGRlbiBnZXZvbmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0tvbiBuaWV0IGludm9lZ2VuIGluIGRlIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnMCByaWplbiBpbmdldm9lZ2QgaW4gZGUgdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltYWxlIGhvZXZlZWxoZWlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpZSBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRm91dCBiaWogaGV0IHN5bmNocm9uaXNlcmVuIHZhbiBkZSBkZWZpbml0aWVzLiBDb250cm9sZWVyIGhldCBsb2dib2VrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0plIGhlYnQgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGllcyBkaWUgbmlldCBnZXN5bmNocm9uaXNlZXJkIHppam4uIEltcGxlbWVudGVlciBqZSBJVFNNQ29uZmlnSXRlbSBkeW5hbWlzY2hlIHZlbGR3aWp6aWdpbmdlbi4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1ZlcmxvcGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnSW4gb25kZXJob3VkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0dlcGxhbm5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdJbiByZXBhcmF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1VpdGdlZmFzZWVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJ6aWNodCBlbiBiZXZlc3RpZ2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdLbGFzc2VuL3JvbGxlbiBlbiBodW4gZ2VyZWxhdGVlcmRlIHZlbGRlbiBpbXBvcnRlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRXIgaXMgZWVuIGZvdXQgb3BnZXRyZWRlbiB0aWpkZW5zIGhldCBpbXBvcnRlcmVuIHZhbiBkZSBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBWZXJib3JnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIEFmZ2ViZWVsZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWFha3QgdWl0Z2VicmVpZGUgem9la3Zvb3J3YWFyZGVuIG1vZ2VsaWprIGJpaiBoZXQgem9la2VuIG5hYXIgY29uZmlnIGl0ZW1zIGluIGRlIGFnZW50IGludGVyZmFjZS4gTWV0IGRlemUgZnVuY3RpZSBrdW4gamUgYmlqdm9vcmJlZWxkIHpvZWtlbiBvcCBjb25maWcgaXRlbSBuYWFtIG1ldCBkaXQgc29vcnQgY29uZGl0aWVzIHpvYWxzICIoKmtleTEqJiYqa2V5MiopIiBvZiAiKCprZXkxKnwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWFha3QgdWl0Z2VicmVpZGUgem9la3Zvb3J3YWFyZGVuIG1vZ2VsaWprIGJpaiBoZXQgem9la2VuIG5hYXIgY29uZmlndXJhdGllcyBpbiBkZSBrbGFudGVuaW50ZXJmYWNlLiBNZXQgZGV6ZSBmdW5jdGllIGt1biBqZSBiaWp2b29yYmVlbGQgem9la2VuIG9wIGNvbmZpZyBpdGVtIG5hYW0gbWV0IGRpdCBzb29ydCBjb25kaXRpZXMgem9hbHMgIigqa2V5MSomJiprZXkyKikiIG9mICIoKmtleTEqfCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdUb2VnZXdlemVuIENJXCdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJXCdzIHRvZWdld2V6ZW4gYWFuIGtsYW50YmVkcmlqZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJXCdzIHRvZWdld2V6ZW4gYWFuIGtsYW50Z2VicnVpa2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCLWluc3RlbGxpbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQ29udHJvbGVlciBhbGxlZW4gb3AgZWVuIHVuaWVrZSBuYWFtIGJpbm5lbiBkZXplbGZkZSBDb25maWdJdGVtLWtsYXNzZSAoXCdjbGFzc1wnKSBvZiBnbG9iYWFsIChcJ2dsb2JhbFwnKSwgd2F0IGJldGVrZW50IGRhdCBlbGsgYmVzdGFhbmQgQ29uZmlnSXRlbSBpbiBhYW5tZXJraW5nIHdvcmR0IGdlbm9tZW4gYmlqIGhldCB6b2VrZW4gbmFhciBkdXBsaWNhdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiBuYWFtZ2V2aW5nc3NjaGVtYSBhZiB0ZSBkd2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiBjaWpmZXJzY2hlbWEgYWYgdGUgZHdpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnS2llcyBlZW4gbW9kdWxlIG9tIGVlbiB2ZXJzaWVzY2hlbWEgYWYgdGUgZHdpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdLaWVzIGtlbm1lcmtlbiBvbSBoZXQgYWFubWFrZW4gdmFuIGVlbiBuaWV1d2UgdmVyc2llIHRlIGFjdGl2ZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnS2llcyBjYXRlZ29yaWXDq24gb20gdG9lIHRlIHdpanplbiBhYW4gZGV6ZSBjb25maWcgaXRlbSBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnS29sb20gY29uZmlnIGl0ZW0gZmlsdGVycyB2b29yIENvbmZpZ0l0ZW0gT3ZlcnppY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sb21tZW4gZGllIGt1bm5lbiB3b3JkZW4gZ2VmaWx0ZXJkIGluIGhldCBjb25maWcgaXRlbSBvdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4gT3BtZXJraW5nOiBBbGxlZW4gQ29uZmlnIEl0ZW0gYXR0cmlidXRlbiBlbiBEeW5hbWlzY2hlIHZlbGRlbiAoRHluYW1pY0ZpZWxkX05hbWVYKSB6aWpuIHRvZWdlc3RhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gdG9ldm9lZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGJld2Vya2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpZS1pdGVtIGdlYmV1cnRlbmlzbW9kdWxlIGRpZSBoZXQgbG9nZ2VuIG5hYXIgZ2VzY2hpZWRlbmlzIGluIGRlIGFnZW50aW50ZXJmYWNlIG1vZ2VsaWprIG1hYWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudCBtb2R1bGUgZGllIGNvbmZpZyBpdGVtcyBiaWp3ZXJrdCBuYWFyIGh1biBodWlkaWdlIGRlZmluaXRpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSBnZXNjaGllZGVuaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGFmZHJ1a2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSB6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gYm9vbXN0cnVjdHV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyB2YW4gZGUgdm9sZ2VuZGUga2xhc3NlbiB3b3JkZW4gbmlldCBvcGdlc2xhZ2VuIG9wIGRlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBPbSBkaXQgdG9lIHRlIHBhc3NlbiBvcCBiZXN0YWFuZGUgQ0lzLCBtb2V0IGRlIENJLW1pZ3JhdGllIHdvcmRlbiB1aXRnZXZvZXJkIHZpYSBkZSBjb25zb2xlLCBuYSBoZXQgd2lqemlnZW4gdmFuIGRlemUgb3B0aWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG1ldCBkZSB2b2xnZW5kZSBkZXBsb3ltZW50IHN0YXRlcyB3b3JkZW4gbmlldCBvcGdlc2xhZ2VuIG9wIGRlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBPbSBkaXQgdG9lIHRlIHBhc3NlbiBvcCBiZXN0YWFuZGUgQ0lzLCBtb2V0IGRlIENJLW1pZ3JhdGllIHdvcmRlbiB1aXRnZXZvZXJkIHZpYSBkZSBjb25zb2xlLCBuYSBoZXQgd2lqemlnZW4gdmFuIGRlemUgb3B0aWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYXRpZSBJdGVtIExpbWlldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGllIEl0ZW0gbGltaWV0IHBlciBwYWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYmFzZSB2b29yIGNvbmZpZ3VyYXRpZWJlaGVlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGJ1bGttb2R1bGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpZS1pdGVtIHpvZWsgYmFja2VuZCByb3V0ZXIgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQWFubWFrZW4gZW4gYmVoZXJlbiB2YW4gZGVmaW5pdGllcyB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmXDq2VydCB0aWNrZXRzIHZvb3IgQ29uZmlnSXRlbXMgb3Agc3BlY2lmaWVrZSB0aWpkc3RpcHBlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xhbnRlbiBrdW5uZW4gaGlzdG9yaXNjaGUgQ0ktdmVyc2llcyB6aWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGFudGVuIGhlYmJlbiBkZSBtb2dlbGlqa2hlaWQgb20gaGFuZG1hdGlnIHRlIHdpc3NlbGVuIHR1c3NlbiBoaXN0b3Jpc2NoZSBDSS12ZXJzaWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYWFyZCBnZWdldmVucyBvbSB0ZSBnZWJydWlrZW4gb3AgYXR0cmlidXV0IHZvb3IgY29uZmlnIGl0ZW0gem9la3NjaGVybS4gVm9vcmJlZWxkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYWFyZCBnZWdldmVucyBvbSB0ZSBnZWJydWlrZW4gb3AgYXR0cmlidXV0IHZvb3IgY29uZmlnIGl0ZW0gem9la3NjaGVybS4gVm9vcmJlZWxkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZWVyIGFjdGllcyB3YWFyYmlqIGVlbiBpbnN0ZWxsaW5nZW5rbm9wIGJlc2NoaWtiYWFyIGlzIGluIGRlIHdpZGdldCB2YW4gZ2Vrb3BwZWxkZSBvYmplY3RlbiAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIb3VkIGVyIHJla2VuaW5nIG1lZSBkYXQgZGV6ZSBhY3RpZXMgZGUgdm9sZ2VuZGUgSlMtIGVuIENTUy1iZXN0YW5kZW4gbW9ldGVuIGhlYmJlbiBnZXJlZ2lzdHJlZXJkOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlbiBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllZXIgZWVuIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtYSB2b29yIHZlcnNpZXN0cmluZ3MuIEFsbGVlbiBnZWJydWlrdCBhbHMgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIGluZ2VzdGVsZCBvcCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmllZXIgZWVuIHNldCB2b29yd2FhcmRlbiB3YWFyb25kZXIgZWVuIGtsYW50IGVlbiBjb25maWd1cmF0aWUtaXRlbSBtYWcgemllbi4gVm9vcndhYXJkZW4ga3VubmVuIG9wdGlvbmVlbCB3b3JkZW4gYmVwZXJrdCB0b3QgYmVwYWFsZGUga2xhbnRncm9lcGVuLiBOYWFtIGlzIGhldCBlbmlnZSB2ZXJwbGljaHRlIGF0dHJpYnV1dC4gQWxzIGVyIGdlZW4gYW5kZXJlIG9wdGllcyB3b3JkZW4gZ2VnZXZlbiwgenVsbGVuIGFsbGUgY29uZmlndXJhdGllLWl0ZW1zIHppY2h0YmFhciB6aWpuIG9uZGVyIGRpZSBjYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcyB0ZSB2ZXJ3aWpkZXJlbiBtZXQgYmVodWxwIHZhbiBkZSBHZW5lcmlla2UgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2ZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgb3AgdGUgaGFsZW4gbWV0IGRlIEdlbmVyaWVrZSBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcyB0ZSBkb29yem9la2VuIG1ldCBiZWh1bHAgdmFuIGRlIEdlbmVyaWVrZSBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcyBpbiB0ZSBzdGVsbGVuIG1ldCBiZWh1bHAgdmFuIGRlIEdlbmVyaWVrZSBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZWVuIG92ZXJ6aWNodHNtb2R1bGUgb20gZGUga2xlaW5lIHdlZXJnYXZlIHZhbiBlZW4gbGlqc3QgbWV0IGNvbmZpZ3VyYXRpZS1pdGVtcyB3ZWVyIHRlIGdldmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IG9mIGRlIGxhYmVscyB2YW4gaGV0IGxpbmt0eXBlIG1vZXRlbiB3b3JkZW4gd2VlcmdlZ2V2ZW4gaW4gZGUga25vb3BwdW50dmVyYmluZGluZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5pZWVydCByZWd1bGllcmUgZXhwcmVzc2llcyBhZnpvbmRlcmxpamsgdm9vciBlbGtlIENvbmZpZ0l0ZW0ta2xhc3NlIG9tIGRlIENvbmZpZ0l0ZW0tbmFhbSB0ZSBjb250cm9sZXJlbiBlbiBvdmVyZWVua29tc3RpZ2UgZm91dG1lbGRpbmdlbiB3ZWVyIHRlIGdldmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgYmVzY2hpa2JhcmUga29sb21tZW4gdmFuIENJcyBpbiBoZXQgY29uZmlnIGl0ZW0gb3ZlcnppY2h0IGFmaGFua2VsaWprIHZhbiBkZSBDSSBrbGFzc2UuIEVsa2UgZW50cnkgbW9ldCBiZXN0YWFuIHVpdCBlZW4gY2xhc3NuYWFtIGVuIGVlbiBhcnJheSB2YW4gYmVzY2hpa2JhcmUgdmVsZGVuIHZvb3IgZGUgb3ZlcmVlbnN0ZW1tZW5kZSBjbGFzcy4gRHluYW1pc2NoZSB2ZWxkcmVnZWxzIG1vZXRlbiBoZXQgc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgcmVzcGVjdGVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgY29uZmlnIGl0ZW0gYXR0cmlidXV0IHZvb3IgaGV0IHNvcnRlcmVuIHZhbiBoZXQgY29uZmlnIGl0ZW0gdmFuIGhldCB6b2VrcmVzdWx0YWF0IHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgY29uZmlnIGl0ZW0gYXR0cmlidXV0IHZvb3IgY29uZmlnIGl0ZW0gc29ydGVyaW5nIHZhbiBoZXQgY29uZmlnIGl0ZW0gem9la3Jlc3VsdGFhdCB2YW4gZGUga2xhbnRlbmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgY29uZmlnIGl0ZW0gYXR0cmlidXV0IHZvb3IgaGV0IHNvcnRlcmVuIHZhbiBoZXQgY29uZmlnIGl0ZW0gem9la3Jlc3VsdGFhdCB2YW4gZGV6ZSBiZXdlcmtpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCB2b2xnb3JkZSB2YW4gY29uZmlnIGl0ZW1zIGluIGhldCB6b2VrcmVzdWx0YWF0IHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuIE9taG9vZzogb3Vkc3RlIGJvdmVuYWFuLiBPbWxhYWc6IG5pZXV3c3RlIGJvdmVuYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBzdGFuZGFhcmQgdm9sZ29yZGUgdmFuIGNvbmZpZyBpdGVtcyBpbiBoZXQgem9la3Jlc3VsdGFhdCB2YW4gZGUga2xhbnRlbmludGVyZmFjZS4gT21ob29nOiBvdWRzdGUgYm92ZW5hYW4uIE9tbGFhZzogbmlldXdzdGUgYm92ZW5hYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCBnZXRvb25kZSBrb2xvbW1lbiB2YW4gQ0lzIGluIGhldCBjb25maWd1cmF0aWUtaXRlbSBvdmVyemljaHQsIGFmaGFua2VsaWprIHZhbiBkZSBDSSBrbGFzc2UuIEVsayBpdGVtIG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gdm9sZG9lbiBhYW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdCZXBhYWx0IGRlIHN0YW5kYWFyZCB0ZSB0b25lbiByZWxhdGllZGllcHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgZ2V0b29uZGUgY29uZmlnIGl0ZW0gem9la2tlbm1lcmsgdm9vciBoZXQgY29uZmlnIGl0ZW0gem9la3NjaGVybS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBnZXRvb25kZSBjb25maWcgaXRlbSB6b2Vra2VubWVyayB2b29yIGhldCBjb25maWcgaXRlbSB6b2Vrc2NoZXJtLiBWb29yYmVlbGQ6ICJLZXkiIG1vZXQgZGUgbmFhbSBoZWJiZW4gdmFuIGhldCBkeW5hbWlzY2hlIHZlbGQgaW4gZGl0IGdldmFsIFwnWFwnLCAiQ29udGVudCIgbW9ldCBkZSB3YWFyZGUgaGViYmVuIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkIGFmaGFua2VsaWprIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkdHlwZSwgVGV4dDogImVlbiB0ZWtzdCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGVuIG9mIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBzdWJvYmplY3QgdmFuIGRlIGtsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGJlc2NoaWtiYXJlIGtvbG9tbWVuIHZhbiBDSXMgaW4gaGV0IGNvbmZpZyBpdGVtIG92ZXJ6aWNodCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kga2xhc3NlLiBFbGtlIGVudHJ5IG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHJlc3BlY3RlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdCZXBhYWx0IGRlIGhvb2d0ZSB2b29yIGRlIHJpY2ggdGV4dCBlZGl0b3Jjb21wb25lbnQgdm9vciBkaXQgc2NoZXJtLiBWb2VyIGVlbiBnZXRhbCAocGl4ZWxzKSBvZiBlZW4gcHJvY2VudHVlbGUgd2FhcmRlIChyZWxhdGllZikgaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IGFhbnRhbCByaWplbiB2b29yIGRlIENJLWRlZmluaXRpZS1lZGl0b3IgaW4gZGUgYmVoZWVyaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZvbGdvcmRlIHZhbiBkZSBpbmNpZGVudHRvZXN0YW5kZW4gdmFuIGhvb2cgKGJpanYuIGNyaWNpdGFhbCkgbmFhciBsYWFnIChiaWp2LiBmdW5jdGlvbmVlbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSByZWxldmFudGUgZGVwbG95bWVudCBzdGF0ZXMgd2FhciBnZWtvcHBlbGRlIHRpY2tldHMgZGUgc3RhdHVzIHZhbiBlZW4gQ0kga3VubmVuIGJlw69udmxvZWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB6b2VrbGltaWV0IHZvb3IgaGV0IHNjaGVybSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgem9la2xpbWlldCB2b29yIGhldCBzY2hlcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgZ2V0b29uZGUga29sb21tZW4gdmFuIENJXCdzIGluIGRlIGtvcHBlbHRhYmVsIGNvbXBsZXhlIHdlZXJnYXZlIHZvb3IgYWxsZSBDSS1rbGFzc2VuLiBBbHMgZXIgZ2VlbiBpbnZvZXIgaXMsIGRhbiB3b3JkZW4gZGUgc3RhbmRhYXJkIGtvbG9tbWVuIGdldG9vbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGdldG9vbmRlIGtvbG9tbWVuIHZhbiBDSXMgaW4gZGUgbGlua3RhYmVsIGNvbXBsZXhlIHdlZXJnYXZlLCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kta2xhc3NlLiBFbGsgaXRlbSBtb2V0IHZvb3JhZmdlZ2FhbiB3b3JkZW4gZG9vciBkZSBuYWFtIHZhbiBkZSBrbGFzc2UgZW4gZHViYmVsZSBkdWJiZWxlIHB1bnRlbiAoYnYuIENvbXB1dGVyOjopLiBFciB6aWpuIGVlbiBwYWFyIENJLWF0dHJpYnV0ZW4gZGllIGdlbWVlbnNjaGFwcGVsaWprIHppam4gdm9vciBhbGxlIENJXCdzICh2b29yYmVlbGQgdm9vciBkZSBrbGFzc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIE9tIGluZGl2aWR1ZWxlIENJLUF0dHJpYnV0ZW4gdGUgdG9uZW4gem9hbHMgZ2VkZWZpbmllZXJkIGluIGRlIENJLWRlZmluaXRpZSwgbW9ldCBoZXQgdm9sZ2VuZGUgc2NoZW1hIGdlYnJ1aWt0IHdvcmRlbiAodm9vcmJlZWxkIHZvb3IgZGUga2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXRlaXQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0ZWl0OjoxLiBBbHMgZXIgZ2VlbiBpbnZvZXIgaXMgdm9vciBlZW4gQ0kta2xhc3NlLCBkYW4gd29yZGVuIGRlIHN0YW5kYWFyZGtvbG9tbWVuIHdlZXJnZWdldmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2Vsa2UgaXRlbXMgYmVzY2hpa2JhYXIgemlqbiB2b29yIFwnQWN0aWVcJyBvcCBoZXQgZGVyZGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCB3ZWxrZSBpdGVtcyBiZXNjaGlrYmFhciB6aWpuIGluIGhldCBlZXJzdGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2Vsa2UgaXRlbXMgYmVzY2hpa2JhYXIgemlqbiBpbiBoZXQgdHdlZWRlIG5pdmVhdSB2YW4gZGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGsgdHlwZSBsaW5rIChnZW5vZW1kIHZhbnVpdCBoZXQgdGlja2V0cGVyc3BlY3RpZWYpIGRlIHN0YXR1cyB2YW4gZWVuIGdla29wcGVsZGUgQ0kga2FuIGJlw69udmxvZWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGsgdHlwZSB0aWNrZXQgZGUgc3RhdHVzIHZhbiBlZW4gZ2Vrb3BwZWxkZSBDSSBrYW4gYmXDr252bG9lZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluaXRpZSBiaWp3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIHZlcndpamRlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnS2xldXIgdmFuIGRlIGluemV0c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkIGV2ZW50IG1vZHVsZSBkaWUgY29uZmlnIGl0ZW0gZGVmaW5pdGllcyBtYXJrZWVydCBhbHMgbmlldCBnZXN5bmNocm9uaXNlZXJkLCBhbHMgZGUgZHluYW1pc2NoZSB2ZWxkZW4gZGllIGhldCBiZXZhdCB2ZXJhbmRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgZXh0cmEgSVRTTS12ZWxkc2NoZXJtIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgc2NoZXJtIENvbmZpZyBpdGVtb3ZlcnppY2h0IHZhbiBkZSBrbGFudGVuaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIHZlbGRlbiBkaWUgd29yZGVuIHdlZXJnZWdldmVuIGluIGhldCB6b2Vrc2NoZXJtIHZvb3IgY29uZmlnIGl0ZW1zIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnTWFha3QgYnVsa2FjdGllIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIG1vZ2VsaWprLCB6b2RhdCBkZSBhZ2VudCBmcm9udGVuZCBhYW4gbWVlciBkYW4gw6nDqW4gY29uZmlndXJhdGllLWl0ZW0gdGVnZWxpamsga2FuIHdlcmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1NjaGFrZWx0IGRlIGZ1bmN0aWUgYnVsa2FjdGllIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIGFsbGVlbiBpbiB2b29yIGRlIHZlcm1lbGRlIGdyb2VwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0dlYmV1cnRlbmlzbW9kdWxlIG9tIGNvbmZpZ2l0ZW0tc3RhdHVzIGluIHRlIHN0ZWxsZW4gb3AgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnVmVsZGVuIHZhbiBkZSBjb25maWd1cmF0aWUtaXRlbWluZGV4LCBnZWJydWlrdCB2b29yIGhldCB6b2VrZW4gaW4gZGUgdm9sbGVkaWdlIHRla3N0LiBWZWxkZW4gd29yZGVuIG9vayBvcGdlc2xhZ2VuLCBtYWFyIHppam4gbmlldCB2ZXJwbGljaHQgdm9vciBkZSBhbGdlbWVuZSBmdW5jdGlvbmFsaXRlaXQuIEhldCBvcG5lbWVuIHZhbiBiaWpsYWdlbiBrYW4gd29yZGVuIHVpdGdlc2NoYWtlbGQgZG9vciBoZXQgaXRlbSBvcCAwIHRlIHpldHRlbiBvZiB0ZSB2ZXJ3aWpkZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1ZlbGRlbiBkaWUgemlqbiBvcGdlc2xhZ2VuIGluIGRlIGluZGV4IHZhbiBoZXQgY29uZmlndXJhdGllLWl0ZW0gZW4gZGllIHdvcmRlbiBnZWJydWlrdCB2b29yIGFuZGVyZSBkaW5nZW4gZGFuIHpvZWtlbiBpbiBkZSB2b2xsZWRpZ2UgdGVrc3QuIFZvb3IgZGUgdm9sbGVkaWdlIGZ1bmN0aW9uYWxpdGVpdCB6aWpuIGFsbGUgdmVsZGVuIHZlcnBsaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZXJlZ2lzdHJhdGllIHZvb3IgZGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGFhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZXJlZ2lzdHJhdGllIHZvb3IgZGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGFhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGVyZWdpc3RyYXRpZSB2b29yIGRlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxhYWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJ6aWNodCB2YW4gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT212YXQgZGVwbG95bWVudCBzdGF0ZXMgaW4gaGV0IHpvZWtlbiBuYWFyIGNvbmZpZ3VyYXRpZS1pdGVtcyBpbiBkZSBrbGFudGVuaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXNpZWYgaW5jaWRlbnR0b2VzdGFuZGVuIGluIGhldCB6b2VrZW4gbmFhciBjb25maWd1cmF0aWVzIGluIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltdW1hYW50YWwgY29uZmlndXJhdGllLWl0ZW1zIGRhdCBtb2V0IHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgcmVzdWx0YWF0IHZhbiBkZXplIGJld2Vya2luZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgb20gZGUgZ3JvZXAgdGUgY29udHJvbGVyZW4gZGllIHZlcmFudHdvb3JkZWxpamsgaXMgdm9vciBlZW4ga2xhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGUgb20gZGUgZ3JvZXAgdGUgY29udHJvbGVyZW4gZGllIHZlcmFudHdvb3JkZWxpamsgaXMgdm9vciBlZW4gY29uZmlndXJhdGllLWl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHZvb3IgaGV0IGdlbmVyZXJlbiB2YW4gSVRTTS1jb25maWd1cmF0aWVzdGF0aXN0aWVrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFhbSBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lciBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWFudGFsIGNvbmZpZ3VyYXRpZS1pdGVtcyBkYXQgbW9ldCB3b3JkZW4gd2VlcmdlZ2V2ZW4gb3AgZWxrZSBwYWdpbmEgdmFuIGVlbiB6b2VrcmVzdWx0YWF0IGluIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBYW50YWwgY29uZmlndXJhdGllLWl0ZW1zIGRhdCBtb2V0IHdvcmRlbiB3ZWVyZ2VnZXZlbiBvcCBlbGtlIHBhZ2luYSB2YW4gZWVuIHpvZWtyZXN1bHRhYXQgaW4gZGUga2xhbnRlbmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWN0ZW4gd2Fhcm5hYXIgZ2V6b2NodCBtb2V0IHdvcmRlbiwgaG9ldmVlbCBpdGVtcyBlbiB3ZWxrZSBhdHRyaWJ1dGVuIGdldG9vbmQgbW9ldGVuIHdvcmRlbi4gQ29uZmlnSXRlbS1hdHRyaWJ1dGVuIG1vZXRlbiBleHBsaWNpZXQgd29yZGVuIG9wZ2VzbGFnZW4gdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJ6aWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBjYXRlZ29yaWXDq24gdm9vciBjb25maWcgaXRlbSBrbGFzc2VuIGluIGRlIHZvb3JrZXVyZW4gd2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUga29sb21maWx0ZXJzIHZhbiBoZXQga2xlaW5lIGNvbmZpZ3VyYXRpZS1pdGVtb3ZlcnppY2h0LiBMZXQgb3A6IGFscyBqZSBcJ0FjdGllZlwnIG9wIDAgemV0LCBrdW5uZW4gYWdlbnRzIGFsbGVlbiBkZSBpbnN0ZWxsaW5nZW4gdmFuIGRlemUgZ3JvZXAgbmlldCBiZXdlcmtlbiBpbiBodW4gcGVyc29vbmxpamtlIHZvb3JrZXVyZW4sIG1hYXIga3VubmVuIGJlaGVlcmRlcnMgd2VsIGRlIGluc3RlbGxpbmdlbiB2YW4gZWVuIGFuZGVyZSBnZWJydWlrZXIgYmV3ZXJrZW4uIEdlYnJ1aWsgXCdQcmVmZXJlbmNlR3JvdXBcJyBvbSB0ZSBiZXBhbGVuIGluIHdlbGsgZ2ViaWVkIGRlemUgaW5zdGVsbGluZ2VuIG1vZXRlbiB3b3JkZW4gd2VlcmdlZ2V2ZW4gaW4gZGUgZ2VicnVpa2Vyc2ludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgaW56ZXRzdGF0dXNzZW4ga2xldXJlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBpbnpldHN0YXR1c3NlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgdm9vcmJlZWxkIHBlcmltc3NpZWdyb2VwZW4gdmFuIGRlIGFsZ2VtZW5lIGNhdGFsb2cgYXR0cmlidXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgbmFhbW1vZHVsZSB2b29yIGNvbmZpZyBpdGVtIGtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgbnVtbWVybW9kdWxlIHZvb3IgY29uZmlnIGl0ZW1rbGFzc2VuIGluIGRlIHZvb3JrZXVyZW53ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBwYWdpbmFcJ3MgKHdhYXJvcCBkZSBjb25maWd1cmF0aWUtaXRlbXMgd29yZGVuIHdlZXJnZWdldmVuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZSBzdHJpbmcgbW9kdWxlIHZvb3IgY29uZmlnIGl0ZW0ga2xhc3NlbiBpbiBkZSB2b29ya2V1cmVuIHdlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZSBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgdm9vciBjb25maWcgaXRlbSBrbGFzc2VuIGluIGRlIHZvb3JrZXVyZW4gd2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZlcnNpZWFjdGl2ZXJpbmcgdm9vciBjb25maWcgaXRlbWtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaWUgZ3JvZXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gZGUgSVRTTSBjb25maWd1cmF0aWUgaXRlbSBhdHRhY2htZW50IGFjdGllIHRlIGdlYnJ1aWtlbiBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllLWl0ZW0gc2NoZXJtIGluIGRlIGFnZW50IGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCB6b2Vrc2NoZXJtIHZvb3IgSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgaW4gZGUgYWdlbnRpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgem9la3NjaGVybSB2b29yIElUU00tY29uZmlndXJhdGllLWl0ZW1zIGluIGRlIGtsYW50ZW5pbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgSVRTTS1jb25maWd1cmF0aWUgaXRlbSBib29tc3RydWN0dXVyIHNjaGVybSB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllIGl0ZW0gem9vbXNjaGVybSB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgc2NoZXJtIElUU00tY29uZmlndXJhdGllLWl0ZW0gdG9ldm9lZ2VuIGluIGRlIGFnZW50aW50ZXJmYWNlIHRlIGdlYnJ1aWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBidWxrIElUU00tY29uZmlndXJhdGllLWl0ZW0gc2NoZXJtIGluIGRlIGFnZW50IGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgc2NoZXJtIElUU00tY29uZmlndXJhdGllLWl0ZW0gYmV3ZXJrZW4gaW4gZGUgYWdlbnRpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IElUU00tY29uZmlndXJhdGllLWl0ZW0gZ2VzY2hpZWRlbmlzIHNjaGVybSBpbiBkZSBhZ2VudCBpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBzY2hlcm0gbWV0IElUU00tY29uZmlndXJhdGllLWl0ZW1zIGFmZHJ1a2tlbiB0ZSBnZWJydWlrZW4gaW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdWZXJlaXN0ZSBwcml2aWxlZ2VzIG9tIGNvbmZpZyBpdGVtcyB0ZSB2ZXJ3aWpkZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDb25maWd1cmF0aWUtaXRlbXMgem9la2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU3RlbCBkZSBpbmNpZGVudHN0YXR1cyB2YW4gZWVuIENJIGF1dG9tYXRpc2NoIGluIHdhbm5lZXIgZWVuIHRpY2tldCBpcyBnZWtvcHBlbGQgYWFuIGVlbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdGVsdCBkZSB1aXRyb2xzdGF0dXMgaW4gaGV0IGJ1bGtzY2hlcm0gdm9vciBjb25maWd1cmF0aWUtaXRlbXMgdmFuIGRlIGFnZW50aW50ZXJmYWNlIGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdGVsdCBkZSBpbmNpZGVudHN0YXR1cyBpbiBpbiBoZXQgYnVsa3NjaGVybSB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcyB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgd2Fhcm1lZSBlZW4gY29uZmlndXJhdGllLWl0ZW0ga2FuIHdvcmRlbiBnZWtvcHBlbGQgYWFuIGVlbiBhbmRlciBvYmplY3QgaW4gZGUgem9vbXdlZXJnYXZlIHZhbiBoZXQgY29uZmlndXJhdGllLWl0ZW0gaW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgdm9vciB0b2VnYW5nIHRvdCBkZSBnZXNjaGllZGVuaXMgdmFuIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBoZXQgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgdm9vciB0b2VnYW5nIHRvdCBkZSBnZXNjaGllZGVuaXMgdmFuIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBkZSB6b29td2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUtaXRlbSB0ZSB2ZXJ3aWpkZXJlbiBpbiBkZSB6b29td2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gZGUgbGlua3MgbmFhciBjb25maWd1cmF0aWUtaXRlbXMgd2VlciB0ZSBnZXZlbiBhbHMgZWVuIGJvb21zdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gZWVuIGNvbmZpZ3VyYXRpZSBpdGVtIHRlIGR1cGxpY2VyZW4gaW4gaGV0IGNvbmZpZ3VyYXRpZSBpdGVtIG92ZXJ6aWNodCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBlZW4gY29uZmlndXJhdGllIGl0ZW0gdGUgZHVwbGljZXJlbiBpbiBkZSB6b29tIHdlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBlZW4gY29uZmlndXJhdGllLWl0ZW0gdGUgYmV3ZXJrZW4gaW4gZGUgem9vbXdlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIHRlcnVnIHRlIGdhYW4gaW4gZGUgY29uZmlndXJhdGllIGl0ZW0gem9vbSB3ZWVyZ2F2ZSB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUtaXRlbSBhZiB0ZSBkcnVra2VuIGluIGRlIHpvb213ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gaW4gdGUgem9vbWVuIG9wIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBoZXQgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZGUgY29uZmlnIGl0ZW0gZ2VzY2hpZWRlbmlzIChvbWdla2VlcmQgZ2VvcmRlbmQpIGluIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRGUgc3RhbmRhYXJkY2F0ZWdvcmllIGRpZSB3b3JkdCB3ZWVyZ2VnZXZlbiBhbHMgZXIgZ2VlbiBpcyBnZXNlbGVjdGVlcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdEZSBpZGVudGlmaWVyIHZvb3IgZWVuIGNvbmZpZ3VyYXRpZS1pdGVtLCBiaWp2LiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gRGUgc3RhbmRhYXJkd2FhcmRlIGlzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVHJpZ2dlcnQgYXV0b21hdGlzY2ggQ29uZmlnSXRlbUZldGNoIGludm9rZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpZSBTdHJpbmcgVWl0ZHJ1a2tpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2llIFN0cmluZyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2llIHRyZWtrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09mIGhldCB1aXR2b2VyZW4gdmFuIENvbmZpZ0l0ZW1BQ0wgdmVybWVkZW4ga2FuIHdvcmRlbiBkb29yIHZlbGRhZmhhbmtlbGlqa2hlZGVuIGluIGRlIGNhY2hlIHRlIGNvbnRyb2xlcmVuLiBEaXQga2FuIGRlIGxhYWR0aWpkIHZhbiBmb3JtdWxpZXJlbiB2ZXJiZXRlcmVuLCBtYWFyIG1vZXQgdWl0Z2VzY2hha2VsZCB3b3JkZW4gYWxzIEFDTE1vZHVsZXMgZ2VicnVpa3QgbW9ldGVuIHdvcmRlbiB2b29yIElUU01Db25maWdJdGVtLSBlbiBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnV2Vsa2UgYWxnZW1lbmUgaW5mb3JtYXRpZSB3b3JkdCB3ZWVyZ2VnZXZlbiBpbiBkZSBrb3B0ZWtzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnd2VyZWxkd2lqZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aWVmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aWVmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aWVmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluY2ggKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiA1MywzNCBjbSAoMjEgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW5jaCAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbmNoICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktaW5jaCByZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtaW5jaCByZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluY2ggKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1pbmNoIHJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW5jaCAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW5jaCAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW5jaCAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluY2ggKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW5jaCAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW5jaCAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW5jaCAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW5jaCAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW5jaCAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluY2ggKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW5jaCAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbmNoICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbmNoICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluY2ggKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluY2ggKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluY2ggKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW5jaCAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNoICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluY2ggKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0JvZWtob3VkaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXN0b2V3aWp6aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdCZWhlZXJkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nZSB0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cGUgYXBwYXJhYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBY2N1Y2FwYWNpdGVpdCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0JhdHRlcmlqdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0dlYm91dyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzaW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpdGVpdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpdGVpdCBwZXIgZ3JhZmlzY2hlIGthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FhcnRudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYWFydGxlemVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thYXJ0dHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xhbnRjZXJ0aWZpY2F0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgdm9vciBrbGFudGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3JpZSBrbGFudGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0tsb2tzbmVsaGVpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnS2xva3NuZWxoZWlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDb2RlIG9uZGVydGVrZW5lbmRlIGNlcnRpZmljYXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnQ29uZmVyZW50aWV0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0Fkdmllc292ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnTmVlbSBjb250YWN0IG9wIG1ldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnTmVlbSBjb250YWN0IG9wIG1ldCBkaXN0cmlidXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdCZWhlZXIgdmFuIGNvbnRhaW5lcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVHlwZSBjb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0NvbnRyYWN0cGVyaW9kZSB2YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnQ29udHJhY3RwZXJpb2RlIHRvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdEcmFhZGxvemUgdGVsZWZvb24gKERFQ1QtdGVsZWZvb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0tvc3RlbmVlbmhlaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdBYW50YWwgbGljZW50aWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdBYW5tYWFrZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1JlayBvcCBtYWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIEdlcmVzZXJ2ZWVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0dW0gZmFjdHV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0dW0gYmVzdGVsbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0dW0gdmFuIGdhcmFudGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIHZhbiB1aXRnYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0ZW4gdm9vciBkb2N1bWVudG9uZGVydGVrZW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJLXJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1tYWlsY2VydGlmaWNhdGVuIChTL01JTUUtY2VydGlmaWNhdGVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdBcmJlaWRzb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnSVAtYWRyZXMgZWluZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdFaW5kZSBvbmRlcnN0ZXVuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVmVydmFsZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybmUgaGFyZGUgc2NoaWpmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1ZsaWVnd2llbCBFbmVyZ2llb3BzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnVm9ybWZhY3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnQWxnZW1lbmUgaW5mb3JtYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpc2NoZSBrYWFydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaXNjaGUga2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR3YXJlbW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnR2V3aWNodCBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSG9vZmR0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3RvY29sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRlaXRzLSBlbiB0b2VnYW5nc2JlaGVlciAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJpc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmFjdHV1cm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RvZXRzZW5ib3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1tb25pdG9yICh2bG9laWJhYXIta3Jpc3RhbHNjaGVybSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1tb25pdG9yIChsaWNodGVtaXR0ZXJlbmRlIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdWYXN0ZSB0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdCcmVlZHRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGFhZyAxOiBGeXNpZWtlIGxhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFhZyAyOiBEYXRhbGlua2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhYWcgMzogbmV0d2Vya2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGFhZyAzOiBuZXR3ZXJrbGFhZyAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhYWcgNDogVHJhbnNwb3J0bGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGFhZyA1OiBTZXNzaWVsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhYWcgNjogUHJlc2VudGF0aWVsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFhZyA3OiBUb2VwYXNzaW5nc2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnSHV1cm92ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VudGllb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnRpZXNsZXV0ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGljZW50aWUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW50aWVwZXJpb2RlIHZhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VudGllcGVyaW9kZSB0b3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGhpdW0taWp6ZXJmb3NmYWF0YmF0dGVyaWogKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbiAoTGktaW9uKSBiYXR0ZXJpaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xlbmluZ3NvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0dldmVzdGlnZCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMZW5ndGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWthbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltYWFsIGRyYWFndmVybW9nZW4gKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0dlaGV1Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwZSBnZWhldWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpZWwgbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmllbCBpbmdlYmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbCBCZXNjaHJpanZpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvcnJlc29sdXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdBZm1ldGluZyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0d2Vyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR3ZXJrIGluZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHdlcmtpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR3ZXJrbGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1jYWRtaXVtYmF0dGVyaWogKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsbWV0YWFsaHlkcmlkZSAoTmlNSCkgYmF0dGVyaWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnR2VoZWltaG91ZGluZ3NvdmVyZWVua29tc3QgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FhbnRhbCBDUFVcJ3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQWFudGFsIFJBTS1tb2R1bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0FhbnRhbCBncmFmaXNjaGUga2FhcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1tb25pdG9yIChvcmdhbmlzY2hlIGxpY2h0ZW1pdHRlcmVuZGUgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0JlZHJpamZza29zdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ0Jlc3RlbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ092ZXJpZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1VpdGdhbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc2NoYXBzb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvb25udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb29uIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXNpZWtlIGtlcm5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N0cm9vbXZvb3J6aWVuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnR2Vrb2NodCBiaWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0RpZXB0ZSByZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdFZW5oZWRlbiByZWsgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdLYW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rYWFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtY2VydGlmaWNhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnVmVya29vcGNvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGlldCB0ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdWZXJ6ZWdlbGRlIGxvb2R6dXVyYmF0dGVyaWogKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXIgU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZXRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXBlIHN0b3Bjb250YWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdMdWlkc3ByZWtlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUC1hZHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnT3BzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnT3BzbGFncGFydGl0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEb2NodGVyb25kZXJuZW1pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NhbWVudmF0dGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RoaW4gQ2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdEcmFkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWFsIFJBTS1nZWhldWdlbiBncmFmaXNjaGUga2FhcnQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFhbCBSQU0tZ2VoZXVnZW4gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnVG91Y2hzY3JlZW4gbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0ItaHViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIta29wdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC10ZWxlZm9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/pl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdPZ8OzbG5lIGRhbmUgb3BlcmFjeWpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnVXN0YXdpZW5pYSBkbGEgcHJ6eWNob2R6xIVjeWNoIGRhbnljaCDFvMSFZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdVc3Rhd2llbmlhIHd5Y2hvZHrEhWN5Y2ggZGFueWNoIG9kcG93aWVkemknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdabWllxYQgZGVmaW5pY2rEmSBrbGFzeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnWm1pYW5hIGRlZmluaWNqaSByb2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFraWV0eSBrbGFzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1R1dGFqIG1vxbxuYSBpbXBvcnRvd2HEhyBwYWtpZXR5IGtsYXMgUmVhZHkySW1wb3J0IHByZXplbnR1asSFY2UgbmFzemUgbmFqYmFyZHppZWogdHlwb3dlIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaS4gTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgbW/FvGUgYnnEhyB3eW1hZ2FuYSBkb2RhdGtvd2Ega29uZmlndXJhY2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBa3R1YWxpemFjamEgaXN0bmllasSFY3ljaCBwb2RtaW90w7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0dWogcGFraWV0eSBrbGFzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS2xhc2EgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1JvbGEgZWxlbWVudHUga29uZmlndXJhY2ppJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyIGRsYSBrbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1phem5hY3oga2xhc8SZIG5hIGxpxZtjaWUgYWJ5IHV0d29yennEhyBub3dlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnQWtjamEgZ3J1cG93YSBuYSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUG/FgsSFY3ogeiBpbm55bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmllcHJhd2lkxYJvd3kgbnVtZXIgQ0khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bWVyIGlubmVnbyBlbGVtZW50dSBrb25maWd1cmFjamksIHoga3TDs3J5bSBuYWxlxbx5IHNpxJkgcG/FgsSFY3p5xIcuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQ3p5IG5hcHJhd2TEmSBjaGNlc3ogdXN1bsSFxIcgdGVuIGVsZW1lbnQga29uZmlndXJhY2ppPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXp3YSB0ZWdvIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYXp3YSBqZXN0IGp1xbwgdcW8eXdhbmEgcHJ6ZXogQ0kgbyBuYXN0xJlwdWrEhWN5Y2ggbnVtZXJhY2g6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnV2Vyc2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOdW1lciB3ZXJzamkgdGVnbyBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOdW1lciB3ZXJzamkgamVzdCBqdcW8IHXFvHl3YW55IHByemV6IENvbmZpZ0l0ZW1zIHogbmFzdMSZcHVqxIVjeW0gbnVtZXJlbSAobnVtZXJhbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnWmF3YXJ0b8WbxIcgaGlzdG9yaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1V0d29yem9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdXaWRvayBzemN6ZWfDs8WCb3d5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0xpY3piYSBDSSBuYSBzdHJvbmllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOaWUgem5hbGV6aW9ubyBkYW55Y2ggZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1d5YmllcnogdGVuIGVsZW1lbnQga29uZmlndXJhY2ppJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnVXJ1Y2hvbSB3eXN6dWtpd2FuaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBkbGEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1BvemlvbSBnxYLEmWJva2/Fm2NpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUG93acSZa3N6YW5pZS91c3V3YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdPc2nEhWduacSZdG8gbWFrc3ltYWxueSBwb3ppb20gbGlua8OzdyBkbGEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2plIG8gQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQWt0dWFsbnkgc3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdBa3R1YWxueSBzdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ09zdGF0bmlvIHptaWVuaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdPc3RhdG5pbyB6bWllbmlvbmUgcHJ6ZXonOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdFbGVtZW50eSBrb25maWd1cmFjamknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnV3lzenVraXdhbmllIENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdaYWltcG9ydG93YW5lIHpvc3RhbsSFIG5hc3TEmXB1asSFY2Uga2xhc3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnWmFpbXBvcnRvd2FuZSB6b3N0YW7EhSBuYXN0xJlwdWrEhWNlIHJvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgem9zdGFuxIUgcsOzd25pZcW8IHV0d29yem9uZSBvZHBvd2llZG5pZSBwb2xhIGR5bmFtaWN6bmUgaSBrbGFzeSBHZW5lcmFsQ2F0YWxvZywga3TDs3JlIG5pZSB6b3N0YW7EhSBhdXRvbWF0eWN6bmllIHVzdW5pxJl0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdDenkgY2hjZXN6IGtvbnR5bnVvd2HEhz8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pY2phIG5pZSBqZXN0IHByYXdpZMWCb3d5bSBoYXNoZW0gWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQcnplZ2zEhWQ6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdQb3RyemVibnkgamVzdCBjbyBuYWptbmllaiBqZWRlbiB3eWJyYW55IGVsZW1lbnQga29uZmlndXJhY2ppISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05pZSBtYXN6IGRvc3TEmXB1IGRvIHphcGlzdSB0ZWdvIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaTogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05pZSB6ZGVmaW5pb3dhbm8gZGVmaW5pY2ppIGRsYSBrbGFzeSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0VsZW1lbnQga29uZmlndXJhY2ppICIlcyIgbmllIHpvc3RhxYIgem5hbGV6aW9ueSB3IGJhemllIGRhbnljaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOaWUgdWRhxYJvIHNpxJkgdXN1bsSFxIcgZWxlbWVudHUga29uZmlndXJhY2ppIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmllIHpuYWxlemlvbm8gd2Vyc2ppIGRsYSBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhbmkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0JyYWsgZG9zdMSZcHUhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGhpc3RvcmlpLCBuaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOaWUgbW/FvG5hIHd5xZt3aWV0bGnEhyBoaXN0b3JpaSwgbmllIHBvZGFubyBwcmF3IGRvc3TEmXB1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm93eSBlbGVtZW50IGtvbmZpZ3VyYWNqaSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3dhIHdlcnNqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnWmFrdHVhbGl6b3dhbm8gc3RhbiB3ZHJvxbxlbmlhIChub3d5PSVzLCBzdGFyeT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnWmFrdHVhbGl6b3dhbm8gc3RhbiBpbmN5ZGVudHUgKG5vd3k9JXMsIHN0YXJ5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ1VzdW5pxJl0byBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdEb2Rhbm8gbGluayBkbyAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpbmsgZG8gJXMgKHR5cGU9JXMpIHVzdW5pxJl0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnWmFrdHVhbGl6b3dhbm8gZGVmaW5pY2rEmSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYXp3YSB6YWt0dWFsaXpvd2FuYSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyeWJ1dCAlcyB6YWt0dWFsaXpvd2FueSB6ICIlcyIgZG8gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdXZXJzamEgJXMgdXN1bmnEmXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgQ29uZmlnSXRlbUlEIGx1YiBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSwgbmllIHBvZGFubyBwcmF3IGRvc3TEmXB1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuaWUgem9zdGHFgiB6bmFsZXppb255IHcgYmF6aWUgZGFueWNoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3d5ZHJ1a293YW55IHByemV6ICVzIHcgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1BvZHBvd2llZHppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmllcHJhd2lkxYJvd3kgaWRlbnR5ZmlrYXRvciBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOaWUgcHJ6eXpuYW5vIHByYXcgZG9zdMSZcHUgZGxhIHRlaiBrbGFzeSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0JyYWsgV3luaWvDs3chJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnV3luaWtpIHd5c3p1a2l3YW5pYSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmllIG1vxbxuYSB3ecWbd2lldGxpxIcgZWxlbWVudHUsIG5pZSBwb2Rhbm8gcHJhdyBkb3N0xJlwdSBkbyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdOaWUgem5hbGV6aW9ubyBlbGVtZW50dSBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOaWUgem5hbGV6aW9ubyDFvGFkbnljaCB3ZXJzamkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjeWpueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnb3N0cnplxbxlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jeWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW4gd2Ryb8W8ZW5pYSB0ZWdvIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhbiB6ZGFyemVuaWEgdGVnbyBDSSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0JyYWsgdXByYXduaWXFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ciBuaWVwcmF3aWTFgm93eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcmFtZXRyeSB3eXN6dWtpd2FuaWEgc8SFIG5pZXByYXdpZMWCb3dlISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1d5xZt3aWV0bGFuZSBlbGVtZW50eSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIHN0YW51IHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnQWt0dWFsbnkgdHlwIHN0YW51JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1BvbWnEmWR6eSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT2dyYW5pY3plbmlhIGtsYXN5IGRsYSBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1d5YmllcnogamVkbsSFIGx1YiB3acSZY2VqIGtsYXMsIGFieSBvZ3JhbmljennEhyB3eWJpZXJhbmUgZWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPZ3JhbmljemVuaWEga2xhc3kgZGxhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1d5YmllcnogamVkbsSFIGx1YiB3acSZY2VqIGtsYXMsIGFieSBvZ3JhbmljennEhyB3eWJpZXJhbmUgZWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pY3pueSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAod2Vyc2phKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXAgb2Rub8WbbmlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPa3JlxZtsYSwgY3p5IHBvd2nEhXphbmllIGRvdHljenkgQ29uZmlnSXRlbSwgY3p5IHN0YXR5Y3puZWogd2Vyc2ppIG9iaWVrdHUgb2RuaWVzaWVuaWEuIE9ibGljemFuaWUgYmllxbzEhWNlZ28gc3RhbnUgaW5jeWRlbnR1IGplc3Qgd3lrb255d2FuZSB0eWxrbyB3IHByenlwYWRrdSDFgsSFY3p5IGR5bmFtaWN6bnljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdXeWJpZXJ6IGF0cnlidXQsIHdlZMWCdWcga3TDs3JlZ28gYsSZZMSFIHd5c3p1a2l3YW5lIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnU3RydWt0dXJhIGJhem93YSBqZXN0IG5pZXByYXdpZMWCb3dhLiBQb2RhaiBoYXNoIHogZGFueW1pIHcgZm9ybWFjaWUgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdXeW1hZ2FuZSBqZXN0IHJvenBvY3rEmWNpZSBjacSFZ3UgWUFNTCBvZCAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmllIG1vxbxuYSB3eWN6ecWbY2nEhyB0YWJlbGkgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTmllIHpuYWxlemlvbm8gb2Rwb3dpZWRuaWNoIHDDs2wgZHluYW1pY3pueWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmllIG1vxbxuYSB3c3Rhd2nEhyBkbyB0YWJlbGkgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdXc3Rhd2lvbm8gMCB3aWVyc3p5IGRvIHRhYmVsaSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrc3ltYWxuYSBsaWN6YmEgd3lzdMSFcGllxYQgcG9qZWRueWN6ZWdvIGVsZW1ldG50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdDacSFZyB6bmFrw7N3IHdlcnNqaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdCxYLEhWQgc3luY2hyb25pemFjamkgZGVmaW5pY2ppLiBTcHJhd2TFuiBkemllbm5pay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdNYXN6IGRlZmluaWNqZSBJVFNNQ29uZmlnSXRlbSwga3TDs3JlIG5pZSBzxIUgenN5bmNocm9uaXpvd2FuZS4gTmFsZcW8eSB3ZHJvxbx5xIcgem1pYW55IHBvbGEgZHluYW1pY3puZWdvIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnV3lnYXPFgm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdVdHJ6eW1hbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RhxbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5vd2FueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdOYXByYXdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdXeWNvZmFueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQcnplZ2zEhWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1ByemVnbMSFZCBpIHBvdHdpZXJkemVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0b3dhbmllIGtsYXMvcsOzbCBpIHBvd2nEhXphbnljaCB6IG5pbWkgcMOzbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1d5c3TEhXBpxYIgYsWCxIVkIHBvZGN6YXMgaW1wb3J0b3dhbmlhIGtsYXN5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVWtyeXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBwb2themFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxbxsaXdpYSByb3pzemVyem9uZSB3YXJ1bmtpIHd5c3p1a2l3YW5pYSB3IGludGVyZmVqc2llIGFnZW50YS4gRHppxJlraSB0ZWogZnVua2NqaSBtb8W8bmEgd3lzenVraXdhxIcgbnAuIG5henfEmSBlbGVtZW50dSBrb25maWd1cmFjamkgemEgcG9tb2PEhSB0ZWdvIHJvZHphanUgd2FydW5rw7N3LCB0YWtpY2ggamFrICIoKmtleTEqJiYqa2V5MiopIiBsdWIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvGxpd2lhIHJvenN6ZXJ6b25lIHdhcnVua2kgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUga2xpZW50YS4gRHppxJlraSB0ZWogZnVua2NqaSBtb8W8bmEgd3lzenVraXdhxIcgbnAuIG5henfEmSBlbGVtZW50dSBrb25maWd1cmFjamkgemEgcG9tb2PEhSB0ZWdvIHJvZHphanUgd2FydW5rw7N3LCB0YWtpY2ggamFrICIoKmtleTEqJiYqa2V5MiopIiBsdWIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQcnp5cGlzYW5lIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHByenlwaXNhbmkgZG8gZmlybXkga2xpZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHByenlwaXNhbmUgZG8gdcW8eXRrb3duaWthIGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1VzdGF3aWVuaWEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU3ByYXdkemFuaWUgdW5pa2FsbmVqIG5hend5IHR5bGtvIHcgb2JyxJliaWUgdGVqIHNhbWVqIGtsYXN5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIGx1YiBnbG9iYWxuaWUgKCJnbG9iYWwiKSwgY28gb3puYWN6YSwgxbxlIGthxbxkeSBpc3RuaWVqxIVjeSBDb25maWdJdGVtIGplc3QgYnJhbnkgcG9kIHV3YWfEmSBwb2RjemFzIHd5c3p1a2l3YW5pYSBkdXBsaWthdMOzdy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBuYXpld25pY3R3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBsaWN6Ym93eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnV3liaWVyeiBtb2R1xYIsIGFieSB3eW11c2nEhyBzY2hlbWF0IGNpxIVnw7N3IHdlcnNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdXeWJpZXJ6IGF0cnlidXR5LCBhYnkgdXJ1Y2hvbWnEhyB0d29yemVuaWUgbm93ZWogd2Vyc2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdXeWJpZXJ6IGthdGVnb3JpZSwga3TDs3JlIGNoY2VzeiBwcnp5cGlzYcSHIGRvIHRlaiBrbGFzeSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cnkga29sdW1uIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGRsYSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sdW1ueSwga3TDs3JlIG1vxbxuYSBmaWx0cm93YcSHIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLiBVd2FnYTogRG96d29sb25lIHPEhSB0eWxrbyBhdHJ5YnV0eSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSBpIHBvbGEgZHluYW1pY3puZSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdEb2RhbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZHljamEgZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHXFgiB6ZGFyemXFhCBlbGVtZW50dSBrb25maWd1cmFjamksIGt0w7NyeSB1bW/FvGxpd2lhIHJlamVzdHJvd2FuaWUgZG8gaGlzdG9yaWkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHXFgiB6ZGFyemXFhCBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSwga3TDs3J5IGFrdHVhbGl6dWplIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSBkbyBpY2ggYmllxbzEhWNlaiBkZWZpbmljamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1d5ZHJ1ayBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnUG93acSZa3N6ZW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnV2lkb2sgZHJ6ZXdhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBuYXN0xJlwdWrEhWN5Y2gga2xhcyBuaWUgYsSZZMSFIHByemVjaG93eXdhbmUgbmEgc2Vyd2VyemUgRWxhc3RpY3NlYXJjaC4gQWJ5IHphc3Rvc293YcSHIHRvIGRvIGlzdG5pZWrEhWN5Y2ggQ0ksIG1pZ3JhY2phIENJIG11c2kgem9zdGHEhyB1cnVjaG9taW9uYSB6YSBwb8WbcmVkbmljdHdlbSBrb25zb2xpLCBwbyB6bWlhbmllIHRlaiBvcGNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnRWxlbWVudHkgQ29uZmlnSXRlbXMgeiBuYXN0xJlwdWrEhWN5bWkgc3RhbmFtaSB3ZHJvxbxlbmlhIG5pZSBixJlkxIUgcHJ6ZWNob3d5d2FuZSBuYSBzZXJ3ZXJ6ZSBFbGFzdGljc2VhcmNoLiBBYnkgemFzdG9zb3dhxIcgdG8gZG8gaXN0bmllasSFY3ljaCBDSSwgbWlncmFjamEgQ0kgbXVzaSB6b3N0YcSHIHVydWNob21pb25hIHphIHBvxZtyZWRuaWN0d2VtIGtvbnNvbGksIHBvIHptaWFuaWUgdGVqIG9wY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdCBsaWN6YnkgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0IHBvenljamkga29uZmlndXJhY2ppIG5hIHN0cm9uxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXphIGRhbnljaCB6YXJ6xIVkemFuaWEga29uZmlndXJhY2rEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ01vZHXFgiB6YmlvcmN6eSBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnQga29uZmlndXJhY2ppIHd5c3p1a2l3YW5pYSByb3V0ZXJhIHphcGxlY3phIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVHdvcnplbmllIGkgemFyesSFZHphbmllIGRlZmluaWNqYW1pIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1R3b3J6eSBiaWxldHkgZGxhIENvbmZpZ0l0ZW1zIHcgb2tyZcWbbG9ueWNoIHB1bmt0YWNoIGN6YXNvd3ljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xpZW5jaSBtb2fEhSB6b2JhY3p5xIcgaGlzdG9yeWN6bmUgd2Vyc2plIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGllbmNpIG1hasSFIG1vxbxsaXdvxZvEhyByxJljem5lZ28gcHJ6ZcWCxIVjemFuaWEgc2nEmSBtacSZZHp5IGhpc3Rvcnljem55bWkgd2Vyc2phbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRG9tecWbbG5lIGRhbmUgZG8gdcW8eWNpYSB3IGF0cnlidWNpZSBkbGEgZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4gUHJ6eWvFgmFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RvbXnFm2xuZSBkYW5lIGRvIHXFvHljaWEgdyBhdHJ5YnVjaWUgZGxhIGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuIFByenlrxYJhZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBha2NqZSwgdyBrdMOzcnljaCBwcnp5Y2lzayB1c3Rhd2llxYQgamVzdCBkb3N0xJlwbnkgdyB3aWTFvGVjaWUgcG/FgsSFY3pvbnljaCBvYmlla3TDs3cgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgdGUgYWtjamUgbXVzesSFIG1pZcSHIHphcmVqZXN0cm93YW5lIG5hc3TEmXB1asSFY2UgcGxpa2kgSlMgaSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pdWplIHNjaGVtYXQgVGVtcGxhdGU6OlRvb2xraXQgZGxhIGNpxIVnw7N3IHdlcnNqaS4gVcW8eXdhbmUgdHlsa28gamXFm2xpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBqZXN0IHVzdGF3aW9ueSBuYSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbml1amUgemVzdGF3IHdhcnVua8OzdywgbmEgcG9kc3Rhd2llIGt0w7NyeWNoIGtsaWVudCBtb8W8ZSB6b2JhY3p5xIcgZWxlbWVudCBrb25maWd1cmFjamkuIFdhcnVua2kgbW9nxIUgYnnEhyBvcGNqb25hbG5pZSBvZ3Jhbmljem9uZSBkbyBva3JlxZtsb255Y2ggZ3J1cCBrbGllbnTDs3cuIE5hendhIGplc3QgamVkeW55bSBvYm93acSFemtvd3ltIGF0cnlidXRlbS4gSmXFm2xpIG5pZSBwb2Rhbm8gxbxhZG55Y2ggaW5ueWNoIG9wY2ppLCB3c3p5c3RraWUgZWxlbWVudHkga29uZmlndXJhY2ppIGLEmWTEhSB3aWRvY3puZSB3IHRlaiBrYXRlZ29yaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSB3eW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB1c3V3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHByenkgdcW8eWNpdSBpbnRlcmZlanN1IG9nw7NsbmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3eW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB1enlza2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHByenkgdcW8eWNpdSBpbnRlcmZlanN1IG9nw7NsbmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3eW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSBwcnp5IHXFvHljaXUgaW50ZXJmZWpzdSBvZ8OzbG5lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml1amUgd3ltYWdhbmUgdXByYXduaWVuaWEgZG8gdXN0YXdpYW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHByenkgdcW8eWNpdSBpbnRlcmZlanN1IG9nw7NsbmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pdWplIG1vZHXFgiBwcnplZ2zEhWR1IGRvIHd5xZt3aWV0bGFuaWEgbWHFgmVnbyB3aWRva3UgbGlzdHkgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBjenkgZXR5a2lldHkgdHlwdSDFgsSFY3phIG11c3rEhSBiecSHIHd5xZt3aWV0bGFuZSB3IHBvxYLEhWN6ZW5pYWNoIHfEmXrFgsOzdy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3eXJhxbxlbmlhIHJlZ3VsYXJuZSBpbmR5d2lkdWFsbmllIGRsYSBrYcW8ZGVqIGtsYXN5IENvbmZpZ0l0ZW0gdyBjZWx1IHNwcmF3ZHplbmlhIG5hend5IENvbmZpZ0l0ZW0gaSB3ecWbd2lldGxlbmlhIG9kcG93aWVkbmljaCBrb211bmlrYXTDs3cgbyBixYLEmWRhY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvc3TEmXBuZSBrb2x1bW55IENJIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIHNrxYJhZGHEhyBzacSZIHogbmF6d3kga2xhc3kgaSB0YWJsaWN5IGRvc3TEmXBueWNoIHDDs2wgZGxhIG9kcG93aWVkbmllaiBrbGFzeS4gV3Bpc3kgcMOzbCBkeW5hbWljem55Y2ggbXVzesSFIGJ5xIcgemdvZG5lIHplIHNjaGVtYXRlbSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xueSBhdHJ5YnV0IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBkbGEgc29ydG93YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHd5bmlrYWNoIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbnkgYXRyeWJ1dCBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSBkbGEgc29ydG93YW5pYSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSB3IHd5bmlrYWNoIHd5c3p1a2l3YW5pYSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG55IGF0cnlidXQgZWxlbWVudHUga29uZmlndXJhY2ppIGRsYSBzb3J0b3dhbmlhIHd5bmlrw7N3IHd5c3p1a2l3YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgdGVqIG9wZXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG7EhSBrb2xlam5vxZvEhyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHd5bmlrYWNoIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IGludGVyZmVqc2llIGFnZW50YS4gVyBnw7NyxJk6IG5hanN0YXJzenkgbmEgZ8OzcnplLiBXIGTDs8WCOiBuYWpub3dzemUgbmEgZ8OzcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG7EhSBrb2xlam5vxZvEhyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHd5bmlrYWNoIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IGludGVyZmVqc2llIGtsaWVudGEuIFcgZ8OzcsSZOiBuYWpzdGFyc3plIG5hIGfDs3J6ZS4gVyBkw7PFgjogbmFqbm93c3plIG5hIGfDs3J6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbmllIHd5xZt3aWV0bGFuZSBrb2x1bW55IENJIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIHNrxYJhZGHEhyBzacSZIHogbmF6d3kga2xhc3kgaSB0YWJsaWN5IGRvc3TEmXBueWNoIHDDs2wgZGxhIG9kcG93aWVkbmllaiBrbGFzeS4gV3Bpc3kgcMOzbCBkeW5hbWljem55Y2ggbXVzesSFIGJ5xIcgemdvZG5lIHplIHNjaGVtYXRlbSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdPa3JlxZtsYSBkb215xZtsbsSFIGfFgsSZYm9rb8WbxIcgd3nFm3dpZXRsYW55Y2ggcmVsYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgZG9tecWbbG5pZSB3ecWbd2lldGxhbnkgYXRyeWJ1dCB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgZGxhIGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbmllIHd5xZt3aWV0bGFueSBhdHJ5YnV0IHd5c3p1a2l3YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgZGxhIGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudHUga29uZmlndXJhY2ppLiBQcnp5a8WCYWQ6ICJLbHVjeiIgbXVzaSBtaWXEhyBuYXp3xJkgcG9sYSBkeW5hbWljem5lZ28sIHcgdHltIHByenlwYWRrdSAiWCIsICJaYXdhcnRvxZvEhyIgbXVzaSBtaWXEhyB3YXJ0b8WbxIcgcG9sYSBkeW5hbWljem5lZ28gdyB6YWxlxbxub8WbY2kgb2QgdHlwdSBwb2xhIGR5bmFtaWN6bmVnbywgVGVrc3Q6ICJ0ZWtzdCIsIExpc3RhIHJvendpamFuYTogIjEiLCBEYXRhL2dvZHppbmE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBpIGx1YiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9tecWbbG55IHBvZG9iaWVrdCBrbGFzeSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvc3TEmXBuZSBrb2x1bW55IENJIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIHNrxYJhZGHEhyBzacSZIHogbmF6d3kga2xhc3kgaSB0YWJsaWN5IGRvc3TEmXBueWNoIHDDs2wgZGxhIG9kcG93aWVkbmllaiBrbGFzeS4gV3Bpc3kgcMOzbCBkeW5hbWljem55Y2ggbXVzesSFIGJ5xIcgemdvZG5lIHplIHNjaGVtYXRlbSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdPa3JlxZtsYSB3eXNva2/Fm8SHIGVsZW1lbnR1IGVkeXRvcmEgdGVrc3R1IHNmb3JtYXRvd2FuZWdvIGRsYSB0ZWdvIGVrcmFudS4gV3Byb3dhZMW6IGxpY3pixJkgKHBpa3NlbGUpIGx1YiB3YXJ0b8WbxIcgcHJvY2VudG93xIUgKHd6Z2zEmWRuxIUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPa3JlxZtsYSBsaWN6YsSZIHdpZXJzenkgZWR5dG9yYSBkZWZpbmljamkgQ0kgdyBpbnRlcmZlanNpZSBhZG1pbmlzdHJhdG9yYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT2tyZcWbbGEga29sZWpub8WbxIcgc3RhbsOzdyB6ZGFyemVuaWEgb2Qgd3lzb2tpZWdvIChucC4gc3RhbiBrcnl0eWN6bnkpIGRvIG5pc2tpZWdvIChucC4gc3RhbiBmdW5rY2pvbmFsbnkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBvZHBvd2llZG5pZSBzdGFueSB3ZHJvxbxlbmlhLCB3IGt0w7NyeWNoIHBvd2nEhXphbmUgemfFgm9zemVuaWEgbW9nxIUgd3DFgnl3YcSHIG5hIHN0YW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgbGltaXQgd3lzenVraXdhbmlhIGRsYSBla3JhbnUgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBsaW1pdCB3eXN6dWtpd2FuaWEgZGxhIGVrcmFudSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGxpbWl0IHd5c3p1a2l3YW5pYSBkbGEgZWtyYW51IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgbGltaXQgd3lzenVraXdhbmlhIGRsYSBla3JhbnUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnT2tyZcWbbGEgd3nFm3dpZXRsYW5lIGtvbHVtbnkgQ0kgdyB3aWRva3UgesWCb8W8b255bSB0YWJlbGkgbGlua8OzdyBkbGEgd3N6eXN0a2ljaCBrbGFzIENJLiBKZcWbbGkgbmllIG1hIHdwaXN1LCB3ecWbd2lldGxhbmUgc8SFIGtvbHVtbnkgZG9tecWbbG5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5xZt3aWV0bGFuZSBrb2x1bW55IENJIHcgd2lkb2t1IHrFgm/FvG9ueW0gdGFiZWxpIGxpbmvDs3csIHcgemFsZcW8bm/Fm2NpIG9kIGtsYXN5IENJLiBLYcW8ZHkgd3BpcyBtdXNpIGJ5xIcgcG9wcnplZHpvbnkgbmF6d8SFIGtsYXN5IGkgcG9kd8Ozam55bWkgZHd1a3JvcGthbWkgKG5wLiBDb21wdXRlcjo6KS4gSXN0bmllamUga2lsa2EgYXRyeWJ1dMOzdyBDSSwga3TDs3JlIHPEhSB3c3DDs2xuZSBkbGEgd3N6eXN0a2ljaCBDSSAocHJ6eWvFgmFkIGRsYSBrbGFzeSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gQWJ5IHd5xZt3aWV0bGnEhyBwb3N6Y3plZ8OzbG5lIGF0cnlidXR5IENJIHpkZWZpbmlvd2FuZSB3IGRlZmluaWNqaSBDSSwgbmFsZcW8eSB1xbx5xIcgbmFzdMSZcHVqxIVjZWdvIHNjaGVtYXR1IChwcnp5a8WCYWQgZGxhIGtsYXN5IENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEplxZtsaSBuaWUgbWEgd3Bpc3UgZGxhIGtsYXN5IENJLCB3ecWbd2lldGxhbmUgc8SFIGtvbHVtbnkgZG9tecWbbG5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcmUgZWxlbWVudHkgc8SFIGRvc3TEmXBuZSBkbGEgIkFjdGlvbiIgbmEgdHJ6ZWNpbSBwb3ppb21pZSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGt0w7NyZSBlbGVtZW50eSBzxIUgZG9zdMSZcG5lIG5hIHBpZXJ3c3p5bSBwb3ppb21pZSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcmUgZWxlbWVudHkgc8SFIGRvc3TEmXBuZSBuYSBkcnVnaW0gcG96aW9taWUgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3J5IHR5cCBwb3dpxIV6YW5pYSAobmF6d2FueSB6IHBlcnNwZWt0eXd5IHpnxYJvc3plbmlhKSBtb8W8ZSB3cMWCeXdhxIcgbmEgc3RhdHVzIHBvd2nEhXphbmVnbyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3J5IHR5cCB6Z8WCb3N6ZW5pYSBtb8W8ZSB3cMWCeXdhxIcgbmEgc3RhdHVzIHBvd2nEhXphbmVnbyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpemFjamEgZGVmaW5pY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdVc3XFhCBlbGVtZW50IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0tvbG9yIHN0YW51IHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdcWCIHpkYXJ6ZcWEIHDDs2wgZHluYW1pY3pueWNoLCBrdMOzcnkgb3puYWN6YSBkZWZpbmljamUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgamFrbyBuaWV6c3luY2hyb25pem93YW5lLCBqZcWbbGkgemF3aWVyYWrEhWNlIGplIHBvbGEgZHluYW1pY3puZSB1bGVnbsSFIHptaWFuaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb2xhIGR5bmFtaWN6bmUgd3nFm3dpZXRsYW5lIG5hIGVrcmFuaWUgZG9kYXRrb3d5Y2ggcMOzbCBJVFNNIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljem5lIHBvbGEgd3nFm3dpZXRsYW5lIG5hIGVrcmFuaWUgcHJ6ZWdsxIVkdSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWN6bmUgcG9sYSB3ecWbd2lldGxhbmUgbmEgZWtyYW5pZSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjasSZIG1hc293ZWogYWtjamkgZWxlbWVudHUga29uZmlndXJhY2ppIGRsYSBpbnRlcmZlanN1IGFnZW50YSwgYWJ5IHByYWNvd2HEhyBuYSB3acSZY2VqIG5pxbwgamVkbnltIGVsZW1lbmNpZSBrb25maWd1cmFjamkgbmFyYXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdXxYLEhWN6YSBmdW5rY2rEmSBha2NqaSB6YmlvcmN6ZWogZWxlbWVudHUga29uZmlndXJhY2ppIHR5bGtvIGRsYSB3eW1pZW5pb255Y2ggZ3J1cC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdcWCIHpkYXJ6ZcWEIGRvIHVzdGF3aWFuaWEgc3RhdHVzdSBlbGVtZW50dSBrb25maWd1cmFjamkgbmEgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnUG9sYSBpbmRla3N1IHBvenljamkga29uZmlndXJhY2ppLCB1xbx5d2FuZSBkbyB3eXN6dWtpd2FuaWEgcGXFgm5vdGVrc3Rvd2Vnby4gUG9sYSBzxIUgcsOzd25pZcW8IHByemVjaG93eXdhbmUsIGFsZSBuaWUgc8SFIG9ib3dpxIV6a293ZSBkbGEgb2fDs2xuZWogZnVua2Nqb25hbG5vxZtjaS4gRG/FgsSFY3phbmllIHphxYLEhWN6bmlrw7N3IG1vxbxuYSB3ecWCxIVjennEhywgdXN0YXdpYWrEhWMgd2FydG/Fm8SHIHdwaXN1IG5hIDAgbHViIHVzdXdhasSFYyBnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGEgcHJ6ZWNob3d5d2FuZSB3IGluZGVrc2llIHBvenljamkga29uZmlndXJhY2ppLCBrdMOzcmUgc8SFIHd5a29yenlzdHl3YW5lIGRvIGlubnljaCBjZWzDs3cgbmnFvCB3eXN6dWtpd2FuaWUgcGXFgm5vdGVrc3Rvd2UuIERsYSBwZcWCbmVqIGZ1bmtjam9uYWxub8WbY2kgd3N6eXN0a2llIHBvbGEgc8SFIG9ib3dpxIV6a293ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWplc3RyYWNqYSBtb2R1xYJ1IEdlbmVyaWNJbnRlcmZhY2UgZGxhIHdhcnN0d3kgd3l3b8WCdWrEhWNlaiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVqZXN0cmFjamEgbW9kdcWCdSBHZW5lcmljSW50ZXJmYWNlIGRsYSB3YXJzdHd5IHd5d2/FgnVqxIVjZWogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWplc3RyYWNqYSBtb2R1xYJ1IEdlbmVyaWNJbnRlcmZhY2UgZGxhIHdhcnN0d3kgd3l3b8WCdWrEhWNlaiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByemVnbMSFZCBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09iZWptdWplIHN0YW55IHdkcm/FvGVuaWEgdyB3eXN6dWtpd2FuaXUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPYmVqbXVqZSBzdGFueSBpbmN5ZGVudMOzdyB3IHd5c3p1a2l3YW5pdSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01ha3N5bWFsbmEgbGljemJhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGRvIHd5xZt3aWV0bGVuaWEgdyB3eW5pa3UgdGVqIG9wZXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHXFgiBzcHJhd2R6YWrEhWN5IGdydXDEmSBvZHBvd2llZHppYWxuxIUgemEga2xhc8SZLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHXFgiBkbyBzcHJhd2R6YW5pYSBncnVweSBvZHBvd2llZHppYWxuZWogemEgZWxlbWVudCBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdcWCIGRvIGdlbmVyb3dhbmlhIHN0YXR5c3R5ayBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hendhIG1vZHXFgnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ01vZHXFgiBudW1lcnljem55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpY3piYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3ecWbd2lldGxhbnljaCBuYSBrYcW8ZGVqIHN0cm9uaWUgd3luaWvDs3cgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaWN6YmEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgd3nFm3dpZXRsYW55Y2ggbmEga2HFvGRlaiBzdHJvbmllIHd5bmlrw7N3IHd5c3p1a2l3YW5pYSB3IGludGVyZmVqc2llIGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iaWVrdHkgZG8gd3lzenVrYW5pYSwgaWxlIHdwaXPDs3cgaSBrdMOzcmUgYXRyeWJ1dHkgcG9rYXphxIcuIEF0cnlidXR5IENvbmZpZ0l0ZW0gbXVzesSFIGJ5xIcgamF3bmllIHByemVjaG93eXdhbmUgcHJ6ZXogRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUHJ6ZWdsxIVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGRsYSBrYXRlZ29yaWkga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIGZpbHRyw7N3IGtvbHVtbiB3IG1hxYJ5bSBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkuIFV3YWdhOiB1c3Rhd2llbmllICJBY3RpdmUiIG5hIDAgdW5pZW1vxbxsaXdpIGFnZW50b20gZWR5Y2rEmSB1c3Rhd2llxYQgdGVqIGdydXB5IHcgaWNoIG9zb2Jpc3R5Y2ggcHJlZmVyZW5jamFjaCwgYWxlIG5hZGFsIHBvendvbGkgYWRtaW5pc3RyYXRvcm9tIGVkeXRvd2HEhyB1c3Rhd2llbmlhIHcgaW1pZW5pdSBpbm5lZ28gdcW8eXRrb3duaWthLiBVxbx5aiAiUHJlZmVyZW5jZUdyb3VwIiwgYWJ5IGtvbnRyb2xvd2HEhywgdyBrdMOzcnltIG9ic3phcnplIHRlIHVzdGF3aWVuaWEgcG93aW5ueSBiecSHIHd5xZt3aWV0bGFuZSB3IGludGVyZmVqc2llIHXFvHl0a293bmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkga29sb3LDs3cgc3RhbsOzdyB3ZHJvxbxlbmlhIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBzdGFuw7N3IHdkcm/FvGVuaWEgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgcHJ6eWvFgmFkb3d5Y2ggZ3J1cCB1cHJhd25pZcWEIGF0cnlidXTDs3cga2F0YWxvZ3UgZ8WCw7N3bmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgbW9kdcWCdSBuYXp3eSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgbW9kdcWCdSBsaWN6YnkgZGxhIGtsYXMgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgc3Ryb24gKG5hIGt0w7NyeWNoIHd5xZt3aWV0bGFuZSBzxIUgZWxlbWVudHkga29uZmlndXJhY2ppKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGRsYSBtb2R1xYJ1IMWCYcWEY3VjaGEgd2Vyc2ppIGRsYSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgbW9kdcWCdSBzemFibG9udSDFgmHFhGN1Y2hhIHdlcnNqaSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHd5endhbGFjemEgd2Vyc2ppIGRsYSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBhIFVwcmF3bmllxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGFrY2ppIGRvxYLEhWN6YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSB3aWRva3UgZHJ6ZXdhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IHBvd2nEmWtzemVuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZG9kYXdhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBlbGVtZW50dSBrb25maWd1cmFjamkgemJpb3JjemVqIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwcmF3bmllbmlhIHd5bWFnYW5lIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGVkeWNqaSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXByYXduaWVuaWEgd3ltYWdhbmUgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gaGlzdG9yaWkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBkcnVrb3dhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8gdXN1d2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnV3lzenVrYWogZWxlbWVudHkga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnVXN0YXcgc3RhbiBpbmN5ZGVudHUgQ0kgYXV0b21hdHljem5pZSwgZ2R5IFRpY2tldCBqZXN0IHBvd2nEhXphbnkgeiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIHN0YW4gd2Ryb8W8ZW5pYSBuYSBla3JhbmllIHpiaW9yY3p5bSBlbGVtZW50dSBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VzdGF3aWEgc3RhbiB6ZGFyemVuaWEgbmEgZWtyYW5pZSB6YmlvcmN6eW0gZWxlbWVudHUga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUsIGt0w7NyZSB1bW/FvGxpd2lhIHBvd2nEhXphbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB6IGlubnltIG9iaWVrdGVtIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIGRvc3TEmXAgZG8gaGlzdG9yaWkgZWxlbWVudHUga29uZmlndXJhY2ppIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBkb3N0xJlwIGRvIGhpc3RvcmlpIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIHVzdW5pxJljaWUgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51LCBhYnkgd3nFm3dpZXRsacSHIMWCxIVjemEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgZHJ6ZXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgZG8gZHVwbGlrb3dhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB3IGNlbHUgcG93aWVsZW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgdyB3aWRva3UgcG93acSZa3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIGVkeWNqxJkgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBwb3dyw7N0IGRvIHdpZG9rdSBwb3dpxJlrc3plbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSB3eWRydWtvd2FuaWUgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgcG93acSZa3N6ZW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgaGlzdG9yacSZIGVsZW1lbnTDs3cga29uZmlndXJhY2ppICh3IG9kd3JvdG5laiBrb2xlam5vxZtjaSkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RvbXnFm2xuYSBrYXRlZ29yaWEsIGt0w7NyYSBqZXN0IHd5xZt3aWV0bGFuYSwgamXFm2xpIG5pZSB3eWJyYW5vIMW8YWRuZWouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudHlmaWthdG9yIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSwgbnAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBEb215xZtsbmllIGplc3QgdG8gQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbWF0eWN6bmllIHVydWNoYW1pYSB3eXdvxYJhbmllIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnV2Vyc2phIFd5cmHFvGVuaWUgxYJhxYRjdWNob3dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ01vZHXFgiBjacSFZ3Ugd2Vyc2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1d5endhbGFjeiB3ZXJzamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0N6eSBtb8W8bmEgdW5pa27EhcSHIHd5a29uYW5pYSBDb25maWdJdGVtQUNMIHBvcHJ6ZXogc3ByYXdkemVuaWUgemFsZcW8bm/Fm2NpIHDDs2wgdyBwYW1pxJljaSBwb2RyxJljem5lai4gTW/FvGUgdG8gcG9wcmF3acSHIGN6YXMgxYJhZG93YW5pYSBmb3JtdWxhcnp5LCBhbGUgbXVzaSBiecSHIHd5xYLEhWN6b25lLCBqZcWbbGkgQUNMTW9kdWxlcyBtYWrEhSBiecSHIHXFvHl3YW5lIGRsYSBJVFNNQ29uZmlnSXRlbS0gaSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnSW5mb3JtYWNqZSBvZ8OzbG5lIHPEhSB3ecWbd2lldGxhbmUgdyBuYWfFgsOzd2t1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbG55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a2N5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcnplZHByb2R1a2N5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0eXdueSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBjYWxhICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgY2FsaSAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IGNhbGEgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgY2FsYSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LWNhbG93eSBzdG9qYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGNhbGEgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgY2FsaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtY2Fsb3d5IHN0b2phayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgY2FsYSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLWNhbG93eSBzdG9qYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGNhbGEgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGNhbGUgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGNhbGEgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBjYWxhICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGNhbGEgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGNhbGEgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IGNhbGEgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGNhbGEgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGNhbGUgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBjYWxhICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgY2FsYSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IGNhbGEgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IGNhbGEgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgY2FsYSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBjYWxhICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgY2FsYSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGNhbGUgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBjYWxpICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBjYWxhICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBjYWxhICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGNhbGEgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgY2FsaSAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBjYWxhICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdLc2nEmWdvd2/Fm8SHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnUHJ6eWR6aWHFgiBhZHJlc8Ozdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlZm9uIGFuYWxvZ293eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cCB1cnrEhWR6ZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ1BvamVtbm/Fm8SHIGFrdW11bGF0b3JhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwIGFrdW11bGF0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnVkeW5layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmZWpzIG1hZ2lzdHJhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0tsYXNhIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnUG9qZW1ub8WbxIcgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ1BvamVtbm/Fm8SHIG5hIGthcnTEmSBncmFmaWN6bsSFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTnVtZXIga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdDenl0bmlrIGthcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0eWZpa2F0eSBrbGllbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ09wcm9ncmFtb3dhbmllIGtsaWVuY2tpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLYXRlZ29yaWEga2xpZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnR5ZmlrYXR5IHBvZHBpc3l3YW5pYSBrb2R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWxlZm9uIGtvbmZlcmVuY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdVbW93YSBrb25zdWx0aW5nb3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IHogZHlzdHJ5YnV0b3JlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1phcnrEhWR6YW5pZSBrb250ZW5lcmFtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1Vtb3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXAgdW1vd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdPa3JlcyBvYm93acSFenl3YW5pYSB1bW93eSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdPa3JlcyBvYm93acSFenl3YW5pYSB1bW93eSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWxlZm9uIGJlenByemV3b2Rvd3kgKHRlbGVmb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnSmVkbm9zdGthIGtvc3p0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0xpY3piYSBsaWNlbmNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSB1dHdvcnplbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdOaWVzdGFuZGFyZG93eSBzdG9qYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgWmFyZXplcndvd2FuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2Vyd2VyIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBmYWt0dXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRhIHphbcOzd2llbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGd3YXJhbmNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRhIHd5ZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnR5ZmlrYXR5IHBvZHBpc3l3YW5pYSBkb2t1bWVudMOzdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ1N0b2phayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0eWZpa2F0eSBwb2N6dHkgZS1tYWlsIChjZXJ0eWZpa2F0eSBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1Vtb3dhIG8gcHJhY8SZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS2/FhGNvd3kgYWRyZXMgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdLb25pZWMgd3NwYXJjaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRhIHd5Z2HFm25pxJljaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ1pld27EmXRyem55IGR5c2sgdHdhcmR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdPcHJvZ3JhbW93YW5pZSB1a8WCYWRvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdNYWdhenlub3dhbmllIGVuZXJnaWkgdyBrb2xlIHphbWFjaG93eW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdXc3DDs8WCY3p5bm5payBrc3p0YcWCdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ1Vtb3dhIGZyYW5jenl6eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgb2fDs2xuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0thcnR5IGdyYWZpY3puZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnS2FydGEgZ3JhZmljem5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnU3ByesSZdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsIHNwcnrEmXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1dhZ2Egc3ByesSZdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ1plc3RhdyBzxYJ1Y2hhd2tvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2vDs8WCIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1phcnrEhWR6YW5pZSB0b8W8c2Ftb8WbY2nEhSBpIGRvc3TEmXBlbSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtZXIgaW53ZW50YXJ6b3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW1lciBmYWt0dXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhd2lhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAod3nFm3dpZXRsYWN6IGNpZWvFgm9rcnlzdGFsaWN6bnkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoZGlvZGEgZWxla3Ryb2x1bWluZXNjZW5jeWpuYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZWZvbiBzdGFjam9uYXJueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdTemVyb2tvxZvEhyBnZW9ncmFmaWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdXYXJzdHdhIDE6IFdhcnN0d2EgZml6eWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnV2Fyc3R3YSAyOiBXYXJzdHdhIMWCxIVjemEgZGFueWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdXYXJzdHdhIDM6IFdhcnN0d2Egc2llY2lvd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnV2Fyc3R3YSAzOiBXYXJzdHdhIHNpZWNpb3dhIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnV2Fyc3R3YSA0OiBXYXJzdHdhIHRyYW5zcG9ydG93YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnV2Fyc3R3YSA1OiBXYXJzdHdhIHNlc2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1dhcnN0d2EgNjogV2Fyc3R3YSBwcmV6ZW50YWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ1dhcnN0d2EgNzogV2Fyc3R3YSBhcGxpa2FjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnVW1vd2EgbmFqbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdVbW93YSBsaWNlbmN5am5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdLbHVjeiBsaWNlbmN5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cCBsaWNlbmNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnT2tyZXMgbGljZW5jamkgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdPa3JlcyBsaWNlbmNqaSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQWt1bXVsYXRvciBsaXRvd28txbxlbGF6b3dvLWZvc2ZvcmFub3d5IChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQWt1bXVsYXRvciBsaXRvd28tam9ub3d5IChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnVW1vd2EgcG/FvHljemtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdabmFqZHVqZSBzacSZIHcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnRMWCdWdvxZvEhyBnZW9ncmFmaWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdWNlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01ha3N5bWFsbmUgb2JjacSFxbxlbmllIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdQYW1pxJnEhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cCBwYW1pxJljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOdW1lciB0ZWxlZm9udSBrb23Ds3Jrb3dlZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxlL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdPcGlzIG1vZGVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSb3pkemllbGN6b8WbxIcgbW9uaXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnUm96bWlhciBtb25pdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ015c3prYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnU2llxIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYWNqZSBvIHNpZWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2plIG8gc2llY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1dhcnN0d2Egc2llY2lvd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdBa3VtdWxhdG9yIG5pa2xvd28ta2FkbW93eSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdBa3VtdWxhdG9yIG5pa2xvd28td29kb3Jrb3d5IChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdVbW93YSBvIHphY2hvd2FuaXUgcG91Zm5vxZtjaSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGF0bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTGljemJhIHByb2Nlc29yw7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0xpY3piYSBtb2R1xYLDs3cgcGFtacSZY2kgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0xpY3piYSBrYXJ0IGdyYWZpY3pueWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKG9yZ2FuaWN6bmEgZGlvZGEgZWxla3Ryb2x1bWluZXNjZW5jeWpuYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnS29zenR5IG9wZXJhY3lqbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTnVtZXIgemFtw7N3aWVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdJbm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdXeWrFm2NpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdVbW93YSBwYXJ0bmVyc2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTnVtZXIgdGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cCB0ZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ1JkemVuaWUgZml6eWN6bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdaYXNpbGFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdaYWt1cGlvbmUgdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnR8WCxJlib2tvxZvEhyBzdG9qYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmVnYcWCeSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1Bva8Ozaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0thcnRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnR5ZmlrYXR5IFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdVbW93YSBzcHJ6ZWRhxbx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbGVmb24gc2F0ZWxpdGFybnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVXN6Y3plbG5pb255IGFrdW11bGF0b3Iga3dhc293by1vxYJvd2lvd3kgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOdW1lciBzZXJ5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ09wcm9ncmFtb3dhbmllIHNlcndlcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdVbW93YSBvIMWbd2lhZGN6ZW5pZSB1c8WCdWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdabmFjem5payB1c8WCdWdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cCBnbmlhemRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnT3Byb2dyYW1vd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdHxYJvxZtuaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdQb2N6xIV0a293eSBhZHJlcyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnUHJ6ZWNob3d5d2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0eWNqYSBwYW1pxJljaSBtYXNvd2VqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnSmVkbm9zdGthIHphbGXFvG5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdQb2RzdW1vd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDaWVua2kga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdOaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0NhxYJrb3dpdGEgcGFtacSZxIcgUkFNIGthcnR5IGdyYWZpY3puZWogKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ0NhxYJrb3dpdGEgcGFtacSZxIcgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgeiBla3JhbmVtIGRvdHlrb3d5bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1dpZcW8YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnS29uY2VudHJhdG9yIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1plc3RhdyBzxYJ1Y2hhd2tvd3kgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWZvbiBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdLYW1lcmEgaW50ZXJuZXRvd2EnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/pt_BR_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYWRvcyBnZXJhaXMgZGUgb3BlcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnQ29uZmlndXJhw6fDtWVzIHBhcmEgZGFkb3MgZGUgc29saWNpdGHDp8OjbyBkZSBlbnRyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnQ29uZmlndXJhw6fDtWVzIHBhcmEgZGFkb3MgZGUgcmVzcG9zdGEgZGUgc2HDrWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ011ZGFyIGRlZmluacOnw6NvIGRlIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnQWx0ZXJhciBhIGRlZmluacOnw6NvIGRhIGZ1bsOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFjb3RlcyBkZSBjbGFzc2VzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0FxdWkgdm9jw6ogcG9kZSBpbXBvcnRhciBvcyBwYWNvdGVzIGRlIGNsYXNzZXMgZG8gUmVhZHkySW1wb3J0IHF1ZSBhcHJlc2VudGFtIG5vc3NvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBtYWlzIGNvbXVucy4gT2JzZXJ2ZSBxdWUgcG9kZSBzZXIgbmVjZXNzw6FyaWEgYWxndW1hIGNvbmZpZ3VyYcOnw6NvIGFkaWNpb25hbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXR1YWxpemFyIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgb3MgcGFjb3RlcyBkZSBjbGFzc2VzIGRvIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc3NlIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0Z1bsOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjaW9uZSB1bWEgY2xhc3NlIGEgcGFydGlyIGRhIGxpc3RhIHBhcmEgY3JpYXIgdW0gbm92byBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0HDp8OjbyBlbSBNYXNzYSBlbSBJQ3MgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0Fzc29jaWFyIGEgb3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ07Dum1lcm8gZGUgSXRlbSBkZSBDb25maWd1cmHDp8OjbyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ08gbsO6bWVybyBkZSBvdXRybyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIHBhcmEgYXNzb2NpYXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRGVzZWphIHJlYWxtZW50ZSBleGNsdWlyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBub21lIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05vbWUgasOhIGVtIHVzbyBwZWxvcyBJQ3MgY29tIG9zIHNlZ3VpbnRlcyBOw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvIGRlc3NlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG7Dum1lcm8gZGEgdmVyc8OjbyBqw6EgZXN0w6Egc2VuZG8gdXNhZG8gcGVsb3MgQ29uZmlnSXRlbXMgY29tIG8ocykgc2VndWludGUocykgbsO6bWVybyhzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEluY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZcO6ZG8gZG8gSGlzdMOzcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzw6NvIGRlIGRldGFsaGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnSXRlbnMgZGUgY29uZmlndXJhw6fDo28gcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05lbmh1bSBkYWRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZm9pIGVuY29udHJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNpb25lIGVzc2UgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTsOtdmVsIGRlIHByb2Z1bmRpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ0F1bWVudGFyIGUgZGltaW51aXIgbyB6b29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ07DrXZlbCBtw6F4aW1vIGRlIGxpbmtzIGF0aW5naWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8OjbyBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbXBsYW50YcOnw6NvIEF0dWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlIEF0dWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ8OabHRpbWEgbW9kaWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfDmmx0aW1hIG1vZGlmaWNhw6fDo28gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnU2V1cyBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdQZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQXMgc2VndWludGVzIGNsYXNzZXMgc2Vyw6NvIGltcG9ydGFkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQXMgc2VndWludGVzIGZ1bsOnw7VlcyBzZXLDo28gaW1wb3J0YWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdPYnNlcnZlIHF1ZSBvcyBjYW1wb3MgZGluw6JtaWNvcyBlIGFzIGNsYXNzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGVudGVzIHRhbWLDqW0gc2Vyw6NvIGNyaWFkb3MgZSBuw6NvIGhhdmVyw6EgcmVtb8Onw6NvIGF1dG9tw6F0aWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZvY8OqIHF1ZXIgcHJvc3NlZ3Vpcj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnUHJlY2lzYSBkZSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnQSBkZWZpbmnDp8OjbyBuw6NvIMOpIHVtIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Zpc8OjbyBnZXJhbDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBDb25maWdJdGVtSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdWb2PDqiBwcmVjaXNhIHNlbGVjaW9uYXIgcGVsbyBtZW5vcyB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1ZvY8OqIG7Do28gdGVtIGFjZXNzbyBkZSBlc2NyaXRhIHBhcmEgZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTmVuaHVtYSBkZWZpbmnDp8OjbyBwYXJhIGEgY2xhc3NlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8OjbyAiJXMiIG7Do28gZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBleGNsdWlyIG8gSUQgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05lbmh1bWEgdmVyc8OjbyBlbmNvbnRyYWRhIHBhcmEgbyBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG91IENsYXNzSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBhY2Vzc28gw6kgZGFkbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgZXhpYmlyIGhpc3TDs3JpY28uIE5lbmh1bSBDb25maWdJdGVtSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOw6NvIMOpIHBvc3PDrXZlbCBleGliaXIgaGlzdMOzcmljby4gTmVuaHVtIGRpcmVpdG8gZGUgYWNlc3NvIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3ZvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm92YSB2ZXJzw6NvIChJRCA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gYXR1YWxpemFkbyAobm92bz0lcyAsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlIGluY2lkZW50ZSBhdHVhbGl6YWRvIChub3ZvPSVzLCBhbnRpZ289JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnSXRlbSBkZSBDb25maWd1cmHDp8OjbyAoSUQ9JXMpIGV4Y2x1w61kbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1bDrW5jdWxvIHBhcmEgJXMgKHRpcG89JXMpIGFkaWNpb25hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ1bDrW5jdWxvIHBhcmEgJXMgKHRpcG89JXMpIGRlbGV0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmnDp8OjbyBkZSBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIChJRD0lcykgYXR1YWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWUgYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXRvICVzIGF0dWFsaXphZG8gZGUgIiVzIiBwYXJhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc8OjbyAlcyBleGNsdcOtZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENvbmZpZ0l0ZW1JRCBvdSBWZXJzaW9uSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4aWJpciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbsOjbyBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdJbXByZXNzbyBwb3IgJXMgZW0gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyw6puY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENsYXNzSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gcGFyYSBlc3RhIGNsYXNzZSDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmVuaHVtIHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXN1bHRhZG9zIGRhIHBlc3F1aXNhIGRlIEl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOw6NvIGZvaSBwb3Nzw612ZWwgZXhpYmlyIGl0ZW0uIE5lbmh1bSBkaXJlaXRvIGRlIGFjZXNzbyBwYXJhIENvbmZpZ0l0ZW0gw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuw6NvIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbmh1bWEgdmVyc8OjbyBlbmNvbnRyYWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmlzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW5jaWRlbnRlIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdTZW0gUGVybWlzc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOibWV0cm9zIGRlIHBlc3F1aXNhIGludsOhbGlkb3MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnRXhpYmlyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgRXN0YWRvIGRlIEltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIEF0dWFsIGRlIEluY2lkZW50ZSBwb3IgdGlwbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzZSBwYXJhIG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNpb25lIHVtYSBvdSBtYWlzIGNsYXNzZXMgcGFyYSByZXN0cmluZ2lyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlbGVjaW9uw6F2ZWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmnDp8O1ZXMgZGUgY2xhc3NlIHBhcmEgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNpb25lIHVtYSBvdSBtYWlzIGNsYXNzZXMgcGFyYSByZXN0cmluZ2lyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlbGVjaW9uw6F2ZWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6JtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljICh2ZXJzw6NvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyw6puY2lhIGRlIGxpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2UgZXNzZSBsaW5rIHNlIGFwbGljYSBhbyBDb25maWdJdGVtIG91IMOgIHZlcnPDo28gZXN0w6F0aWNhIGRvIG9iamV0byBkZSByZWZlcsOqbmNpYS4gTyBjw6FsY3VsbyBkbyBlc3RhZG8gYXR1YWwgZG8gaW5jaWRlbnRlIHPDsyDDqSByZWFsaXphZG8gZW0gbGlua3MgZGluw6JtaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY2lvbmUgbyBhdHJpYnV0byBwZWxvIHF1YWwgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2Vyw6NvIHBlc3F1aXNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdBIGVzdHJ1dHVyYSBiw6FzaWNhIG7Do28gw6kgdsOhbGlkYS4gRm9ybmXDp2EgdW0gaGFzaCBjb20gZGFkb3Mgbm8gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ8OJIG5lY2Vzc8OhcmlvIGluaWNpYXIgYSBzdHJpbmcgWUFNTCBjb20gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGxpbXBhciBhIHRhYmVsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGNhbXBvcyBkaW7Dom1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgaW5zZXJpciBuYSB0YWJlbGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcml1IDAgbGluaGFzIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVtIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ0NhZGVpYSBkZSBjYXJhY3RlcmVzIGRhIHZlcnPDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJybyBhbyBzaW5jcm9uaXphciBhcyBkZWZpbmnDp8O1ZXMuIFZlcmlmaXF1ZSBvIHJlZ2lzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1ZvY8OqIHRlbSBkZWZpbmnDp8O1ZXMgZGUgSVRTTUNvbmZpZ0l0ZW0gcXVlIG7Do28gZXN0w6NvIHNpbmNyb25pemFkYXMuIEltcGxlbWVudGUgc3VhcyBhbHRlcmHDp8O1ZXMgZGUgY2FtcG8gZGluw6JtaWNvIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW51dGVuw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5lamFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0ZSBkZSBRdWFsaWRhZGUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc8OjbyBnZXJhbCBlIGNvbmZpcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YcOnw6NvIGRlIGNsYXNzZXMvZnVuw6fDtWVzIGUgc2V1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnT2NvcnJldSB1bSBlcnJvIGR1cmFudGUgYSBpbXBvcnRhw6fDo28gZGEgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBNb3N0cmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacOnw7VlcyBkZSBwZXNxdWlzYSBlc3RlbmRpZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIENvbSBlc3NlIHJlY3Vyc28sIHZvY8OqIHBvZGUgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzc2UgdGlwbyBkZSBjb25kacOnw6NvLCBjb21vICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnDp8O1ZXMgZGUgcGVzcXVpc2EgZXN0ZW5kaWRhcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQ29tIGVzc2UgcmVjdXJzbywgdm9jw6ogcG9kZSBwZXNxdWlzYXIsIHBvciBleGVtcGxvLCBvIG5vbWUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBjb20gZXNzZSB0aXBvIGRlIGNvbmRpw6fDo28sIGNvbW8gIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnSUNzIGF0cmlidcOtZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0lDIGF0cmlidWlkbyDDoCBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdJQyBhdHJpYnVpZG8gYW8gdXN1w6FyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhw6fDtWVzIGRvIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1ZlcmlmaXF1ZSBzZSBvIG5vbWUgw6kgw7puaWNvIGFwZW5hcyBkZW50cm8gZGEgbWVzbWEgY2xhc3NlIGRlIElDIChcJ2NsYXNzZSkgb3UgZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBvIHF1ZSBzaWduaWZpY2EgcXVlIGNhZGEgSUMgZXhpc3RlbnRlIMOpIGxldmFkbyBlbSBjb250YSBhbyBwcm9jdXJhciBwb3IgZHVwbGljYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0VzY29saGEgdW0gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW0gZXNxdWVtYSBkZSBub21lbmNsYXR1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgbnVtw6lyaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgZGUgc3RyaW5nIGRlIHZlcnPDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRXNjb2xoYSBhdHJpYnV0b3MgcGFyYSBhY2lvbmFyIGEgY3JpYcOnw6NvIGRlIHVtYSBub3ZhIHZlcnPDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VzY29saGEgYXMgY2F0ZWdvcmlhcyBhIHNlcmVtIGF0cmlidcOtZGFzIGEgZXNzYSBjbGFzc2UgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGUgY29sdW5hIHBhcmEgVmlzw6NvIGdlcmFsIGRvIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bmFzIHF1ZSBwb2RlbSBzZXIgZmlsdHJhZGFzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIE9ic2VydmHDp8OjbzogU29tZW50ZSBhdHJpYnV0b3MgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBlIGNhbXBvcyBkaW7Dom1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpIHPDo28gcGVybWl0aWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnSXRlbnMgZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0FkaWNpb25hciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVlIHBlcm1pdGUgcmVnaXN0cmFyIG8gaGlzdMOzcmljbyBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBhdHVhbGl6YSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIHN1YSBkZWZpbmnDp8OjbyBhdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0w7NyaXZvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJlc3PDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdab29tIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZSBkbyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ1ZlcnPDo28gZG8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBkYXMgc2VndWludGVzIGNsYXNzZXMgbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzc28gYW9zIENJcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gQ0kgZGV2ZSBzZXIgZXhlY3V0YWRhIHBvciBtZWlvIGRvIGNvbnNvbGUsIGFww7NzIGEgYWx0ZXJhw6fDo28gZGVzc2Egb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnT3MgQ29uZmlnSXRlbXMgY29tIG9zIHNlZ3VpbnRlcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzc28gYW9zIENJcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gQ0kgZGV2ZSBzZXIgZXhlY3V0YWRhIHBvciBtZWlvIGRvIGNvbnNvbGUsIGFww7NzIGEgYWx0ZXJhw6fDo28gZGVzc2Egb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXRlIGRlIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQ29uZmlndXJhw6fDo28gZG8gR2VyZW5jaWFtZW50byBkbyBCYW5jbyBkZSBEYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgYcOnw6NvIGVtIG1hc3NhIGVtIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3RlYWRvciBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmlhciBlIGdlcmVuY2lhciBhcyBkZWZpbmnDp8O1ZXMgZGUgSXRlbnMgZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JpYSB0w61xdWV0ZXMgcGFyYSBDb25maWdJdGVtcyBlbSBwb250b3MgZGUgdGVtcG8gZXNwZWPDrWZpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdPcyBjbGllbnRlcyBwb2RlbSB2ZXIgbyBoaXN0w7NyaWNvIGRhcyB2ZXJzw7VlcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnT3MgY2xpZW50ZXMgdMOqbSBhIHBvc3NpYmlsaWRhZGUgZGUgYWx0ZXJuYXIgbWFudWFsbWVudGUgZW50cmUgYXMgdmVyc8O1ZXMgaGlzdMOzcmljYXMgZGUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGFkb3MgcGFkcsOjbyBhIHNlcmVtIHVzYWRvcyBubyBhdHJpYnV0byBwYXJhIGEgdGVsYSBkZSBwZXNxdWlzYSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhZG9zIHBhZHLDo28gYSBzZXJlbSB1c2Fkb3Mgbm8gYXRyaWJ1dG8gcGFyYSBhIHRlbGEgZGUgcGVzcXVpc2EgZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluYSBBw6fDtWVzIG9uZGUgdW0gYm90w6NvIGRlIGNvbmZpZ3VyYcOnw7VlcyBlc3TDoSBkaXNwb27DrXZlbCBubyB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZT0iY29tcGxleCIpLiBPYnNlcnZlIHF1ZSBlc3NhcyBhw6fDtWVzIGRldmVtIHRlciByZWdpc3RyYWRvIG9zIHNlZ3VpbnRlcyBhcnF1aXZvcyBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZSBDb3JlLkFnZW50IC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBjYWRlaWFzIGRlIGNhcmFjdGVyZXMgZGUgdmVyc8Ojby4gVXNhZG8gc29tZW50ZSBzZSBvIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBlc3RpdmVyIGRlZmluaWRvIGNvbW8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGNvbmp1bnRvIGRlIGNvbmRpw6fDtWVzIHNvYiBhcyBxdWFpcyB1bSBjbGllbnRlIHRlbSBwZXJtaXNzw6NvIHBhcmEgdmVyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIEFzIGNvbmRpw6fDtWVzIHBvZGVtLCBvcGNpb25hbG1lbnRlLCBzZXIgcmVzdHJpdGFzIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gTyBub21lIMOpIG8gw7puaWNvIGF0cmlidXRvIG9icmlnYXTDs3Jpby4gU2UgbmVuaHVtYSBvdXRyYSBvcMOnw6NvIGZvciBmb3JuZWNpZGEsIHRvZG9zIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGZpY2Fyw6NvIHZpc8OtdmVpcyBuZXNzYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYSBwZXJtaXNzw6NvIG5lY2Vzc8OhcmlvIHBhcmEgcmVtb3ZlciBJdGVucyBkZSBDb25maWd1cmHDp8OjbyB1c2FuZG8gYSBJbnRlcmZhY2UgR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIHJlcXVlcmlkYXMgcGFyYSBvYnRlciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgcmVxdWVyaWRhcyBwYXJhIGxvY2FsaXphciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgZGVmaW5pciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyBJVFNNIHVzYW5kbyBhIGludGVyZmFjZSBnZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHZpc8OjbyBnZXJhbCBwYXJhIG1vc3RyYXIgYSB2aXPDo28gcGVxdWVuYSBkYSBsaXN0YSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNlIG9zIHLDs3R1bG9zIGRlIHRpcG8gZGUgbGluayBkZXZlbSBzZXIgZXhpYmlkb3MgbmFzIGNvbmV4w7VlcyBkZSBuw7MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmllIGV4cHJlc3PDtWVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNzZSBkZSBJQyBwYXJhIHZlcmlmaWNhciBvIG5vbWUgZG8gSUMgZSBwYXJhIGV4aWJpciBhcyBtZW5zYWdlbnMgZGUgZXJybyBjb3JyZXNwb25kZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGlzcG9uw612ZWlzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIGNvbnNpc3RpciBlbSB1bSBub21lIGRlIGNsYXNzZSBlIHVtYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbsOtdmVpcyBwYXJhIGEgY2xhc3NlIGNvcnJlc3BvbmRlbnRlLiBBcyBlbnRyYWRhcyBkZSBjYW1wbyBkaW7Dom1pY28gZGV2ZW0gcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIHBhcmEgYSBjbGFzc2lmaWNhw6fDo28gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBhZHLDo28gcGFyYSBhIGNsYXNzaWZpY2HDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIHBhcmEgYSBjbGFzc2lmaWNhw6fDo28gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlc3NhIG9wZXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBtYWlzIGFudGlnbyBubyB0b3BvLiBQYXJhIGJhaXhvOiBvIG1haXMgcmVjZW50ZSBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBwYWRyw6NvIGV4aWJpZGFzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIGNvbnNpc3RpciBlbSB1bSBub21lIGRlIGNsYXNzZSBlIHVtYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbsOtdmVpcyBwYXJhIGEgY2xhc3NlIGNvcnJlc3BvbmRlbnRlLiBBcyBlbnRyYWRhcyBkZSBjYW1wbyBkaW7Dom1pY28gZGV2ZW0gcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgYSBwcm9mdW5kaWRhZGUgcGFkcsOjbyBkYXMgcmVsYcOnw7VlcyBhIHNlcmVtIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG1vc3RyYWRvIHBhcmEgYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbW9zdHJhZG8gcGFyYSBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIktleSIgKENoYXZlKSBkZXZlIHRlciBvIG5vbWUgZG8gY2FtcG8gZGluw6JtaWNvLCBuZXNzZSBjYXNvIFwnWFwnLCAiQ29udGVudCIgKENvbnRlw7pkbykgZGV2ZSB0ZXIgbyB2YWxvciBkbyBjYW1wbyBkaW7Dom1pY28sIGRlcGVuZGVuZG8gZG8gdGlwbyBkZSBjYW1wbyBkaW7Dom1pY28sIFRleHQgKFRleHRvKTogXCd1bSB0ZXh0b1wnLCBEcm9wZG93biAoTWVudSBzdXNwZW5zbyk6IFwnMVwnLCBEYXRlL1RpbWUgKERhdGEvSG9yYSk6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlIG91IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHN1Ym9iamV0byBwYWRyw6NvIGRhIGNsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkaXNwb27DrXZlaXMgZGUgSUNzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgY29uc2lzdGlyIGVtIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvIGRpbsOibWljbyBkZXZlbSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIGRlIGVkacOnw6NvIHJpY2ggdGV4dCBkZXN0YSB0ZWxhLiBSZWdpc3RyZSB1bSBuw7ptZXJvIChwaXhlbHMpIG91IHVtYSBwb3JjZW50YWdlbSAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBuw7ptZXJvIGRlIGxpbmhhcyBkbyBlZGl0b3IgZGUgZGVmaW5pw6fDo28gZG8gSUMgbmEgaW50ZXJmYWNlIGRlIGFkbWluaXN0cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gZG9zIGVzdGFkb3MgZGUgaW5jaWRlbnRlIGRlIGFsdG8gKGV4OiBjcsOtdGljbykgcGFyYSBiYWl4byAoZXg6IGZ1bmNpb25hbCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgb3MgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIG9uZGUgY2hhbWFkb3MgYXNzb2NpYWRvcyBwb2RlbSBhZmV0YXIgbyBlc3RhZG9zIGRlIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgbW9zdHJhZGFzIG5hIHZpc3VhbGl6YcOnw6NvIGNvbXBsZXhhIGRhIHRhYmVsYSBkZSBsaW5rcyBwYXJhIHRvZGFzIGFzIGNsYXNzZXMgZGUgSUNzLiBTZSBuw6NvIGhvdXZlciBuZW5odW1hIGVudHJhZGEsIGFzIGNvbHVuYXMgcGFkcsOjbyBzZXLDo28gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGUgSUNzIGV4aWJpZGFzIG5hIHRlbGEgZGUgdGFiZWxhIGNvbXBsZXhhIGRlIGxpbmtzLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgc2VyIHByZWZpeGFkYSBjb20gbyBub21lIGRhIGNsYXNzZSBlIGR1cGxvIGRvaXMgcG9udG9zIChleC4gQ29tcHV0YWRvcjo6KS4gSMOhIGFsZ3VucyBhdHJpYnV0b3MgZGUgSUMgcXVlIHPDo28gY29tdW5zIGEgdG9kb3Mgb3MgSUNzICh0YWwgY29tbyBhIGNsYXNzZSBDb21wdXRhZG9yOiBDb21wdXRhZG9yOjpOb21lLCBDb21wdXRhZG9yOjpFc3RhZG9JbXBsQXR1YWwsIENvbXB1dGFkb3I6OkhvcmFDcmlhY2FvKS4gUGFyYSBleGliaXIgYXRyaWJ1dG9zIGRlIElDIGluZGl2aWR1YWxtZW50ZSBjb21vIGRlZmluaWRvIG5hIGRlZmluacOnw6NvIGRvIElDLCBvIHNlZ3VpbnRlIGVzcXVlbWEgZGV2ZSBzZXIgdXNhZG8gKGNsYXNzZSBDb21wdXRhZG9yLCBwb3IgZXhlbXBsbyk6IENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoxLCBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6MTo6Q2FwYWNpZGFkZTo6MSwgQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjIsIENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoyOjpDYXBhY2lkYWRlOjoxLiBTZSBuw6NvIGjDoSBlbnRyYWRhIHBhcmEgYSBjbGFzc2UgSUMsIGVudMOjbyBhcyBjb2x1bmFzIHBhZHLDo28gc8OjbyBleGliaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXVhaXMgaXRlbnMgZXN0w6NvIGRpc3BvbsOtdmVpcyBwYXJhICJBw6fDo28iIG5vIHRlcmNlaXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1YWlzIGl0ZW5zIGVzdMOjbyBkaXNwb27DrXZlaXMgbm8gcHJpbWVpcm8gbsOtdmVsIGRhIGVzdHJ1dHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1YWlzIGl0ZW5zIGVzdMOjbyBkaXNwb27DrXZlaXMgbm8gc2VndW5kbyBuw612ZWwgZGEgZXN0cnV0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXVhbCB0aXBvIGRlIGFzc29jaWHDp8OjbyAobm9tZWFkbyBhIHBhcnRpciBkYSBwZXJzcGVjdGl2YSBkbyBjaGFtYWRvKSBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBhc3NvY2lhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1YWwgdGlwbyBkZSBjaGFtYWRvIHBvZGUgYWZldGFyIG8gZXN0YWRvIGRlIHVtIElDIGFzc29jaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBdHVhbGl6YcOnw6NvIGRhIGRlZmluacOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFeGNsdWlyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3IgZG8gRXN0YWRvIGRlIEltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRhIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBjYW1wbyBkaW7Dom1pY28gcXVlIG1hcmNhIGFzIGRlZmluacOnw7VlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBjb21vIGZvcmEgZGUgc2luY3JvbmlhLCBzZSBvcyBjYW1wb3MgZGluw6JtaWNvcyBjb250aWRvcyBmb3JlbSBhbHRlcmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3Mgbm8gY2FtcG8gZGUgdGVsYSBJVFNNIGFkaWNpb25hbCBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnSGFiaWxpdGEgYSBmdW7Dp8OjbyBkZSBhw6fDo28gZW0gbWFzc2EgZW0gaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZSBwYXJhIHRyYWJhbGhhciBlbSBtYWlzIGRlIHVtIElDIHBvciB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bsOnw6NvIGRlIGHDp8OjbyBlbSBtYXNzYSBlbSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhcGVuYXMgcGFyYSBncnVwb3MgbGlzdGFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgRXZlbnRvIHBhcmEgY29uZmlndXJhciBvIGVzdGFkbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1YW5kbyB1bSBjaGFtYWRvIGZvciBhc3NvY2lhZG8gYSB1bSBJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2FtcG9zIGRvIMOtbmRpY2UgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgdXNhZG9zIHBhcmEgYSBwZXNxdWlzYSBkZSB0ZXh0byBjb21wbGV0by4gT3MgY2FtcG9zIHRhbWLDqW0gc8OjbyBhcm1hemVuYWRvcywgbWFzIG7Do28gc8OjbyBvYnJpZ2F0w7NyaW9zIHBhcmEgYSBmdW5jaW9uYWxpZGFkZSBnZXJhbC4gQSBpbmNsdXPDo28gZGUgYW5leG9zIHBvZGUgc2VyIGRlc2F0aXZhZGEgZGVmaW5pbmRvIGEgZW50cmFkYSBjb21vIDAgb3UgZXhjbHVpbmRvLWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1wb3MgYXJtYXplbmFkb3Mgbm8gw61uZGljZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBzw6NvIHVzYWRvcyBwYXJhIG91dHJhcyBjb2lzYXMgYWzDqW0gZGUgcGVzcXVpc2FzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGEgZnVuY2lvbmFsaWRhZGUgY29tcGxldGEsIHRvZG9zIG9zIGNhbXBvcyBzw6NvIG9icmlnYXTDs3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkbyBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBhIGNhbWFkYSBkbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkbyBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBhIGNhbWFkYSBkbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdWaXPDo28gR2VyYWwgIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnRXN0YWRvIGRvIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVpIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVpIGVzdGFkb3MgZGUgaW5jaWRlbnRlcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3Mgbm8gcmVzdWx0YWRvIGRlc3NhIG9wZXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW1hIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNw7NkdWxvIHBhcmEgdmVyaWZpY2FyIG8gZ3J1cG8gcmVzcG9uc8OhdmVsIHBvciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ03Ds2R1bG8gcGFyYSBnZXJhciBlc3RhdMOtc3RpY2FzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21lIGRvIG3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ07Dum1lcm8gZG8gbcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3MgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3MgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZXRvcyBhIHNlcmVtIHBlc3F1aXNhZG9zLCBxdWFudGFzIGVudHJhZGFzIGUgcXVhaXMgYXRyaWJ1dG9zIGRldmVtIHNlciBleGliaWRvcy4gT3MgYXRyaWJ1dG9zIGRvIENvbmZpZ0l0ZW0gZGV2ZW0gc2VyIGFybWF6ZW5hZG9zIGV4cGxpY2l0YW1lbnRlIHBvciBtZWlvIGRvIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc8OjbyBHZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYXMgY2F0ZWdvcmlhcyBkZSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG9zIGZpbHRyb3MgZGUgY29sdW5hIGRhIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBlcXVlbmEuIE9ic2VydmHDp8OjbzogYSBkZWZpbmnDp8OjbyBkZSAiQWN0aXZlIiBjb21vIDAgaW1wZWRpcsOhIGFwZW5hcyBxdWUgb3MgYWdlbnRlcyBlZGl0ZW0gYXMgY29uZmlndXJhw6fDtWVzIGRlc3NlIGdydXBvIGVtIHN1YXMgcHJlZmVyw6puY2lhcyBwZXNzb2FpcywgbWFzIGFpbmRhIHBlcm1pdGlyw6EgcXVlIG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0ZW0gYXMgY29uZmlndXJhw6fDtWVzIGVtIG5vbWUgZGUgb3V0cm8gdXN1w6FyaW8uIFVzZSAiUHJlZmVyZW5jZUdyb3VwIiBwYXJhIGNvbnRyb2xhciBlbSBxdWUgw6FyZWEgZXNzYXMgY29uZmlndXJhw6fDtWVzIGRldmVtIHNlciBtb3N0cmFkYXMgbmEgaW50ZXJmYWNlIGRvIHVzdcOhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYSBjb3IgZG9zIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuYSB0ZWxhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBuYXMgcHJlZmVyw6puY2lhcyBkZSBleGliacOnw6NvIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRvIGdydXBvcyBkZSBwZXJtaXNzw6NvIGRlIGV4ZW1wbG8gZG9zIGF0cmlidXRvcyBkbyBjYXTDoWxvZ28gZ2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbm9tZSBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbsO6bWVyb3MgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGFzIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc8OjbyBtb3N0cmFkb3MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkZSBzdHJpbmcgZGUgdmVyc8OjbyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRvIGtpdCBkZSBmZXJyYW1lbnRhcyBkZSBtb2RlbG8gZGUgc3RyaW5nIGRlIHZlcnPDo28gcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGFjaW9uYWRvciBkZSB2ZXJzw6NvIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cG8gZGUgcGVybWlzc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSBhw6fDo28gZGUgYW5leGHDp8OjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIElUU00gbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgdmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgYWRpw6fDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIElUU00gZW0gbWFzc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgZWRpw6fDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBpbXByZXNzw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsw6lnaW9zIG5lY2Vzc8OhcmlvcyBwYXJhIGFwYWdhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdQcm9jdXJhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXIgbyBlc3RhZG8gZGUgdW0gSUMgYXV0b21hdGljYW1lbnRlIHF1YW5kbyB1bSBDaGFtYWRvIGZvciBhc3NvY2lhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhIG8gZXN0YWRvIGRlIGltcGxhbnRhw6fDo28gbmEgdGVsYSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgSUNzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBvIGVzdGFkbyBkZSBpbmNpZGVudGUgbmEgdGVsYSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgSUNzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBhc3NvY2lhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbSB1bSBvdXRybyBvYmpldG8gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlc3NhciBvIGhpc3TDs3JpY28gZGUgdW0gSUMgbmEgdmlzw6NvIGdlcmFsIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2Vzc2FyIG8gaGlzdMOzcmljbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhcGFnYXIgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIFZpc8OjbyBEZXRhbGhhZGEgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBleGliaXIgb3MgbGlua3MgZG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gdW1hIHZpc3VhbGl6YcOnw6NvIGVtIMOhcnZvcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIElDIG5hIHZpc8OjbyBnZXJhbCBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZHVwbGljYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gbWVzbW8gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gbWVzbW8gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSByZXRvcm5hciDDoCB0ZWxhIGRlIHZpc8OjbyBkZSBkZXRhbGhlcyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGRldGFsaGFyIHVtIElDIG5hIHZpc8OjbyBnZXJhbCBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyBoaXN0w7NyaWNvIGRvIGl0ZW0gY29uZmlndXJhw6fDo28gKG9yZGVtIHJldmVyc2EpIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0EgY2F0ZWdvcmlhIHBhZHLDo28gcXVlIMOpIG1vc3RyYWRhLCBzZSBuZW5odW1hIGZvciBzZWxlY2lvbmFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGV4LiBJdGVtQ29uZmlnIywgTWV1SXRlbUNvbmZpZyMuIE8gcGFkcsOjbyDDqSBJdGVtQ29uZmlnIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjaW9uYSBvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2ggYXV0b21hdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNzw6NvIGRlIGNhZGVpYSBkZSBjYXJhY3RlcmVzIGRhIHZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc8OjbyBTdHJpbmcgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0FjaW9uYWRvciBkZSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTZSBhIGV4ZWN1w6fDo28gZG8gQ29uZmlnSXRlbUFDTCBwb2RlIHNlciBldml0YWRhIHBlbGEgdmVyaWZpY2HDp8OjbyBkYXMgZGVwZW5kw6puY2lhcyBkZSBjYW1wbyBlbSBjYWNoZS4gSXNzbyBwb2RlIG1lbGhvcmFyIG8gdGVtcG8gZGUgY2FycmVnYW1lbnRvIGRvcyBmb3JtdWzDoXJpb3MsIG1hcyBkZXZlIHNlciBkZXNhdGl2YWRvIHNlIG9zIEFDTE1vZHVsZXMgZm9yZW0gdXNhZG9zIHBhcmEgSVRTTUNvbmZpZ0l0ZW0tIGUgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1YWlzIGluZm9ybWHDp8O1ZXMgZ2VyYWlzIHPDo28gbW9zdHJhZGFzIG5vIGNhYmXDp2FsaG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncMOzcy1wcm9kdXRpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ2ltcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdXRpdm8nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcG9sZWdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBvbGVnYWRhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMTkgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcG9sZWdhZGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDIxIHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcG9sZWdhZGFzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAyMyBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvbGVnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcG9sZWdhZGFzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwb2xlZ2FkYXMgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcG9sZWdhZGFzICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb2xlZ2FkYXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHBvbGVnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcG9sZWdhZGFzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwb2xlZ2FkYXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb2xlZ2FkYXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwb2xlZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwb2xlZ2FkYXMgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb2xlZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzEyMDAgbW0gKDQ3LDIgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcG9sZWdhZGFzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcG9sZWdhZGFzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0Fsb2Nhw6fDo28gZGUgZW5kZXJlw6dvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlZm9uZSBhbmFsw7NnaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkZSBhcGFyZWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZGUgZGEgYmF0ZXJpYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1ZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSBkZSBiYXJyYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9jZXNzYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWRlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWRlIHBvciBwbGFjYSBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWl0b3IgZGUgY2FydMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmlhIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnVGF4YSBkZSByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkZSBkbyByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGFzc2luYXR1cmEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZWZvbmUgZGUgY29uZmVyw6puY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgY29uc3VsdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0NvbnRhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0VudHJlIGVtIGNvbnRhdG8gY29tIG8gZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBjb250w6ppbmVyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkZSBjb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRvIGNvbnRyYXRvIGEgcGFydGlyIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRvIGNvbnRyYXRvIGF0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsZWZvbmUgc2VtIGZpbyAodGVsZWZvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pZGFkZSBkZSBjdXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0NvbnRhZ2VtIGRlIGxpY2Vuw6dhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1JhY2sgcGVyc29uYWxpemFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgZG8gcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGRhIGdhcmFudGlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgZGUgbGFuw6dhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBlLW1haWwgKGNlcnRpZmljYWRvcyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHRyYWJhbGhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRW5kZXJlw6dvIElQIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmltIGRvIHN1cG9ydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRhIGRlIGV4cGlyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyByw61naWRvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQXJtYXplbmFtZW50byBkZSBlbmVyZ2lhIG5vIHZvbGFudGUgZG8gbW90b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYXRvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgZnJhbnF1aWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMaXZyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDtWVzIGdlcmFpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1BsYWNhcyBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1BsYWNhIGRlIHbDrWRlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWxvIGRlIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Blc28gZG8gaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0ZvbmUgZGUgb3V2aWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgaWRlbnRpZGFkZSBlIGFjZXNzbyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnTDoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEICh0ZWxhIGRlIGNyaXN0YWwgbMOtcXVpZG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIGRlIExFRCAoZGlvZG8gZW1pc3NvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGZpeG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMYXRpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NhbWFkYSAxOiBDYW1hZGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYW1hZGEgMjogQ2FtYWRhIGRlIGVubGFjZSBkZSBkYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnQ2FtYWRhIDM6IENhbWFkYSBkZSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhbWFkYSAzOiBDYW1hZGEgZGUgcmVkZSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NhbWFkYSA0OiBDYW1hZGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FtYWRhIDU6IENhbWFkYSBkZSBzZXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0NhbWFkYSA2OiBDYW1hZGEgZGUgYXByZXNlbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYW1hZGEgNzogQ2FtYWRhIGRlIGFwbGljYXRpdm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGxvY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDaGF2ZSBkZSBsaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUaXBvIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkZSBsaWNlbsOnYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRlIGxpY2Vuw6dhIGF0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgZm9zZmF0byBkZSBmZXJybyBlIGzDrXRpbyAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgw61vbi1sw610aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBFbXByw6lzdGltbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTG9jYWxpemFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2lkYWRlIG3DoXhpbWEgZGUgY2FyZ2EgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGNlbHVsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTcOzdmVsL2luY29ycG9yYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28gZG8gbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdcOnw6NvIGRvIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVGFtYW5obyBkbyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYcOnw7VlcyBzb2JyZSBhIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8O1ZXMgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ2FtYWRhIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIG7DrXF1ZWwtY8OhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGhpZHJldG8gbWV0w6FsaWNvIGRlIG7DrXF1ZWwgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0NvbnRyYXRvIGRlIGNvbmZpZGVuY2lhbGlkYWRlIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ2FkZXJubyBkZSBhbm90YcOnw7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ07Dum1lcm8gZGUgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOw7ptZXJvIGRlIG3Ds2R1bG9zIGRlIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOw7ptZXJvIGRlIHBsYWNhcyBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6JuaWNvIGVtaXNzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdDdXN0b3Mgb3BlcmFjaW9uYWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ07Dum1lcm8gZG8gcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1Nhw61kYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgcGFyY2VyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUaXBvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnTsO6Y2xlb3MgZsOtc2ljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdGb3JuZWNpbWVudG8gZGUgZW5lcmdpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0NvbXByYWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mdW5kaWRhZGUgZG8gcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaWRhZGVzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdTYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydMOjbyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbmRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUZWxlZm9uZSB2aWEgc2F0w6lsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgc2VsYWRhIGRlIGNodW1iby3DoWNpZG8gKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHNlcnZpw6dvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmnDp28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBzb3F1ZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRvLWZhbGFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1BhZHLDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBpbmljaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdBcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGnDp8OjbyBkZSBhcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnU3Vic2lkacOhcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnRlIGZpbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0Zpb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIGRhIHBsYWNhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBjb20gdGVsYSBzZW5zw612ZWwgYW8gdG9xdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0ZvbmUgZGUgb3V2aWRvIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/pt_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYWRvcyBnZXJhaXMgZGUgZnVuY2lvbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnRGVmaW5pw6fDtWVzIHBhcmEgZGFkb3MgZGUgcGVkaWRvcyByZWNlYmlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdEZWZpbmnDp8O1ZXMgcGFyYSBvcyBkYWRvcyBkZSByZXNwb3N0YSBkZSBzYcOtZGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXVkYXIgZGVmaW5pw6fDo28gZGUgY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNb2RpZmljYXIgZGVmaW5pw6fDo28gZGUgZnVuw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdQYWNvdGVzIGRlIGNsYXNzZXMgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnQXF1aSBwb2RlIGltcG9ydGFyIG9zIHBhY290ZXMgZGUgY2xhc3NlcyBSZWFkeTJJbXBvcnQgcXVlIGFwcmVzZW50YW0gb3Mgbm9zc29zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG1haXMgY29tdW5zLiBUZW5oYSBlbSBhdGVuw6fDo28gcXVlIHBvZGVyw6Egc2VyIG5lY2Vzc8OhcmlhIGFsZ3VtYSBjb25maWd1cmHDp8OjbyBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0F0dWFsaXphciBlbnRpZGFkZXMgZXhpc3RlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGFyIG9zIHBhY290ZXMgZGUgY2xhc3NlcyBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNzZSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIEZ1bsOnw6NvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0l0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBhcmEgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY2lvbmUgdW1hIGNsYXNzZSBhIHBhcnRpciBkYSBsaXN0YSBwYXJhIGNyaWFyIHVtIG5vdm8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBw6fDo28gZW0gbWFzc2EgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaWdhw6fDo28gYSBvdXRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTsO6bWVybyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTyBuw7ptZXJvIGRlIG91dHJvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gYSBsaWdhci4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdQcmV0ZW5kZSBtZXNtbyBlbGltaW5hciBlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gbm9tZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG5vbWUgasOhIGVzdMOhIGEgc2VyIHV0aWxpemFkbyBwZWxvcyBDb25maWdJdGVtcyBjb20gbyhzKSBzZWd1aW50ZShzKSBuw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG7Dum1lcm8gZGEgdmVyc8OjbyBqw6EgZXN0w6EgYSBzZXIgdXRpbGl6YWRvIHBlbG9zIENvbmZpZ0l0ZW1zIGNvbSBvKHMpIHNlZ3VpbnRlKHMpIG7Dum1lcm8ocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEluY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0w7NyaWNvIGRvIGNvbnRlw7pkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzdGEgZGUgZGV0YWxoZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVucyBkZSBjb25maWd1cmHDp8OjbyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2lvbmFyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTsOtdmVsIGRlIHByb2Z1bmRpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ0F1bWVudGFyIGUgZGltaW51aXIgbyB6b29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ07DrXZlbCBtw6F4aW1vIGRlIGxpZ2HDp8O1ZXMgYXRpbmdpZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxlbWVudGHDp8OjbyBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1hIG1vZGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ09zIHNldXMgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUGVzcXVpc2EgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlcsOjbyBpbXBvcnRhZGFzIGFzIHNlZ3VpbnRlcyBjbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlcsOjbyBpbXBvcnRhZGFzIGFzIHNlZ3VpbnRlcyBmdW7Dp8O1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTm90ZS1zZSBxdWUgdGFtYsOpbSBzZXLDo28gY3JpYWRvcyBvcyBjYW1wb3MgZGluw6JtaWNvcyBlIGFzIGNsYXNzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGVudGVzIGUgbsOjbyBow6EgcmVtb8Onw6NvIGF1dG9tw6F0aWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1F1ZXJlcyBjb250aW51YXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ05lY2Vzc2l0YSBkZSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnQSBkZWZpbmnDp8OjbyBuw6NvIMOpIHVtIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Zpc8OjbyBnZXJhbDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgZm9ybmVjaWRvIG5lbmh1bSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnw4kgbmVjZXNzw6FyaW8gcGVsbyBtZW5vcyB1bSBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIHNlbGVjaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ07Do28gdGVtIGFjZXNzbyBkZSBlc2NyaXRhIGEgZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTsOjbyBmb2kgZGVmaW5pZGEgbmVuaHVtYSBkZWZpbmnDp8OjbyBwYXJhIGEgY2xhc3NlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8OjbyAiJXMiIG7Do28gZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBlbGltaW5hciBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdOw6NvIGZvaSBlbmNvbnRyYWRhIG5lbmh1bWEgdmVyc8OjbyBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBmb3JuZWNpZG8gbmVuaHVtIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3UgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgZGFkbyBhY2Vzc28hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBoaXN0w7NyaWNvLCBuw6NvIMOpIGZvcm5lY2lkbyBuZW5odW0gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBoaXN0w7NyaWNvLCBuw6NvIGZvcmFtIGRhZG9zIGRpcmVpdG9zIGRlIGFjZXNzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdm8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIHZlcnPDo28gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkYSBpbXBsYW50YcOnw6NvIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRvIGluY2lkZW50ZSBhdHVhbGl6YWRvIChub3ZvPSVzLCBhbnRpZ289JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpZ2HDp8OjbyBhICVzICh0aXBvPSVzKSBhZGljaW9uYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaWdhw6fDo28gYSAlcyAodGlwbz0lcykgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmnDp8OjbyBkZSBDb25maWdJdGVtIGFjdHVhbGl6YWRhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhdHVhbGl6YWRvIGRlICIlcyIgcGFyYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnPDo28gJXMgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgaW5kaWNhZG8gbmVuaHVtIENvbmZpZ0l0ZW1JRCBvdSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBuw6NvIGZvcmFtIGRhZG9zIGRpcmVpdG9zIGRlIGFjZXNzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbsOjbyBmb2kgZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmVzc28gcG9yICVzIGVtICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcsOqbmNpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgaW5kaWNhZG8gbmVuaHVtIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTsOjbyBzw6NvIGNvbmNlZGlkb3MgZGlyZWl0b3MgZGUgYWNlc3NvIGEgZXN0YSBjbGFzc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTZW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1Jlc3VsdGFkb3MgZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ07Do28gw6kgcG9zc8OtdmVsIG1vc3RyYXIgbyBpdGVtLCBuw6NvIGZvcmFtIGRhZG9zIGRpcmVpdG9zIGRlIGFjZXNzbyBwYXJhIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbsOjbyBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZGFzIHZlcnPDtWVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmlzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdPIGVzdGFkbyBkZSBpbmNpZGVudGUgZGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1NlbSBwZXJtaXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRybyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXLDom1ldHJvcyBkZSBwZXNxdWlzYSBpbnbDoWxpZG9zISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0l0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGFwcmVzZW50YWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIEVzdGFkbyBkZSBJbXBsZW1lbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIEF0dWFsIGRlIEluY2lkZW50ZSBwb3IgdGlwbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzZSBwYXJhIG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNjaW9uZSB1bWEgb3UgbWFpcyBjbGFzc2VzIHBhcmEgcmVzdHJpbmdpciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZWxlY2Npb27DoXZlaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyacOnw7VlcyBkZSBjbGFzc2UgcGFyYSBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVtYSBvdSBtYWlzIGNsYXNzZXMgcGFyYSByZXN0cmluZ2lyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlbGVjY2lvbsOhdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbsOibWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ0VzdMOhdGljbyAoVmVyc8OjbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcsOqbmNpYSBkZSBsaWdhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2UgZXN0YSBsaWdhw6fDo28gc2UgYXBsaWNhIGFvIENvbmZpZ0l0ZW0gb3Ugw6AgdmVyc8OjbyBlc3TDoXRpY2EgZG8gb2JqZXRvIGRlIHJlZmVyw6puY2lhLiBPIGPDoWxjdWxvIGRvIGVzdGFkbyBhdHVhbCBkbyBpbmNpZGVudGUgc8OzIMOpIGVmZWN0dWFkbyBlbSBsaWdhw6fDtWVzIGRpbsOibWljYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNjaW9uZSBvIGF0cmlidXRvIHBlbG8gcXVhbCBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZXLDo28gcGVzcXVpc2Fkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0EgZXN0cnV0dXJhIGRlIGJhc2UgbsOjbyDDqSB2w6FsaWRhLiBGb3JuZcOnYSB1bSBoYXNoIGNvbSBkYWRvcyBlbSBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnw4kgbmVjZXNzw6FyaW8gaW5pY2lhciBhIGNhZGVpYSBZQU1MIGNvbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgcHVyZ2FyIGEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgY2FtcG9zIGRpbsOibWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBpbnNlcmlyIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VyaXUgMCBsaW5oYXMgbmEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW0gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc8OjbyBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJybyBhbyBzaW5jcm9uaXphciBhcyBkZWZpbmnDp8O1ZXMuIFZlcmlmaWNhciBvIHJlZ2lzdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGVtIGRlZmluacOnw7VlcyBJVFNNQ29uZmlnSXRlbSBxdWUgbsOjbyBlc3TDo28gc2luY3Jvbml6YWRhcy4gUG9yIGZhdm9yLCBpbXBsZW1lbnRlIGFzIGFsdGVyYcOnw7VlcyBkbyBjYW1wbyBkaW7Dom1pY28gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnV0ZW7Dp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmVhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0ZSBkZSBRdWFsaWRhZGUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc8OjbyBnZXJhbCBlIGNvbmZpcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YcOnw6NvIGRlIGNsYXNzZXMvZnVuw6fDtWVzIGUgcmVzcGVjdGl2b3MgY2FtcG9zIHJlbGFjaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ09jb3JyZXUgdW0gZXJybyBkdXJhbnRlIGEgaW1wb3J0YcOnw6NvIGRhIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE9jdWx0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9zdHJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnDp8O1ZXMgZGUgcGVzcXVpc2EgYWxhcmdhZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIENvbSBlc3RhIGZ1bmNpb25hbGlkYWRlLCDDqSBwb3Nzw612ZWwgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzdGUgdGlwbyBkZSBjb25kacOnw7VlcywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpw6fDtWVzIGRlIHBlc3F1aXNhIGFsYXJnYWRhcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQ29tIGVzdGEgZnVuY2lvbmFsaWRhZGUsIHBvZGUgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzdGUgdGlwbyBkZSBjb25kacOnw7VlcywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQ3MgYXRyaWJ1w61kb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnSUNzIGF0cmlidcOtZGFzIMOgIGVtcHJlc2EgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0lDcyBhdHJpYnXDrWRhcyBhbyB1dGlsaXphZG9yIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0RlZmluacOnw7VlcyBkYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWZXJpZmljYSB1bSBub21lIMO6bmljbyBhcGVuYXMgZGVudHJvIGRhIG1lc21hIGNsYXNzZSBkZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG91IGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbyBxdWUgc2lnbmlmaWNhIHF1ZSB0b2RvcyBvcyBDb25maWdJdGVtIGV4aXN0ZW50ZXMgc8OjbyB0aWRvcyBlbSBjb250YSBhbyBwcm9jdXJhciBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIGRlIG5vbWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnU2VsZWNpb25hciB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIGRlIGNhZGVpYSBkZSB2ZXJzw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdTZWxlY2lvbmFyIGF0cmlidXRvcyBwYXJhIGFjaW9uYXIgYSBjcmlhw6fDo28gZGUgdW1hIG5vdmEgdmVyc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnRXNjb2xoYSBjYXRlZ29yaWFzIHBhcmEgYXRyaWJ1aXIgYSBlc3RhIGNsYXNzZSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGUgY29sdW5hIHBhcmEgVmlzw6NvIGdlcmFsIGRvIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bmFzIHF1ZSBwb2RlbSBzZXIgZmlsdHJhZGFzIG5hIHPDrW50ZXNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIE5vdGE6IEFwZW5hcyBzw6NvIHBlcm1pdGlkb3MgYXRyaWJ1dG9zIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvIGUgQ2FtcG9zIERpbsOibWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0l0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZGljaW9uYXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBwZXJtaXRlIHJlZ2lzdGFyIG8gaGlzdMOzcmljbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBhY3R1YWxpemEgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBhIHN1YSBkZWZpbmnDp8OjbyBhdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0w7NyaWNvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdJbXByaW1pciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXIgbyB6b29tIGRvIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdGEgZW0gw6Fydm9yZSBkbyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBkYXMgc2VndWludGVzIGNsYXNzZXMgbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzdG8gYW9zIElDcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gSUMgdGVtIGRlIHNlciBleGVjdXRhZGEgYXRyYXbDqXMgZGEgY29uc29sYSwgZGVwb2lzIGRlIGFsdGVyYXIgZXN0YSBvcMOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBjb20gb3Mgc2VndWludGVzIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuw6NvIHNlcsOjbyBhcm1hemVuYWRvcyBubyBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgaXN0byBhb3MgSUNzIGV4aXN0ZW50ZXMsIGEgbWlncmHDp8OjbyBkbyBJQyB0ZW0gZGUgc2VyIGV4ZWN1dGFkYSBhdHJhdsOpcyBkYSBjb25zb2xhLCBkZXBvaXMgZGUgYWx0ZXJhciBlc3RhIG9ww6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBkZSBJdGVtcyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhw6fDo28gTGltaXRlIGRlIGl0ZW5zIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkYWRvcyBkZSBnZXN0w6NvIGRhIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTcOzZHVsbyBlbSBibG9jbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3V0ZXIgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JpYXIgZSBnZXJpciBhcyBkZWZpbmnDp8O1ZXMgZGUgSXRlbnMgZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JpYSBiaWxoZXRlcyBwYXJhIENvbmZpZ0l0ZW1zIGVtIHBvbnRvcyBkZSB0ZW1wbyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ09zIGNsaWVudGVzIHBvZGVtIHZlciB2ZXJzw7VlcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnT3MgY2xpZW50ZXMgdMOqbSBhIHBvc3NpYmlsaWRhZGUgZGUgYWx0ZXJuYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc8O1ZXMgaGlzdMOzcmljYXMgZGUgSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGFkb3MgcHJlZGVmaW5pZG9zIGEgdXRpbGl6YXIgbm8gYXRyaWJ1dG8gcGFyYSBvIGVjcsOjIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhZG9zIHByZWRlZmluaWRvcyBhIHV0aWxpemFyIG5vIGF0cmlidXRvIHBhcmEgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgQWPDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5hIHdpZGdldCB0aGUgb2JqZWN0b3MgbGlnYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiAgRXN0YXMgQWPDp8O1ZXMgZGV2ZW0gZXN0YXIgcmVnaXN0YWRhcyBub3Mgc2VndWludGVzIGZpY2hlaXJvcyBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBlc3F1ZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBhcmEgc3RyaW5ncyBkZSB2ZXJzw6NvLiBBcGVuYXMgdXRpbGl6YWRvIHNlIG8gbcOzZHVsbyBWZXJzaW9uIFN0cmluZyBlc3RpdmVyIGRlZmluaWRvIGNvbW8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGNvbmp1bnRvIGRlIGNvbmRpw6fDtWVzIHNvYiBhcyBxdWFpcyB1bSBjbGllbnRlIMOpIGF1dG9yaXphZG8gYSB2ZXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gQXMgY29uZGnDp8O1ZXMgcG9kZW0sIG9wY2lvbmFsbWVudGUsIHNlciByZXN0cmluZ2lkYXMgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBPIG5vbWUgw6kgbyDDum5pY28gYXRyaWJ1dG8gb2JyaWdhdMOzcmlvLiBTZSBuw6NvIGZvcmVtIGRhZGFzIG91dHJhcyBvcMOnw7VlcywgdG9kb3Mgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2Vyw6NvIHZpc8OtdmVpcyBuZXNzYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgZWxpbWluYXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgaW50ZXJmYWNlIGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSBvYnRlciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHV0aWxpemFuZG8gYSBpbnRlcmZhY2UgZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHBlc3F1aXNhciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHV0aWxpemFuZG8gYSBJbnRlcmZhY2UgR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIGRlZmluaXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgdmlzdGEgZ2VyYWwgcGFyYSBtb3N0cmFyIGEgdmlzdGEgcGVxdWVuYSBkYSBsaXN0YSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNlIGFzIGV0aXF1ZXRhcyBkbyB0aXBvIGRlIGxpZ2HDp8OjbyBkZXZlbSBzZXIgYXByZXNlbnRhZGFzIG5hcyBsaWdhw6fDtWVzIGRvcyBuw7NzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGV4cHJlc3PDtWVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNzZSBDb25maWdJdGVtIHBhcmEgdmVyaWZpY2FyIG8gbm9tZSBkbyBDb25maWdJdGVtIGUgbW9zdHJhciBhcyBtZW5zYWdlbnMgZGUgZXJybyBjb3JyZXNwb25kZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGlzcG9uw612ZWlzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBjb21wb3N0YSBwb3IgdW0gbm9tZSBkZSBjbGFzc2UgZSB1bWEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb27DrXZlaXMgcGFyYSBhIGNsYXNzZSBjb3JyZXNwb25kZW50ZS4gQXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOibWljb3MgdMOqbSBkZSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcHJlZGVmaW5pZG8gcGFyYSBhIG9yZGVuYcOnw6NvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzdGEgb3BlcmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IG8gbWFpcyBhbnRpZ28gbm8gdG9wby4gUGFyYSBiYWl4bzogbyBtYWlzIHJlY2VudGUgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBvIG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgZXhpYmlkYXMgcG9yIHBhZHLDo28gbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgYSBwcm9mdW5kaWRhZGUgZGFzIHJlbGHDp8O1ZXMgcHJlZGVmaW5pZGFzIGEgc2VyZW0gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG1vc3RyYWRvIHBvciBkZWZlaXRvIHBhcmEgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBtb3N0cmFkbyBwb3IgZGVmZWl0byBwYXJhIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIktleSIgKENoYXZlKSBkZXZlIHRlciBvIG5vbWUgZG8gY2FtcG8gZGluw6JtaWNvLCBuZXN0ZSBjYXNvICJYIiwgIkNvbnRlbnQiIChDb250ZcO6ZG8pIGRldmUgdGVyIG8gdmFsb3IgZG8gY2FtcG8gZGluw6JtaWNvLCBkZXBlbmRlbmRvIGRvIHRpcG8gZGUgY2FtcG8gZGluw6JtaWNvLCBUZXh0IChUZXh0byk6ICJ1bSB0ZXh0byIsIERyb3Bkb3duIChNZW51IHN1c3BlbnNvKTogIjEiLCBEYXRlL1RpbWUgKERhdGEvSG9yYSk6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlIG91IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHN1Ym9iamV0byBwb3Igb21pc3PDo28gZGEgY2xhc3NlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRpc3BvbsOtdmVpcyBkZSBJQ3MgbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgZG8gY29tcG9uZW50ZSBkbyBlZGl0b3IgZGUgcmljaCB0ZXh0IHBhcmEgZXN0ZSBlY3LDoy4gSW50cm9kdXphIG8gbsO6bWVybyAocGl4w6lpcykgb3UgbyB2YWxvciBwZXJjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIG7Dum1lcm8gZGUgbGluaGFzIHBhcmEgbyBlZGl0b3IgZGUgZGVmaW5pw6fDo28gZGUgSUMgbmEgaW50ZXJmYWNlIGRlIGFkbWluaXN0cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gZG9zIGVzdGFkb3MgaW5jaWRlbnRlcyBkZSBhbHRvIChwb3IgZXhlbXBsbywgY3JpY2l0YWwpIHBhcmEgYmFpeG8gKHBvciBleGVtcGxvLCBmdW5jaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gcmVsZXZhbnRlcyBvbmRlIG9zIHRpY2tldHMgdmluY3VsYWRvcyBwb2RlbSBhZmV0YXIgbyBzdGF0dXMgZGUgdW0gSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIG8gZWNyw6MgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBsaW1pdGUgZGUgcGVzcXVpc2EgcGFyYSBvIGVjcsOjIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgYXByZXNlbnRhZGFzIG5hIHZpc3RhIGNvbXBsZXhhIGRhIHRhYmVsYSBkZSBsaWdhw6fDtWVzIHBhcmEgdG9kYXMgYXMgY2xhc3NlcyBkZSBJQ3MuIFNlIG7Do28gaG91dmVyIG5lbmh1bWEgZW50cmFkYSwgZW50w6NvIGFzIGNvbHVuYXMgcGFkcsOjbyBzw6NvIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBkb3MgSUNzIG5hIHZpc8OjbyBjb21wbGV4YSBkYSB0YWJlbGEgZGUgbGlnYcOnw7VlcywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBwcmVmaXhhZGEgY29tIG8gbm9tZSBkYSBjbGFzc2UgZSBkb2lzIHBvbnRvcyBkdXBsb3MgKHBvciBleGVtcGxvLCBDb21wdXRhZG9yOjopLiBFeGlzdGVtIGFsZ3VucyBhdHJpYnV0b3MgZGUgSUMgcXVlIHPDo28gY29tdW5zIGEgdG9kb3Mgb3MgSUNzIChleGVtcGxvIHBhcmEgYSBjbGFzc2UgQ29tcHV0YWRvcjogQ29tcHV0YWRvcjo6Tm9tZSwgQ29tcHV0YWRvcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRhZG9yOjpDcmVhdGVUaW1lKS4gUGFyYSBtb3N0cmFyIGF0cmlidXRvcyBkZSBJQyBpbmRpdmlkdWFpcywgdGFsIGNvbW8gZGVmaW5pZG9zIG5hIGRlZmluacOnw6NvIGRlIElDLCBkZXZlIHNlciB1dGlsaXphZG8gbyBzZWd1aW50ZSBlc3F1ZW1hIChleGVtcGxvIHBhcmEgYSBjbGFzc2UgQ29tcHV0YWRvcik6IENvbXB1dGFkb3I6OkhhcmREaXNrOjoxLCBDb21wdXRhZG9yOjpIYXJkRGlzazo6MTo6Q2FwYWNpZGFkZTo6MSwgQ29tcHV0YWRvcjo6SGFyZERpc2s6OjIsIENvbXB1dGFkb3I6OkhhcmREaXNrOjoyOjpDYXBhY2lkYWRlOjoxLiBTZSBuw6NvIGV4aXN0aXIgcXVhbHF1ZXIgcmVnaXN0byBwYXJhIHVtYSBjbGFzc2UgZGUgSUMsIHPDo28gYXByZXNlbnRhZGFzIGFzIGNvbHVuYXMgcHJlZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBpdGVucyBxdWUgZXN0w6NvIGRpc3BvbsOtdmVpcyBwYXJhICJBw6fDo28iIG5vIHRlcmNlaXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGl0ZW5zIHF1ZSBlc3TDo28gZGlzcG9uw612ZWlzIG5vIHByaW1laXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBpdGVucyBxdWUgZXN0w6NvIGRpc3BvbsOtdmVpcyBubyBzZWd1bmRvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWUgdGlwbyBkZSBsaWdhw6fDo28gKG5vbWVhZGEgYSBwYXJ0aXIgZGEgcGVyc3BldGl2YSBkbyBiaWxoZXRlKSBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBsaWdhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1ZSB0aXBvIGRlIGJpbGhldGUgcG9kZSBhZmV0YXIgbyBlc3RhZG8gZGUgdW0gSUMgbGlnYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0F0dWFsaXphw6fDo28gZGEgZGVmaW5pw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3IgZG8gZXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBjYW1wbyBkaW7Dom1pY28gcXVlIG1hcmNhIGFzIGRlZmluacOnw7VlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBjb21vIGZvcmEgZGUgc2luY3JvbmlhLCBzZSBvcyBjYW1wb3MgZGluw6JtaWNvcyBjb250aWRvcyBmb3JlbSBhbHRlcmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3Mgbm8gZWNyw6IgYWRpY2lvbmFsIElUU00gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgYXByZXNlbnRhZG9zIG5vIGVjcsOjIGRlIHPDrW50ZXNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBhcHJlc2VudGFkb3Mgbm8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBxdWUgbyBmcm9udGVuZCBkbyBhZ2VudGUgdHJhYmFsaGUgZW0gbWFpcyBkbyBxdWUgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBjYWRhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0F0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgYcOnw6NvIGVtIG1hc3NhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGFwZW5hcyBwYXJhIG9zIGdydXBvcyBsaXN0YWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgZGVmaW5pciBvIGVzdGFkbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIGxpbmsgdGlja2V0LWNvbmZpZ2l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkbyDDrW5kaWNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLCB1dGlsaXphZG9zIHBhcmEgYSBwZXNxdWlzYSBkZSB0ZXh0byBpbnRlZ3JhbC4gT3MgY2FtcG9zIHRhbWLDqW0gc8OjbyBhcm1hemVuYWRvcywgbWFzIG7Do28gc8OjbyBvYnJpZ2F0w7NyaW9zIHBhcmEgYSBmdW5jaW9uYWxpZGFkZSBnZXJhbC4gQSBpbmNsdXPDo28gZGUgYW5leG9zIHBvZGUgc2VyIGRlc2FjdGl2YWRhIGRlZmluaW5kbyBhIGVudHJhZGEgY29tbyAwIG91IGVsaW1pbmFuZG8tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhcm1hemVuYWRvcyBubyDDrW5kaWNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBzw6NvIHV0aWxpemFkb3MgcGFyYSBvdXRyYXMgY29pc2FzIHBhcmEgYWzDqW0gZGUgcGVzcXVpc2FzIGRlIHRleHRvIGludGVncmFsLiBQYXJhIHVtYSBmdW5jaW9uYWxpZGFkZSBjb21wbGV0YSwgdG9kb3Mgb3MgY2FtcG9zIHPDo28gb2JyaWdhdMOzcmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0byBkbyBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBhIGNhbWFkYSBkbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1PDrW50ZXNlIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG8gZG8gaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWkgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWkgZXN0YWRvcyBkZSBpbmNpZGVudGVzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYSBhcHJlc2VudGFyIG5vIHJlc3VsdGFkbyBkZXN0YSBvcGVyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgbyBncnVwbyByZXNwb25zw6F2ZWwgcG9yIHVtYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VyYXIgZXN0YXTDrXN0aWNhcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tZSBkbyBtw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOw7ptZXJvIE3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhIGFwcmVzZW50YXIgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgYXByZXNlbnRhciBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmplY3RvcyBhIHByb2N1cmFyLCBxdWFudGFzIGVudHJhZGFzIGUgcXVhaXMgb3MgYXRyaWJ1dG9zIGEgbW9zdHJhci4gT3MgYXRyaWJ1dG9zIENvbmZpZ0l0ZW0gdMOqbSBkZSBzZXIgYXJtYXplbmFkb3MgZXhwbGljaXRhbWVudGUgYXRyYXbDqXMgZG8gRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzw6NvIEdlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhcyBjYXRlZ29yaWFzIGRlIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgb3MgZmlsdHJvcyBkZSBjb2x1bmEgZGEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcGVxdWVuby4gTm90YTogYSBkZWZpbmnDp8OjbyBkZSAiQWN0aXZlIiAoQXRpdm8pIHBhcmEgMCBhcGVuYXMgaW1wZWRlIG9zIGFnZW50ZXMgZGUgZWRpdGFyZW0gYXMgZGVmaW5pw6fDtWVzIGRlc3RlIGdydXBvIG5hcyBzdWFzIHByZWZlcsOqbmNpYXMgcGVzc29haXMsIG1hcyBjb250aW51YSBhIHBlcm1pdGlyIHF1ZSBvcyBhZG1pbmlzdHJhZG9yZXMgZWRpdGVtIGFzIGRlZmluacOnw7VlcyBlbSBub21lIGRlIG91dHJvIHV0aWxpemFkb3IuIFV0aWxpemUgIlByZWZlcmVuY2VHcm91cCIgcGFyYSBjb250cm9sYXIgZW0gcXVlIMOhcmVhIGVzdGFzIGRlZmluacOnw7VlcyBkZXZlbSBzZXIgYXByZXNlbnRhZGFzIG5hIGludGVyZmFjZSBkbyB1dGlsaXphZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYSBjb3IgZG9zIGVzdGFkb3MgZGUgaW1wbGVtZW50YcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBlc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIG5hcyBwcmVmZXLDqm5jaWFzIGRlIHZpc3VhbGl6YcOnw6NvIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRvIGdydXBvcyBkZSBwZXJtaXNzw6NvIGRlIGV4ZW1wbG8gZG9zIGF0cmlidXRvcyBkbyBjYXTDoWxvZ28gZ2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbm9tZXMgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRlIG7Dum1lcm9zIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRhcyBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHPDo28gdmlzdWFsaXphZG9zKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgY2FkZWlhIGRlIHZlcnPDtWVzIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZG8gY29uanVudG8gZGUgZmVycmFtZW50YXMgZG8gbW9kZWxvIGRlIGNhZGVpYSBkZSB2ZXJzw7VlcyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gYWNpb25hZG9yIGRlIHZlcnPDo28gcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXRpbGl6YXIgYSBhw6fDo28gZGUgYW5leGHDp8OjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHV0aWxpemFyIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBvIGVjcsOjIGRlIHZpc3VhbGl6YcOnw6NvIGVtIMOhcnZvcmUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBhZGnDp8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBvIGVjcsOjIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZW0gbWFzc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGVkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIG8gZm9ybXVsw6FyaW8gZGUgaW1wcmVzc8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOpZ2lvcyBuZWNlc3PDoXJpb3MgcGFyYSBlbGltaW5hciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdQcm9jdXJhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXIgbyBlc3RhZG8gZG8gaW5jaWRlbnRlIGRlIHVtIElDIGF1dG9tYXRpY2FtZW50ZSBxdWFuZG8gdW0gdGlja2V0IMOpIHZpbmN1bGFkbyBhIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGVzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gbm8gZWNyw6MgZW0gYmxvY28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBlc3RhZG8gZG8gaW5jaWRlbnRlIG5vIGVjcsOjIGVtIGJsb2NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGFzc29jaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gYSBvdXRybyBvYmpldG8gbmEgdmlzdGEgZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGFjZWRlciBhbyBoaXN0w7NyaWNvIGRlIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZWRlciBvIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGVsaW1pbmFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc3VhIHZpc3RhIGRlIHpvb20gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSBhcHJlc2VudGFyIGFzIGxpZ2HDp8O1ZXMgZG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gdW1hIFZpc3RhIGVtIMOBcnZvcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSB2b2x0YXIgw6AgdmlzdGEgZGUgem9vbSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgZGV0YWxoZXMgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSBhbXBsaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIG8gaGlzdMOzcmljbyBkbyBpdGVtIGNvbmZpZ3VyYcOnw6NvIChvcmRlbSBpbnZlcnNhKSBubyBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdBIGNhdGVnb3JpYSBwcmVkZWZpbmlkYSBxdWUgw6kgbW9zdHJhZGEsIHNlIG7Do28gZm9yIHNlbGVjaW9uYWRhIG5lbmh1bWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgZGUgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgcG9yIGV4ZW1wbG8sIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBBIHByZWRlZmluacOnw6NvIMOpIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQWNjaW9uYSBhdXRvbWF0aWNhbWVudGUgbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzw6NvIEV4cHJlc3PDo28gZGUgY2FkZWlhIGRlIGNhcmFjdGVyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc8OjbyBTdHJpbmcgTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY2lvbmFkb3IgZGUgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2UgYSBleGVjdcOnw6NvIGRlIENvbmZpZ0l0ZW1BQ0wgcG9kZSBzZXIgZXZpdGFkYSBhdHJhdsOpcyBkYSB2ZXJpZmljYcOnw6NvIGRhcyBkZXBlbmTDqm5jaWFzIGRlIGNhbXBvIGVtIGNhY2hlLiBJc3RvIHBvZGUgbWVsaG9yYXIgb3MgdGVtcG9zIGRlIGNhcnJlZ2FtZW50byBkb3MgZm9ybXVsw6FyaW9zLCBtYXMgdGVtIGRlIHNlciBkZXNhdGl2YWRvLCBzZSBvcyBBQ0xNb2R1bGVzIHRpdmVyZW0gZGUgc2VyIHV0aWxpemFkb3MgcGFyYSBJVFNNQ29uZmlnSXRlbS0gZSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlIGluZm9ybWHDp8O1ZXMgZ2VyYWlzIHPDo28gYXByZXNlbnRhZGFzIG5vIGNhYmXDp2FsaG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3DDs3MtcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcsOpLXByb2R1dGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHV0aXZvJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHBvbGVnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBvbGVnYWRhcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBvbGVnYWRhcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwb2xlZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgcG9sZWdhZGFzICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBvbGVnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAyMSBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBvbGVnYWRhcyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ0VzdGFudGUgZGUgMjMgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwb2xlZ2FkYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBvbGVnYWRhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcG9sZWdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcG9sZWdhZGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBvbGVnYWRhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG9sZWdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwb2xlZ2FkYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvbGVnYWRhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcG9sZWdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcG9sZWdhZGFzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcG9sZWdhZGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcG9sZWdhZGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogMTg2LDY5IGNtICg3Myw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcG9sZWdhZGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBvbGVnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBvbGVnYWRhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcG9sZWdhZGFzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcG9sZWdhZGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBvbGVnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBdHJpYnVpw6fDo28gZGUgZW5kZXJlw6dvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlZm9uZSBhbmFsw7NnaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVGlwbyBkZSBhcGFyZWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZGUgZGEgYmF0ZXJpYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1Byw6lkaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSBkZSBiYXJyYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9jZXNzYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWRlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWRlIHBvciBwbGFjYSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ07Dum1lcm8gZG8gY2FydMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlaXRvciBkZSBjYXJ0w7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmlhIGRlIGNsaWVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1ZlbG9jaWRhZGUgZG8gcmVsw7NnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaWRhZGUgZG8gcmVsw7NnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGPDs2RpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGRlIGNvbmZlcsOqbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGNvbnN1bHRvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YWN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGFyIG8gZGlzdHJpYnVpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBjb250ZW50b3Jlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUaXBvIGRlIGNvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZG8gY29udHJhdG8gYSBwYXJ0aXIgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZG8gY29udHJhdG8gYXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWxlZm9uZSBzZW0gZmlvcyAodGVsZWZvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnQ3VzdG8gdW5pdMOhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTsO6bWVybyBkZSBsaWNlbsOnYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdFc3RhbnRlIHBlcnNvbmFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2aWRvciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGEgZGEgZmF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRhIGRhIGVuY29tZW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0YSBkYSBnYXJhbnRpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRhIGRlIGxhbsOnYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfDgXJlYSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGRvY3VtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdCYXN0aWRvciBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY29ycmVpbyBlbGV0csOzbmljbyAoQ2VydGlmaWNhZG9zIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdHJhYmFsaG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmRlcmXDp28gSVAgZmluYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW0gZG8gYXBvaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRhIGRlIGV4cGlyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdEaXNjbyByw61naWRvIGV4dGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQXJtYXplbmFtZW50byBkZSBlbmVyZ2lhIG5vIHZvbGFudGUgZG8gbW90b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYXRvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgZnJhbnF1aWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMaXZyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDtWVzIGdlcmFpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1BsYWNhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1BsYWNhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbG8gZGUgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUGVzbyBkbyBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVzY3VsdGFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdMOjbyBkZSBJZGVudGlkYWRlIGUgQWNlc3NvIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGludmVudMOhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRhIGZhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGVjcsOjIGRlIGNyaXN0YWlzIGzDrXF1aWRvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChEw61vZG8gRW1pc3NvciBkZSBMdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGZpeG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAncG9ydMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYW1hZGEgMTogQ2FtYWRhIGbDrXNpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnQ2FtYWRhIDI6IENhbWFkYSBkZSBsaWdhw6fDo28gZGUgZGFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NhbWFkYSAzOiBDYW1hZGEgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdDYW1hZGEgMzogQ2FtYWRhIGRlIHJlZGUgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYW1hZGEgNDogQ2FtYWRhIGRlIHRyYW5zcG9ydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0NhbWFkYSA1OiBDYW1hZGEgZGUgc2Vzc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDYW1hZGEgNjogQ2FtYWRhIGRlIGFwcmVzZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnQ2FtYWRhIDc6IENhbWFkYSBkZSBhcGxpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBhcnJlbmRhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBMaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2hhdmUgZGUgbGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBkZSBsaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGUgbGljZW7Dp2EgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZSBsaWNlbsOnYSBhdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGZvc2ZhdG8gZGUgZmVycm8gZSBsw610aW8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGnDtWVzIGRlIGzDrXRpbyAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGVtcHLDqXN0aW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdMb2NhbGl6YWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZGUgbcOheGltYSBkZSBjYXJnYSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWVtw7NyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUaXBvIGRlIG1lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGVsZW3Ds3ZlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNw7N2ZWwvRW1iYXJjYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28gZG8gbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdcOnw6NvIGRvIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVGFtYW5obyBkbyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAncmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hw6fDtWVzIHNvYnJlIGEgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw7VlcyBzb2JyZSBhIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0NhbWFkYSBkZSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBuw61xdWVsLWPDoWRtaW8gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBoaWRyZXRvIG1ldMOhbGljbyBkZSBuw61xdWVsIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBY29yZG8gZGUgbsOjbyBkaXZ1bGdhw6fDo28gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdDYWRlcm5vIGRlIG5vdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ07Dum1lcm8gZGUgbcOzZHVsb3MgZGUgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ07Dum1lcm8gZGUgcGxhY2FzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChEw61vZG8gRW1pc3NvciBkZSBMdXogT3Jnw6JuaWNvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdDdXN0b3MgZGUgZnVuY2lvbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGVuY29tZW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ091dHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYcOtZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0Fjb3JkbyBkZSBwYXJjZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGVsZWZvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RpcG8gZGUgdGVsZWZvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0Zvcm5lY2ltZW50byBkZSBlbmVyZ2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnQ29tcHJhZG8gZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1Byb2Z1bmRpZGFkZSBkYSBlc3RhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVW5pZGFkZXMgZGUgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1NhbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdDYXJ0w6NvIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZWZvbmUgcG9yIHNhdMOpbGl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXRlcmlhIHNlbGFkYSBkZSBjaHVtYm8tw6FjaWRvIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTsO6bWVybyBkZSBzw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgZGUgc2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBzZXJ2acOnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ0V0aXF1ZXRhIGRlIHNlcnZpw6dvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGUgdG9tYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRpZmFsYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnUGFkcsOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnRW5kZXJlw6dvIElQIGluaWNpYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0FybWF6ZW5hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0acOnw6NvIGRlIGFybWF6ZW5hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdGaWxpYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1Jlc3Vtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NsaWVudGUgZmlubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRmlvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgZGEgcGxhY2EgZ3LDoWZpY2EgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIGRlIGVjcsOjIHTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQXVyaWN1bGFyIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ro_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJvX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRlIGdlbmVyYWxlIGRlIGZ1bmPIm2lvbmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnU2V0xINyaSBwZW50cnUgZGF0ZWxlIGRlIHNvbGljaXRhcmUgcHJpbWl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1NldMSDcmkgcGVudHJ1IGllyJlpcmVhIGRhdGVsb3IgZGUgcsSDc3B1bnMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uYXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhcmVhIGRlZmluacibaWVpIGNsYXNlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTW9kaWZpY2FyZWEgZGVmaW5pyJtpZWkgcm9sdWx1aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhY2hldGUgZGUgY2xhc2UgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnQWljaSBwdXRlyJtpIGltcG9ydGEgcGFjaGV0ZSBkZSBjbGFzZSBSZWFkeTJJbXBvcnQgY2FyZSBwcmV6aW50xIMgY2VsZSBtYWkgdXp1YWxlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlLiBWxIMgcnVnxINtIHPEgyByZcibaW5lyJtpIGPEgyBlc3RlIHBvc2liaWwgc8SDIGZpZSBuZWNlc2FyxIMgbyBhbnVtaXTEgyBjb25maWd1cmFyZSBzdXBsaW1lbnRhcsSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBY3R1YWxpemFyZWEgZW50aXTEg8ibaWxvciBleGlzdGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnRhyJtpIHBhY2hldGVsZSBkZSBjbGFzZSBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNhIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdSb2x1bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgRWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cnUgcGVudHJ1IGNsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjdGHIm2kgbyBjbGFzxIMgZGluIGxpc3TEgyBwZW50cnUgYSBjcmVhIHVuIG5vdSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGFyZWEgZGUgZGVzZsSDyJl1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YXJlYSBpbmNpZGVudHVsdWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGVnxIN0dXJhIGN1IHVuIGFsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtxINyIGRlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTnVtxINydWwgdW51aSBhbHQgZWxlbWVudCBkZSBjb25maWd1cmFyZSBjdSBjYXJlIHNlIGZhY2UgbGVnxIN0dXJhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0NoaWFyIGRvcmnIm2kgc8SDIMiZdGVyZ2XIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTnVtZWxlIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTnVtZWxlIGVzdGUgZGVqYSB1dGlsaXphdCBkZSBDb25maWdJdGVtcyBjdSB1cm3Eg3RvcnVsIG51bcSDciAobnVtZXJlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOdW3Eg3J1bCB2ZXJzaXVuaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ051bcSDcnVsIGRlIHZlcnNpdW5lIGFsIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ051bcSDcnVsIGRlIHZlcnNpdW5lIGVzdGUgZGVqYSB1dGlsaXphdCBkZSBDb25maWdJdGVtcyBjdSB1cm3Eg3RvcnVsIG51bcSDciAobnVtZXJlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXJlYSBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdHVsIGluY2lkZW50dWx1aSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSXN0b3JpY3VsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc3RvcmllIENvbsibaW51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWZWRlcmUgZGUgZGV0YWxpdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgRWxlbWVudGUgcGUgcGFnaW7Egyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTnUgcy1hdSBnxINzaXQgZGF0ZSBkZXNwcmUgZWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdGHIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1J1bGHIm2kgY8SDdXRhcmVhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGVudHJ1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdOaXZlbHVsIGRlIGFkw6JuY2ltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1pvb20gSW4vT3V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVsdWwgbWF4aW0gZGUgbGVnxIN0dXJpIGEgZm9zdCBhdGlucyBwZW50cnUgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50IGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHIm2lpIGRlc3ByZSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhcmVhIGFjdHVhbMSDIGRlIGRlc2bEg8iZdXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1N0YXJlYSBhY3R1YWzEgyBhIGluY2lkZW50dWx1aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdVbHRpbWEgbW9kaWZpY2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdNb2RpZmljYXQgdWx0aW1hIGRhdMSDIGRlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnRWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDxIN1dGFyZSBDb25maWdJdGVtJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2Ugdm9yIGltcG9ydGEgdXJtxIN0b2FyZWxlIGNsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1VybcSDdG9hcmVsZSByb2x1cmkgdm9yIGZpIGltcG9ydGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdSZcibaW5lyJtpIGPEgyB2b3IgZmkgY3JlYXRlIMiZaSBjw6JtcHVyaWxlIGRpbmFtaWNlIGNvcmVzcHVuesSDdG9hcmUgyJlpIGNsYXNlbGUgR2VuZXJhbENhdGFsb2cgyJlpIGPEgyBudSBleGlzdMSDIG8gZWxpbWluYXJlIGF1dG9tYXTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWcmXIm2kgc8SDIGNvbnRpbnVhyJtpPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdBdmXIm2kgbmV2b2llIGRlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmnIm2lhIG51IGVzdGUgdW4gaGFzaCBZQU1MIHZhbGlkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBkYXQgbmljaXVuIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdBdmXIm2kgbmV2b2llIGRlIGNlbCBwdcibaW4gdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSBzZWxlY3RhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOdSBhdmXIm2kgYWNjZXMgZGUgc2NyaWVyZSBsYSBhY2VzdCBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTnUgYSBmb3N0IGRlZmluaXTEgyBuaWNpbyBkZWZpbmnIm2llIHBlbnRydSBjbGFzYSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0VsZW1lbnR1bCBkZSBjb25maWd1cmFyZSAiJXMiIG51IHNlIGfEg3NlyJl0ZSDDrm4gYmF6YSBkZSBkYXRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ051IGEgZm9zdCBwb3NpYmlsxIMgyJl0ZXJnZXJlYSBjb25maWdpdGVtdWx1aSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ051IHMtYSBnxINzaXQgbmljaW8gdmVyc2l1bmUgcGVudHJ1IENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBpbmRpY2F0IG5pY2l1biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIHNhdSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTnUgc2Ugb2ZlcsSDIGFjY2VzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOdSBzZSBwb2F0ZSBhZmnImWEgaXN0b3JpY3VsLCBudSBlc3RlIGRhdCBuaWNpdW4gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBpc3RvcmljdWwsIG51IHNlIGFjb3JkxIMgZHJlcHR1cmkgZGUgYWNjZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3UgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdWZXJzaXVuZSBub3XEgyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhcmVhIGRlIGltcGxlbWVudGFyZSBhY3R1YWxpemF0xIMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGFyZWEgaW5jaWRlbnR1bHVpIGEgZm9zdCBhY3R1YWxpemF0xIMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSDImXRlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIGPEg3RyZSAlcyAodGlwPSVzKSBhZMSDdWdhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayBjxIN0cmUgJXMgKHRpcD0lcykgyJl0ZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmnIm2llIENvbmZpZ0l0ZW0gYWN0dWFsaXphdMSDIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOdW1lIGFjdHVhbGl6YXQgKG5vdT0lcywgdmVjaGk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dHVsICVzIGEgZm9zdCBhY3R1YWxpemF0IGRlIGxhICIlcyIgbGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaXVuZWEgJXMgyJl0ZWFyc8SDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ051IGVzdGUgaW5kaWNhdCBuaWNpdW4gQ29uZmlnSXRlbUlEIHNhdSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUsIG51IHN1bnQgYWNvcmRhdGUgZHJlcHR1cmkgZGUgYWNjZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG51IGEgZm9zdCBnxINzaXQgw65uIGJhemEgZGUgZGF0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3RpcMSDcml0IGRlICVzIGxhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmluyJvEgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOdSBlc3RlIGRhdCBuaWNpdW4gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOdSBzZSBhY29yZMSDIGRyZXB0dXJpIGRlIGFjY2VzIHBlbnRydSBhY2Vhc3TEgyBjbGFzxIMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOaWNpIHVuIHJlenVsdGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlenVsdGF0ZWxlIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ051IHNlIHBvYXRlIGFmaciZYSBlbGVtZW50dWwsIG51IHN1bnQgYWNvcmRhdGUgZHJlcHR1cmkgZGUgYWNjZXMgcGVudHJ1IENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbnUgYSBmb3N0IGfEg3NpdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTnUgcy1hdSBnxINzaXQgdmVyc2l1bmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmHIm2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmVydGl6YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXJlYSBkZSBkZXNmxIPImXVyYXJlIGEgYWNlc3R1aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhcmVhIGluY2lkZW50xIMgYSBhY2VzdHVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOdSBhaSBwZXJtaXNpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cnUgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50ZSBkZSBjb25maWd1cmFyZSBhZmnImWF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXAgZGUgc3RhdCBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcHVsIGRlIHN0YXQgYWwgaW5jaWRlbnR1bHVpIGN1cmVudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfDjm50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWPIm2lpIGRlIGNsYXPEgyBwZW50cnUgZWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RhyJtpIHVuYSBzYXUgbWFpIG11bHRlIGNsYXNlIHBlbnRydSBhIHJlc3RyaWPIm2lvbmEgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBzZWxlY3RhYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY8ibaWkgZGUgY2xhc8SDIHBlbnRydSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RhyJtpIHVuYSBzYXUgbWFpIG11bHRlIGNsYXNlIHBlbnRydSBhIHJlc3RyaWPIm2lvbmEgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBzZWxlY3RhYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbmFtaWMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpdW5lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXB1bCBkZSByZWZlcmluyJvEgyBhIGxlZ8SDdHVyaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnRGFjxIMgYWNlYXN0xIMgbGVnxIN0dXLEgyBzZSBhcGxpY8SDIGxhIENvbmZpZ0l0ZW0gc2F1IGxhIHZlcnNpdW5lYSBzdGF0aWPEgyBhIG9iaWVjdHVsdWkgZGUgcmVmZXJpbsibxIMuIENhbGN1bHVsICJDdXJyZW50IEluY2lkZW50IFN0YXRlIiBzZSBlZmVjdHVlYXrEgyBudW1haSDDrm4gY2F6dWwgbGVnxIN0dXJpbG9yIGRpbmFtaWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdGHIm2kgYXRyaWJ1dHVsIGR1cMSDIGNhcmUgdm9yIGZpIGPEg3V0YXRlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1N0cnVjdHVyYSBkZSBiYXrEgyBudSBlc3RlIHZhbGlkxIMuIFbEgyBydWfEg20gc8SDIGZ1cm5pemHIm2kgdW4gaGFzaCBjdSBkYXRlIMOubiBmb3JtYXQgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdFc3RlIG5lY2VzYXIgY2EgyJlpcnVsIFlBTUwgc8SDIMOubmNlYXDEgyBjdSAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTnUgcy1hIHB1dHV0IGN1csSDyJthIHRhYmVsdWwgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTnUgYXUgZm9zdCBnxINzaXRlIGPDom1wdXJpIGRpbmFtaWNlIHJlbGV2YW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ051IHMtYSBwdXR1dCBpbnNlcmEgw65uIHRhYmVsdWwgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcmF0ZSAwIHLDom5kdXJpIMOubiB0YWJlbHVsIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOdW3Eg3J1bCBtYXhpbSBhbCB1bnVpIGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2l1bmVhIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcm9hcmUgZGUgc2luY3Jvbml6YXJlIGEgZGVmaW5pyJtpaWxvci4gVsSDIHJ1Z8SDbSBzxIMgdmVyaWZpY2HIm2kganVybmFsdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnQXZlyJtpIGRlZmluacibaWkgSVRTTUNvbmZpZ0l0ZW0gY2FyZSBudSBzdW50IHNpbmNyb25pemF0ZS4gVsSDIHJ1Z8SDbSBzxIMgaW1wbGVtZW50YcibaSBtb2RpZmljxINyaWxlIGPDom1wdXJpbG9yIGRpbmFtaWNlIGFsZSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfDjm50cmXIm2luZXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhyJtpaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2lvbmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldml6dWlyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdGFyZS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJlemVudGFyZSBnZW5lcmFsxIMgyJlpIGNvbmZpcm1hcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0dWwgY2xhc2Vsb3Ivcm9sdXJpbG9yIMiZaSBhbCBjw6JtcHVyaWxvciBhZmVyZW50ZSBhY2VzdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1MtYSBwcm9kdXMgbyBlcm9hcmUgw65uIHRpbXB1bCBpbXBvcnR1bHVpIGNsYXNlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEFzY3Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gQWZpyJlhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacibaWkgZGUgY8SDdXRhcmUgZXh0aW5zZSDDrm4gY8SDdXRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4gQ3UgYWNlYXN0xIMgZnVuY8ibaWUgcHV0ZcibaSBjxIN1dGEsIGRlIGV4ZW1wbHUsIG51bWVsZSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBjdSBhY2VzdCB0aXAgZGUgY29uZGnIm2lpLCBjdW0gYXIgZmkgIigqa2V5MSomJiYqa2V5MiopIiBzYXUgIigqa2V5MSp8fHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacibaWkgZGUgY8SDdXRhcmUgZXh0aW5zZSDDrm4gY8SDdXRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4gQ3UgYWNlYXN0xIMgZnVuY8ibaWUgcHV0ZcibaSBjxIN1dGEsIGRlIGV4ZW1wbHUsIG51bWVsZSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBjdSBhY2VzdCB0aXAgZGUgY29uZGnIm2lpLCBjdW0gYXIgZmkgIigqa2V5MSomJiYqa2V5MiopIiBzYXUgIigqa2V5MSp8fHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnSUMgYXRyaWJ1aXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0lDIGF0cmlidWl0ZSBzb2NpZXTEg8ibaWkgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnSUMgYXRyaWJ1aXRlIHV0aWxpemF0b3J1bHVpIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnU2V0xINyaSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWZXJpZmljxIMgdW4gbnVtZSB1bmljIG51bWFpIMOubiBjYWRydWwgYWNlbGVpYciZaSBjbGFzZSBkZSBDb25maWdJdGVtICgiY2xhc3MiKSBzYXUgbGEgbml2ZWwgZ2xvYmFsICgiZ2xvYmFsIiksIGNlZWEgY2Ugw65uc2VhbW7EgyBjxIMgZmllY2FyZSBDb25maWdJdGVtIGV4aXN0ZW50IGVzdGUgbHVhdCDDrm4gY29uc2lkZXJhcmUgYXR1bmNpIGPDom5kIHNlIGNhdXTEgyBkdXBsaWNhdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdBbGVnZcibaSB1biBtb2R1bCBwZW50cnUgYSBpbXB1bmUgbyBzY2hlbcSDIGRlIGRlbnVtaXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQWxlZ2XIm2kgdW4gbW9kdWwgcGVudHJ1IGEgYXBsaWNhIG8gc2NoZW3EgyBkZSBudW1lcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0FsZWdlyJtpIHVuIG1vZHVsIHBlbnRydSBhIGFwbGljYSBvIHNjaGVtxIMgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdBbGVnZcibaSBhdHJpYnV0ZWxlIHBlbnRydSBhIGRlY2xhbsiZYSBjcmVhcmVhIHVuZWkgbm9pIHZlcnNpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdBbGVnZcibaSBjYXRlZ29yaWlsZSBwZSBjYXJlIHPEgyBsZSBhdHJpYnVpyJtpIGFjZXN0ZWkgY2xhc2UgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJlIGRlIGNvbG9hbsSDIHBlbnRydSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlIHBlbnRydSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb2FuZSBjYXJlIHBvdCBmaSBmaWx0cmF0ZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBOb3TEgzogU3VudCBwZXJtaXNlIG51bWFpIGF0cmlidXRlbGUgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgyJlpIGPDom1wdXJpbGUgZGluYW1pY2UgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZMSDdWdhcmUgZWxlbWVudCBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXJlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWx1bCBkZSBldmVuaW1lbnRlIGFsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGNhcmUgcGVybWl0ZSDDrm5yZWdpc3RyYXJlYSDDrm4gaXN0b3JpYyDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIGRlIGV2ZW5pbWVudCBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBjYXJlIGFjdHVhbGl6ZWF6xIMgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBsYSBkZWZpbmnIm2lhIGxvciBjdXJlbnTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdJc3RvcmljdWwgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJpbWFyZSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYcibaSB6b29tdWwgZWxlbWVudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc2l1bmVhIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGluIHVybcSDdG9hcmVsZSBjbGFzZSBudSB2b3IgZmkgc3RvY2F0ZSBwZSBzZXJ2ZXJ1bCBFbGFzdGljc2VhcmNoLiBQZW50cnUgYSBhcGxpY2EgYWNlc3QgbHVjcnUgbGEgSUMtdXJpbGUgZXhpc3RlbnRlLCBtaWdyYXJlYSBJQy11cmlsb3IgdHJlYnVpZSBzxIMgZmllIGV4ZWN1dGF0xIMgcHJpbiBpbnRlcm1lZGl1bCBjb25zb2xlaSwgZHVwxIMgbW9kaWZpY2FyZWEgYWNlc3RlaSBvcMibaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgY3UgdXJtxIN0b2FyZWxlIHN0xINyaSBkZSBpbXBsZW1lbnRhcmUgbnUgdm9yIGZpIHN0b2NhdGUgcGUgc2VydmVydWwgRWxhc3RpY3NlYXJjaC4gUGVudHJ1IGEgYXBsaWNhIGFjZXN0IGx1Y3J1IGxhIElDLXVyaWxlIGV4aXN0ZW50ZSwgbWlncmFyZWEgSUMtdXJpbG9yIHRyZWJ1aWUgc8SDIGZpZSBleGVjdXRhdMSDIHByaW4gaW50ZXJtZWRpdWwgY29uc29sZWksIGR1cMSDIG1vZGlmaWNhcmVhIGFjZXN0ZWkgb3DIm2l1bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYcibaWUgRWxlbWVudCBsaW1pdMSDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmHIm2llIExpbWl0YSBkZSBlbGVtZW50ZSBwZSBwYWdpbsSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmF6YSBkZSBkYXRlIGRlIGdlc3Rpb25hcmUgYSBjb25maWd1cmHIm2llaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0VsZW1lbnQgZGUgY29uZmlndXJhcmUgbW9kdWwgYnVsay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlIGPEg3V0YXJlIHJvdXRlciBiYWNrZW5kIGFsIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWHIm2kgyJlpIGdlc3Rpb25hyJtpIGRlZmluacibaWlsZSBwZW50cnUgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVlYXrEgyBiaWxldGUgcGVudHJ1IENvbmZpZ0l0ZW1zIGxhIGFudW1pdGUgbW9tZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQ2xpZW7Im2lpIHBvdCB2ZWRlYSB2ZXJzaXVuaWxlIGlzdG9yaWNlIGFsZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQ2xpZW7Im2lpIGF1IHBvc2liaWxpdGF0ZWEgZGUgYSBjb211dGEgbWFudWFsIMOubnRyZSB2ZXJzaXVuaWxlIGlzdG9yaWNlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdGUgaW1wbGljaXRlIGNhcmUgdHJlYnVpZSB1dGlsaXphdGUgw65uIGF0cmlidXR1bCBwZW50cnUgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlLiBFeGVtcGx1OiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGUgaW1wbGljaXRlIGNhcmUgdHJlYnVpZSB1dGlsaXphdGUgw65uIGF0cmlidXR1bCBwZW50cnUgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlLiBFeGVtcGx1OiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pyJtpIGFjyJtpdW5pbGUgw65uIGNhcmUgZXN0ZSBkaXNwb25pYmlsIHVuIGJ1dG9uIGRlIHNldMSDcmkgw65uIHdpZGdldHVsIG9iaWVjdGVsb3IgbGVnYXRlIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFJlyJtpbmXIm2kgY8SDIGFjZXN0ZSBhY8ibaXVuaSB0cmVidWllIHPEgyBhaWLEgyDDrm5yZWdpc3RyYXRlIHVybcSDdG9hcmVsZSBmaciZaWVyZSBKUyDImWkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDImWkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pyJtpIG8gc2NoZW3EgyBUZW1wbGF0ZTo6VG9vbGtpdCBwZW50cnUgyJlpcnVyaWxlIGRlIHZlcnNpdW5pLiBTZSB1dGlsaXplYXrEgyBudW1haSBkYWPEgyBtb2R1bHVsIGRlIMiZaXJ1cmkgZGUgdmVyc2l1bmkgZXN0ZSBzZXRhdCBsYSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmnIm2kgdW4gc2V0IGRlIGNvbmRpyJtpaSDDrm4gY2FyZSB1biBjbGllbnQgYXJlIHZvaWUgc8SDIHZhZMSDIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuIENvbmRpyJtpaWxlIHBvdCBmaSBvcMibaW9uYWwgcmVzdHJpY8ibaW9uYXRlIGxhIGFudW1pdGUgZ3J1cHVyaSBkZSBjbGllbsibaS4gTnVtZWxlIGVzdGUgc2luZ3VydWwgYXRyaWJ1dCBvYmxpZ2F0b3JpdS4gRGFjxIMgbnUgc2Ugb2ZlcsSDIGFsdGUgb3DIm2l1bmksIHRvYXRlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUgdm9yIGZpIHZpemliaWxlIMOubiBjYXRlZ29yaWEgcmVzcGVjdGl2xIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSDImXRlcmdlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUgSVRTTSB1dGlsaXrDom5kIGludGVyZmHIm2EgZ2VuZXJpY8SDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBwZXJtaXNpdW5pbGUgbmVjZXNhcmUgcGVudHJ1IGEgb2LIm2luZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSBjxIN1dGEgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgSVRTTSB1dGlsaXrDom5kIGludGVyZmHIm2EgZ2VuZXJpY8SDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBwZXJtaXNpdW5pbGUgbmVjZXNhcmUgcGVudHJ1IGEgc2V0YSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgdW4gbW9kdWwgZGUgcHJlemVudGFyZSBnZW5lcmFsxIMgcGVudHJ1IGEgYWZpyJlhIHZpenVhbGl6YXJlYSBtaWPEgyBhIHVuZWkgbGlzdGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgZGFjxIMgZXRpY2hldGVsZSB0aXB1bHVpIGRlIGxlZ8SDdHVyxIMgdHJlYnVpZSBzxIMgZmllIGFmaciZYXRlIMOubiBjb25leGl1bmlsZSBub2R1cmlsb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGV4cHJlc2lpIHJlZ3VsYXRlIGluZGl2aWR1YWwgcGVudHJ1IGZpZWNhcmUgY2xhc8SDIENvbmZpZ0l0ZW0gcGVudHJ1IGEgdmVyaWZpY2EgbnVtZWxlIENvbmZpZ0l0ZW0gyJlpIHBlbnRydSBhIGFmaciZYSBtZXNhamVsZSBkZSBlcm9hcmUgY29yZXNwdW56xIN0b2FyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBkaXNwb25pYmlsZSBwZW50cnUgSUMgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBjb21wdXPEgyBkaW50ci11biBudW1lIGRlIGNsYXPEgyDImWkgbyBtYXRyaWNlIGRlIGPDom1wdXJpIGRpc3BvbmliaWxlIHBlbnRydSBjbGFzYSBjb3Jlc3B1bnrEg3RvYXJlLiBJbnRyxINyaWxlIGRlIGPDom1wdXJpIGRpbmFtaWNlIHRyZWJ1aWUgc8SDIHJlc3BlY3RlIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgaW1wbGljaXQgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgcGVudHJ1IHNvcnRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgaW1wbGljaXQgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgcGVudHJ1IHNvcnRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgYXRyaWJ1dHVsIGltcGxpY2l0IGFsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIHBlbnRydSBzb3J0YXJlYSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBhbCByZXp1bHRhdHVsdWkgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gYWNlYXN0xIMgb3BlcmHIm2l1bmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG9yZGluZWEgaW1wbGljaXTEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBTdXM6IGNlbCBtYWkgdmVjaGkgw65uIHBhcnRlYSBkZSBzdXMuIEpvczogY2VsIG1haSByZWNlbnQgw65uIHBhcnRlYSBkZSBzdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG9yZGluZWEgaW1wbGljaXTEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLiBTdXM6IGNlbCBtYWkgdmVjaGkgw65uIHBhcnRlYSBkZSBzdXMuIEpvczogY2VsIG1haSByZWNlbnQgw65uIHBhcnRlYSBkZSBzdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBhZmnImWF0ZSDDrm4gbW9kIGltcGxpY2l0IGFsZSBJQyDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIGZ1bmPIm2llIGRlIGNsYXNhIElDLiBGaWVjYXJlIGludHJhcmUgdHJlYnVpZSBzxIMgZmllIGNvbXB1c8SDIGRpbnRyLXVuIG51bWUgZGUgY2xhc8SDIMiZaSBvIG1hdHJpY2UgZGUgY8OibXB1cmkgZGlzcG9uaWJpbGUgcGVudHJ1IGNsYXNhIGNvcmVzcHVuesSDdG9hcmUuIEludHLEg3JpbGUgZGUgY8OibXB1cmkgZGluYW1pY2UgdHJlYnVpZSBzxIMgcmVzcGVjdGUgc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZciZdGUgYWTDom5jaW1lYSBpbXBsaWNpdMSDIGEgcmVsYcibaWlsb3IgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGF0cmlidXR1bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGFmaciZYXQgw65uIG1vZCBpbXBsaWNpdCBwZW50cnUgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBhZmnImWF0IMOubiBtb2QgaW1wbGljaXQgcGVudHJ1IGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4gRXhlbXBsdTogIktleSIgdHJlYnVpZSBzxIMgYWlixIMgbnVtZWxlIGPDom1wdWx1aSBkaW5hbWljLCDDrm4gYWNlc3QgY2F6ICJYIiwgIkNvbnRlbnQiIHRyZWJ1aWUgc8SDIGFpYsSDIHZhbG9hcmVhIGPDom1wdWx1aSBkaW5hbWljIMOubiBmdW5jyJtpZSBkZSB0aXB1bCBkZSBjw6JtcCBkaW5hbWljLCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU3RvcFNlY29uZD01OTtcJyDImWkgc2F1IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgc3Vib2JpZWN0dWwgaW1wbGljaXQgYWwgY2xhc2VpICJJVFNNQ29uZmlnSXRlbSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBkaXNwb25pYmlsZSBwZW50cnUgSUMgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBjb21wdXPEgyBkaW50ci11biBudW1lIGRlIGNsYXPEgyDImWkgbyBtYXRyaWNlIGRlIGPDom1wdXJpIGRpc3BvbmliaWxlIHBlbnRydSBjbGFzYSBjb3Jlc3B1bnrEg3RvYXJlLiBJbnRyxINyaWxlIGRlIGPDom1wdXJpIGRpbmFtaWNlIHRyZWJ1aWUgc8SDIHJlc3BlY3RlIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmXImXRlIMOubsSDbMibaW1lYSBwZW50cnUgY29tcG9uZW50YSBlZGl0b3IgZGUgdGV4dCBib2dhdCBwZW50cnUgYWNlc3QgZWNyYW4uIEludHJvZHVjZcibaSBudW3Eg3J1bCAocGl4ZWxpKSBzYXUgdmFsb2FyZWEgcHJvY2VudHVhbMSDIChyZWxhdGl2xIMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG51bcSDcnVsIGRlIHLDom5kdXJpIHBlbnRydSBlZGl0b3J1bCBkZSBkZWZpbmnIm2lpIENJIGRpbiBpbnRlcmZhyJthIGRlIGFkbWluaXN0cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBvcmRpbmVhIHN0xINyaWxvciBpbmNpZGVudGUgZGUgbGEgbWFyZSAoZGUgZXhlbXBsdSwgY3JpY2l0YWzEgykgbGEgbWljxIMgKGRlIGV4ZW1wbHUsIGZ1bmPIm2lvbmFsxIMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgc3TEg3JpbGUgZGUgaW1wbGVtZW50YXJlIHJlbGV2YW50ZSDDrm4gY2FyZSBiaWxldGVsZSBsZWdhdGUgcG90IGFmZWN0YSBzdGFyZWEgdW51aSBJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGxpbWl0YSBkZSBjxIN1dGFyZSBwZW50cnUgZWNyYW51bCBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgbGltaXRhIGRlIGPEg3V0YXJlIHBlbnRydSBlY3JhbnVsIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBsaW1pdGEgZGUgY8SDdXRhcmUgcGVudHJ1IGVjcmFudWwgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGxpbWl0YSBkZSBjxIN1dGFyZSBwZW50cnUgZWNyYW51bCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBhZmnImWF0ZSBhbGUgSUMgw65uIHZpenVhbGl6YXJlYSBjb21wbGV4xIMgYSB0YWJlbHVsdWkgZGUgbGVnxIN0dXJpIHBlbnRydSB0b2F0ZSBjbGFzZWxlIGRlIElDLiBEYWPEgyBudSBleGlzdMSDIG5pY2lvIGludHJhcmUsIHN1bnQgYWZpyJlhdGUgY29sb2FuZWxlIGltcGxpY2l0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgY29sb2FuZWxlIGFmaciZYXRlIGFsZSBJQyDDrm4gdml6dWFsaXphcmVhIGNvbXBsZXjEgyBhIHRhYmVsdWx1aSBkZSBsZWfEg3R1cmksIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBwcmVjZWRhdMSDIGRlIG51bWVsZSBjbGFzZWkgyJlpIGRlIGRvdcSDIHB1bmN0ZSBkZSBzdXNwZW5zaWUgKGRlIGV4ZW1wbHUsIENvbXB1dGVyOjo6KS4gRXhpc3TEgyBjw6J0ZXZhIENJLUF0dHJpYnV0ZXMgY2FyZSBzdW50IGNvbXVuZSB0dXR1cm9yIElDLXVyaWxvciAoZXhlbXBsdSBwZW50cnUgY2xhc2EgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBlbnRydSBhIGFmaciZYSBhdHJpYnV0ZWxlIGluZGl2aWR1YWxlIGFsZSBJQywgYXN0ZmVsIGN1bSBzdW50IGRlZmluaXRlIMOubiBkZWZpbmnIm2lhIElDLCB0cmVidWllIHV0aWxpemF0xIMgdXJtxIN0b2FyZWEgc2NoZW3EgyAoZXhlbXBsdSBwZW50cnUgY2xhc2EgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gRGFjxIMgbnUgZXhpc3TEgyBuaWNpbyBpbnRyYXJlIHBlbnRydSBvIGNsYXPEgyBkZSBJQywgc3VudCBhZmnImWF0ZSBjb2xvYW5lbGUgaW1wbGljaXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgZWxlbWVudGVsZSBjYXJlIHN1bnQgZGlzcG9uaWJpbGUgcGVudHJ1ICJBY8ibaXVuZSIgw65uIGFsIHRyZWlsZWEgbml2ZWwgYWwgc3RydWN0dXJpaSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIGVsZW1lbnRlIHN1bnQgZGlzcG9uaWJpbGUgw65uIHByaW11bCBuaXZlbCBhbCBzdHJ1Y3R1cmlpIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIGVsZW1lbnRlIHN1bnQgZGlzcG9uaWJpbGUgw65uIGFsIGRvaWxlYSBuaXZlbCBhbCBzdHJ1Y3R1cmlpIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIHRpcCBkZSBsZWfEg3R1csSDIChudW1pdMSDIGRpbiBwZXJzcGVjdGl2YSBiaWxldHVsdWkpIHBvYXRlIGFmZWN0YSBzdGFyZWEgdW51aSBJQyBsZWdhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNlIHRpcCBkZSB0aWNoZXQgcG9hdGUgYWZlY3RhIHN0YXJlYSB1bnVpIElDIGxlZ2F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FjdHVhbGl6YXJlIGRlZmluacibaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ8iYdGVyZ2VyZWEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDdWxvYXJlYSBzdMSDcmlpIGRlIGRlc2bEg8iZdXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgZGUgZXZlbmltZW50IHBlbnRydSBjw6JtcHVyaSBkaW5hbWljZSBjYXJlIG1hcmNoZWF6xIMgZGVmaW5pyJtpaWxlIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGNhIGZpaW5kIG5lc2luY3Jvbml6YXRlLCBkYWPEgyBzZSBtb2RpZmljxIMgY8OibXB1cmlsZSBkaW5hbWljZSBjYXJlIGxlIGNvbsibaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDw6JtcHVyaSBkaW5hbWljZSBhZmnImWF0ZSDDrm4gZWNyYW51bCBjw6JtcHVsdWkgSVRTTSBzdXBsaW1lbnRhciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0PDom1wdXJpIGRpbmFtaWNlIGFmaciZYXRlIMOubiBlY3JhbnVsIGRlIHByZXplbnRhcmUgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDw6JtcHVyaSBkaW5hbWljZSBhZmnImWF0ZSDDrm4gZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWN0aXZlYXrEgyBjYXJhY3RlcmlzdGljYSBkZSBhY8ibaXVuZSDDrm4gbWFzxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBwZW50cnUgY2EgZnJvbnRlbmQtdWwgYWdlbnR1bHVpIHPEgyBsdWNyZXplIGxhIG1haSBtdWx0IGRlIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgb2RhdMSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZlYXrEgyBmdW5jyJtpYSBkZSBhY8ibaXVuZSDDrm4gYmxvYyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIG51bWFpIHBlbnRydSBncnVwdXJpbGUgZW51bWVyYXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bHVsIGRlIGV2ZW5pbWVudCBwZW50cnUgYSBzZXRhIHN0YXJlYSBhcnRpY29sdWx1aSBkZSBjb25maWd1cmFyZSBwZSBiaWxldHVsLWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ8OibXB1cmkgYWxlIGluZGV4dWx1aSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSwgdXRpbGl6YXRlIHBlbnRydSBjxIN1dGFyZWEgZnVsbHRleHQuIEPDom1wdXJpbGUgc3VudCwgZGUgYXNlbWVuZWEsIHN0b2NhdGUsIGRhciBudSBzdW50IG9ibGlnYXRvcmlpIHBlbnRydSBmdW5jyJtpb25hbGl0YXRlYSBnZW5lcmFsxIMuIEluY2x1ZGVyZWEgYXRhyJlhbWVudGVsb3IgcG9hdGUgZmkgZGV6YWN0aXZhdMSDIHByaW4gc2V0YXJlYSBpbnRyxINyaWkgbGEgMCBzYXUgcHJpbiDImXRlcmdlcmVhIGFjZXN0ZWlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ8OibXB1cmkgc3RvY2F0ZSDDrm4gaW5kZXh1bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBjYXJlIHN1bnQgdXRpbGl6YXRlIHBlbnRydSBhbHRlIHNjb3B1cmkgw65uIGFmYXLEgyBkZSBjxIN1dMSDcmlsZSBmdWxsdGV4dC4gUGVudHJ1IG8gZnVuY8ibaW9uYWxpdGF0ZSBjb21wbGV0xIMsIHRvYXRlIGPDom1wdXJpbGUgc3VudCBvYmxpZ2F0b3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDjm5yZWdpc3RyYXJlYSBtb2R1bHVsdWkgR2VuZXJpY0ludGVyZmFjZSBwZW50cnUgc3RyYXR1bCBkZSBpbnZvY2FyZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnw45ucmVnaXN0cmFyZWEgbW9kdWx1bHVpIEdlbmVyaWNJbnRlcmZhY2UgcGVudHJ1IHN0cmF0dWwgZGUgaW52b2NhcmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDjm5yZWdpc3RyYXJlYSBtb2R1bHVsdWkgR2VuZXJpY0ludGVyZmFjZSBwZW50cnUgc3RyYXR1bCBkZSBpbnZvY2FyZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlIHN0xINyaWxlIGRlIGltcGxlbWVudGFyZSDDrm4gY8SDdXRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZSBzdMSDcmlsZSBpbmNpZGVudGVsb3Igw65uIGPEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ051bcSDcnVsIG1heGltIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIGNhcmUgdXJtZWF6xIMgc8SDIGZpZSBhZmnImWF0ZSDDrm4gcmV6dWx0YXR1bCBhY2VzdGVpIG9wZXJhyJtpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIGRlIHZlcmlmaWNhcmUgYSBncnVwdWx1aSByZXNwb25zYWJpbCBwZW50cnUgbyBjbGFzxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZGUgdmVyaWZpY2FyZSBhIGdydXB1bHVpIHJlc3BvbnNhYmlsIHBlbnRydSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIGRlIGdlbmVyYXJlIGEgc3RhdGlzdGljaWxvciBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ0RlbnVtaXJlIG1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW3Eg3IgTW9kdWx1bCBkZSBudW1lcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtxINydWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlIMOubiBmaWVjYXJlIHBhZ2luxIMgYSB1bnVpIHJlenVsdGF0IGRlIGPEg3V0YXJlIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtxINydWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlIHBlIGZpZWNhcmUgcGFnaW7EgyBhIHVudWkgcmV6dWx0YXQgZGUgY8SDdXRhcmUgw65uIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmllY3RlbGUgY2FyZSB0cmVidWllIGPEg3V0YXRlLCBjw6J0ZSBpbnRyxINyaSDImWkgY2UgYXRyaWJ1dGUgdHJlYnVpZSBhZmnImWF0ZS4gQXRyaWJ1dGVsZSBDb25maWdJdGVtIHRyZWJ1aWUgc8SDIGZpZSBzdG9jYXRlIMOubiBtb2QgZXhwbGljaXQgcHJpbiBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmV6ZW50YXJlIGdlbmVyYWzEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGNhdGVnb3JpaWxlIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGZpbHRyZWxlIGRlIGNvbG9hbsSDIGRpbiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBtaWNpLiBWxIMgcnVnxINtIHPEgyByZcibaW5lyJtpOiBzZXRhcmVhICJBY3RpdmUiIGxhIDAgdmEgw65tcGllZGljYSBkb2FyIGFnZW7Im2lpIHPEgyBlZGl0ZXplIHNldMSDcmlsZSBhY2VzdHVpIGdydXAgw65uIHByZWZlcmluyJtlbGUgbG9yIHBlcnNvbmFsZSwgZGFyIHZhIHBlcm1pdGUgw65uIGNvbnRpbnVhcmUgYWRtaW5pc3RyYXRvcmlsb3Igc8SDIGVkaXRlemUgc2V0xINyaWxlIMOubiBudW1lbGUgdW51aSBhbHQgdXRpbGl6YXRvci4gVXRpbGl6YcibaSAiUHJlZmVyZW5jZUdyb3VwIiBwZW50cnUgYSBjb250cm9sYSDDrm4gY2Ugem9uxIMgdHJlYnVpZSBhZmnImWF0ZSBhY2VzdGUgc2V0xINyaSDDrm4gaW50ZXJmYcibYSBjdSB1dGlsaXphdG9ydWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgY3Vsb2FyZWEgc3TEg3JpbG9yIGRlIGRlc2bEg8iZdXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgc3TEg3JpbGUgZGUgZGVzZsSDyJl1cmFyZSBkaW4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgZ3J1cHVyaWxlIGRlIHBlcm1pc2l1bmkgZGUgZXhlbXBsdSBhbGUgYXRyaWJ1dGVsb3IgZ2VuZXJhbGUgYWxlIGNhdGFsb2d1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgbnVtZSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgbnVtZXJlIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBwYWdpbmkgKMOubiBjYXJlIHN1bnQgYWZpyJlhdGUgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBtb2R1bHVsIHNldHVsdWkgZGUgaW5zdHJ1bWVudGUgZGUgyJlhYmxvYW5lIGRlIMiZaXJ1cmkgZGUgdmVyc2l1bmkgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGRlY2xhbsiZYXJlYSB2ZXJzaXVuaWkgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnRHJlcHR1cmkgR3J1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBhY8ibaXVuZWEgZGUgYXRhyJlhcmUgYSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIElUU00gZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSB2aXp1YWxpemFyZSBhIGFyYm9yZWx1aSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgbcSDcmlyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIElUU00gw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGFkxIN1Z2FyZSBhIHVudWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gbWFzxIMgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSBlZGl0YXJlIGEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgSVRTTSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGN1IGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gaXN0b3JpYyDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSB0aXDEg3JpcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbGVnaWkgbmVjZXNhcmUgcGVudHJ1IGEgyJl0ZXJnZSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0PEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NldGHIm2kgYXV0b21hdCBzdGFyZWEgZGUgaW5jaWRlbnQgYSB1bnVpIElDIGF0dW5jaSBjw6JuZCB1biBiaWxldCBlc3RlIGxlZ2F0IGRlIHVuIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0YWJpbGXImXRlIHN0YXJlYSBkZSBkZXNmxIPImXVyYXJlIMOubiBlY3JhbnVsIGRlIGFuc2FtYmx1IGFsIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU3RhYmlsZciZdGUgc3RhcmVhIGluY2lkZW50dWx1aSDDrm4gZWNyYW51bCBkZSBhbnNhbWJsdSBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IGNhcmUgcGVybWl0ZSBjb3JlbGFyZWEgdW51aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIGN1IHVuIGFsdCBvYmllY3Qgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBhY2Nlc2EgaXN0b3JpY3VsIHVudWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgYWNjZXNhIGlzdG9yaWN1bCB1bnVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSDImXRlcmdlIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBzYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGFmaciZYSBsZWfEg3R1cmlsZSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBzdWIgZm9ybcSDIGRlIFRyZWUgVmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgZHVwbGljYSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBkdXBsaWNhIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGVkaXRhIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIHJldmVuaSDDrm4gdml6dWFsaXphcmVhIGN1IHpvb20gYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGltcHJpbWEgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIGN1IHpvb20gYSBpbnRlcmZlyJtlaSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIG3Eg3JpIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBpc3RvcmljdWwgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgKMOubiBvcmRpbmUgaW52ZXJzxIMpIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnQ2F0ZWdvcmlhIGltcGxpY2l0xIMgY2FyZSBlc3RlIGFmaciZYXTEgyBkYWPEgyBudSBlc3RlIHNlbGVjdGF0xIMgbmljaXVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpY2F0b3J1bCBwZW50cnUgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSwgZGUgZXhlbXBsdSBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVmFsb2FyZWEgaW1wbGljaXTEgyBlc3RlIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnRGVjbGFuyJllYXrEgyBhdXRvbWF0IGludm9jYXRvcnVsIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2l1bmUgRXhwcmVzaWUgyJlpciBkZSBjYXJhY3RlcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2l1bmUgyJhpciBkZSBjYXJhY3RlcmUgTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2l1bmUgVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnRGFjxIMgZXhlY3XIm2lhIENvbmZpZ0l0ZW1BQ0wgcG9hdGUgZmkgZXZpdGF0xIMgcHJpbiB2ZXJpZmljYXJlYSBkZXBlbmRlbsibZWxvciBkZSBjw6JtcHVyaSBkaW4gbWVtb3JpYSBjYWNoZS4gQWNlc3QgbHVjcnUgcG9hdGUgw65tYnVuxIN0xIPIm2kgdGltcGlpIGRlIMOubmPEg3JjYXJlIGEgZm9ybXVsYXJlbG9yLCBkYXIgdHJlYnVpZSBkZXphY3RpdmF0IGRhY8SDIHNlIHV0aWxpemVhesSDIEFDTE1vZHVsZXMgcGVudHJ1IElUU01Db25maWdJdGVtLSDImWkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0NlIGluZm9ybWHIm2lpIGdlbmVyYWxlIHN1bnQgYWZpyJlhdGUgw65uIGFudGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpdsSDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQ2zEg2RpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmHIm8SDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfImG9hcmVjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUmXIm2VhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQWx0ZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdJZciZaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnQ2FtZXLEgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NMQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ru_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQntCx0YnQuNC1INC00LDQvdC90YvQtSDQv9C+INGN0LrRgdC/0LvRg9Cw0YLQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC00LvRjyDQstGF0L7QtNGP0YnQuNGFINC00LDQvdC90YvRhSDQt9Cw0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDQtNC70Y8g0LjRgdGF0L7QtNGP0YnQuNGFINC+0YLQstC10YLQvdGL0YUg0LTQsNC90L3Ri9GFJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0LzQuCDQtdC00LjQvdC40YbQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfQmNC30LzQtdC90LjRgtGMINC+0L/QuNGB0LDQvdC40LUg0LrQu9Cw0YHRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICfQmNC30LzQtdC90LXQvdC40LUg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRgNC+0LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ9Cf0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfQl9C00LXRgdGMINCy0Ysg0LzQvtC20LXRgtC1INC40LzQv9C+0YDRgtC40YDQvtCy0LDRgtGMINC/0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJJbXBvcnQsINC00LXQvNC+0L3RgdGC0YDQuNGA0YPRjtGJ0LjQtSDQvdCw0YjQuCDRgdCw0LzRi9C1INC+0LHRi9GH0L3Ri9C1INGN0LvQtdC80LXQvdGC0Ysg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQntCx0YDQsNGC0LjRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0YLQviDQvNC+0LbQtdGCINC/0L7RgtGA0LXQsdC+0LLQsNGC0YzRgdGPINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdCw0Y8g0L3QsNGB0YLRgNC+0LnQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfQntCx0L3QvtCy0LvQtdC90LjQtSDRgdGD0YnQtdGB0YLQstGD0Y7RidC40YUg0YHRg9GJ0L3QvtGB0YLQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNGD0LnRgtC1INC/0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0LvQsNGB0YEg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9Cg0L7Qu9GMINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ce0YHQvdC+0LLQvdGL0LUg0YHRgNC10LTRgdGC0LLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRjNGC0YAg0LTQu9GPINC60LvQsNGB0YHQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LrQu9Cw0YHRgSDQuNC3INGB0L/QuNGB0LrQsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgdGBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtINC80LDRgdGB0L7QstC+0LUg0LTQtdC50YHRgtCy0LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfQodCy0Y/Qt9Cw0YLRjCDRgSDQtNGA0YPQs9C40LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstC10YDQvdGL0Lkg0L3QvtC80LXRgCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LTRgNGD0LPQuNGFINCa0JUg0LTQu9GPINGB0LLRj9C30YvQstCw0L3QuNGPLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvNGPINGN0YLQvtCz0L4g0YPRh9C10YLQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80Y8g0YPQttC1INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNGA0YPQs9C+0Lkg0JrQlSDRgdC+INGB0LvQtdC00YPRjtGJ0LjQvCDQvdC+0LzQtdGA0L7QvCAo0LDQvNC4KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfQndC+0LzQtdGAINCy0LXRgNGB0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0J3QvtC80LXRgCDQstC10YDRgdC40Lgg0Y3RgtC+0LPQviDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9Cd0L7QvNC10YAg0LLQtdGA0YHQuNC4INGD0LbQtSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8gQ29uZmlnSXRlbXMg0YHQviDRgdC70LXQtNGD0Y7RidC40Lwg0L3QvtC80LXRgNC+0LwgKNC90L7QvNC10YDQsNC80LgpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0JjRgdGC0L7RgNC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0Ys6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0L7QtNC10YDQttC40LzQvtC1INC40YHRgtC+0YDQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn0J/QvtC00YDQvtCx0L3Ri9C5INC/0L7QutCw0LcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGINC90LAg0YHRgtGA0LDQvdC40YbRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9C1INC+0LEg0Y3Qu9C10LzQtdC90YLQsNGFINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQvdC1INC90LDQudC00LXQvdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0Y3RgtC+0YIg0Y3Qu9C10LzQtdC90YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0JLRi9C/0L7Qu9C90LjRgtGMINC/0L7QuNGB0LonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyDQtNC70Y8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9Cj0YDQvtCy0LXQvdGMINCz0LvRg9Cx0LjQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAn0KPQstC10LvQuNGH0LXQvdC40LUv0YPQvNC10L3RjNGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn0JTQvtGB0YLQuNCz0L3Rg9GCINC80LDQutGB0LjQvNCw0LvRjNC90YvQuSDRg9GA0L7QstC10L3RjCDRgdGB0YvQu9C+0Log0LTQu9GPIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnINCY0L3RhNC+0YDQvNCw0YbQuNGPINC+INCa0L7QvdGELiDQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQotC10LrRg9GJ0LXQtSDRgdC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0JLRgNC10LzRjyDQv9C+0YHQu9C10LTQvdC10LPQviDQuNC30LzQtdC90LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0JDQstGC0L7RgCDQv9C+0YHQu9C10LTQvdC10LPQviDQuNC30LzQtdC90LXQvdC40Y8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfQktCw0YjQuCBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfQn9C+0LjRgdC6IENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfQkdGD0LTRg9GCINC40LzQv9C+0YDRgtC40YDQvtCy0LDQvdGLINGB0LvQtdC00YPRjtGJ0LjQtSDQutC70LDRgdGB0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0KHQu9C10LTRg9GO0YnQuNC1INGA0L7Qu9C4INCx0YPQtNGD0YIg0LjQvNC/0L7RgNGC0LjRgNC+0LLQsNC90YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9GC0L4g0YLQsNC60LbQtSDQsdGD0LTRg9GCINGB0L7Qt9C00LDQvdGLINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8g0Lgg0LrQu9Cw0YHRgdGLIEdlbmVyYWxDYXRhbG9nLCDQuCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQvtCz0L4g0YPQtNCw0LvQtdC90LjRjyDQvdC1INC/0YDQvtC40LfQvtC50LTQtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ9CW0LXQu9Cw0LXRgtC1INC/0YDQvtC00L7Qu9C20LjRgtGMPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfQndGD0LbQvdGLINC/0YDQuNC80LXRgNGLINC60LvQsNGB0YHQvtCyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICfQntC/0YDQtdC00LXQu9C10L3QuNC1INC90LUg0Y/QstC70Y/QtdGC0YHRjyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3Ri9C8INGF0Y3RiNC10LwgWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQntCx0LfQvtGAOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtdGCIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfQktCw0Lwg0L3Rg9C20L3QsCDRhdC+0YLRjyDQsdGLINC+0LTQvdCwINCy0YvQsdGA0LDQvdC90LDRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfQoyDQstCw0YEg0L3QtdGCINC00L7RgdGC0YPQv9CwINC90LAg0LfQsNC/0LjRgdGMINGN0YLQvtC5INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn0JrQu9Cw0YHRgSAlcyDQvdC1INCx0YvQuyDQvtC/0YDQtdC00LXQu9C10L0hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCAiJXMiINC90LUg0L3QsNC50LTQtdC90LAg0LIg0LHQsNC30LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDRg9C00LDQu9C40YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgyDRgSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ9Cd0LUg0L3QsNC50LTQtdC90LAg0LLQtdGA0YHQuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC/0YDQuNGB0LLQvtC10L0gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDQuNC70LggQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9Cd0LXRgiDQtNC+0YHRgtGD0L/QsCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L/QvtC60LDQt9Cw0YLRjCDQuNGB0YLQvtGA0LjRjiwg0L3QtdGCIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC10LLQvtC30LzQvtC20L3QviDQv9C+0LrQsNC30LDRgtGMINC40YHRgtC+0YDQuNGOLCDQvdC10LTQvtGB0YLQsNGC0L7Rh9C90L4g0L/RgNCw0LIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfQndC+0LLQsNGPINCa0JUgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn0J3QvtCy0LDRjyDQstC10YDRgdC40Y8gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQvtCx0L3QvtCy0LvQtdC90L4gKNC90L7QstC+0LU9JXMsINGB0YLQsNGA0L7QtT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQvtCx0L3QvtCy0LvQtdC90L4gKNC90L7QstC+0LU9JXMsINGB0YLQsNGA0L7QtT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfQmtCVIChJRD0lcykg0YPQtNCw0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfQodCy0Y/Qt9GMINGBICVzICjRgtC40L89JXMpINC00L7QsdCw0LLQu9C10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0KHQstGP0LfRjCDRgSAlcyAo0YLQuNC/PSVzKSDRg9C00LDQu9C10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQmtCVINC+0LHQvdC+0LLQu9C10L3QviAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0JjQvNGPINC+0LHQvdC+0LLQu9C10L3QviAo0L3QvtCy0L7QtT0lcywg0YHRgtCw0YDQvtC1PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ9CQ0YLRgNC40LHRg9GCICVzINC+0LHQvdC+0LLQu9C10L0g0YEgIiVzIiDQtNC+ICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn0JLQtdGA0YHQuNGPICVzINGD0LTQsNC70LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0L/RgNC40YHQstC+0LXQvSBDb25maWdJdGVtSUQg0LjQu9C4IFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMsINC90LXRgiDQtNC+0YHRgtGD0L/QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCAlcyDQvdC1INC90LDQudC00LXQvdCwINCyINCx0LDQt9C1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9C90LDQv9C10YfQsNGC0LDQvdC+ICVzINCyICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfQodGB0YvQu9C60LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfQndC10LLQtdGA0L3Ri9C5IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJRCDQvdC1INC/0YDQuNGB0LLQvtC10L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn0J3QtdGCINC00L7RgdGC0YPQv9CwINC00LvRjyDRjdGC0L7Qs9C+INC60LvQsNGB0YHQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9Cd0LXRgiDRgNC10LfRg9C70YzRgtCw0YLQsC/QoNC10YjQtdC90LjRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfQoNC10LfRg9C70YzRgtCw0YLRiyDQv9C+0LjRgdC60LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfQndC10LLQvtC30LzQvtC20L3QviDQvtGC0L7QsdGA0LDQt9C40YLRjCDRjdC70LXQvNC10L3Rgiwg0L3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC/0YDQsNCyINC00LvRjyDQmtCVISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtINC90LUg0L3QsNC50LTQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfQktC10YDRgdC40Lgg0L3QtSDQvdCw0LnQtNC10L3RiyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfQvtC/0LXRgNCw0YLQuNCy0L3QsNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn0LjQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0YLQvtC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwINC00LvRjyDRjdGC0L7QuSDQmtCVJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn0J3QtdGCINGA0LDQt9GA0LXRiNC10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ9Ck0LjQu9GM0YLRgCDQvdC10LTQtdC50YHRgtCy0LjRgtC10LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn0J3QtdC00L7Qv9GD0YHRgtC40LzRi9C1INC/0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LjRgdC60LAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn0J/QvtC60LDQt9Cw0L3QvdGL0LUg0Y3Qu9C10LzQtdC90YLRiyDQvdCw0YHRgtGA0L7QudC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INCh0L7RgdGC0L7Rj9C90LjRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0KLQtdC60YPRidC10LPQviDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjQvdGG0LjQtNC10L3RgtCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9Cc0LXQttC00YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXQvdC40Y8g0LrQu9Cw0YHRgdCwINC00LvRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JLRi9Cx0LXRgNC40YLQtSDQvtC00LjQvSDQuNC70Lgg0L3QtdGB0LrQvtC70YzQutC+INC60LvQsNGB0YHQvtCyLCDRh9GC0L7QsdGLINC+0LPRgNCw0L3QuNGH0LjRgtGMINCy0YvQsdC+0YAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjRjyDQutC70LDRgdGB0LAg0LTQu9GPINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JLRi9Cx0LXRgNC40YLQtSDQvtC00LjQvSDQuNC70Lgg0L3QtdGB0LrQvtC70YzQutC+INC60LvQsNGB0YHQvtCyLCDRh9GC0L7QsdGLINC+0LPRgNCw0L3QuNGH0LjRgtGMINCy0YvQsdC+0YAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQuSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ9Ch0YLQsNGC0LjQutCwICjQstC10YDRgdC40Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ9Ci0LjQvyDRgdGB0YvQu9C60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn0J/RgNC40LzQtdC90Y/QtdGC0YHRjyDQu9C4INGN0YLQsCDRgdGB0YvQu9C60LAg0LogQ29uZmlnSXRlbSDQuNC70Lgg0Log0YHRgtCw0YLQuNGH0LXRgdC60L7QuSDQstC10YDRgdC40Lgg0YHRgdGL0LvQsNGO0YnQtdCz0L7RgdGPINC+0LHRitC10LrRgtCwLiDQoNCw0YHRh9C10YIg0YLQtdC60YPRidC10LPQviDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjQvdGG0LjQtNC10L3RgtCwINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0YLQvtC70YzQutC+INC00LvRjyDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0YHRgdGL0LvQvtC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LDRgtGA0LjQsdGD0YIsINC/0L4g0LrQvtGC0L7RgNC+0LzRgyDQsdGD0LTQtdGCINC+0YHRg9GJ0LXRgdGC0LLQu9GP0YLRjNGB0Y8g0L/QvtC40YHQuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfQkdCw0LfQvtCy0LDRjyDRgdGC0YDRg9C60YLRg9GA0LAg0L3QtdC00LXQudGB0YLQstC40YLQtdC70YzQvdCwLiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0L/RgNC10LTQvtGB0YLQsNCy0YzRgtC1INGF0Y3RiCDRgSDQtNCw0L3QvdGL0LzQuCDQsiDRhNC+0YDQvNCw0YLQtSBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC+INC90LDRh9C40L3QsNGC0Ywg0YHRgtGA0L7QutGDIFlBTUwg0YEgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDQvtGH0LjRgdGC0LjRgtGMINGC0LDQsdC70LjRhtGDIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ9Ch0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8g0L3QtSDQvdCw0LnQtNC10L3Riyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0LLRgdGC0LDQstC40YLRjCDQsiDRgtCw0LHQu9C40YbRgyBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9CS0YHRgtCw0LLQu9C10L3QviAwINGB0YLRgNC+0Log0LIg0YLQsNCx0LvQuNGG0YMgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQvtC00L3QvtCz0L4g0Y3Qu9C10LzQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfQodGC0YDQvtC60LAg0LLQtdGA0YHQuNC4JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ9Ce0YjQuNCx0LrQsCDRgdC40L3RhdGA0L7QvdC40LfQsNGG0LjQuCDQvtC/0YDQtdC00LXQu9C10L3QuNC5LiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0L/RgNC+0LLQtdGA0YzRgtC1INC20YPRgNC90LDQuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfQoyDQstCw0YEg0LXRgdGC0Ywg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyBJVFNNQ29uZmlnSXRlbSwg0LrQvtGC0L7RgNGL0LUg0L3QtSDRgdC40L3RhdGA0L7QvdC40LfQuNGA0L7QstCw0L3Riy4g0J/QvtC20LDQu9GD0LnRgdGC0LAsINGA0LDQt9Cy0LXRgNC90LjRgtC1INC40LfQvNC10L3QtdC90LjRjyDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9Cj0YHRgtCw0YDQtdC70L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfQotC10YXQvdC40YfQtdGB0LrQvtC1INC+0LHRgdC70YPQttC40LLQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Ct0LrRgdC/0LXRgNC40LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9CX0LDQv9C70LDQvdC40YDQvtCy0LDQvdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn0KDQtdC80L7QvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfQodC/0LjRgdCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfQrdC60YHQv9C10YDRgtC40LfQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn0KLQtdGB0YLQuNGA0L7QstCw0L3QuNC1JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfQntCx0LfQvtGAINC4INC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ9CY0LzQv9C+0YDRgiDQutC70LDRgdGB0L7Qsi/RgNC+0LvQtdC5INC4INGB0LLRj9C30LDQvdC90YvRhSDRgSDQvdC40LzQuCDQv9C+0LvQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn0JLQviDQstGA0LXQvNGPINC40LzQv9C+0YDRgtCwINC60LvQsNGB0YHQsCDQv9GA0L7QuNC30L7RiNC70LAg0L7RiNC40LHQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g0KHQutGA0YvRgtGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtINC/0L7QutCw0LfQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9Cf0L7Qt9Cy0L7Qu9GP0LXRgiDRgNCw0YHRiNC40YDQuNGC0Ywg0YPRgdC70L7QstC40Y8g0L/QvtC40YHQutCwINC/0YDQuCDQv9C+0LjRgdC60LUg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuINChINC/0L7QvNC+0YnRjNGOINGN0YLQvtC5INGE0YPQvdC60YbQuNC4INCy0Ysg0LzQvtC20LXRgtC1INC40YHQutCw0YLRjCwg0L3QsNC/0YDQuNC80LXRgCwg0LjQvNGPINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGBINGC0LDQutC40LzQuCDRg9GB0LvQvtCy0LjRj9C80LgsINC60LDQuiAiKCprZXkxKiYmKmtleTIqKSIg0LjQu9C4ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J/QvtC30LLQvtC70Y/QtdGCINGA0LDRgdGI0LjRgNC40YLRjCDRg9GB0LvQvtCy0LjRjyDQv9C+0LjRgdC60LAg0L/RgNC4INC/0L7QuNGB0LrQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC60LvQuNC10L3RgtGB0LrQvtC8INC40L3RgtC10YDRhNC10LnRgdC1LiDQoSDQv9C+0LzQvtGJ0YzRjiDRjdGC0L7QuSDRhNGD0L3QutGG0LjQuCDQstGLINC80L7QttC10YLQtSDQuNGB0LrQsNGC0YwsINC90LDQv9GA0LjQvNC10YAsINC40LzRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDRgSDRgtCw0LrQuNC80Lgg0YPRgdC70L7QstC40Y/QvNC4LCDQutCw0LogIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9Cd0LDQt9C90LDRh9Cw0LXQvNGL0LUg0JrQmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfQmtCYLCDQt9Cw0LrRgNC10L/Qu9C10L3QvdGL0LUg0LfQsCDQutC+0LzQv9Cw0L3QuNC10Lkt0LrQu9C40LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9Ca0JgsINC90LDQt9C90LDRh9C10L3QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GOINC60LvQuNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICfQndCw0YHRgtGA0L7QudC60LggQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/RgNC+0LLQtdGA0LrQsCDRg9C90LjQutCw0LvRjNC90L7RgdGC0Lgg0JjQvNC10L3QuCDQstC90YPRgtGA0Lgg0YLQtdC60YPRidC10LPQviDQutC70LDRgdGB0LAg0JrQlShcJ2NsYXNzXCcpINC40LvQuCDQs9C70L7QsdCw0LvRjNC90L4gKFwnZ2xvYmFsXCcpLNGH0YLQviDQvtC30L3QsNGH0LDQtdGCLCDRh9GC0L4g0LvRjtCx0LDRjyDRgdGD0YnQtdGB0YLQstGD0Y7RidCw0Y8g0JrQlSDRg9GH0LjRgtGL0LLQsNC10YLRgdGPINC/0YDQuCDQv9C+0LjRgdC60LUg0LTRg9Cx0LvQuNC60LDRgtC+0LIgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfQktGL0LHQtdGA0LjRgtC1INC80L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC40LzQtdC90LXQvdC40Y8g0YHRhdC10LzRiyDQuNC80LXQvdC+0LLQsNC90LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LzQvtC00YPQu9GMINC00LvRjyDQv9GA0LjQvNC10L3QtdC90LjRjyDRgdGF0LXQvNGLINGB0YfQuNGB0LvQtdC90LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn0JLRi9Cx0LXRgNC40YLQtSDQvNC+0LTRg9C70Ywg0LTQu9GPINC/0YDQuNC80LXQvdC10L3QuNGPINGB0YXQtdC80Ysg0YHRgtGA0L7QuiDQstC10YDRgdC40LkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn0JLRi9Cx0LXRgNC40YLQtSDQsNGC0YDQuNCx0YPRgtGLINC00LvRjyDQt9Cw0L/Rg9GB0LrQsCDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0Lkg0LLQtdGA0YHQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfQktGL0LHQtdGA0LjRgtC1INC60LDRgtC10LPQvtGA0LjQuCwg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQvdCw0LfQvdCw0YfQtdC90Ysg0Y3RgtC+0LzRgyDQutC70LDRgdGB0YMg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfQpNC40LvRjNGC0YDRiyDRgdGC0L7Qu9Cx0YbQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LTQu9GPIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfQodGC0L7Qu9Cx0YbRiywg0LrQvtGC0L7RgNGL0LUg0LzQvtC20L3QviDRhNC40LvRjNGC0YDQvtCy0LDRgtGMINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4g0J/RgNC40LzQtdGH0LDQvdC40LU6INCg0LDQt9GA0LXRiNC10L3RiyDRgtC+0LvRjNC60L4g0LDRgtGA0LjQsdGD0YLRiyDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC4INC00LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0LUg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9Ch0L7Qt9C00LDRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWcgaXRlbSAo0JrQlSkgZXZlbnQgbW9kdWxlINCy0LXQtNGD0YnQuNC5INC30LDQv9C40YHRjCDQsiDQuNGB0YLQvtGA0LjRjiDQsiDQsNCz0LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDRgdC+0LHRi9GC0LjQuSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQutC+0YLQvtGA0YvQuSDQvtCx0L3QvtCy0LvRj9C10YIg0Y3Qu9C10LzQtdC90YLRiyDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC4INGBINC40YUg0YLQtdC60YPRidC40Lwg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CY0YHRgtC+0YDQuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ9Cf0LXRh9Cw0YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Cf0YDQvtGB0LzQvtGC0YAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfQlNGA0LXQstC+0LLQuNC00L3QvtC1INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn0JLQtdGA0YHQuNGPIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0YHQu9C10LTRg9GO0YnQuNGFINC60LvQsNGB0YHQvtCyINC90LUg0LHRg9C00YPRgiDRhdGA0LDQvdC40YLRjNGB0Y8g0L3QsCDRgdC10YDQstC10YDQtSBFbGFzdGljc2VhcmNoLiDQp9GC0L7QsdGLINC/0YDQuNC80LXQvdC40YLRjCDRjdGC0L4g0Log0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC8IENJLCDQvdC10L7QsdGF0L7QtNC40LzQviDQt9Cw0L/Rg9GB0YLQuNGC0Ywg0LzQuNCz0YDQsNGG0LjRjiBDSSDRh9C10YDQtdC3INC60L7QvdGB0L7Qu9GMINC/0L7RgdC70LUg0LjQt9C80LXQvdC10L3QuNGPINGN0YLQvtC5INC+0L/RhtC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINGB0L4g0YHQu9C10LTRg9GO0YnQuNC80Lgg0YHQvtGB0YLQvtGP0L3QuNGP0LzQuCDRgNCw0LfQstC10YDRgtGL0LLQsNC90LjRjyDQvdC1INCx0YPQtNGD0YIg0YXRgNCw0L3QuNGC0YzRgdGPINC90LAg0YHQtdGA0LLQtdGA0LUgRWxhc3RpY3NlYXJjaC4g0KfRgtC+0LHRiyDQv9GA0LjQvNC10L3QuNGC0Ywg0Y3RgtC+INC6INGB0YPRidC10YHRgtCy0YPRjtGJ0LjQvCBDSSwg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LfQsNC/0YPRgdGC0LjRgtGMINC80LjQs9GA0LDRhtC40Y4gQ0kg0YfQtdGA0LXQtyDQutC+0L3RgdC+0LvRjCDQv9C+0YHQu9C1INC40LfQvNC10L3QtdC90LjRjyDRjdGC0L7QuSDQvtC/0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcg0JvQuNC80LjRgiDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQm9C40LzQuNGCINCa0JUg0L3QsCDRgdGC0YDQsNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDRg9C/0YDQsNCy0LvQtdC90LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40LXQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0J7QsdGK0LXQvNC90YvQuSDQvNC+0LTRg9C70Ywg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0L/QvtC40YHQutCwINCa0JUg0LIg0LDQs9C10L3RgtGB0LrQvtC8INC40L3RgtC10YDRhNC10LnRgdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQodC+0LfQtNCw0L3QuNC1INC4INGD0L/RgNCw0LLQu9C10L3QuNC1INC+0L/QuNGB0LDQvdC40Y/QvNC4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfQodC+0LfQtNCw0LXRgiDRgtC40LrQtdGC0Ysg0LTQu9GPIENvbmZpZ0l0ZW1zINCyINC+0L/RgNC10LTQtdC70LXQvdC90YvQtSDQvNC+0LzQtdC90YLRiyDQstGA0LXQvNC10L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn0JrQu9C40LXQvdGC0Ysg0LzQvtCz0YPRgiDQstC40LTQtdGC0Ywg0LjRgdGC0L7RgNC40YfQtdGB0LrQuNC1INCy0LXRgNGB0LjQuCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn0KMg0LrQu9C40LXQvdGC0L7QsiDQtdGB0YLRjCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINCy0YDRg9GH0L3Rg9GOINC/0LXRgNC10LrQu9GO0YfQsNGC0YzRgdGPINC80LXQttC00YMg0LjRgdGC0L7RgNC40YfQtdGB0LrQuNC80Lgg0LLQtdGA0YHQuNGP0LzQuCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfQlNCw0L3QvdGL0LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINC40YHQv9C+0LvRjNC30YPQtdC80YvQtSDQsiDQsNGC0YDQuNCx0YPRgtC1INC00LvRjyDRjdC60YDQsNC90LAg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguINCf0YDQuNC80LXRgDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfQlNCw0L3QvdGL0LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINC40YHQv9C+0LvRjNC30YPQtdC80YvQtSDQsiDQsNGC0YDQuNCx0YPRgtC1INC00LvRjyDRjdC60YDQsNC90LAg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguINCf0YDQuNC80LXRgDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQlNC10LnRgdGC0LLQuNGPL0FjdGlvbnMg0LrQvtCz0LTQsCDQutC90L7Qv9C60LAg0L3QsNGB0YLRgNC+0LnQutC4INC00L7RgdGC0YPQv9C90LAg0LIg0YHQstGP0LfQsNC90L3QvtC8INCy0LjQtNC20LXRgtC1IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCe0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtSwg0YfRgtC+INGN0YLQuCDQlNC10LnRgdGC0LLQuNGPL0FjdGlvbnMg0LTQvtC70LbQvdGLINC40LzQtdGC0Ywg0LfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNC90L3Ri9C1IEpTINC40LvQuCBDU1Mg0YTQsNC50LvRizogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg0LggQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0YHRhdC10LzRgyBUZW1wbGF0ZTo6VG9vbGtpdCDQtNC70Y8g0YHRgtGA0L7QuiDQstC10YDRgdC40LkuINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0LIg0YLQvtC8INGB0LvRg9GH0LDQtSwg0LXRgdC70Lgg0LTQu9GPIFZlcnNpb24gU3RyaW5nIE1vZHVsZSDRg9GB0YLQsNC90L7QstC70LXQvdC+INC30L3QsNGH0LXQvdC40LUgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvQuNGC0LUg0L3QsNCx0L7RgCDRg9GB0LvQvtCy0LjQuSwg0L/RgNC4INC60L7RgtC+0YDRi9GFINC60LvQuNC10L3RgtGDINGA0LDQt9GA0LXRiNCw0LXRgtGB0Y8g0LLQuNC00LXRgtGMINGN0LvQtdC80LXQvdGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0KPRgdC70L7QstC40Y8g0LzQvtCz0YPRgiDQsdGL0YLRjCDQvtCz0YDQsNC90LjRh9C10L3RiyDQvtC/0YDQtdC00LXQu9C10L3QvdGL0LzQuCDQs9GA0YPQv9C/0LDQvNC4INC60LvQuNC10L3RgtC+0LIuINCd0LDQt9Cy0LDQvdC40LUgLSDQtdC00LjQvdGB0YLQstC10L3QvdGL0Lkg0L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INCw0YLRgNC40LHRg9GCLiDQldGB0LvQuCDQtNGA0YPQs9C40LUg0L/QsNGA0LDQvNC10YLRgNGLINC90LUg0YPQutCw0LfQsNC90YssINCy0YHQtSDRjdC70LXQvNC10L3RgtGLINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsdGD0LTRg9GCINCy0LjQtNC90Ysg0LIg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDRgtGMINGC0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDRg9C00LDQu9C10L3QuNGPIElUU00g0JrQlSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8gSVRTTSDQmtCVINGBINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LwgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0L7QuNGB0LrQsCBJVFNNINCa0JUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBHZW5lcmljIEludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0YPRgdGC0LDQvdC+0LLQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDRgSDQv9C+0LzQvtGJ0YzRjiDQvtCx0YnQtdCz0L4g0LjQvdGC0LXRgNGE0LXQudGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNC+0LTRg9C70Ywg0L/RgNC+0YHQvNC+0YLRgNCwINCa0JUg0LIg0LrRgNCw0YLQutC+0Lwg0LLQuNC00LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQtNC+0LvQttC90Ysg0LvQuCDQvNC10YLQutC4INGC0LjQv9C+0LIg0YHQstGP0LfQtdC5INC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDQsiDRgdC+0LXQtNC40L3QtdC90LjRj9GFINGD0LfQu9C+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YDQtdCz0YPQu9GP0YDQvdGL0LUg0LLRi9GA0LDQttC10L3QuNGPINC00LvRjyDQutCw0LbQtNC+0LPQviDQvtGC0LTQtdC70YzQvdC+0LPQviDQutC70LDRgdGB0LAg0LTQu9GPINC/0YDQvtCy0LXRgNC60Lgg0LjQvNC10L0g0JrQlSDQuCDQstGL0LTQsNGH0Lgg0YHQvtC+0LHRidC10L3QuNC5INC+0LEg0L7RiNC40LHQutCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0LTQvtGB0YLRg9C/0L3Ri9C1INGB0YLQvtC70LHRhtGLIENJINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC70LDRgdGB0LAgQ0kuINCa0LDQttC00LDRjyDQt9Cw0L/QuNGB0Ywg0LTQvtC70LbQvdCwINGB0L7RgdGC0L7Rj9GC0Ywg0LjQtyDQuNC80LXQvdC4INC60LvQsNGB0YHQsCDQuCDQvNCw0YHRgdC40LLQsCDQtNC+0YHRgtGD0L/QvdGL0YUg0L/QvtC70LXQuSDQtNC70Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQtdCz0L4g0LrQu9Cw0YHRgdCwLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0LTQvtC70LbQvdGLINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRgdGF0LXQvNC1IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQsNGC0YDQuNCx0YPRgiDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0YHQvtGA0YLQuNGA0L7QstC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINCw0YLRgNC40LHRg9GCINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LrQu9C40LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0LDRgtGA0LjQsdGD0YIg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0Y3RgtC+0Lkg0L7Qv9C10YDQsNGG0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0L7RgNGP0LTQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuINCS0LLQtdGA0YU6INGB0LDQvNGL0Lkg0YHRgtCw0YDRi9C5INGB0LLQtdGA0YXRgy4g0JLQvdC40Lc6INGB0LDQvNGL0Lkg0L/QvtGB0LvQtdC00L3QuNC5INGB0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0L7RgNGP0LTQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4g0JLQstC10YDRhTog0YHQsNC80YvQuSDRgdGC0LDRgNGL0Lkg0YHQstC10YDRhdGDLiDQktC90LjQtzog0YHQsNC80YvQuSDQv9C+0YHQu9C10LTQvdC40Lkg0YHQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINGB0YLQvtC70LHRhtGLIENJINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC70LDRgdGB0LAgQ0kuINCa0LDQttC00LDRjyDQt9Cw0L/QuNGB0Ywg0LTQvtC70LbQvdCwINGB0L7RgdGC0L7Rj9GC0Ywg0LjQtyDQuNC80LXQvdC4INC60LvQsNGB0YHQsCDQuCDQvNCw0YHRgdC40LLQsCDQtNC+0YHRgtGD0L/QvdGL0YUg0L/QvtC70LXQuSDQtNC70Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQtdCz0L4g0LrQu9Cw0YHRgdCwLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0LTQvtC70LbQvdGLINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRgdGF0LXQvNC1IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINCz0LvRg9Cx0LjQvdGDINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0L7RgtC90L7RiNC10L3QuNC5INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0Lkg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LDRgtGA0LjQsdGD0YIg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC00LvRjyDRjdC60YDQsNC90LAg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C5INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINCw0YLRgNC40LHRg9GCINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQtNC70Y8g0Y3QutGA0LDQvdCwINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J/RgNC40LzQtdGAOiAiS2V5IiDQtNC+0LvQttC90L4g0YHQvtC00LXRgNC20LDRgtGMINC40LzRjyDQtNC40L3QsNC80LjRh9C10YHQutC+0LPQviDQv9C+0LvRjywg0LIg0LTQsNC90L3QvtC8INGB0LvRg9GH0LDQtSBcJ1hcJywgIkNvbnRlbnQiINC00L7Qu9C20L3QviDRgdC+0LTQtdGA0LbQsNGC0Ywg0LfQvdCw0YfQtdC90LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC+0LPQviDQv9C+0LvRjyDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0YLQuNC/0LAg0LTQuNC90LDQvNC40YfQtdGB0LrQvtCz0L4g0L/QvtC70Y8sIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0Lgg0LjQu9C4IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRg9C80LDQu9GH0LjQstCw0LzRi9C5INC/0L7QtNC+0LHRitC10LrRgiDQtNC70Y8g0LrQu9Cw0YHRgdCwIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC00L7RgdGC0YPQv9C90YvQtSDRgdGC0L7Qu9Cx0YbRiyBDSSDQsiDQvtCx0LfQvtGA0LUg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0LrQu9Cw0YHRgdCwIENJLiDQmtCw0LbQtNCw0Y8g0LfQsNC/0LjRgdGMINC00L7Qu9C20L3QsCDRgdC+0YHRgtC+0Y/RgtGMINC40Lcg0LjQvNC10L3QuCDQutC70LDRgdGB0LAg0Lgg0LzQsNGB0YHQuNCy0LAg0LTQvtGB0YLRg9C/0L3Ri9GFINC/0L7Qu9C10Lkg0LTQu9GPINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LXQs9C+INC60LvQsNGB0YHQsC4g0JfQsNC/0LjRgdC4INC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5INC00L7Qu9C20L3RiyDRgdC+0L7RgtCy0LXRgtGB0YLQstC+0LLQsNGC0Ywg0YHRhdC10LzQtSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LLRi9GB0L7RgtGDINC+0LrQvdCwINGC0LXQutGB0YLQvtCy0L7Qs9C+INGA0LXQtNCw0LrRgtC+0YDQsCDQvdCwINGN0YLQvtC8INGN0LrRgNCw0L3QtS4g0JLQstC10LTQuNGC0LUg0YfQuNGB0LvQviDQv9C40LrRgdC10LvQtdC5INC4INC30L3QsNGH0LXQvdC40LUg0LIg0L/RgNC+0YbQtdC90YLQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtGA0L7QuiDQtNC70Y8g0YDQtdC00LDQutGC0L7RgNCwINC+0L/QuNGB0LDQvdC40Lkg0JrQlSAoQ0kpINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LTQvNC40L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0L7RgNGP0LTQvtC6INGB0L7RgdGC0L7Rj9C90LjQuSDQuNC90YbQuNC00LXQvdGC0L7QsiDQvtGCINCy0YvRgdC+0LrQuNGFICjQvdCw0L/RgNC40LzQtdGALCDQutGA0LjRgtC40YfQtdGB0LrQuNGFKSDQtNC+INC90LjQt9C60LjRhSAo0L3QsNC/0YDQuNC80LXRgCwg0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YvRhSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlbGFzdGljc2VhcmNoIHdpZGdldCBiYWNrZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDRgdC+0YHRgtC+0Y/QvdC40Y8g0YDQsNC30LLQtdGA0YLRi9Cy0LDQvdC40Y8sINC60L7Qs9C00LAg0YHQstGP0LfQsNC90L3Ri9C1INC30LDRj9Cy0LrQuCDQvNC+0LPRg9GCINCy0LvQuNGP0YLRjCDQvdCwINGB0YLQsNGC0YPRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQu9C40LzQuNGCINC/0L7QuNGB0LrQsCDQvtCx0YrQtdC60YLQvtCyINC00LvRjyDRjdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQu9C40LzQuNGCINC/0L7QuNGB0LrQsCDQvtCx0YrQtdC60YLQvtCyINC00LvRjyDRjdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0YDQtdC00LXQuyDQv9C+0LjRgdC60LAg0LTQu9GPINGN0LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0YDQtdC00LXQuyDQv9C+0LjRgdC60LAg0LTQu9GPINGN0LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0YHRgtC+0LvQsdGG0Ysg0JrQmCDQsiDQutC+0LzQv9C70LXQutGB0L3QvtC8INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INGC0LDQsdC70LjRhtGLINGB0LLRj9C30LXQuSDQtNC70Y8g0LLRgdC10YUg0LrQu9Cw0YHRgdC+0LIg0JrQmC4g0JXRgdC70Lgg0LfQsNC/0LjRgdGMINC+0YLRgdGD0YLRgdGC0LLRg9C10YIsINGC0L4g0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINGB0YLQvtC70LHRhtGLINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0LXRgNC10YfQtdC90Ywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINGB0YLQvtC70LHRhtC+0LIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINCa0JUg0LIg0YLQsNCx0LvQuNGG0LUg0L/RgNC4INGB0L7Qt9C00LDQvdC40Lgg0YHQstGP0LfQuCwg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60LvQsNGB0YHQsC4g0JrQsNC20LTQvtC1INC40LzRjyDQsNGC0YDQuNCx0YPRgtCwINC00L7Qu9C20L3QviDQuNC80LXRgtGMINCyINC60LDRh9C10YHRgtCy0LUg0L/RgNC10YTQuNC60YHQsCAtINC40LzRjyDQutC70LDRgdGB0LAg0Lgg0LTQstCwINC00LLQvtC10YLQvtGH0LjRjyAoaS5lLiBDb21wdXRlcjo6KS4g0JXRgdGC0Ywg0YDRj9C0INCw0YLRgNC40LHRg9GC0L7Qsiwg0L7QsdGJ0LjRhSDQtNC70Y8g0LLRgdC10YUg0LrQu9Cw0YHRgdC+0LIgKNC90LDQv9GA0LjQvNC10YAsINC00LvRjyDQutC70LDRgdGB0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCU0LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC40L3QtNC40LLQuNC00YPQsNC70YzQvdGL0YUg0LDRgtGA0LjQsdGD0YLQvtCyLCDRgdC/0LXRhtC40YTQuNGH0L3Ri9GFINC00LvRjyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC60LvQsNGB0YHQsCDQuNC3INC+0L/QuNGB0LDQvdC40Y8g0JrQlSAoQ0ktRGVmaW5pdGlvbiksINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgdC70LXQtNGD0Y7RidC40Lkg0YHQuNC90YLQsNC60YHQuNGBICjQvdCw0L/RgNC40LzQtdGALCDQtNC70Y8g0LrQu9Cw0YHRgdCwIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCV0YHQu9C4INC90LXRgiDQsNGC0YDQuNCx0YPRgtC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LrQu9Cw0YHRgdCwLCDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0YHRgtC+0LvQsdGG0Ysg0LfQsNC00LDQvdC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0L7QvCBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiwg0LrQsNC60LjQtSDRjdC70LXQvNC10L3RgtGLINC00L7RgdGC0YPQv9C90Ysg0LTQu9GPICLQlNC10LnRgdGC0LLQuNGPIiDQvdCwINGC0YDQtdGC0YzQtdC8INGD0YDQvtCy0L3QtSDRgdGC0YDRg9C60YLRg9GA0YsgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINC60LDQutC40LUg0Y3Qu9C10LzQtdC90YLRiyDQtNC+0YHRgtGD0L/QvdGLINC90LAg0L/QtdGA0LLQvtC8INGD0YDQvtCy0L3QtSDRgdGC0YDRg9C60YLRg9GA0YsgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQuNC1INGN0LvQtdC80LXQvdGC0Ysg0LTQvtGB0YLRg9C/0L3RiyDQvdCwINCy0YLQvtGA0L7QvCDRg9GA0L7QstC90LUg0YHRgtGA0YPQutGC0YPRgNGLIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiwg0LrQsNC60L7QuSDRgtC40L8g0YHQstGP0LfQuCAo0L3QsNC30LLQsNC90L3Ri9C5INGBINGC0L7Rh9C60Lgg0LfRgNC10L3QuNGPINC30LDRj9Cy0LrQuCkg0LzQvtC20LXRgiDQv9C+0LLQu9C40Y/RgtGMINC90LAg0YHRgtCw0YLRg9GBINGB0LLRj9C30LDQvdC90L7QuSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQvtC5INGC0LjQvyDQt9Cw0Y/QstC60Lgg0LzQvtC20LXRgiDQv9C+0LLQu9C40Y/RgtGMINC90LAg0YHRgtCw0YLRg9GBINGB0LLRj9C30LDQvdC90L7QuSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ9Ce0LHQvdC+0LLQu9C10L3QuNC1INC+0L/RgNC10LTQtdC70LXQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Cj0LTQsNC70LjRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0KbQstC10YIg0YHQvtGB0YLQvtGP0L3QuNGPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQoNC10LfQtdGA0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0YHQvtCx0YvRgtC40Lkg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10LksINC60L7RgtC+0YDRi9C5INC/0L7QvNC10YfQsNC10YIg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC60LDQuiDRgNCw0YHRgdC40L3RhdGA0L7QvdC40LfQuNGA0L7QstCw0L3QvdGL0LUsINC10YHQu9C4INGB0L7QtNC10YDQttCw0YnQuNC10YHRjyDQsiDQvdC40YUg0LTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPINC40LfQvNC10L3Rj9GO0YLRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQv9C+0LrQsNC30LDQvdC90YvQtSDQvdCwINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdC+0Lwg0Y3QutGA0LDQvdC1INC/0L7Qu9GPIElUU00g0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQvdCwINGN0LrRgNCw0L3QtSDQvtCx0LfQvtGA0LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0L3QsCDRjdC60YDQsNC90LUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0LTQu9GPINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsCDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC90LXRgdC60L7Qu9GM0LrQuNC80Lgg0JrQlSDQvtC00L3QvtCy0YDQtdC80LXQvdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0YLQvtC70YzQutC+INC00LvRjyDQv9C10YDQtdGH0LjRgdC70LXQvdC90YvRhSDQs9GA0YPQv9C/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0YPRgdGC0LDQvdC+0LLQutC4INGB0YLQsNGC0YPRgdCwINCa0JUg0LTQu9GPINGB0LLRj9C30LDQvdC90L7QuSDRgSDQvdC10Lkg0LfQsNGP0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfQn9C+0LvRjyDQuNC90LTQtdC60YHQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INC00LvRjyDQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L4g0L/QvtC40YHQutCwLiDQn9C+0LvRjyDRgtCw0LrQttC1INGB0L7RhdGA0LDQvdGP0Y7RgtGB0Y8sINC90L4g0L3QtSDRj9Cy0LvRj9GO0YLRgdGPINC+0LHRj9C30LDRgtC10LvRjNC90YvQvNC4INC00LvRjyDQvtCx0YnQtdC5INGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdC+0YHRgtC4LiDQktC60LvRjtGH0LXQvdC40LUg0LLQu9C+0LbQtdC90LjQuSDQvNC+0LbQvdC+INC+0YLQutC70Y7Rh9C40YLRjCwg0YPRgdGC0LDQvdC+0LLQuNCyINC00LvRjyDQt9Cw0L/QuNGB0Lgg0LfQvdCw0YfQtdC90LjQtSAwINC40LvQuCDRg9C00LDQu9C40LIg0LXQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ9Cf0L7Qu9GPLCDRhdGA0LDQvdGP0YnQuNC10YHRjyDQsiDQuNC90LTQtdC60YHQtSDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0LrQvtGC0L7RgNGL0LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINC90LUg0YLQvtC70YzQutC+INC00LvRjyDQv9C+0LvQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L4g0L/QvtC40YHQutCwLiDQlNC70Y8g0L/QvtC70L3QvtC5INGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdC+0YHRgtC4INCy0YHQtSDQv9C+0LvRjyDRj9Cy0LvRj9GO0YLRgdGPINC+0LHRj9C30LDRgtC10LvRjNC90YvQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGD0YDQvtCy0L3RjyDQuNC90LLQvtC60LXRgNCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRg9GA0L7QstC90Y8g0LjQvdCy0L7QutC10YDQsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGD0YDQvtCy0L3RjyDQuNC90LLQvtC60LXRgNCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J7QsdC30L7RgCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjRjyDRgNCw0LfQstC10YDRgtGL0LLQsNC90LjRjyDQsiDQv9C+0LjRgdC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNC10YIg0YHQvtGB0YLQvtGP0L3QuNGPINC40L3RhtC40LTQtdC90YLQsCDQsiDQv9C+0LjRgdC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQutC+0YLQvtGA0YvQtSDQsdGD0LTRg9GCINC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDRjdGC0L7QuSDQvtC/0LXRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQs9GA0YPQv9C/0Ysg0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+0Lkg0LfQsCDQutC70LDRgdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC00LvRjyDQv9GA0L7QstC10YDQutC4INCz0YDRg9C/0L/RiyDQvtGC0LLQtdGC0YHRgtCy0LXQvdC90L7QuSDQt9CwINCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C70Ywg0YTQvtGA0LzQuNGA0L7QstCw0L3QuNGPINGB0YLQsNGC0LjRgdGC0LjQutC4INC/0L4g0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfQnNC+0LTRg9C70Ywg0LjQvNC10L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0J3QvtC80LXRgNC90L7QuSDQvNC+0LTRg9C70YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC90LAg0LrQsNC20LTQvtC5INGB0YLRgNCw0L3QuNGG0LUg0YDQtdC30YPQu9GM0YLQsNGC0L7QsiDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L3QsCDQutCw0LbQtNC+0Lkg0YHRgtGA0LDQvdC40YbQtSDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn0J7QsdGK0LXQutGC0Ysg0LTQu9GPINC/0L7QuNGB0LrQsCwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LfQsNC/0LjRgdC10Lkg0Lgg0LDRgtGA0LjQsdGD0YLRiyDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjy4g0JDRgtGA0LjQsdGD0YLRiyBDb25maWdJdGVtINC00L7Qu9C20L3RiyDQsdGL0YLRjCDRj9Cy0L3QviDRgdC+0YXRgNCw0L3QtdC90Ysg0YfQtdGA0LXQtyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQntCx0LfQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC60LDRgtC10LPQvtGA0LjQuSDQutC70LDRgdGB0L7QsiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INC/0YDQtdC00L/QvtGH0YLQtdC90LjQuSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRhNC40LvRjNGC0YDQvtCyINGB0YLQvtC70LHRhtC+0LIg0L7QsdC30L7RgNCwINGN0LvQtdC80LXQvdGC0L7QsiDQvNCw0LvQvtC5INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1OiDQv9GA0Lgg0YPRgdGC0LDQvdC+0LLQutC1INC30L3QsNGH0LXQvdC40Y8gXCdBY3RpdmVcJyDQsiAwINCw0LPQtdC90YLRiyDQvdC1INGB0LzQvtCz0YPRgiDRgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0Y3RgtC+0Lkg0LPRgNGD0L/Qv9GLINCyINGB0LLQvtC40YUg0LvQuNGH0L3Ri9GFINC/0YDQtdC00L/QvtGH0YLQtdC90LjRj9GFLCDQvdC+INCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0Ysg0YHQvNC+0LPRg9GCINGA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC90LDRgdGC0YDQvtC50LrQuCDQvtGCINC40LzQtdC90Lgg0LTRgNGD0LPQvtCz0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLiDQmNGB0L/QvtC70YzQt9GD0LnRgtC1IFwnUHJlZmVyZW5jZUdyb3VwXCcg0LTQu9GPINGD0L/RgNCw0LLQu9C10L3QuNGPINGC0LXQvCwg0LIg0LrQsNC60L7QuSDQvtCx0LvQsNGB0YLQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60L7Qs9C+INC40L3RgtC10YDRhNC10LnRgdCwINC00L7Qu9C20L3RiyDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0Y3RgtC4INC90LDRgdGC0YDQvtC50LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGG0LLQtdGC0L7QsiDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40YUg0YHQvtGB0YLQvtGP0L3QuNGPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINCa0JUg0LIg0L3QsNGB0YLRgNC+0LnQutCw0YUg0L7QsdC30L7RgNC+0LIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YHQvtGB0YLQvtGP0L3QuNC5INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINCa0JUg0LIg0L3QsNGB0YLRgNC+0LnQutCw0YUg0L7QsdC30L7RgNC+0LIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC/0YDQuNC80LXRgNC90YvRhSDQs9GA0YPQv9C/0L7QstGL0YUg0L/RgNCw0LIg0LTQu9GPINCw0YLRgNC40LHRg9GC0L7QsiDQntCx0YnQtdCz0L4g0LrQsNGC0LDQu9C+0LPQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQvNC+0LTRg9C70Y8g0LjQvNC10L3QuCDQtNC70Y8g0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDQvNC+0LTRg9C70Y8g0LrQvtC70LjRh9C10YHRgtCy0LAg0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0YHRgtGA0LDQvdC40YYgKNC90LAg0LrQvtGC0L7RgNGL0YUg0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINCa0JUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQvNC+0LTRg9C70Y8g0YHRgtGA0L7QutC4INCy0LXRgNGB0LjQuCDQtNC70Y8g0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQvNC+0LTRg9C70Y8g0LjQvdGB0YLRgNGD0LzQtdC90YLQsNGA0LjRjyDRiNCw0LHQu9C+0L3QsCDRgdGC0YDQvtC60Lgg0LLQtdGA0YHQuNC4INC00LvRjyDQutC70LDRgdGB0L7QsiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INC/0YDQtdC00L/QvtGH0YLQtdC90LjQuSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YLRgNC40LPQs9C10YDQsCDQstC10YDRgdC40Lgg0LTQu9GPINC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9C/0LAg0YDQsNC30YDQtdGI0LXQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzRi9C1INGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQtNC10LnRgdGC0LLQuNGPINC/0YDQuNC60YDQtdC/0LvQtdC90LjRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQvtCx0LfQvtGA0LAg0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC/0L7QuNGB0LrQsCDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0Y3QutGA0LDQvdCwINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0Y3QutGA0LDQvdCwINC/0YDQvtGB0LzQvtGC0YDQsCDQtNC10YDQtdCy0LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC/0L7Qu9C90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQmtCVICh6b29tIHZpZXcpINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8g0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNGL0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0LrRgNCw0L3QsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0L/RgNC+0YHQvNC+0YLRgNCwINC40YHRgtC+0YDQuNC4INGB0L7QtNC10YDQttC40LzQvtCz0L4g0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0L/QtdGH0LDRgtC4INGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80Ysg0L/RgNCw0LLQsCDQtNC70Y8g0YPQtNCw0LvQtdC90LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn0J/QvtC40YHQuiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfQo9GB0YLQsNC90L7QstC40YLRjCDRgdC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwINCa0JUg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LgsINC60L7Qs9C00LAg0LfQsNGP0LLQutCwINGB0LLRj9C30LDQvdCwINGBINCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQvdCwINGN0LrRgNCw0L3QtSDQvNCw0YHRgdC+0LLRi9GFINC00LXQudGB0YLQstC40Lkg0YEg0JrQlSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwINC90LAg0Y3QutGA0LDQvdC1INC80LDRgdGB0L7QstGL0YUg0LTQtdC50YHRgtCy0LjQuSDRgSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCh0LLRj9C30LDRgtGMIChMaW5rKSDQtNC70Y8g0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDRgdCy0Y/Qt9C4INCa0JUg0YEg0LTRgNGD0LPQuNC8INC+0LHRitC10LrRgtC+0Lwg0L3QsCDRjdC60YDQsNC90LUg0L/QvtC70L3QvtCz0L4gKHpvb20gdmlldykg0L/RgNC+0YHQvNC+0YLRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQtNC70Y8g0LTQvtGB0YLRg9C/0LAg0Log0LjRgdGC0L7RgNC40Lgg0JrQlSDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INCa0JUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCY0YHRgtC+0YDQuNGPINC00LvRjyDQv9GA0L7RgdC80L7RgtGA0LAg0LjRgdGC0L7RgNC40Lgg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0LTQu9GPINGD0LTQsNC70LXQvdC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0Ysg0L/RgNC4INC/0L7QtNGA0L7QsdC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0KPQutCw0LfRi9Cy0LDQtdGCINGB0YHRi9C70LrRgyDQsiDQvNC10L3RjiDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDRgdGB0YvQu9C+0Log0L3QsCDRjdC70LXQvNC10L3RgtGLINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQstC40LTQtSDQtNGA0LXQstC+0LLQuNC00L3QvtCz0L4g0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQlNGD0LHQu9C40YDQvtCy0LDRgtGMINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0Lkg0JrQlSDQv9GD0YLQtdC8INC60L7Qv9C40YDQvtCy0LDQvdC40Y8g0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0YLQtdC60YPRidC10Lkg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCU0YPQsdC70LjRgNC+0LLQsNGC0Ywg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7QuSDQmtCVINC/0YPRgtC10Lwg0LrQvtC/0LjRgNC+0LLQsNC90LjRjyDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDRgtC10LrRg9GJ0LXQuSDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC00LvRjyDQuNC30LzQtdC90LXQvdC40Y8g0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQndCw0LfQsNC0INC/0YDQuCDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhiDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQn9C10YfQsNGC0Ywg0LTQu9GPINC/0LXRh9Cw0YLQuCDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQtNC70Y8g0L/QvtC00YDQvtCx0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwINCa0JUg0L/RgNC4INC+0LHQt9C+0YDQtSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC3INC40YHRgtC+0YDQuNC4INGB0L7QtNC10YDQttC40LzQvtCz0L4g0JrQlSAo0L/QvtGA0Y/QtNC+0Log0L/QvtC60LDQt9CwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINC60L7RgtC+0YDQsNGPINC+0YLQvtCx0YDQsNC20LDQtdGC0YHRjywg0LXRgdC70Lgg0L3QtSDQstGL0LHRgNCw0L3QsCDQvdC4INC+0LTQvdCwINC40Lcg0L3QuNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAgKNC/0YDQtdGE0LjQutGBKSDQuiDQvdC+0LzQtdGA0YMg0JrQlSwg0YIu0LUg0JrQlV/ihJYsINCa0JUjLCDQo9GH0LXRgtC90YvQuV/RjdC70LXQvNC10L3Rgl/ihJYuINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIC0gQ29uZmlnSXRlbSMgKNC40LvQuCDQtdCz0L4g0L/QtdGA0LXQstC+0LQpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JDQstGC0L7QvNCw0YLQuNGH0LXRgdC60Lgg0LfQsNC/0YPRgdC60LDQtdGCINC40L3QstC+0LrQtdGAIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn0JLQtdGA0YHQuNGPINCh0YLRgNC+0LrQvtCy0L7QtSDQstGL0YDQsNC20LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINGB0YLRgNC+0Log0LLQtdGA0YHQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ9Ci0YDQuNCz0LPQtdGAINCy0LXRgNGB0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn0JzQvtC20L3QviDQu9C4INC40LfQsdC10LbQsNGC0Ywg0LLRi9C/0L7Qu9C90LXQvdC40Y8gQ29uZmlnSXRlbUFDTCwg0L/RgNC+0LLQtdGA0Y/RjyDQutGN0YjQuNGA0L7QstCw0L3QvdGL0LUg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQv9C+0LvQtdC5LiDQrdGC0L4g0LzQvtC20LXRgiDRg9C70YPRh9GI0LjRgtGMINCy0YDQtdC80Y8g0LfQsNCz0YDRg9C30LrQuCDRhNC+0YDQvNGD0LvRj9GA0L7Qsiwg0L3QviDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0L7RgtC60LvRjtGH0LXQvdC+LCDQtdGB0LvQuCBBQ0xNLdC80L7QtNGD0LvQuCDQsdGD0LTRg9GCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjNGB0Y8g0LTQu9GPIElUU01Db25maWdJdGVtLSDQuCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn0JrQsNC60LDRjyDQvtCx0YnQsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPINC+0YLQvtCx0YDQsNC20LDQtdGC0YHRjyDQsiDQt9Cw0LPQvtC70L7QstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0LrQu9Cw0YHRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvRjNC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9C/0L7RgdGC0L/RgNC+0LTRg9C60YLQuNCy0L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LXQtNC/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YLQuNCy0L3Ri9C5JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC00Y7QudC80L7QsiAoNDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEg0LTRjtC50LwgKDUzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1INC00Y7QudC80LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQtNGO0LnQvNCwICg4MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS3QtNGO0LnQvNC+0LLQsNGPINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUg0LTRjtC50LzQsCAoNCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1INC00Y7QudC80L7QsiAoODgsOSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS3QtNGO0LnQvNC+0LLQsNGPINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUg0LTRjtC50LzQvtCyICg5Nyw3OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy3QtNGO0LnQvNC+0LLQsNGPINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LTRjtC50LzQsCAoNjAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiDQtNGO0LnQvNCwICgxMDYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1INC00Y7QudC80LAgKDEyMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1INC00Y7QudC80LAgKDgsODkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSDQtNGO0LnQvNCwICgxMzMsMzUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1INC00Y7QudC80LAgKDgwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUg0LTRjtC50LzQsCAoMTQ2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCDQtNGO0LnQvNCwICg5MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzINC00Y7QudC80LAgKDE2MCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0INC00Y7QudC80LAgKDEwMDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1INC00Y7QudC80LAgKDE3MywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1INC00Y7QudC80LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LTRjtC50LzQsCAoMTg2LDY5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzINC00Y7QudC80LAgKDExMDAg0LzQvCk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSDQtNGO0LnQvNCwICgyMDAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiDQtNGO0LnQvNCwICgxMjAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCDQtNGO0LnQvNCwICgyMTMsMzYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyDQtNGO0LnQvNC+0LIgKDE3LDc4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUg0LTRjtC50LzQsCAoMjIsMjMg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSDQtNGO0LnQvNC+0LIgKDI2LDY3INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSDQtNGO0LnQvNCwICgzMSwxMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQg0LTRjtC50LzQvtCyICgzNSw1NiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUg0LTRjtC50LzQsCAoNDAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQkdGD0YXQs9Cw0LvRgtC10YDRgdC60LjQuSDRg9GH0LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cg0LDRgdC/0YDQtdC00LXQu9C10L3QuNC1INCw0LTRgNC10YHQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfQkNC90LDQu9C+0LPQvtCy0YvQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9Ci0LjQvyDQv9GA0LjQsdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ9CV0LzQutC+0YHRgtGMINCw0LrQutGD0LzRg9C70Y/RgtC+0YDQsCAo0JDRhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn0KLQuNC/INCx0LDRgtCw0YDQtdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn0JfQtNCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfQmNC90YLQtdGA0YTQtdC50YEg0YjQuNC90YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ9Cm0J/Qoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfQmtC70LDRgdGBINC/0YDQvtGG0LXRgdGB0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfQldC80LrQvtGB0YLRjCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfQldC80LrQvtGB0YLRjCDQvdCwINC+0LTQvdGDINCy0LjQtNC10L7QutCw0YDRgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQutCw0YDRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn0KPRgdGC0YDQvtC50YHRgtCy0L4g0LTQu9GPINGH0YLQtdC90LjRjyDQutCw0YDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfQotC40L8g0LrQsNGA0YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLRiyDQutC70LjQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfQmtC70LjQtdC90YLRgdC60L7QtSDQv9GA0L7Qs9GA0LDQvNC80L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC60LvQuNC10L3RgtC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn0KfQsNGB0L7QstC+0Lkg0L/QvtGP0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Ysg0L/QvtC00L/QuNGB0Lgg0LrQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ9Ca0L7QvdGE0LXRgNC10L3Rhi3RgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ9Ch0L7Qs9C70LDRiNC10L3QuNC1INC+INC60L7QvdGB0YPQu9GM0YLQuNGA0L7QstCw0L3QuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfQodCy0Y/Qt9Cw0YLRjNGB0Y8g0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ9Ch0LLRj9C30LDRgtGM0YHRjyDRgSDQtNC40YHRgtGA0LjQsdGM0Y7RgtC+0YDQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0LrQvtC90YLQtdC50L3QtdGA0LDQvNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAn0JrQvtC90YLRgNCw0LrRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn0KLQuNC/INC60L7QvdGC0YDQsNC60YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ9Ch0YDQvtC6INC00LXQudGB0YLQstC40Y8g0LrQvtC90YLRgNCw0LrRgtCwINGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ9Ch0YDQvtC6INC00LXQudGB0YLQstC40Y8g0LrQvtC90YLRgNCw0LrRgtCwINC00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn0JHQtdGB0L/RgNC+0LLQvtC00L3QvtC5INGC0LXQu9C10YTQvtC9IChERUNUIFBob25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfQldC00LjQvdC40YbQsCDQuNC30LzQtdGA0LXQvdC40Y8g0YHRgtC+0LjQvNC+0YHRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LvQuNGG0LXQvdC30LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn0JTQsNGC0LAg0YHQvtC30LTQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn0JjQvdC00LjQstC40LTRg9Cw0LvRjNC90LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag0JfQsNGA0LXQt9C10YDQstC40YDQvtCy0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMt0YHQtdGA0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfQlNCw0YLQsCDRgdGH0LXRgtCwLdGE0LDQutGC0YPRgNGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfQlNCw0YLQsCDQt9Cw0LrQsNC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ9CU0LDRgtCwINCy0YvQtNCw0YfQuCDQs9Cw0YDQsNC90YLQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ9CU0LDRgtCwINCy0YvRhdC+0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn0J3QsNGB0YLQvtC70YzQvdGL0Lkg0J/Qmic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLRiyDQv9C+0LTQv9C40YHQuCDQtNC+0LrRg9C80LXQvdGC0L7Qsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ9Ch0YLQvtC50LrQsCBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtGLINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiyAo0YHQtdGA0YLQuNGE0LjQutCw0YLRiyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ9Ci0YDRg9C00L7QstC+0Lkg0LTQvtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfQmtC+0L3QtdGH0L3Ri9C5IElQLdCw0LTRgNC10YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfQntC60L7QvdGH0LDQvdC40LUg0L/QvtC00LTQtdGA0LbQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn0JTQsNGC0LAg0LjRgdGC0LXRh9C10L3QuNGPINGB0YDQvtC60LAg0LTQtdC50YHRgtCy0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn0JLQvdC10YjQvdC40Lkg0LbQtdGB0YLQutC40Lkg0LTQuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfQkdGA0LDQvdC00LzQsNGD0Y3RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ9Cf0YDQvtGI0LjQstC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfQndCw0LrQvtC/0LjRgtC10LvQuCDRjdC90LXRgNCz0LjQuCDQvdCwINC80LDRhdC+0LLQuNC60LDRhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ9Ck0L7RgNC8LdGE0LDQutGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstC+0YAg0YTRgNCw0L3RiNC40LfRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXRgdC/0LvQsNGC0L3QvtC1INCf0J4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn0J7QsdGJ0LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ9CT0YDQsNGE0LjRh9C10YHQutC40LUg0LrQsNGA0YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn0JPRgNCw0YTQuNGH0LXRgdC60LDRjyDQutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn0JDQv9C/0LDRgNCw0YLQvdC+0LUg0L7QsdC10YHQv9C10YfQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ9Cc0L7QtNC10LvRjCDQvtCx0L7RgNGD0LTQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn0JLQtdGBINC+0LHQvtGA0YPQtNC+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn0JPQsNGA0L3QuNGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAn0J/RgNC+0YLQvtC60L7QuyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQuNC00LXQvdGC0LjRhNC40LrQsNGG0LjQtdC5INC4INC00L7RgdGC0YPQv9C+0LwgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9CY0L3QstC10L3RgtCw0YDQvdGL0Lkg0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgdGH0LXRgtCwLdGE0LDQutGC0YPRgNGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn0JrQu9Cw0LLQuNCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAn0JbQmi3QvNC+0L3QuNGC0L7RgCAo0LbQuNC00LrQvtC60YDQuNGB0YLQsNC70LvQuNGH0LXRgdC60LjQuSDQtNC40YHQv9C70LXQuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ9Ch0LLQtdGC0L7QtNC40L7QtNC90YvQuSDQvNC+0L3QuNGC0L7RgCAo0YHQstC10YLQvtC40LfQu9GD0YfQsNGO0YnQuNC5INC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfQodGC0LDRhtC40L7QvdCw0YDQvdGL0Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0J3QvtGD0YLQsdGD0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfQqNC40YDQvtGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCAxOiDRhNC40LfQuNGH0LXRgdC60LjQuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCAyOiDRg9GA0L7QstC10L3RjCDQv9C10YDQtdC00LDRh9C4INC00LDQvdC90YvRhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgMzog0YHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn0KPRgNC+0LLQtdC90YwgMzog0YHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwgKNCh0YPQv9C10YDRgdC10YLRjCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgNDog0KLRgNCw0L3RgdC/0L7RgNGC0L3Ri9C5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA1OiDRgdC10LDQvdGB0L7QstGL0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn0KPRgNC+0LLQtdC90YwgNjog0YPRgNC+0LLQtdC90Ywg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA3OiDQn9GA0LjQutC70LDQtNC90L7QuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0L7RgCDQsNGA0LXQvdC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfQm9C40YbQtdC90LfQuNC+0L3QvdC+0LUg0YHQvtCz0LvQsNGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9Cb0LjRhtC10L3Qt9C40L7QvdC90YvQuSDQutC70Y7Rhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfQotC40L8g0LvQuNGG0LXQvdC30LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn0KHRgNC+0Log0LTQtdC50YHRgtCy0LjRjyDQu9C40YbQtdC90LfQuNC4INC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC70LjRhtC10L3Qt9C40Lgg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn0JvQuNGC0LjQuS3QttC10LvQtdC30L4t0YTQvtGB0YTQsNGC0L3QsNGPIChMaUZlUE80KSDQsdCw0YLQsNGA0LXRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn0JvQuNGC0LjQuS3QuNC+0L3QvdGL0LkgKExpLWlvbikg0LDQutC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC30LDQudC80LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9Cd0LDRhdC+0LTQuNGC0YHRjyDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfQlNC+0LvQs9C+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ9Cf0YDQvtC40LfQstC+0LTQuNGC0LXQu9GMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0LPRgNGD0LfQvtC/0L7QtNGK0LXQvNC90L7RgdGC0YwgKNCS0YIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ9Cf0LDQvNGP0YLRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQv9Cw0LzRj9GC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ9Cc0LjQvdC4LdGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvNC+0LHQuNC70YzQvdC+0LPQviDRgtC10LvQtdGE0L7QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ9Cc0L7QsdC40LvRjNC90YvQuS/QstGB0YLRgNC+0LXQvdC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LvRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9Ce0L/QuNGB0LDQvdC40LUg0LzQvtC00LXQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ9Cg0LDQt9GA0LXRiNC10L3QuNC1INC80L7QvdC40YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn0KDQsNC30LzQtdGAINC80L7QvdC40YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQnNGL0YjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfQodC10YLRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDRgdC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0YHQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ9Ch0LXRgtC10LLQvtC5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn0J3QuNC60LXQu9GMLdC60LDQtNC80LjQtdCy0LDRjyAoTmlDZCkg0LHQsNGC0LDRgNC10Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfQndC40LrQtdC70Ywt0LzQtdGC0LDQu9C70LPQuNC00YDQuNC00L3Ri9C5IChOaU1IKSDQsNC60LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ9Ch0L7Qs9C70LDRiNC10L3QuNC1INC+INC90LXRgNCw0LfQs9C70LDRiNC10L3QuNC4IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn0JHQu9C+0LrQvdC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQv9GA0L7RhtC10YHRgdC+0YDQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC80L7QtNGD0LvQtdC5INC+0L/QtdGA0LDRgtC40LLQvdC+0Lkg0L/QsNC80Y/RgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INCy0LjQtNC10L7QutCw0YDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC3QvNC+0L3QuNGC0L7RgCAo0L7RgNCz0LDQvdC40YfQtdGB0LrQuNC5INGB0LLQtdGC0L7QuNC30LvRg9GH0LDRjtGJ0LjQuSDQtNC40L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn0J7Qv9C10YDQsNGG0LjQvtC90L3Ri9C1INGA0LDRgdGF0L7QtNGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LfQsNC60LDQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn0JTRgNGD0LPQvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQktGL0YXQvtC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn0J/QsNGA0YLQvdC10YDRgdC60L7QtSDRgdC+0LPQu9Cw0YjQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn0KLQuNC/INGC0LXQu9C10YTQvtC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfQpNC40LfQuNGH0LXRgdC60LjQtSDRj9C00YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ9CU0L7RgdGC0LDQstC60LAg0Y3Qu9C10LrRgtGA0L7RjdC90LXRgNCz0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9Cf0YDQuNC+0LHRgNC10YLQtdC90L4g0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ9CT0LvRg9Cx0LjQvdCwINGB0YLQvtC50LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ9Ch0YLQvtC50LrQuCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9Ca0LDQsdC40L3QtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLdC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtGLIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfQlNC+0LPQvtCy0L7RgCDQutGD0L/Qu9C4LdC/0YDQvtC00LDQttC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ9Ch0L/Rg9GC0L3QuNC60L7QstGL0Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn0JPQtdGA0LzQtdGC0LjRh9C90LDRjyDRgdCy0LjQvdGG0L7QstC+LdC60LjRgdC70L7RgtC90LDRjyDQsdCw0YLQsNGA0LXRjyAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ9Ch0LXRgNC40LnQvdGL0Lkg0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfQodC10YDQstC10YDQvdC+0LUg0L/RgNC+0LPRgNCw0LzQvNC90L7QtSDQvtCx0LXRgdC/0LXRh9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstC+0YAg0L7QsSDQvtC60LDQt9Cw0L3QuNC4INGD0YHQu9GD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfQodC10YDQstC40YHQvdCw0Y8g0LzQtdGC0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfQotC40L8g0YDQvtC30LXRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfQn9GA0L7Qs9GA0LDQvNC80L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfQlNC40L3QsNC80LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9Ch0YLQsNC90LTQsNGA0YLQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ9Ch0YLQsNGA0YLQvtCy0YvQuSBJUC3QsNC00YDQtdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfQpdGA0LDQvdC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn0KDQsNC30LTQtdC7INC00LvRjyDRhdGA0LDQvdC10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn0JTQvtGH0LXRgNC90Y/RjyDQutC+0LzQv9Cw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfQoNC10LfRjtC80LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfQotC+0L3QutC40Lkg0LrQu9C40LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfQndC40YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ9Ce0LHRidCw0Y8g0L7Qv9C10YDQsNGC0LjQstC90LDRjyDQv9Cw0LzRj9GC0Ywg0LLQuNC00LXQvtC60LDRgNGC0YsgKNCT0JEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0LDRjyDQvtC/0LXRgNCw0YLQuNCy0L3QsNGPINC/0LDQvNGP0YLRjCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ9Ch0LXQvdGB0L7RgNC90YvQuSDQvNC+0L3QuNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ9CR0LDRiNC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi3QutC+0L3RhtC10L3RgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICfQk9Cw0YDQvdC40YLRg9GA0LAgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC3RgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn0JLQtdCxLdC60LDQvNC10YDQsCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/sk_SK_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNrX1NLX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdWxaFlb2JlY27DqSBwcmV2w6FkemtvdsOpIMO6ZGFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnTmFzdGF2ZW5pYSBwcmUgcHJpY2jDoWR6YWrDumNlIMO6ZGFqZSDFvmlhZG9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdOYXN0YXZlbmlhIHByZSDDumRhamUgb2RjaMOhZHphasO6Y2VqIG9kcG92ZWRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU3Byw6F2YSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1ptZW5hIGRlZmluw61jaWUgdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdabWVuYSBkZWZpbsOtY2llIMO6bG9oeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0JhbMOta3kgdHJpZWQgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnVHUgbcO0xb5ldGUgaW1wb3J0b3ZhxaUgYmFsw61reSB0cmllZCBSZWFkeTJJbXBvcnQsIGt0b3LDqSBwcmVkc3RhdnVqw7ogbmHFoWUgbmFqYmXFvm5lasWhaWUga29uZmlndXJhxI1uw6kgcG9sb8W+a3kuIFVwb3pvcsWIdWplbWUsIMW+ZSBtw7TFvmUgYnnFpSBwb3RyZWJuw6EgZG9kYXRvxI1uw6Ega29uZmlndXLDoWNpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQWt0dWFsaXrDoWNpYSBleGlzdHVqw7pjaWNoIHN1Ympla3Rvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydCB6dsOkemtvdiB0cmllZCBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ1RyaWVkYSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfDmmxvaGEgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdQb2xvxb5rYSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBwcmUgdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0FrIGNoY2V0ZSB2eXR2b3JpxaUgbm92w7ogcG9sb8W+a3Uga29uZmlndXLDoWNpZSwgdnliZXJ0ZSB0cmllZHUgem8gem96bmFtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUcmllZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdIcm9tYWRuw6EgYWtjaWEgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF2IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YXYgaW5jaWRlbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1ByZXBvamVuaWUgbmEgaW7DvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmVzcHLDoXZuZSDEjcOtc2xvIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfEjMOtc2xvIGluZWogcG9sb8W+a3kga29uZmlndXLDoWNpZSwgcyBrdG9yb3Ugc2EgbcOhIHByZXBvamnFpS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdOYW96YWogY2hjZXRlIHTDunRvIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUgb2RzdHLDoW5pxaU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07DoXpvdiB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTsOhem92IHNhIHXFviBwb3XFvsOtdmEgdiBwb2xvxb5rZSBDb25maWdJdGVtcyBzIG5hc2xlZHVqw7pjaW0gxI3DrXNsb20gKMSNw61zbGFtaSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxIzDrXNsbyB2ZXJ6aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8SMw61zbG8gdmVyemllIHRlanRvIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfEjMOtc2xvIHZlcnppZSBzYSB1xb4gcG91xb7DrXZhIHYgcG9sb8W+a2UgQ29uZmlnSXRlbXMgcyBuYXNsZWR1asO6Y2ltIMSNw61zbG9tICjEjcOtc2xhbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdiBuYXNhZGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF2IGluY2lkZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmlhIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ09ic2FoIGhpc3TDs3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdadsOkxI3FoWnFpSBwb2jEvmFkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5IG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW5hxaFsaSBzYSDFvmlhZG5lIMO6ZGFqZSBrb25maWd1cmHEjW5laiBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWeWJlcnRlIHTDunRvIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGnFpSB2eWjEvmFkw6F2YW5pZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHByZSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnw5pyb3ZlxYggaMS6Ymt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUHJpYmzDrcW+ZW5pZS9vZGRpYWxlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heGltw6FsbmEgw7pyb3ZlxYggb2RrYXpvdiBkb3NpYWhudXTDoSBwcmUgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdQb2xvxb5rYSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybcOhY2llIG8gcG9sb8W+a2Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1w6Fsbnkgc3RhdiBuYXNhZGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxueSBzdGF2IGluY2lkZW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdQb3NsZWRuw6Egem1lbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTmFwb3NsZWR5IHptZW5pbCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1ZhxaFlIHBvbG/Fvmt5IENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1Z5aMS+YWTDoXZhbmllIHBvbG/Fvmt5IENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1asO6IHNhIHRpZXRvIHRyaWVkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1asO6IHNhIHRpZXRvIMO6bG9oeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdVcG96b3LFiHVqZW1lLCDFvmUgc2Egdnl0dm9yaWEgYWogcHLDrXNsdcWhbsOpIGR5bmFtaWNrw6kgcG9saWEgYSB0cmllZHkgR2VuZXJhbENhdGFsb2cgYSBuZWTDtGpkZSBrIGljaCBhdXRvbWF0aWNrw6ltdSBvZHN0csOhbmVuaXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ2hjZXRlIHBva3JhxI1vdmHFpT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnUG90cmVidWpldGUgcHLDrWtsYWR5IHRyaWVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbsOtY2lhIG5pZSBqZSBwbGF0bsO9IGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQcmVoxL5hZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBqZSB6YWRhbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdHJlYnVqZXRlIGFzcG/FiCBqZWRudSB2eWJyYW7DuiBwb2xvxb5rdSBrb25maWd1csOhY2llISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0sgdGVqdG8ga29uZmlndXJhxI1uZWogcG9sb8W+a2UgbmVtw6F0ZSBwcsOtc3R1cCBuYSB6w6FwaXM6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdQcmUgdHJpZWR1ICVzIG5lYm9sYSBkZWZpbm92YW7DoSDFvmlhZG5hIGRlZmluw61jaWEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmHEjW7DoSBwb2xvxb5rYSAiJXMiIG5lYm9sYSBuw6FqZGVuw6EgdiBkYXRhYsOhemUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmVwb2RhcmlsbyBzYSBvZHN0csOhbmnFpSBrb25maWd1cmHEjW7DuiBwb2xvxb5rdSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1ByZSBDb25maWdJdGVtSUQgJXMgbmVib2xhIG7DoWpkZW7DoSDFvmlhZG5hIHZlcnppYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHV2ZWRlbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhbmkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1Byw61zdHVwIG5pZSBqZSB1bW/Fvm5lbsO9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW1vxb5ubyB6b2JyYXppxaUgaGlzdMOzcml1LCBuaWUgamUgemFkYW7DqSDFvmlhZG5lIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZW1vxb5ubyB6b2JyYXppxaUgaGlzdMOzcml1LCBuaWUgc8O6IGRhbsOpIMW+aWFkbmUgcHLDrXN0dXBvdsOpIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdsO9IHBydm9rIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm92w6EgdmVyemlhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF2IG5hc2FkZW5pYSBha3R1YWxpem92YW7DvSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXYgaW5jaWRlbnR1IGFrdHVhbGl6b3ZhbsO9IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgb2RzdHLDoW5lbsO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUHJpZGFuw70gb2RrYXogbmEgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdPZGtheiBuYSAlcyAodHlwZT0lcykgb2RzdHLDoW5lbsO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbsOtY2lhIHBvbG/Fvmt5IENvbmZpZ0l0ZW0gYWt0dWFsaXpvdmFuw6EgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ07DoXpvdiBha3R1YWxpem92YW7DvSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWLDunQgJXMgYWt0dWFsaXpvdmFuw70geiAiJXMiIG5hICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyemlhICVzIG9kc3Ryw6FuZW7DoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaWUgamUgdXZlZGVuw6kgxb5pYWRuZSBDb25maWdJdGVtSUQgYW5pIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmllIGplIG1vxb5uw6kgem9icmF6acWlIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBzYSBuZW5hxaFsbyB2IGRhdGFiw6F6ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Z5dGxhxI1lbsOpICVzIG5hICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmVwbGF0bsOpIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHV2ZWRlbsOpIMW+aWFkbmUgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdQcmUgdMO6dG8gdHJpZWR1IG5pZSBzw7ogdWRlbGVuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnxb1pYWRueSB2w71zbGVkb2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnVsO9c2xlZGt5IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOaWUgamUgbW/Fvm7DqSB6b2JyYXppxaUgcG9sb8W+a3UsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhIHByZSBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdQb2xvxb5rYSBDb25maWdJdGVtIG5lYm9sYSBuw6FqZGVuw6EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbmHFoWxpIHNhIMW+aWFkbmUgdmVyemllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3ByZXbDoWR6a292w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3Vwb3pvcm5lbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXYgbmFzYWRlbmlhIHRlanRvIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF2IGluY2lkZW50dSB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5reSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ8W9aWFkbmUgcG92b2xlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBqZSBuZXBsYXRuw70hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdWeWjEvmFkw6F2YWNpZSBwYXJhbWV0cmUgc8O6IG5lcGxhdG7DqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdab2JyYXplbsOpIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIHN0YXZ1IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXAgYWt0dcOhbG5laG8gaW5jaWRlbnR1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lZHppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPYm1lZHplbmlhIHRyaWVkeSBwcmUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YmVyIGplZG5laiBhbGVibyB2aWFjZXLDvWNoIHRyaWVkIG5hIG9ibWVkemVuaWUgdnliZXJhdGXEvm7DvWNoIHBvbG/FvmllayBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPYm1lZHplbmlhIHRyaWVkeSBwcmUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDvWJlciBqZWRuZWogYWxlYm8gdmlhY2Vyw71jaCB0cmllZCBuYSBvYm1lZHplbmllIHZ5YmVyYXRlxL5uw71jaCBwb2xvxb5pZWsga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWNrw6kgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWNrw70gKHZlcnppYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwIG9ka2F6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfEjGkgc2EgdG90byBwcmVwb2plbmllIHZ6xaVhaHVqZSBuYSBDb25maWdJdGVtIGFsZWJvIHN0YXRpY2vDuiB2ZXJ6aXUgb2RrYXp1asO6Y2VobyBvYmpla3R1LiBWw71wb8SNZXQgYWt0dcOhbG5laG8gc3RhdnUgaW5jaWRlbnR1IHNhIHZ5a29uw6F2YSBsZW4gcHJpIGR5bmFtaWNrw71jaCBvZGthem9jaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWeWJlcnRlIGF0cmliw7p0LCBwb2TEvmEga3RvcsOpaG8gc2EgYnVkw7ogdnloxL5hZMOhdmHFpSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdaw6FrbGFkbsOhIMWhdHJ1a3TDunJhIG5pZSBqZSBwbGF0bsOhLiBQb3NreXRuaXRlIGhhc2ggcyDDumRham1pIHZvIGZvcm3DoXRlIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnUmXFpWF6ZWMgWUFNTCBzYSBtdXPDrSB6YcSNw61uYcWlIHpuYWtvbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOZXBvZGFyaWxvIHNhIHZ5xI1pc3RpxaUgdGFidcS+a3UgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTmVib2xpIG7DoWpkZW7DqSDFvmlhZG5lIHJlbGV2YW50bsOpIGR5bmFtaWNrw6kgcG9saWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOZXBvZGFyaWxvIHNhIHZsb8W+acWlIGRvIHRhYnXEvmt5IGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnVmxvxb5lbmllIDAgcmlhZGtvdiBkbyB0YWJ1xL5reSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW3DoWxueSBwb8SNZXQgamVkbsOpaG8gcHJ2a3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnUmXFpWF6ZWMgdmVyemllJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0NoeWJhIHByaSBzeW5jaHJvbml6w6FjaWkgZGVmaW7DrWNpw60uIFNrb250cm9sdWp0ZSwgcHJvc8OtbSwgcHJvdG9rb2wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnTcOhdGUgZGVmaW7DrWNpZSBJVFNNQ29uZmlnSXRlbSwga3RvcsOpIG5pZSBzw7ogc3luY2hyb25pem92YW7DqS4gTmFzYcSPdGUgZHluYW1pY2vDqSB6bWVueSBwb2zDrSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1Z5cHLFoWFsYSBwbGF0bm9zxaUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfDmmRyxb5iYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbMOhbm92YW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdPcHJhdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ25hIGTDtGNob2RrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQcmVoxL5hZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdG92YW5pZS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJlaMS+YWQgYSBwb3R2cmRlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydG92YW5pZSB0cmllZC9yb2zDrSBhIGljaCBzw7p2aXNpYWNpY2ggcG9sw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQb8SNYXMgaW1wb3J0dSB0cmllZHkgZG/FoWxvIGsgY2h5YmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa3J5dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBab2JyYXplbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw61yZW7DqSBwb2RtaWVua3kgdnloxL5hZMOhdmFuaWEgdiBrb25maWd1cmHEjW5laiBwb2xvxb5rZSB2eWjEvmFkw6F2YW5pYSB2IHJvemhyYW7DrSBhZ2VudGEuIFBvbW9jb3UgdGVqdG8gZnVua2NpZSBtw7TFvmV0ZSB2eWjEvmFkw6F2YcWlIG5hcHIuIG7DoXpvdiBrb25maWd1cmHEjW5laiBwb2xvxb5reSBzIHBvZG1pZW5rYW1pIHR5cHUgIigqa2V5MSomJiprZXkyKikiIGFsZWJvICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxb7FiHVqZSByb3rFocOtcmVuw6kgcG9kbWllbmt5IHZ5aMS+YWTDoXZhbmlhIHZvIHZ5aMS+YWTDoXZhbsOtIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLiBQb21vY291IHRlanRvIGZ1bmtjaWUgbcO0xb5ldGUgdnloxL5hZMOhdmHFpSBuYXByLiBuw6F6b3Yga29uZmlndXJhxI1uZWogcG9sb8W+a3kgcG9tb2NvdSBwb2RtaWVub2sgdHlwdSAiKCprZXkxKiYmKmtleTIqKSIgYWxlYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQcmlyYWRlbsOpIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHByaXJhZGVuw6kgayB6w6FrYXpuw61ja2VqIHNwb2xvxI1ub3N0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHByaXJhZGVuw6kgcG91xb7DrXZhdGXEvm92aSB6w6FrYXpuw61rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnTmFzdGF2ZW5pYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdLb250cm9sb3ZhxaUgamVkaW5lxI1uw70gbsOhem92IGxlbiB2IHLDoW1jaSB0ZWogaXN0ZWogdHJpZWR5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIGFsZWJvIGdsb2LDoWxuZSAoImdsb2JhbCIpLCDEjW8gem5hbWVuw6EsIMW+ZSBwcmkgaMS+YWRhbsOtIGR1cGxpa8OhdG92IHNhIGJlcmllIGRvIMO6dmFoeSBrYcW+ZMO9IGV4aXN0dWrDumNpIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWeWJlcnRlIG1vZHVsIG5hIHZ5bsO6dGVuaWUgc2Now6lteSBwb21lbm92YW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1Z5YmVydGUgc2kgbW9kdWwgbmEgdnluw7p0ZW5pZSDEjcOtc2VsbmVqIHNjaMOpbXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1Z5YmVydGUgbW9kdWwgbmEgdnluw7p0ZW5pZSBzY2jDqW15IHJlxaVhemNhIHZlcnppw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVnliZXJ0ZSBhdHJpYsO6dHksIGt0b3LDqSBzcHVzdGlhIHZ5dHZvcmVuaWUgbm92ZWogdmVyemllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWeWJlcnRlIGthdGVnw7NyaWUsIGt0b3LDqSBjaGNldGUgcHJpcmFkacWlIHRlanRvIHRyaWVkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmUgc3TEunBjb3bDvWNoIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHByZSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU3TEunBjZSwga3RvcsOpIG1vxb5ubyBmaWx0cm92YcWlIHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4gUG96bsOhbWthOiBQb3ZvbGVuw6kgc8O6IGxlbiBhdHJpYsO6dHkga29uZmlndXJhxI1uZWogcG9sb8W+a3kgYSBkeW5hbWlja8OpIHBvbGlhIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdQb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdQcmlkYW5pZSBwb2xvxb5reSBrb25maWd1csOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OacHJhdmEgcG9sb8W+a3kga29uZmlndXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB1ZGFsb3N0w60ga29uZmlndXJhxI1uZWogcG9sb8W+a3ksIGt0b3LDvSB1bW/FvsWIdWplIHphem5hbWVuw6F2YW5pZSBkbyBoaXN0w7NyaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bCB1ZGFsb3N0w60ga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWssIGt0b3LDvSBha3R1YWxpenVqZSBrb25maWd1cmHEjW7DqSBwb2xvxb5reSBwb2TEvmEgaWNoIGFrdHXDoWxuZWogZGVmaW7DrWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdWw71zdHVwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1RsYcSNIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ1ByaWJsw63FvmVuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnU3Ryb21vdsOpIHpvYnJhemVuaWUgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdWZXJ6aWEgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdQb2xvxb5reSBDb25maWdJdGVtcyBuYXNsZWR1asO6Y2ljaCB0cmllZCBuZWJ1ZMO6IHVsb8W+ZW7DqSBuYSBzZXJ2ZXJpIEVsYXN0aWNzZWFyY2guIEFrIGNoY2V0ZSB0w7p0byBtb8W+bm9zxaUgcG91xb5pxaUgbmEgZXhpc3R1asO6Y2UgQ0ksIGplIHBvdHJlYm7DqSBwbyB6bWVuZSB0ZWp0byBtb8W+bm9zdGkgc3B1c3RpxaUgbWlncsOhY2l1IENJIHByb3N0cmVkbsOtY3R2b20ga29uem9seS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnUG9sb8W+a3kgQ29uZmlnSXRlbXMgcyBuYXNsZWR1asO6Y2ltaSBzdGF2bWkgbmFzYWRlbmlhIG5lYnVkw7ogdWxvxb5lbsOpIG5hIHNlcnZlcmkgRWxhc3RpY3NlYXJjaC4gQWsgY2hjZXRlIHTDunRvIG1vxb5ub3PFpSBwb3XFvmnFpSBuYSBleGlzdHVqw7pjZSBDSSwgamUgcG90cmVibsOpIHBvIHptZW5lIHRlanRvIG1vxb5ub3N0aSBzcHVzdGnFpSBtaWdyw6FjaXUgQ0kgcHJvc3RyZWRuw61jdHZvbSBrb256b2x5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdCBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1csOhY2lhIExpbWl0IHBvbG/Fvmt5IG5hIHN0csOhbmt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWLDoXphIG5hIHNwcsOhdnUga29uZmlndXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0hyb21hZG7DvSBtb2R1bCBrb25maWd1cmHEjW5laiBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVnloxL5hZMOhdmFuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgYmFja2VuZG92w6lobyBzbWVyb3ZhxI1hIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdWeXR2b3JlbmllIGEgc3Byw6F2YSBkZWZpbsOtY2nDrSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdWeXR2w6FyYSBsw61zdGt5IHByZSBwb2xvxb5reSBDb25maWdJdGVtcyB2IHVyxI1pdMO9Y2ggxI1hc292w71jaCBib2RvY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1rDoWthem7DrWNpIG3DtMW+dSB2aWRpZcWlIGhpc3Rvcmlja8OpIHZlcnppZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnWsOha2F6bsOtY2kgbWFqw7ogbW/Fvm5vc8WlIG1hbnXDoWxuZSBwcmVww61uYcWlIG1lZHppIGhpc3Rvcmlja8O9bWkgdmVyemlhbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnUHJlZHZvbGVuw6kgw7pkYWplLCBrdG9yw6kgc2EgbWFqw7ogcG91xb5pxaUgbmEgb2JyYXpvdmtlIHZ5aMS+YWTDoXZhbmlhIGF0cmliw7p0b3Yga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuIFByw61rbGFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1ByZWR2b2xlbsOpIMO6ZGFqZSwga3RvcsOpIHNhIG1hasO6IHBvdcW+acWlIG5hIG9icmF6b3ZrZSB2eWjEvmFkw6F2YW5pYSBhdHJpYsO6dG92IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBQcsOta2xhZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmludWp0ZSBBa2NpZSwgcHJpIGt0b3LDvWNoIGplIHZvIHdpZGdldGUgcHJlcG9qZW7DvWNoIG9iamVrdG92IGsgZGlzcG96w61jaWkgdGxhxI1pZGxvIG5hc3RhdmVuaWEgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvem9yxYh1amVtZSwgxb5lIHRpZXRvIEFrY2llIG11c2lhIG1hxaUgemFyZWdpc3Ryb3ZhbsOpIG5hc2xlZHVqw7pjZSBzw7pib3J5IEpTIGEgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmlub3ZhbmllIHNjaMOpbXkgVGVtcGxhdGU6OlRvb2xraXQgcHJlIHJlxaVhemNlIHZlcnppw60uIFBvdcW+w612YSBzYSBsZW4gdnRlZHksIGFrIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIG5hc3RhdmVuw70gbmEgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW51anRlIHPDumJvciBwb2RtaWVub2ssIHphIGt0b3LDvWNoIG3DtMW+ZSB6w6FrYXpuw61rIHZpZGllxaUgcG9sb8W+a3Uga29uZmlndXLDoWNpZS4gUG9kbWllbmt5IG3DtMW+dSBiecWlIHZvbGl0ZcS+bmUgb2JtZWR6ZW7DqSBuYSB1csSNaXTDqSBza3VwaW55IHrDoWthem7DrWtvdi4gTsOhem92IGplIGplZGluw70gcG92aW5uw70gYXRyaWLDunQuIEFrIG5pZSBzw7ogemFkYW7DqSDFvmlhZG5lIMSPYWzFoWllIG1vxb5ub3N0aSwgdsWhZXRreSBrb25maWd1cmHEjW7DqSBwb2xvxb5reSBidWTDuiB2aWRpdGXEvm7DqSB2IHLDoW1jaSB0ZWp0byBrYXRlZ8OzcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHZ5bWF6YW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHBvbW9jb3UgdsWhZW9iZWNuw6lobyByb3pocmFuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgesOtc2thbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gcG9tb2NvdSB2xaFlb2JlY27DqWhvIHJvemhyYW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSB2eWjEvmFkw6F2YW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHBvbW9jb3UgdsWhZW9iZWNuw6lobyByb3pocmFuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgbmFzdGF2ZW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHBvbW9jb3UgdsWhZW9iZWNuw6lobyByb3pocmFuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmludWplIG1vZHVsIHByZWjEvmFkdSBuYSB6b2JyYXplbmllIG1hbMOpaG8gem9icmF6ZW5pYSB6b3puYW11IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbnVqZSwgxI1pIHNhIHYgc3BvamVuaWFjaCB1emxvdiBtdXNpYSB6b2JyYXpvdmHFpSB6bmHEjWt5IHR5cHUgc3BvamVuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbnVqZSByZWd1bMOhcm5lIHbDvXJhenkgamVkbm90bGl2byBwcmUga2HFvmTDuiB0cmllZHUgQ29uZmlnSXRlbSBuYSBrb250cm9sdSBuw6F6dnUgQ29uZmlnSXRlbSBhIHpvYnJhemVuaWUgcHLDrXNsdcWhbsO9Y2ggY2h5Ym92w71jaCBzcHLDoXYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHN0xLpwY2UgQ0kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw6EgcG9sb8W+a2EgbXVzw60gcG96b3N0w6F2YcWlIHogbsOhenZ1IHRyaWVkeSBhIHBvxL5hIGRvc3R1cG7DvWNoIHBvbMOtIHByZSBwcsOtc2x1xaFuw7ogdHJpZWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzaWEgcmXFoXBla3RvdmHFpSBzY2jDqW11IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSBhdHJpYsO6dCBwb2xvxb5reSBrb25maWd1csOhY2llIHByZSB0cmllZGVuaWUgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdm8gdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIHBvbG/FvmllayBrb25maWd1csOhY2llIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsO9IGF0cmliw7p0IHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgcHJlIHRyaWVkZW5pZSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gYXRyaWLDunQgcG9sb8W+a3kga29uZmlndXLDoWNpZSBwcmUgdHJpZWRlbmllIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgdm8gdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgdGVqdG8gb3BlcsOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw6kgcG9yYWRpZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gYWdlbnRhLiBOYWhvcjogbmFqc3RhcsWhaWUgbmEgdnJjaHUuIE5hZG9sOiBuYWpub3bFoWllIG5hIHZyY2h1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw6kgcG9yYWRpZSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gesOha2F6bsOta2EuIE5haG9yOiBuYWpzdGFyxaFpZSBuYSB2cmNodS4gTmFkb2w6IG5ham5vdsWhaWUgbmEgdnJjaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DqSB6b2JyYXplbsOpIHN0xLpwY2UgQ0kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw6EgcG9sb8W+a2EgbXVzw60gcG96b3N0w6F2YcWlIHogbsOhenZ1IHRyaWVkeSBhIHBvxL5hIGRvc3R1cG7DvWNoIHBvbMOtIHByZSBwcsOtc2x1xaFuw7ogdHJpZWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzaWEgcmXFoXBla3RvdmHFpSBzY2jDqW11IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmludWplIHByZWR2b2xlbsO6IGjEumJrdSB2esWlYWhvdiwga3RvcsOpIHNhIG1hasO6IHpvYnJhem92YcWlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSB6b2JyYXplbsO9IGF0cmliw7p0IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHByZSBvYnJhem92a3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSB6b2JyYXplbsO9IGF0cmliw7p0IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHByZSBvYnJhem92a3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuIFByw61rbGFkOiAiS2V5IiAoS8S+w7rEjSkgbXVzw60gbWHFpSBuw6F6b3YgZHluYW1pY2vDqWhvIHBvxL5hIHYgdG9tdG8gcHLDrXBhZGUgIlgiLCAiQ29udGVudCIgKE9ic2FoKSBtdXPDrSBtYcWlIGhvZG5vdHUgZHluYW1pY2vDqWhvIHBvxL5hIHYgesOhdmlzbG9zdGkgb2QgdHlwdSBkeW5hbWlja8OpaG8gcG/EvmEsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGEgYWxlYm8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9dMO9xb5kZcWIOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1QcmVkOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gcG9kb2JqZWt0IHRyaWVkeSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHN0xLpwY2UgQ0kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw6EgcG9sb8W+a2EgbXVzw60gcG96b3N0w6F2YcWlIHogbsOhenZ1IHRyaWVkeSBhIHBvxL5hIGRvc3R1cG7DvWNoIHBvbMOtIHByZSBwcsOtc2x1xaFuw7ogdHJpZWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzaWEgcmXFoXBla3RvdmHFpSBzY2jDqW11IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvcWha3Uga29tcG9uZW50dSB0ZXh0b3bDqWhvIGVkaXRvcmEgcHJlIHTDunRvIG9icmF6b3ZrdS4gWmFkYWp0ZSDEjcOtc2xvIChwaXhlbHkpIGFsZWJvIHBlcmNlbnR1w6FsbnUgaG9kbm90dSAocmVsYXTDrXZudSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxI1ldCByaWFka292IHByZSBlZGl0b3IgZGVmaW7DrWNpw60gQ0kgdiByb3pocmFuw60gc3Byw6F2Y3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvcmFkaWUgaW5jaWRlbnRuw71jaCBzdGF2b3Ygb2Qgdnlzb2vDqWhvIChuYXByLiBjcmljaXRhbCkgcG8gbsOtemt5IChuYXByLiBmdW5jdGlvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcsOtc2x1xaFuw6kgc3RhdnkgbmFzYWRlbmlhLCB2IGt0b3LDvWNoIG3DtMW+dSBwcmVwb2plbsOpIHRpcHkgb3ZwbHl2bmnFpSBzdGF2IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aMS+YWTDoXZhbmlhIHByZSBvYnJhem92a3UgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWjEvmFkw6F2YW5pYSBwcmUgb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnloxL5hZMOhdmFuaWEgcHJlIG9icmF6b3ZrdSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aMS+YWTDoXZhbmlhIHByZSBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW51amUgem9icmF6ZW7DqSBzdMS6cGNlIENJIHYga29tcGxleG5vbSB6b2JyYXplbsOtIHRhYnXEvmt5IHByZXBvamVuw60gcHJlIHbFoWV0a3kgdHJpZWR5IENJLiBBayBuZWV4aXN0dWplIMW+aWFkbmEgcG9sb8W+a2EsIHpvYnJhemlhIHNhIHByZWR2b2xlbsOpIHN0xLpwY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbnVqZSB6b2JyYXplbsOpIHN0xLpwY2UgQ0kgdiBrb21wbGV4bm9tIHpvYnJhemVuw60gdGFidcS+a3kgcHJlcG9qZW7DrSB2IHrDoXZpc2xvc3RpIG9kIHRyaWVkeSBDSS4gS2HFvmTDvSB6w6F6bmFtIG11c8OtIG1hxaUgcHJlZHBvbnUgcyBuw6F6dm9tIHRyaWVkeSBhIGR2b2ppdMO9bWkgZHZvamJvZGthbWkgKHQuIGouIENvbXB1dGVyOjopLiBFeGlzdHVqZSBuaWVrb8S+a28gQ0ktQXR0cmlidXRlcyAoYXRyaWLDunRvdiBDSSksIGt0b3LDqSBzw7ogc3BvbG/EjW7DqSBwcmUgdsWhZXRreSBDSSAocHLDrWtsYWQgcHJlIHRyaWVkdSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gTmEgem9icmF6ZW5pZSBqZWRub3RsaXbDvWNoIENJLWF0cmliw7p0b3YgZGVmaW5vdmFuw71jaCB2IENJLWRlZmluw61jaWkgc2EgbXVzw60gcG91xb5pxaUgbmFzbGVkdWrDumNhIHNjaMOpbWEgKHByw61rbGFkIHByZSB0cmllZHUgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gQWsgcHJlIHRyaWVkdSBDSSBuZWV4aXN0dWplIMW+aWFkbmEgcG9sb8W+a2EsIHpvYnJhemlhIHNhIHByZWR2b2xlbsOpIHN0xLpwY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW51amUsIGt0b3LDqSBwb2xvxb5reSBzw7ogayBkaXNwb3rDrWNpaSBwcmUgIkFjdGlvbiIgdiB0cmV0ZWogw7pyb3ZuaSDFoXRydWt0w7pyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbnVqZSwga3RvcsOpIHBvbG/Fvmt5IHPDuiBkb3N0dXBuw6kgdiBwcnZlaiDDunJvdm5pIMWhdHJ1a3TDunJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbnVqZSwga3RvcsOpIHBvbG/Fvmt5IHPDuiBkb3N0dXBuw6kgdiBkcnVoZWogw7pyb3ZuaSDFoXRydWt0w7pyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RvcsO9IHR5cCBwcmVwb2plbmlhIChwb21lbm92YW7DvSB6IHBvaMS+YWR1IHRpa2V0dSkgbcO0xb5lIG92cGx5dm5pxaUgc3RhdiBwcmVwb2plbmVqIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0b3LDvSB0eXAgdGlwdSBtw7TFvmUgb3ZwbHl2bmnFpSBzdGF2IHByZXBvamVuZWogQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWt0dWFsaXrDoWNpYSBkZWZpbsOtY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdPZHN0csOhbmVuaWUgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0ZhcmJhIHN0YXZ1IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgdWRhbG9zdMOtIGR5bmFtaWNrw71jaCBwb2zDrSwga3RvcsO9IG96bmHEjcOtIGRlZmluw61jaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgYWtvIG5lc3luY2hyb25pem92YW7DqSwgYWsgc2Egem1lbmlhIGR5bmFtaWNrw6kgcG9saWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OpIHBvbGlhIHpvYnJhemVuw6kgbmEgb2JyYXpvdmtlIMSPYWzFocOtY2ggcG9sw60gSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6kgcG9saWEgem9icmF6ZW7DqSBuYSBvYnJhem92a2UgcHJlaMS+YWR1IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OpIHBvbGlhIHpvYnJhemVuw6kgbmEgb2JyYXpvdmtlIHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUG92b2zDrSBmdW5rY2l1IGhyb21hZG5laiBha2NpZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSBwcmUgZnJvbnRlbmQgYWdlbnRhIG5hIHByw6FjdSBzIHZpYWMgYWtvIGplZG5vdSBrb25maWd1cmHEjW5vdSBwb2xvxb5rb3UgbmFyYXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdTdGF2IG5hc2FkZW5pYSB0ZWp0byBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsIHVkYWxvc3RpIG5hIG5hc3RhdmVuaWUgY29uZmlnaXRlbS1zdGF0dXMgbmEgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnUG9saWEgaW5kZXh1IGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5LCBrdG9yw6kgc2EgcG91xb7DrXZhasO6IG5hIGZ1bGx0ZXh0b3bDqSB2eWjEvmFkw6F2YW5pZS4gUG9saWEgc8O6IHRpZcW+IHVsb8W+ZW7DqSwgYWxlIG5pZSBzw7ogcG92aW5uw6kgcHJlIGNlbGtvdsO6IGZ1bmvEjW5vc8WlLiBaYWhybnV0aWUgcHLDrWxvaCBtb8W+bm8gemFrw6F6YcWlIG5hc3RhdmVuw61tIHBvbG/Fvmt5IG5hIGhvZG5vdHUgMCBhbGVibyBqZWogdnltYXphbsOtbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGlhIHVsb8W+ZW7DqSB2IGluZGV4ZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSwga3RvcsOpIHNhIG9rcmVtIGZ1bGx0ZXh0b3bDqWhvIHZ5aMS+YWTDoXZhbmlhIHBvdcW+w612YWrDuiBhaiBuYSBpbsOpIMO6xI1lbHkuIFByZSDDunBsbsO6IGZ1bmvEjW5vc8WlIHPDuiB2xaFldGt5IHBvbGlhIHBvdmlubsOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHLDoWNpYSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcmUgdnJzdHZ1IHZ5dm9sw6F2YcSNYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0csOhY2lhIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHByZSB2cnN0dnUgdnl2b2zDoXZhxI1hIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0csOhY2lhIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHByZSB2cnN0dnUgdnl2b2zDoXZhxI1hIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJlaMS+YWQga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWjFlcWIYSBzdGF2eSBuYXNhZGVuaWEgZG8gdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaMWVxYhhIHN0YXZ5IGluY2lkZW50b3YgZG8gdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltw6FsbnkgcG/EjWV0IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLCBrdG9yw6kgc2Egem9icmF6aWEgdm8gdsO9c2xlZGt1IHRlanRvIG9wZXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCBuYSBrb250cm9sdSBza3VwaW55IHpvZHBvdmVkbmVqIHphIHRyaWVkdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCBuYSBrb250cm9sdSBza3VwaW55IHpvZHBvdmVkbmVqIHphIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgbmEgZ2VuZXJvdmFuaWUgxaF0YXRpc3TDrWsga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOw6F6b3YgbW9kdWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNb2R1bCDEjcOtc2xhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvxI1ldCBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllaywga3RvcsOpIHNhIG1hasO6IHpvYnJhemnFpSBuYSBrYcW+ZGVqIHN0csOhbmtlIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvxI1ldCBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllaywga3RvcsOpIHNhIG1hasO6IHpvYnJhemnFpSBuYSBrYcW+ZGVqIHN0csOhbmtlIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0eSwga3RvcsOpIHNhIG1hasO6IHZ5aMS+YWTDoXZhxaUsIGtvxL5rbyB6w6F6bmFtb3YgYSBrdG9yw6kgYXRyaWLDunR5IHNhIG1hasO6IHpvYnJhemnFpS4gQXRyaWLDunR5IENvbmZpZ0l0ZW0gbXVzaWEgYnnFpSBleHBsaWNpdG5lIHVsb8W+ZW7DqSBwcm9zdHJlZG7DrWN0dm9tIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZWjEvmFkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBrYXRlZ8OzcmllIHRyaWVkIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHN0xLpwY292w6kgZmlsdHJlIHByZWjEvmFkdSBtYWzDvWNoIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBVcG96b3JuZW5pZTogbmFzdGF2ZW5pZSBob2Rub3R5ICJBa3TDrXZuZSIgbmEgMCB6YWJyw6FuaSBhZ2VudG9tIHVwcmF2b3ZhxaUgbmFzdGF2ZW5pYSB0ZWp0byBza3VwaW55IGliYSB2IGljaCBvc29ibsO9Y2ggbmFzdGF2ZW5pYWNoLCBhbGUgc3Byw6F2Y29tIHN0w6FsZSB1bW/Fvm7DrSB1cHJhdm92YcWlIG5hc3RhdmVuaWEgdiBtZW5lIGluw6lobyBwb3XFvsOtdmF0ZcS+YS4gUG9tb2NvdSBwb2xvxb5reSBcJ1ByZWZlcmVuY2VHcm91cFwnIG3DtMW+ZXRlIG92bMOhZGHFpSwgdiBrdG9yZWogb2JsYXN0aSBzYSBtYWrDuiB0aWV0byBuYXN0YXZlbmlhIHpvYnJhem92YcWlIHYgcG91xb7DrXZhdGXEvnNrb20gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgc3RhdnkgbmFzYWRlbmlhIHNhIHZ5ZmFyYmlhIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHN0YXZ5IG5hc2FkZW5pYSB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgcHLDrWtsYWR5IHNrdXDDrW4gb3Byw6F2bmVuw60gdsWhZW9iZWNuw71jaCBhdHJpYsO6dG92IGthdGFsw7NndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgbW9kdWx1IG7DoXp2dSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgbW9kdWwgxI3DrXNsYSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHN0csOhbm9rIChuYSBrdG9yw71jaCBzYSB6b2JyYXp1asO6IGtvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBtb2R1bCByZcWlYXpjYSB2ZXJ6aWUgcHJlIHRyaWVkeSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBtb2R1bCDFoWFibMOzbnkgcmXFpWF6Y2EgdmVyemllIHByZSB0cmllZHkga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6b2JyYXplbsOtIHByZWZlcmVuY2nDrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHNww7rFocWlYcSNIHZlcnppZSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdTa3VwaW5hIG9wcsOhdm5lbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+aXRpZSBha2NpZSBwcmlwb2plbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcG9sb8W+a3kga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBuYSB2eWjEvmFkw6F2YW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHpvYnJhemVuaWEgc3Ryb211IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSB6dsOkxI3FoWVuaWEga29uZmlndXJhxI1uZWogcG9sb8W+a3kgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcHJpZGFuaWEgcG9sb8W+a3kga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcG9sb8W+a3kgaHJvbWFkbmVqIGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IMO6cHJhdiBwb2xvxb5reSBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBwb2xvxb5reSBoaXN0w7NyaWUga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHRsYcSNIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgb2RzdHLDoW5lbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Z5aMS+YWTDoXZhbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGlja8OpIG5hc3RhdmVuaWUgc3RhdnUgaW5jaWRlbnR1IENJLCBrZcSPIGplIHRpa2V0IHByZXBvamVuw70gcyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXbDrSBzdGF2IG5hc2FkZW5pYSBuYSBvYnJhem92a2UgaHJvbWFkbmVqIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXbDrSBzdGF2IHVkYWxvc3RpIG5hIG9icmF6b3ZrZSBocm9tYWRuZWogcG9sb8W+a3kga29uZmlndXLDoWNpZSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlLCBrdG9yw70gdW1vxb7FiHVqZSBwcmVwb2plbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHMgaW7DvW0gb2JqZWt0b20gdiB6b2JyYXplbsOtIHp2w6TEjcWhZW5pYSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgcHLDrXN0dXAgayBoaXN0w7NyaWkga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBwcsOtc3R1cCBrIGhpc3TDs3JpaSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgb2RzdHLDoW5lbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgamVqIHp2w6TEjcWhZW5vbSB6b2JyYXplbsOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSB6b2JyYXplbmllIG9ka2F6b3YgbmEga29uZmlndXJhxI1uw6kgcG9sb8W+a3kgYWtvIHN0cm9tb3bDqSB6b2JyYXplbmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIGR1cGxpa292YW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHByZWjEvmFkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIGR1cGxpa292YW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgw7pwcmF2dSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgbsOhdnJhdCBkbyB6b2JyYXplbmlhIHp2w6TEjcWhZW5pYSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgdGxhxI0ga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBqZWogenbDpMSNxaFlbm9tIHpvYnJhemVuw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBwcmlibMOtxb5lbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gaGlzdMOzcml1IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrICh2IG9wYcSNbm9tIHBvcmFkw60pIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnUHJlZHZvbGVuw6Ega2F0ZWfDs3JpYSwga3RvcsOhIHNhIHpvYnJhesOtLCBhayBuaWUgamUgdnlicmF0w6Egxb5pYWRuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa8OhdG9yIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5LCBuYXByLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUHJlZHZvbGVuw6EgaG9kbm90YSBqZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpY2t5IHNww7rFocWlYSBpbnZva8OhdG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyemlhIFJlxaVhemVjIHZ5amFkcmVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnTW9kdWwgcmXFpWF6Y2EgdmVyemllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1Nww7rFocWlYcSNIHZlcnppZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnxIxpIGplIG1vxb5uw6kgdnlobsO6xaUgc2Egdnlrb25hbml1IHByw61rYXp1IENvbmZpZ0l0ZW1BQ0wga29udHJvbG91IHrDoXZpc2xvc3TDrSBwb2zDrSB1bG/FvmVuw71jaCB2IG1lZHppcGFtw6R0aS4gVG90byBtw7TFvmUgemxlcMWhacWlIMSNYXN5IG5hxI3DrXRhbmlhIGZvcm11bMOhcm92LCBhbGUgbXVzw60gYnnFpSB2eXBudXTDqSwgYWsgc2EgbWFqw7ogcG91xb7DrXZhxaUgQUNMTW9kdWx5IHByZSBJVFNNQ29uZmlnSXRlbS0gYSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS3RvcsOpIHbFoWVvYmVjbsOpIGluZm9ybcOhY2llIHPDuiB1dmVkZW7DqSB2IHrDoWhsYXbDrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICd0cmllZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYsOhbG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a8SNbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVkcHJvZHVrxI1uw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3TDrXZuZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwYWxjYSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBhbGNvdiAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBhbGNhICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBhbGNhICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwYWxjYSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwYWxjb3YgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXBhbGNvdsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcGFsY2EgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1wYWxjb3bDvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBhbGNhICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwYWxjb3YgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHBhbGNhICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcGFsY2EgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcGFsY2EgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBhbGNhICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwYWxjYSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcGFsY2EgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHBhbGNvdiAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBhbGNhICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcGFsY2EgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwYWxjYSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcGFsY2EgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcGFsY2EgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcGFsY2EgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwYWxjYSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHBhbGNvdiAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBhbGNvdiAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcGFsY2EgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IHBhbGNhICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHBhbGNhICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBhbGNvdiAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBwYWxjYSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnw5rEjXRvdm7DrWN0dm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdQcmlkZcS+b3ZhbmllIGFkcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnU3Byw6F2Y2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbMOzZ292w70gdGVsZWbDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXAgc3BvdHJlYmnEjWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhY2l0YSBiYXTDqXJpZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1R5cCBiYXTDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J1ZG92YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnUm96aHJhbmllIHpiZXJuaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnVHJpZWRhIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYWNpdGEgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFjaXRhIG5hIGdyYWZpY2vDuiBrYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ8SMw61zbG8ga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfEjMOtdGHEjWthIGthcmlldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXAga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBrbGllbnRvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRza3kgc29mdHbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSBrbGllbnRvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdIb2RpbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1LDvWNobG9zxaUgaG9kw61uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgbmEgcG9kcGlzb3ZhbmllIGvDs2R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbsO9IHRlbGVmw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcG9yYWRlbnN0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgbmEgZGlzdHJpYsO6dG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1NwcsOhdmEga29udGFqbmVyb3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdabWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cCB6bWx1dnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdabWx1dm7DqSBvYmRvYmllIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ09iZG9iaWUgcGxhdG5vc3RpIHptbHV2eSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdCZXpkcsO0dG92w70gdGVsZWbDs24gKHRlbGVmw7NuIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ07DoWtsYWRvdsOhIGplZG5vdGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnUG/EjWV0IGxpY2VuY2nDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRMOhdHVtIHZ5dHZvcmVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1ZsYXN0bsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXplcnZvdmFuw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZlciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0TDoXR1bSBmYWt0w7pyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRMOhdHVtIG9iamVkbsOhdmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEw6F0dW0gesOhcnVreSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEw6F0dW0gdnlkYW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnU3RvbG7DvSBwb8SNw610YcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgbmEgcG9kcGlzb3ZhbmllIGRva3VtZW50b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbG92w6kgY2VydGlmaWvDoXR5IChjZXJ0aWZpa8OhdHkgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdQcmFjb3Zuw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS29uY292w6EgSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVWtvbsSNZW5pZSBwb2Rwb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRMOhdHVtIHNrb27EjWVuaWEgcGxhdG5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm7DvSBwZXZuw70gZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTa2xhZG92YW5pZSBlbmVyZ2llIG5hIHpvdHJ2YcSNbsOta3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWt0b3IgZm9ybXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzaW5nb3bDoSB6bWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdWxaFlb2JlY27DqSBpbmZvcm3DoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpY2vDqSBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlja8OhIGthcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBoYXJkdsOpcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSG1vdG5vc8WlIGhhcmR2w6lydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnTsOhaGxhdm7DoSBzw7pwcmF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva29sIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1NwcsOhdmEgaWRlbnTDrXQgYSBwcsOtc3R1cHUgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudMOhcm5lIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ8SMw61zbG8gZmFrdMO6cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbMOhdmVzbmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgbW9uaXRvciAoZGlzcGxlaiB6IHRla3V0w71jaCBrcnnFoXTDoWxvdiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChzdmV0ZWxuw6EgZGnDs2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWxlZsOzbiBwZXZuZWogbGlua3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnWmVtZXBpc27DoSDFocOtcmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnVnJzdHZhIDE6IEZ5emlja8OhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdWcnN0dmEgMjogdnJzdHZhIGTDoXRvdsOpaG8gc3BvamVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ1Zyc3R2YSAzOiBTaWXFpW92w6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ1Zyc3R2YSAzOiBTaWXFpW92w6EgdnJzdHZhIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnVnJzdHZhIDQ6IFRyYW5zcG9ydG7DoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ1Zyc3R2YSA1OiBSZWFsaXphxI1uw6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1Zyc3R2YSA2OiBwcmV6ZW50YcSNbsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ1Zyc3R2YSA3OiBBcGxpa2HEjW7DoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTsOham9tbsOhIHptbHV2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VuxI1uw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbsSNbsO9IGvEvsO6xI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwIGxpY2VuY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdPYmRvYmllIHBsYXRub3N0aSBsaWNlbmNpZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0RvYmEgcGxhdG5vc3RpIGxpY2VuY2llIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXTDqXJpYSBzIGZvc2bDoXRvbSBsw610aWEgYSDFvmVsZXphIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTMOtdGl1bS1pw7Nub3bDoSAoTGktaW9uKSBiYXTDqXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ1ptbHV2YSBvIHDDtMW+acSNa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ05hY2jDoWR6YSBzYSB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1plbWVwaXNuw6EgZMS6xb5rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1bDvXJvYmNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbcOhbG5hIG5vc25vc8WlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdQYW3DpMWlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwIHBhbcOkdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmlyYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbG7DqSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsbsOpL3Zsb8W+ZW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnUG9waXMgbW9kZWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1JvemzDrcWhZW5pZSBtb25pdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZcS+a29zxaUgbW9uaXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNecWhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdTaWXFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm3DoWNpZSBvIHNpZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm3DoWNpZSBvIHNpZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdTaWXFpW92w6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWwta2FkbWlvdsOhIChOaUNkKSBiYXTDqXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2VsLW1ldGFsaHlkcmlkb3bDoSAoTmlNSCkgYmF0w6lyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnRG9ob2RhIG8gbWzEjWFubGl2b3N0aSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnUG/EjWV0IHByb2Nlc29yb3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUG/EjWV0IG1vZHVsb3YgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ1BvxI1ldCBncmFmaWNrw71jaCBrYXJpZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAob3JnYW5pY2vDoSBkacOzZGEgZW1pdHVqw7pjYSBzdmV0bG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1ByZXbDoWR6a292w6kgbsOha2xhZHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnT2JqZWRuw6F2YWNpZSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnSW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVsO9c3R1cHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcGFydG5lcnN0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZsOzbm5lIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cCB0ZWxlZsOzbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXppY2vDqSBqYWRyw6EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdEb2TDoXZrYSBlbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnWmFrw7pwZW7DqSB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdIxLpia2Egc3RvamFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JlZ8OhbG92w6kgamVkbm90a3kgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdJemJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnS2FydGEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWvDoXR5IFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQcmVkYWpuw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRuw70gdGVsZWbDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVXphdnJldMOhIG9sb3ZlbsOhIGJhdMOpcmlhIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU8OpcmlvdsOpIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyb3bDvSBzb2Z0dsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1ptbHV2YSBvIHBvc2t5dG92YW7DrSBzbHXFvmllYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpc27DvSDFoXTDrXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXAgesOhc3V2a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0dsOpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1JlcHJvZHVrdG9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfFoHRhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1BvxI1pYXRvxI1uw6EgSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfDmmxvxb5pc2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnw5psb8W+bsO9IG9kZGllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0Rjw6lyc2thIHNwb2xvxI1ub3PFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnWmhybnV0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUZW5rw70ga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdWbMOha25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0NlbGtvdsOhIHBhbcOkxaUgUkFNIGdyYWZpY2tlaiBrYXJ0eSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnQ2Vsa292w6EgcGFtw6TFpSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnRG90eWtvdsO9IG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdWZcW+YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnUm96Ym/EjW92YcSNIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ07DoWhsYXZuw6Egc8O6cHJhdmEgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWbDs24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Vib3bDoSBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdTcGxvxaFuaSBwb2RhdGtpIG8gZGVsb3Zhbmp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdOYXN0YXZpdHZlIHphIHZob2RuZSBwb2RhdGtlIHphaHRldmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTmFzdGF2aXR2ZSB6YSBpemhvZG5lIG9keml2bmUgcG9kYXRrZSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1VwcmF2bGphbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnU3ByZW1lbWJhIGRlZmluaWNpamUgcmF6cmVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnU3ByZW1lbWJhIG9wcmVkZWxpdHZlIHZsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFrZXRpIHJhenJlZG92IFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1R1IGxhaGtvIHV2b3ppdGUgc3Zlxb5uamUgcmF6cmVkb3YgUmVhZHkySW1wb3J0LCBraSBwcmlrYXp1amVqbyBuYcWhZSBuYWpib2xqIG9iacSNYWpuZSBlbGVtZW50ZSBrb25maWd1cmFjaWplLiBVcG/FoXRldmFqdGUsIGRhIGJvIG1vcmRhIHBvdHJlYm5hIGRvZGF0bmEga29uZmlndXJhY2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnUG9zb2RvYml0ZXYgb2JzdG9qZcSNaWggZW50aXRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ1V2b3ppdGUgc3Zlxb5uamUgcmF6cmVkb3YgUmVhZHkyQWRvcHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdSYXpyZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnVmxvZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIHphIHJhenJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnxIxlIMW+ZWxpdGUgdXN0dmFyaXRpIG5vdiBlbGVtZW50IGtvbmZpZ3VyYWNpamUsIHMgc2V6bmFtYSBpemJlcml0ZSByYXpyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnUmF6cmVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTW5vxb5pxI1ubyBkZWphbmplIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbmplIG5hbWVzdGl0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGFuamUgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1BvdmV6YXZhIG5hIGRydWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOZXByYXZpbG5hIMWhdGV2aWxrYSBlbGVtZW50YSBrb25maWd1cmFjaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfFoHRldmlsa2EgZHJ1Z2VnYSBlbGVtZW50YSBrb25maWd1cmFjaWplLCBzIGthdGVyaW0gc2UgcG92ZcW+ZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBbGkgcmVzIMW+ZWxpdGUgaXpicmlzYXRpIHRhIGVsZW1lbnQga29uZmlndXJhY2lqZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSW1lIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnSW1lIGplIMW+ZSB2IHVwb3JhYmkgdiBDb25maWdJdGVtcyB6IG5hc2xlZG5qbygtaW1pKSDFoXRldmlsa28oLWFtaSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxaB0ZXZpbGthIHJhemxpxI1pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgdGV2aWxrYSByYXpsacSNaWNlIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ8WgdGV2aWxrYSByYXpsacSNaWNlIGplIMW+ZSB2IHVwb3JhYmkgcHJpIENvbmZpZ0l0ZW1zIHogbmFzbGVkbmpvIMWhdGV2aWxrbyAoxaF0ZXZpbGthbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbmplIHV2YWphbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRHLFvmF2YSBpbmNpZGVudGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ1pnb2RvdmluYSBlbGVtZW50YSBrb25maWd1cmFjaWplOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdaZ29kb3ZpbmEgVnNlYmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQb3ZlxI1hbiBwb2dsZWQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXJhY2lqYSBFbGVtZW50aSBuYSBzdHJhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnUG9kYXRrb3YgbyBlbGVtZW50dSBrb25maWd1cmFjaWplIG5pIGJpbG8gbW9nb8SNZSBuYWp0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJemJlcml0ZSB0YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdaYWduYXRpIGlza2FuamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdEcmV2ZXNuaSBwb2dsZWQgemEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1JhdmVuIGdsb2JpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQb3ZlxI1hbmplL2l6a2xvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdEb3Nlxb5lbmEgbmFqdmXEjWphIHJhdmVuIHBvdmV6YXYgemEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpamUgbyBwb3N0YXZraSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1RyZW51dG5vIHN0YW5qZSB1dmFqYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnVHJlbnV0bm8gc3RhbmplIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdaYWRuamEgc3ByZW1lbWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ05hemFkbmplIHNwcmVtZW5pbCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1ZhxaFpIGVsZW1lbnRpIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gSXNrYW5qZSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1V2b8W+ZW5pIGJvZG8gbmFzbGVkbmppIHJhenJlZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVXZvxb5lbmUgYm9kbyBuYXNsZWRuamUgdmxvZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVXBvxaF0ZXZhanRlLCBkYSBib2RvIHVzdHZhcmplbmEgdHVkaSB1c3RyZXpuYSBkaW5hbWnEjW5hIHBvbGphIGluIHJhenJlZGkgR2VuZXJhbENhdGFsb2csIGtpIG5lIGJvZG8gc2Ftb2Rlam5vIG9kc3RyYW5qZW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0FsaSDFvmVsaXRlIG5hZGFsamV2YXRpPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQb3RyZWJ1amV0ZSByYXpyZWRlIHByaW1lcm92ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmljaWphIG5pIHZlbGphdm5pIGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQcmVnbGVkOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEIG5pIHBvZGFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdHJlYnVqZXRlIHZzYWogZW4gaXpicmFuaSBlbGVtZW50IGtvbmZpZ3VyYWNpamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTmltYXRlIGRvc3RvcGEgemEgcGlzYW5qZSB2IHRvIGtvbmZpZ3VyYWNpanNrbyBwb3N0YXZrbzogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ1phIHJhenJlZCAlcyBuaSBiaWxhIG9wcmVkZWxqZW5hIG5vYmVuYSBkZWZpbmljaWphISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXJhY2lqc2tlZ2EgZWxlbWVudGEgIiVzIiBuaSBtb2dvxI1lIG5hanRpIHYgemJpcmtpIHBvZGF0a292ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05pIGJpbG8gbW9nb8SNZSBpemJyaXNhdGkga29uZmlndXJhY2lqc2tlZ2EgZWxlbWVudGEgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdaYSBDb25maWdJdGVtSUQgJXMgbmkgYmlsYSBuYWpkZW5hIG5vYmVuYSByYXpsacSNaWNhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaSBwb2RhbiBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGFsaSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnRG9zdG9wIG5pIG9tb2dvxI1lbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmUgbW9yZW0gcHJpa2F6YXRpIHpnb2RvdmluZSwga2VyIG5pIHBvZGFuIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZSBtb3JlbSBwcmlrYXphdGkgemdvZG92aW5lLCBuaSBwb2RhbmloIHByYXZpYyBkb3N0b3BhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm92IGVsZW1lbnQga29uZmlndXJhY2lqZSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIHJhemxpxI1pY2EgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1Bvc29kb2JsamVubyBzdGFuamUgbmFtZXN0aXR2ZSAobm92bz0lcywgc3Rhcm89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1Bvc29kb2JsamVubyBzdGFuamUgaW5jaWRlbnRhIChub3ZvPSVzLCBzdGFybz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgaXpicmlzYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdEb2RhbmEgcG92ZXphdmEgbmEgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdQb3ZlemF2YSBuYSAlcyAodGlwPSVzKSBpemJyaXNhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ09wcmVkZWxpdGV2IGVsZW1lbnRhIENvbmZpZ0l0ZW0gamUgcG9zb2RvYmxqZW5hIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbWUgcG9zb2RvYmxqZW5vIChub3ZvPSVzLCBzdGFybz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0ICVzIHBvc29kb2JsamVuIGl6ICIlcyIgdiAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1JhemxpxI1pY2EgJXMgaXpicmlzYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05pIHBvZGFuIENvbmZpZ0l0ZW1JRCBhbGkgVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOaSBtb2dvxI1lIHByaWthemF0aSBlbGVtZW50YSBrb25maWd1cmFjaWplLCBuaSBwb2RhbmloIHByYXZpYyBkb3N0b3BhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuaSBuYWpkZW4gdiBwb2RhdGtvdm5pIGJhemkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICduYXRpc25pbCAlcyBuYSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmVwcmF2aWxlbiBJRCByYXpyZWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0lEIHJhenJlZGEgbmkgbmF2ZWRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdQcmF2aWNlIGRvc3RvcGEgemEgdGEgcmF6cmVkIG5pc28gcG9kYW5lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnQnJleiByZXp1bHRhdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmV6dWx0YXRpIGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnRWxlbWVudGEgbmkgbW9nb8SNZSBwcmlrYXphdGksIHByYXZpY2UgZG9zdG9wYSB6YSBDb25maWdJdGVtIG5pc28gcG9kYW5lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5pIG5hamRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmkgYmlsbyBuYWpkZW5paCByYXpsacSNaWMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnZGVsb3ZhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdvcG96b3JpbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhbmplIHV2YWphbmphIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW5qZSBpbmNpZGVudGEgdGVnYSBlbGVtZW50YSBrb25maWd1cmFjaWplJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnQnJleiBkb3ZvbGplbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBqZSBuZXZlbGphdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnTmV2ZWxqYXZuaSBwYXJhbWkgaXNrYW5qYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdQcmlrYXphbmkgZWxlbWVudGkga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdWcnN0YSBzdGFuamEgbmFtZXN0aXR2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdWcnN0YSB0cmVudXRuZWdhIHN0YW5qYSBpbmNpZGVudGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWVkJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPbWVqaXR2ZSByYXpyZWRhIHphIGVsZW1lbnQga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnSXpiZXJpdGUgZW5lZ2EgYWxpIHZlxI0gcmF6cmVkb3YgemEgb21laml0ZXYgaXpiaXJuaWggZWxlbWVudG92IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09tZWppdHZlIHJhenJlZGEgemEgZWxlbWVudCBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnSXpiZXJpdGUgZW5lZ2EgYWxpIHZlxI0gcmF6cmVkb3YgemEgb21laml0ZXYgaXpiaXJuaWggZWxlbWVudG92IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWnEjW5vIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGnEjW5vIChyYXpsacSNaWNhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdWcnN0YSBza2xpY2V2YW5qYSBuYSBwb3ZlemF2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdBbGkgdGEgcG92ZXphdmEgdmVsamEgemEgQ29uZmlnSXRlbSBhbGkgc3RhdGnEjW5vIHJhemxpxI1pY28gb2JqZWt0YSwgbmEga2F0ZXJlZ2Egc2Ugc2tsaWN1amUuIEl6cmHEjXVuIHRyZW51dG5lZ2Egc3RhbmphIGluY2lkZW50YSBzZSBpenZlZGUgc2FtbyBwcmkgZGluYW1pxI1uaWggcG92ZXphdmFoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ0l6YmVyaXRlIGF0cmlidXQsIHBvIGthdGVyZW0gc2UgYm9kbyBpc2thbGkgZWxlbWVudGkga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnT3Nub3ZuYSBzdHJ1a3R1cmEgbmkgdmVsamF2bmEuIE5hdmVkaXRlIGhhc2ggcyBwb2RhdGtpIHYgb2JsaWtpIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnTml6IFlBTUwgc2UgbW9yYSB6YcSNZXRpIHogXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGFiZWxlIGNvbmZpZ2l0ZW1fbGluayBuaSBiaWxvIG1vZ2/EjWUgb8SNaXN0aXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnVXN0cmV6bmEgZGluYW1pxI1uYSBwb2xqYSBuaXNvIGJpbGEgbmFqZGVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOaSBiaWxvIG1vZ2/EjWUgdnN0YXZpdGkgdiB0YWJlbG8gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdWc3RhdmxqZW5paCAwIHZyc3RpYyB2IHRhYmVsbyBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTmFqdmXEjWplIMWhdGV2aWxvIGVuZWdhIGVsZW1lbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnppamEgU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ05hcGFrYSBwcmkgc2luaHJvbml6YWNpamkgZGVmaW5pY2lqLiBQcmV2ZXJpdGUgZG5ldm5pay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdJbWF0ZSBkZWZpbmljaWplIElUU01Db25maWdJdGVtLCBraSBuaXNvIHNpbmhyb25pemlyYW5lLiBVbWXFocSNYWp0ZSBzcHJlbWVtYmUgZGluYW1pxI1uaWggcG9saiBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1ByZXRla2xhIHZlbGphdm5vc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdWemRyxb5ldmFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnTmHEjXJ0b3Zhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUG9wcmF2aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdVcG9rb2plbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUHJlZ2xlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdGlyYW5qZS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJlZ2xlZCBpbiBwb3RyZGl0ZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnVXZveiByYXpyZWRvdi92bG9nIGluIHogbmppbWkgcG92ZXphbmloIHBvbGonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQcmkgdXZvenUgcmF6cmVkYSBqZSBwcmnFoWxvIGRvIG5hcGFrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNrcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gcHJpa2F6YW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdPbW9nb8SNYSByYXrFoWlyamVuZSBwb2dvamUgaXNrYW5qYSBwcmkgaXNrYW5qdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4gUyB0byBmdW5rY2lqbyBsYWhrbyBpxaHEjWV0ZSBucHIuIGltZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHMgdGFrxaFuaW1pIHBvZ29qaSwga290IHNvICIoKmtleTEqJiYqa2V5MiopIiBhbGkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdPbW9nb8SNYSByYXrFoWlyamVuZSBwb2dvamUgaXNrYW5qYSB2IGlza2FuanUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLiBTIHRvIGZ1bmtjaWpvIGxhaGtvIGnFocSNZXRlIG5wci4gaW1lIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgcyB0YWvFoW5pbWkgcG9nb2ppLCBrb3Qgc28gIigqa2V5MSomJiprZXkyKikiIGFsaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0RvZGVsamVuaSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLSSwgZG9kZWxqZW5pIHBvZGpldGp1IHN0cmFua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSwgZG9kZWxqZW5pIHVwb3JhYm5pa3Ugc3RyYW5rZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnTmFzdGF2aXR2ZSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQcmV2ZXJqYW5qZSBlZGluc3R2ZW5lZ2EgaW1lbmEgc2FtbyB6bm90cmFqIGlzdGVnYSByYXpyZWRhIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykgYWxpIGdsb2JhbG5vIChcJ2dsb2JhbFwnKSwga2FyIHBvbWVuaSwgZGEgc2UgcHJpIGlza2FuanUgcG9kdm9qaXRldiB1cG/FoXRldmEgdnNhayBvYnN0b2plxI1pIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdJemJlcml0ZSBtb2R1bCB6YSB1dmVsamF2aXRldiBzaGVtZSBwb2ltZW5vdmFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdJemJlcml0ZSBtb2R1bCB6YSB1dmVsamF2aXRldiDFoXRldmlsc2tlIHNoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdJemJlcml0ZSBtb2R1bCB6YSB1dmVsamF2aXRldiBzaGVtZSB2ZXJpxb5uaWggbml6b3YgcmF6bGnEjWljLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0l6YmVyaXRlIGF0cmlidXRlIHphIHNwcm/Fvml0ZXYgdXN0dmFyamFuamEgbm92ZSByYXpsacSNaWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdJemJlcml0ZSBrYXRlZ29yaWplLCBraSBqaWggxb5lbGl0ZSBkb2RlbGl0aSB0ZW11IHJhenJlZHUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJpIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgc3RvbHBjYSB6YSBwcmVnbGVkIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTdG9scGNpLCBraSBqaWggamUgbW9nb8SNZSBmaWx0cmlyYXRpIHYgcHJlZ2xlZHUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuIE9wb21iYTogRG92b2xqZW5pIHNvIHNhbW8gYXRyaWJ1dGkgZWxlbWVudGEga29uZmlndXJhY2lqZSBpbiBkaW5hbWnEjW5hIHBvbGphIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50aSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdEb2RhamFuamUgZWxlbWVudGEga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdVcmVqYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHphIGRvZ29ka2UgZWxlbWVudGEga29uZmlndXJhY2lqZSwga2kgb21vZ2/EjWEgYmVsZcW+ZW5qZSB2IHpnb2RvdmlubyB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWwgZG9nb2Rrb3YgemEgZWxlbWVudGUga29uZmlndXJhY2lqZSwga2kgcG9zb2RvYmkgZWxlbWVudGUga29uZmlndXJhY2lqZSBuYSBuamlob3ZvIHRyZW51dG5vIGRlZmluaWNpam8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnWmdvZG92aW5hIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdUaXNrYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyYWNpamEgcG92ZcSNYXZlIGVsZW1lbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0RyZXZlc25pIHByaWtheiBlbGVtZW50b3Yga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFJhemxpxI1pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnS29uZmlndXJhY2lqc2tpIGVsZW1lbnRpIG5hc2xlZG5qaWggcmF6cmVkb3YgbmUgYm9kbyBzaHJhbmplbmkgdiBzdHJlxb5uaWt1IEVsYXN0aWNzZWFyY2guIMSMZSDFvmVsaXRlIHRvIHVwb3JhYml0aSB6YSBvYnN0b2plxI1lIENJLCBqZSB0cmViYSBwbyBzcHJlbWVtYmkgdGUgbW/Fvm5vc3RpIHphZ25hdGkgbWlncmFjaWpvIENJIHByZWsga29uem9sZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnS29uZmlndXJhY2lqc2tpIGVsZW1lbnRpIHogbmFzbGVkbmppbWkgc3RhbmppIG5hbWVzdGl0dmUgbmUgYm9kbyBzaHJhbmplbmkgdiBzdHJlxb5uaWt1IEVsYXN0aWNzZWFyY2guIMSMZSDFvmVsaXRlIHRvIHVwb3JhYml0aSB6YSBvYnN0b2plxI1lIENJLCBqZSB0cmViYSBwbyBzcHJlbWVtYmkgdGUgbW/Fvm5vc3RpIHphZ25hdGkgbWlncmFjaWpvIENJIHByZWsga29uem9sZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnT21laml0ZXYgcG9zdGF2a2Uga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhY2lqYSBPbWVqaXRldiBlbGVtZW50b3YgbmEgc3RyYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdQb2RhdGtvdm5hIHpiaXJrYSB6YSB1cHJhdmxqYW5qZSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnUG9zdGF2a2EgemEga29uZmlndXJhY2lqbyBtb2R1bGEgdiByYXpzdXRlbSBzdGFuanUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnQga29uZmlndXJhY2lqZSB6YSBpc2thbmplIHphbGVkbmVnYSB1c21lcmpldmFsbmlrYSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdVc3R2YXJqYW5qZSBpbiB1cHJhdmxqYW5qZSBkZWZpbmljaWogemEgZWxlbWVudGUga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdVc3R2YXJpIHZvem92bmljZSB6YSBlbGVtZW50ZSBDb25maWdJdGVtcyB2IGRvbG/EjWVuaWggxI1hc292bmloIHRvxI1rYWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1N0cmFua2Ugc2kgbGFoa28gb2dsZWRham8gcHJldGVrbGUgcmF6bGnEjWljZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnU3RyYW5rZSBsYWhrbyByb8SNbm8gcHJla2xhcGxqYWpvIG1lZCBwcmV0ZWtsaW1pIHJhemxpxI1pY2FtaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdQcml2emV0ZSBwb2RhdGtlLCBraSBzZSB1cG9yYWJpam8gdiBhdHJpYnV0dSB6YSB6YXNsb24gemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4gUHJpbWVyOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9bGV0bztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1ByaXZ6ZXRlIHBvZGF0a2UsIGtpIHNlIHVwb3JhYmlqbyB2IGF0cmlidXR1IHphIHphc2xvbiB6YSBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLiBQcmltZXI6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdPcHJlZGVsaXRlIGRlamFuamEsIHByaSBrYXRlcmloIGplIHYgZ3JhZG5pa3UgcG92ZXphbmloIHByZWRtZXRvdiBuYSB2b2xqbyBndW1iIHphIG5hc3Rhdml0dmUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvxaF0ZXZhanRlLCBkYSBtb3Jham8gdGUgYWtjaWplIHJlZ2lzdHJpcmF0aSBuYXNsZWRuamUgZGF0b3Rla2UgSlMgaW4gQ1NTOiBWIHRlbSBwcmltZXJ1IGplIHRyZWJhIHphIHVwb3JhYm8gbmFzdGF2aXRldiBpbiBmdW5rY2lqIHphIHBvdmV6b3ZhbmplIG9iamVrdG92IGluIG5qaWhvdmloIGZ1bmtjaWogdiBzaXN0ZW11IG5hc3Rhdml0aSBuYXNsZWRuamUgZGF0b3Rla2U6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGluIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ09wcmVkZWxpdGV2IHNoZW1lIFRlbXBsYXRlOjpUb29sa2l0IHphIG5pemEgcmF6bGnEjWljLiBVcG9yYWJsamEgc2Ugc2FtbywgxI1lIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBuYXN0YXZsamVuIG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ09wcmVkZWxpdGUgbml6IHBvZ29qZXYsIHBvZCBrYXRlcmltaSBsYWhrbyBzdHJhbmthIHZpZGkgZWxlbWVudCBrb25maWd1cmFjaWplLiBQb2dvamkgc28gbGFoa28gcG8gxb5lbGppIG9tZWplbmkgbmEgZG9sb8SNZW5lIHNrdXBpbmUgc3RyYW5rLiBJbWUgamUgZWRpbmkgb2J2ZXpuaSBhdHJpYnV0LiDEjGUgbmUgbmF2ZWRldGUgZHJ1Z2loIG1vxb5ub3N0aSwgYm9kbyB2IHRlaiBrYXRlZ29yaWppIHZpZG5pIHZzaSBlbGVtZW50aSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgWmFodGV2YW5hIGRvdm9samVuamEgemEgYnJpc2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIHByaWRvYml0ZXYgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIG5hc3RhdmxqYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHogdXBvcmFibyBzcGxvxaFuZWdhIHZtZXNuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBtb2R1bCB6YSBwcmVnbGVkLCBraSBwcmlrYXp1amUgbWFqaGVuIHBvZ2xlZCBzZXpuYW1hIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEb2xvxI1hLCBhbGkgbW9yYWpvIGJpdGkgdiBwb3ZlemF2YWggdm96bGnFocSNIHByaWthemFuZSBvem5ha2UgdnJzdGUgcG92ZXphdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdaYSB2c2FrIHJhenJlZCBDb25maWdJdGVtIHBvc2ViZWogZG9sb8SNYSByZWd1bGFybmUgaXpyYXplIHphIHByZXZlcmphbmplIGltZW5hIENvbmZpZ0l0ZW0gaW4gcHJpa2F6IHVzdHJlem5paCBzcG9yb8SNaWwgbyBuYXBha2FoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHJhenBvbG/FvmxqaXZlIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSBhdHJpYnV0IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgemEgcmF6dnLFocSNYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHJlenVsdGF0dSBpc2thbmphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSBhdHJpYnV0IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgemEgcmF6dnLFocSNYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHJlenVsdGF0dSBpc2thbmphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgemEgc3RyYW5rZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIGF0cmlidXQgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSByYXp2csWhxI1hbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiByZXp1bHRhdCBpc2thbmphIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdGUgb3BlcmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuIE5hdnpnb3I6IG5hanN0YXJlasWhaSBuYSB2cmh1LiBOYXZ6ZG9sOiBuYWpub3ZlasWhaSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLiBOYXZ6Z29yOiBuYWpzdGFyZWrFoWkgbmEgdnJodS4gTmF2emRvbDogbmFqbm92ZWrFoWkgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RvbG/EjWEgcHJpdnpldGUgcHJpa2F6YW5lIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEb2xvxI1hIHByaXZ6ZXRvIGdsb2Jpbm8gb2Rub3Nvdiwga2kgc2UgcHJpa2HFvmVqby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0byBwcmlrYXphbiBhdHJpYnV0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSB6YXNsb24gaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0byBwcmlrYXphbiBhdHJpYnV0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSB6YXNsb24gaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplLiBQcmltZXI6ICJLZXkiIG1vcmEgaW1ldGkgaW1lIGRpbmFtacSNbmVnYSBwb2xqYSwgdiB0ZW0gcHJpbWVydSAiWCIsICJDb250ZW50IiBtb3JhIGltZXRpIHZyZWRub3N0IGRpbmFtacSNbmVnYSBwb2xqYSwgb2R2aXNubyBvZCB2cnN0ZSBkaW5hbWnEjW5lZ2EgcG9samEsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGluIGFsaSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD10ZWRlbjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UHJlZDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHByaXZ6ZXRpIHBvZG9iamVrdCByYXpyZWRhIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHJhenBvbG/FvmxqaXZlIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEb2xvxI1hIHZpxaFpbm8ga29tcG9uZW50ZSB1cmVqZXZhbG5pa2EgYm9nYXRlZ2EgYmVzZWRpbGEgemEgdGEgemFzbG9uLiBWbmVzaXRlIMWhdGV2aWxvIChwaWtzbGkpIGFsaSBvZHN0b3RubyB2cmVkbm9zdCAocmVsYXRpdm5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSDFoXRldmlsbyB2cnN0aWMgemEgdXJlamV2YWxuaWsgZGVmaW5pY2lqIENJIHYgdXByYXZpdGVsanNrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHZyc3RuaSByZWQgc3RhbmogaW5jaWRlbnRhIG9kIHZpc29rZWdhIChucHIuIGNyaWNpdGFsbm8pIGRvIG5pemtlZ2EgKG5wci4gZnVua2Npb25hbG5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSB1c3RyZXpuYSBzdGFuamEgdXZhamFuamEsIHYga2F0ZXJpaCBsYWhrbyBwb3ZlemFuZSB2b3pvdm5pY2UgdnBsaXZham8gbmEgc3RhbmplIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEb2xvxI1hIG9tZWppdGV2IGlza2FuamEgemEgemFzbG9uIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBvbWVqaXRldiBpc2thbmphIHphIHphc2xvbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgcHJpa2F6YW5lIHN0b2xwY2UgS0kgdiBrb21wbGVrc25lbSBwb2dsZWR1IHByZWdsZWRuaWNlIHBvdmV6YXYgemEgdnNlIHJhenJlZGUgS0kuIMSMZSB2bm9zYSBuaSwgc28gcHJpa2F6YW5pIHByaXZ6ZXRpIHN0b2xwY2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBwcmlrYXphbmUgc3RvbHBjZSBLSSB2IGtvbXBsZWtzbmVtIHBvZ2xlZHUgcHJlZ2xlZG5pY2UgcG92ZXphdiwgb2R2aXNubyBvZCByYXpyZWRhIEtJLiBWc2FrIHZub3MgbW9yYSBiaXRpIG9wcmVtbGplbiB6IGltZW5vbSByYXpyZWRhIGluIGR2b2puaW1pIGR2b3BpxI1qaSAobnByLiBDb21wdXRlcjo6KS4gT2JzdGFqYSBuZWthaiBhdHJpYnV0b3YgQ0ktQXR0cmlidXRlcywga2kgc28gc2t1cG5pIHZzZW0gQ0kgKHByaW1lciB6YSByYXpyZWQgUmHEjXVuYWxuaWs6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFphIHByaWtheiBwb3NhbWV6bmloIENJLWF0cmlidXRvdiwga290IHNvIG9wcmVkZWxqZW5pIHYgZGVmaW5pY2lqaSBDSSwgamUgdHJlYmEgdXBvcmFiaXRpIG5hc2xlZG5qbyBzaGVtbyAocHJpbWVyIHphIHJhenJlZCBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDEjGUgemEgcmF6cmVkIENJIG5pIHZub3NhLCBzbyBwcmlrYXphbmkgcHJpdnpldGkgc3RvbHBjaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSwga2F0ZXJpIGVsZW1lbnRpIHNvIG5hIHZvbGpvIHphICJBY3Rpb24iIG5hIHRyZXRqaSByYXZuaSBzdHJ1a3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRG9sb8SNYSwga2F0ZXJpIGVsZW1lbnRpIHNvIG5hIHZvbGpvIG5hIHBydmkgcmF2bmkgc3RydWt0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEb2xvxI1hLCBrYXRlcmkgZWxlbWVudGkgc28gbmEgdm9sam8gbmEgZHJ1Z2kgcmF2bmkgc3RydWt0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEb2xvxI1hLCBrYXRlcmEgdnJzdGEgcG92ZXphdmUgKHBvaW1lbm92YW5hIHogdmlkaWthIHZvem92bmljZSkgbGFoa28gdnBsaXZhIG5hIHN0YW5qZSBwb3ZlemFuZWdhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RvbG/EjWEsIGthdGVyYSB2cnN0YSB2b3pvdm5pY2UgbGFoa28gdnBsaXZhIG5hIHN0YW5qZSBwb3ZlemFuZWdhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ1Bvc29kb2JpdGV2IGRlZmluaWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0JyaXNhbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdCYXJ2YSBzdGFuamEgbmFtZXN0aXR2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYXRuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIHphIGRvZ29ka2UgZGluYW1pxI1uaWggcG9saiwga2kgb3puYcSNaSBkZWZpbmljaWplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIGtvdCBuZXNpbmhyb25pemlyYW5lLCDEjWUgc2Ugc3ByZW1lbmlqbyBkaW5hbWnEjW5hIHBvbGphLCBraSBqaWggdnNlYnVqZWpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1uYSBwb2xqYSwgcHJpa2F6YW5hIG5hIHphc2xvbnUgZG9kYXRuZWdhIHBvbGphIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNbmEgcG9samEsIHByaWthemFuYSBuYSB6YXNsb251IHphIHByZWdsZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IHphIHN0cmFua2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNbmEgcG9samEsIHByaWthemFuYSBuYSB6YXNsb251IHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ09tb2dvxI1hIGZ1bmtjaWpvIG1ub8W+acSNbmVnYSBkZWxvdmFuamEgemEga29uZmlndXJhY2lqc2tlIGVsZW1lbnRlIHphIHNwcmVkbmppIGRlbCBhZ2VudGEsIGtpIGRlbHVqZSBuYSB2ZcSNIGtvdCBlbmVtIGtvbmZpZ3VyYWNpanNrZW0gZWxlbWVudHUgbmFlbmtyYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdPbW9nb8SNaSBmdW5rY2lqbyBtbm/FvmnEjW5lZ2EgZGVsb3ZhbmphIGtvbmZpZ3VyYWNpanNraWggZWxlbWVudG92IHNhbW8gemEgbmF2ZWRlbmUgc2t1cGluZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWwgZG9nb2Rrb3YgemEgbmFzdGF2aXRldiBzdGFuamEga29uZmlndXJhY2lqZSBuYSBwb3ZlemF2aSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdQb2xqYSBpbmRla3NhIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUsIGtpIHNlIHVwb3JhYmxqYWpvIHphIGlza2FuamUgcG8gY2Vsb3RuZW0gYmVzZWRpbHUuIFBvbGphIHNvIHByYXYgdGFrbyBzaHJhbmplbmEsIHZlbmRhciBuaXNvIG9idmV6bmEgemEgY2Vsb3RubyBmdW5rY2lvbmFsbm9zdC4gVmtsanXEjWV2YW5qZSBwcmlsb2cgbGFoa28gb25lbW9nb8SNaXRlIHRha28sIGRhIHZub3MgbmFzdGF2aXRlIG5hIDAgYWxpIGdhIGl6YnJpxaFldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdQb2xqYSwgc2hyYW5qZW5hIHYgaW5kZWtzdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSwga2kgc2UgcG9sZWcgaXNrYW5qYSBwbyBjZWxvdG5lbSBiZXNlZGlsdSB1cG9yYWJsamFqbyB0dWRpIHphIGRydWdlIHN0dmFyaS4gWmEgcG9wb2xubyBmdW5rY2lvbmFsbm9zdCBzbyB2c2EgcG9samEgb2J2ZXpuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIEdlbmVyaWNJbnRlcmZhY2UgemEgc2xvaiBpbnZva2F0b3JqYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBHZW5lcmljSW50ZXJmYWNlIHphIHNsb2ogaW52b2thdG9yamEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIEdlbmVyaWNJbnRlcmZhY2UgemEgc2xvaiBpbnZva2F0b3JqYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZrbGp1xI11amUgc3RhbmphIHV2YWphbmphIHYgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHVwb3JhYm5pxaFrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZrbGp1xI11amUgc3RhbmphIGluY2lkZW50b3YgdiBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdXBvcmFibmnFoWtlbSB2bWVzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTmFqdmXEjWplIMWhdGV2aWxvIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLCBraSBzZSBwcmlrYcW+ZWpvIHYgcmV6dWx0YXR1IHRlIG9wZXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6YSBwcmV2ZXJqYW5qZSBza3VwaW5lLCBvZGdvdm9ybmUgemEgcmF6cmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHphIHByZXZlcmphbmplIHNrdXBpbmUsIG9kZ292b3JuZSB6YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgemEgdXN0dmFyamFuamUgc3RhdGlzdGlrZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ0ltZSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTW9kdWwgxaF0ZXZpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxaB0ZXZpbG8gZWxlbWVudG92IGtvbmZpZ3VyYWNpamUsIGtpIHNlIHByaWthxb5lam8gbmEgdnNha2kgc3RyYW5pIHJlenVsdGF0YSBpc2thbmphIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfFoHRldmlsbyBlbGVtZW50b3Yga29uZmlndXJhY2lqZSwga2kgc2UgcHJpa2HFvmVqbyBuYSB2c2FraSBzdHJhbmkgcmV6dWx0YXRhIGlza2FuamEgdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdQcmVkbWV0aSB6YSBpc2thbmplLCBrb2xpa28gdm5vc292IGluIGthdGVyaSBhdHJpYnV0aSBuYWogc2UgcHJpa2HFvmVqby4gQXRyaWJ1dGkgQ29uZmlnSXRlbSBtb3Jham8gYml0aSBpenJlY25vIHNocmFuamVuaSBwcmVrIHN0b3JpdHZlIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEga2F0ZWdvcmlqZSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBmaWx0cmUgc3RvbHBjZXYgdiBwcmVnbGVkdSBtYWpobmloIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLiBVcG/FoXRldmFqdGU6IHogbmFzdGF2aXR2aWpvICJBa3Rpdm5vIiBuYSAwIGJvIGFnZW50b20gcHJlcHJlxI1lbm8gbGUgdXJlamFuamUgbmFzdGF2aXRldiB0ZSBza3VwaW5lIHYgbmppaG92aWggb3NlYm5paCBuYXN0YXZpdHZhaCwgdmVuZGFyIGJvIGFkbWluaXN0cmF0b3JqZW0gxaFlIHZlZG5vIG9tb2dvxI1lbm8gdXJlamFuamUgbmFzdGF2aXRldiB2IGltZW51IGRydWdlZ2EgdXBvcmFibmlrYS4gUyBmdW5rY2lqbyBcJ1ByZWZlcmVuY2VHcm91cFwnIGxhaGtvIG5hZHppcmF0ZSwgdiBrYXRlcmVtIG9ibW/EjWp1IG5haiBib2RvIHRlIG5hc3Rhdml0dmUgcHJpa2F6YW5lIHYgdXBvcmFibmnFoWtlbSB2bWVzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgYmFydm8gc3RhbmphIHV2YWphbmphIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGFuamEgdXZhamFuamEgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBwcmltZXIgc2t1cGluIGRvdm9samVuaiBzcGxvxaFuaWggYXRyaWJ1dG92IGthdGFsb2dhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBtb2R1bCBpbWVuYSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBtb2R1bCDFoXRldmlsYSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RyYW5pIChuYSBrYXRlcmloIHNvIHByaWthemFuaSBlbGVtZW50aSBrb25maWd1cmFjaWplKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIG1vZHVsIHZlcnppamUgbml6YSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBtb2R1bCBwcmVkbG9nZSBuaXphIHJhemxpxI1pYyB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3Byb8W+aWxlYyByYXpsacSNaWNlIHphIHJhenJlZGUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1NrdXBpbmEgZG92b2xqZW5qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyBkZWphbmphIHByaXRyZGl0dmUgZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSB6YSBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00gdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSBkcmV2ZXNuZWdhIHByaWthemEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIHBvdmXEjWF2byBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIERvZGFqIGVsZW1lbnQga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgcG9zdGF2a28gc2t1cGluc2tlIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIHVyZWphbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIHpnb2RvdmlubyBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgdGlza2FuamUgZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnWmFodGV2YW5pIHByaXZpbGVnaWppIHphIGJyaXNhbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0lza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdzYW1vZGVqbm8gbmFzdGF2aXRlIHN0YW5qZSBpbmNpZGVudGEgdiBDSSwga28gamUgdm96b3ZuaWNhIHBvdmV6YW5hIHMgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFzdGF2aSBzdGFuamUgdXZhamFuamEgbmEgemFzbG9udSB6YSBtbm/FvmnEjW5lIGVsZW1lbnRlIGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3Rhdmkgc3RhbmplIGluY2lkZW50YSBuYSB6YXNsb251IHphIG1ub8W+acSNbm8ga29uZmlndXJhY2lqbyBlbGVtZW50b3YgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUsIGtpIG9tb2dvxI1hIHBvdmV6YXZvIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgeiBkcnVnaW0gb2JqZWt0b20gdiBwb2dsZWR1IHBvdmXEjWF2ZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIGRvc3RvcCBkbyB6Z29kb3ZpbmUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHByZWdsZWR1IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIGRvc3RvcCBkbyB6Z29kb3ZpbmUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgcG92ZcSNYXZlIHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWIG1lbmlqdSBwcmlrYcW+ZSBwb3ZlemF2byB6YSBicmlzYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcG92ZcSNYW5lbSBwb2dsZWR1IHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIHByaWtheiBwb3ZlemF2IGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgb2JsaWtpIGRyZXZlc25lZ2EgcG9nbGVkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWIG1lbmlqdSBwcmlrYcW+ZSBwb3ZlemF2byB6YSBwb2R2b2ppdGV2IGtvbmZpZ3VyYWNpanNrZSBlbGVtZW50YSB2IHByZWdsZWR1IGtvbmZpZ3VyYWNpanNraWggZWxlbWVudG92IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSBwb2R2b2ppdGV2IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IHBvdmXEjWF2ZSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSB1cmVqYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBwb3ZlxI1hdmUgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnViBtZW5panUgcHJpa2HFvmUgcG92ZXphdm8gemEgdnJuaXRldiB2IHBvZ2xlZCBwb3ZlxI1hdmUga29uZmlndXJhY2lqc2tlIGVub3RlIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIHRpc2thbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IHBvdmXEjWF2ZSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgcG92ZcSNYXZvIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwcmVnbGVkdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgemdvZG92aW5vIGVsZW1lbnRvdiBrb25maWd1cmFjaWplICh2IG9icmF0bmVtIHZyc3RuZW0gcmVkdSkgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1ByaXZ6ZXRhIGthdGVnb3JpamEsIGtpIHNlIHByaWthxb5lLCDEjWUgbmkgaXpicmFuYSBub2JlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWthdG9yIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUsIG5wci4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFByaXZ6ZXRvIGplIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnU2Ftb2Rlam5vIHNwcm/Fvmkgc3Byb8W+aWxjYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1JhemxpxI1pY2EgU3RyaW5nIEl6cmF6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1JhemxpxI1pY2EgU3RyaW5nIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1Nwcm/FvmlsbmlrIHJhemxpxI1pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0FsaSBzZSBsYWhrbyBpenZlZGJpIENvbmZpZ0l0ZW1BQ0wgaXpvZ25lbW8gcyBwcmV2ZXJqYW5qZW0gb2R2aXNub3N0aSBwb2xqIHYgcHJlZHBvbW5pbG5pa3UuIFRvIGxhaGtvIGl6Ym9sasWhYSDEjWFzIG5hbGFnYW5qYSBvYnJhemNldiwgdmVuZGFyIG1vcmEgYml0aSBvbmVtb2dvxI1lbm8sIMSNZSBzZSB6YSB0aXBlIElUU01Db25maWdJdGVtLSBpbiBGb3JtLVJldHVyblR5cGUgdXBvcmFibGpham8gbW9kdWxpIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0thdGVyaSBzcGxvxaFuaSBwb2RhdGtpIHNvIHByaWthemFuaSB2IGdsYXZpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ3JhenJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0aXZuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlZHByb2R1a3Rpdm5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXZubyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwYWxjYSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBhbGNldiAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBhbGNhICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBhbGNhICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktcGFsxI1uaSBub3NpbGVjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwYWxjYSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwYWxjZXYgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXBhbMSNbmkgbm9zaWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcGFsY2EgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1wYWzEjW5vIHN0b2phbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBhbGNhICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwYWxjZXYgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHBhbGNhICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcGFsY2EgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcGFsY2EgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBhbGNhICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwYWxjYSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcGFsY2EgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHBhbGNldiAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBhbGNhICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcGFsY2EgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwYWxjYSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcGFsY2EgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcGFsY2EgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcGFsY2EgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwYWxjYSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHBhbGNldiAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBhbGNldiAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcGFsY2EgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IHBhbGNhICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHBhbGNhICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBhbGNldiAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBwYWxjYSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnUmHEjXVub3ZvZHN0dm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdEb2RlbGpldmFuamUgbmFzbG92b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1VwcmF2aXRlbGonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nbmkgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1Zyc3RhIG5hcHJhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdabW9nbGppdm9zdCBiYXRlcmlqZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1Zyc3RhIGJhdGVyaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnU3RhdmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdWbWVzbmlrIHZvZGlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ1JhenJlZCBwcm9jZXNvcmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdabW9nbGppdm9zdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnWm1vZ2xqaXZvc3QgbmEgZ3JhZmnEjW5vIGthcnRpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfFoHRldmlsa2Ega2FydGljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0JyYWxuaWsga2FydGljJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1Zyc3RhIGthcnRpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIHN0cmFuayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdPZGplbWFsc2thIHByb2dyYW1za2Egb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpamEgc3RyYW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ8SMYXNvdm5hIHN0b3BuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0hpdHJvc3QgdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIHphIHBvZHBpc292YW5qZSBrb2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbmkgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1BvZ29kYmEgbyBzdmV0b3Zhbmp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdQacWhaXRlIG5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdTdGlrIHogZGlzdHJpYnV0ZXJqZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSB6YWJvam5pa292JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnUG9nb2RiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVnJzdGEgcG9nb2RiZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BvZ29kYmVubyBvYmRvYmplIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BvZ29kYmVubyBvYmRvYmplIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0JyZXrFvmnEjW5pIHRlbGVmb24gKHRlbGVmb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnU3Ryb8Wha292bmEgZW5vdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfFoHRldmlsbyBsaWNlbmMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIHVzdGFub3ZpdHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdTdG9qYWxvIHBvIG1lcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmV6ZXJ2aXJhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1N0cmXFvm5payBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdHVtIHJhxI11bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIG5hcm/EjWlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0dW0gZ2FyYW5jaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIGl6ZGFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnTmFtaXpuaSByYcSNdW5hbG5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnUG90cmRpbGEgemEgcG9kcGlzb3ZhbmplIGRva3VtZW50b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ1BvdHJkaWxhIHphIGUtcG/FoXRvIChwb3RyZGlsYSBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1BvZ29kYmEgbyB6YXBvc2xpdHZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS29uxI1uaSBuYXNsb3YgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdLb25lYyBwb2Rwb3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0dW0gaXp0ZWthIHZlbGphdm5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdadW5hbmppIHRyZGkgZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1Bvxb5hcm5pIHppZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ1ZkZWxhbmEgcHJvZ3JhbXNrYSBvcHJlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTa2xhZGnFocSNZW5qZSBlbmVyZ2lqZSB6IHZ6dHJham5pa29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFrdG9yIG9ibGlrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnUG9nb2RiYSBvIGZyYW7FoWl6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0JyZXpwbGHEjW5hIHByb2dyYW1za2Egb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1NwbG/FoW5lIGluZm9ybWFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmnEjW5lIGthcnRpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpxI1uYSBrYXJ0aWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnU3Ryb2puYSBvcHJlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBzdHJvam5lIG9wcmVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdUZcW+YSBzdHJvam5lIG9wcmVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnU2x1xaFhbGtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnVXByYXZsamFuamUgaWRlbnRpdGV0IGluIGRvc3RvcGEgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFybmEgxaF0ZXZpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfFoHRldmlsa2EgcmHEjXVuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RpcGtvdm5pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKHphc2xvbiBzIHRla2/EjWltaSBrcmlzdGFsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChzdmV0bGXEjWEgZGlvZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1N0YWNpb25hcm5pIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUHJlbm9zbmkgcmHEjXVuYWxuaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdaZW1samVwaXNuYSDFoWlyaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnUGxhc3QgMTogZml6acSNbmEgcGxhc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnUGxhc3QgMjogcGxhc3QgcG9kYXRrb3ZuaWggcG92ZXphdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnUGxhc3QgMzogb21yZcW+bmEgcGxhc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnMy4gcGxhc3Q6IG9tcmXFvm5hIHBsYXN0IChuYWRvbXJlxb5qZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnU2xvaiA0OiBUcmFuc3BvcnRuaSBzbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdTbG9qIDU6IFNlam5pIHNsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnU2xvaiA2OiBQcmVkc3Rhdml0dmVuaSBzbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnU2xvaiA3OiBhcGxpa2FjaWpza2kgc2xvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdQb2dvZGJhIG8gbmFqZW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW7EjW5hIHBvZ29kYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuxI1uaSBrbGp1xI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVnJzdGEgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnT2Jkb2JqZSBsaWNlbmNlIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnT2Jkb2JqZSBsaWNlbmNlIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXRlcmlqZSBpeiBsaXRpai3FvmVsZXpvdmVnYSBmb3NmYXRhIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aWotaW9uc2thIChMaS1pb24pIGJhdGVyaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnUG9nb2RiYSBvIHBvc29qaWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdOYWhhamEgc2Ugdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdaZW1samVwaXNuYSBkb2zFvmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2l6dmFqYWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTmFqdmXEjWphIHptb2dsaml2b3N0IG9icmVtZW5pdHZlIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdTcG9taW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdWcnN0YSBwb21uaWxuaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIHN0b2phbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsbmEgxaF0ZXZpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsbmkvdmdyYWplbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ09waXMgbW9kZWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ0xvxI1saml2b3N0IG1vbml0b3JqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdWZWxpa29zdCBtb25pdG9yamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNacWha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ09tcmXFvmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjaWplIG8gb21yZcW+anUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjaWplIG8gb21yZcW+anUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ09tcmXFvm5hIHBsYXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWxqLWthZG1pamV2YSAoTmlDZCkgYmF0ZXJpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtlbGotbWV0YWxoaWRyaWRuYSAoTmlNSCkgYmF0ZXJpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnU3BvcmF6dW0gbyBuZXJhemtyaXZhbmp1IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQmVsZcW+bmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ8WgdGV2aWxvIHByb2Nlc29yamV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ8WgdGV2aWxvIG1vZHVsb3YgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ8WgdGV2aWxvIGdyYWZpxI1uaWgga2FydGljJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKG9yZ2Fuc2thIHN2ZXRsZcSNYSBkaW9kYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnU3Ryb8Wha2kgcG9zbG92YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfFoHRldmlsa2EgbmFyb8SNaWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnRHJ1Z28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0l6aG9kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIHBhcnRuZXJzdHZ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbnNrYSDFoXRldmlsa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1Zyc3RhIHRlbGVmb25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6acSNbmEgamVkcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdaYWdvdGF2bGphbmplIG5hcGFqYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0t1cGxqZW5vIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0dsb2JpbmEgcmVnYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnRW5vdGUgc3RvamFsYSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1NvYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0aWNhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQcm9kYWpuYSBwb2dvZGJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsaXRza2kgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdaYXBydGEgc3ZpbsSNZW5vLWtpc2xpbnNrYSBiYXRlcmlqYSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1Nlcmlqc2thIMWhdGV2aWxrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQcm9ncmFtc2thIG9wcmVtYSB6YSBzdHJlxb5uaWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU3BvcmF6dW0gbyBzdG9yaXR2YWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTdG9yaXR2ZW5hIG96bmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdWcnN0YSB2dGnEjW5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQcm9ncmFtc2thIG9wcmVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1p2b8SNbmlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZG5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdaYcSNZXRuaSBuYXNsb3YgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1NocmFuamV2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1JhemRlbGVrIHphIHNocmFuamV2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1BvZHJ1xb5uaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdQb3Z6ZXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RhbmVrIG9kamVtYWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnTml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdTa3VwYWogUkFNIGdyYWZpxI1uZSBrYXJ0aWNlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdTa3VwbmkgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgeiB6YXNsb25vbSBuYSBkb3Rpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1N0b2xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdWb3psacWhxI1lIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ05hZ2xhdm5hIHNsdcWhYWxrYSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9uIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1NwbGV0bmEga2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/sr_Cyrl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBvcGVyYXRpb24gZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC00L7Qu9Cw0LfQvdC1INC/0L7QtNCw0YLQutC1INC30LDRhdGC0LXQstCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC40LfQu9Cw0LfQvdC1INC/0L7QtNCw0YLQutC1INC+0LTQs9C+0LLQvtGA0LAnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ9Ce0LLQtNC1INC80L7QttC10YLQtSDQsNC60YLQuNCy0LjRgNCw0YLQuCBSZWFkeTJBZG9wdCDQv9GA0L7RhtC10YHQtSDQv9GA0LjQvNC10YDQsCDQvdCw0ZjQsdC+0ZnQtSDQv9GA0LDQutGB0LUg0LrQvtGY0Lgg0YHRgyDRgdC/0YDQtdC80L3QuCDQt9CwINGD0L/QvtGC0YDQtdCx0YMuINCc0L7Qu9C40LzQviDQvtCx0YDQsNGC0LjRgtC1INC/0LDQttGa0YMg0LTQsCDRmNC1INC80L7QttC00LAg0L3QtdC+0L/RhdC+0LTQvdCwINC00L7QtNCw0YLQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRmNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9C60LvQsNGB0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CU0LAg0LvQuCDQt9Cw0LjRgdGC0LAg0LbQtdC70LjRgtC1INC00LAg0LjQt9Cx0YDQuNGI0LXRgtC1INC+0LLRgyDQv9GA0L7QvNC10L3Rgz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfQotC40L8g0YHRgtCw0ZrQsCDQuNC90YbQuNC00LXQvdGC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfQodCw0LTRgNC20LDRmCDQuNGB0YLQvtGA0LjRmNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ9Cf0L7QutGA0LXQvdC4INC/0YDQtdGC0YDQsNCz0YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfQotC40L8g0YHRgtCw0ZrQsCDQuNC90YbQuNC00LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0JfQsNC00ZrQuCDQv9GD0YIg0L/RgNC+0LzQtdGa0LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Cf0YDQvtC80LXQvdC40L4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfQlNCwINC70Lgg0LbQtdC70LjRgtC1INC00LAg0L3QsNGB0YLQsNCy0LjRgtC1Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfQndC10L7Qv9GF0L7QtNCw0L0gRXhhbXBsZVByb2Nlc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiDQmNCUINCh0YLQsNCy0LrQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQn9GA0L7QvNC10L3QsCAiJXMiINC90LjRmNC1INC90LDRktC10L3QsCDRgyDQsdCw0LfQuCDQv9C+0LTQsNGC0LDQutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ9Cd0LjRmNC1INCx0LjQu9C+INC80L7Qs9GD0ZvQtSDQvtCx0YDQuNGB0LDRgtC4IENoYW5nZUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfQndC1INC80L7QttC1INGB0LUg0L/RgNC40LrQsNC30LDRgtC4INC40YHRgtC+0YDQuNGY0LDRgiwg0ZjQtdGAINC90LjRmNC1INC00LDRgiDQmNCUINCh0YLQsNCy0LrQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC1INC80L7QttC1INGB0LUg0L/RgNC40LrQsNC30LDRgtC4INC40YHRgtC+0YDQuNGY0LDRgiwg0L3QuNGY0LUg0LTQsNGCIFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfQndC+0LLQsCDQsNC60YbQuNGY0LAgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfQntCx0YDQuNGB0LDQvSDRg9GB0LvQvtCyIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfQn9C+0LLQtdC30LDQvdC+INGB0LAgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0J7QsdGA0LjRgdCw0L3QsCDQstC10LfQsCDRgdCwICVzIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0LjRgdGC0L7RgNC40ZjQsNGCLCDQvdC40ZjQtSDQtNCw0YIgVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0J/RgNC+0LzQtdC90LAgIiVzIiDQvdC40ZjQtSDQvdCw0ZLQtdC90LAg0YMg0LHQsNC30Lgg0L/QvtC00LDRgtCw0LrQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cg0LXRhNC10YDQtdC90YbQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiBDaGFuZ2VJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9Cd0LXQvNCwINGA0LXQt9GD0LvRgtCw0YLQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQo9C/0L7Qt9C+0YDQtdGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXQvNCwINC00L7Qt9Cy0L7Qu9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDRgdGC0LDRmtCwINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfQuNC30LzQtdGS0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LjRh9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J7QvNC+0LPRg9Gb0LDQstCwINC90LDQv9GA0LXQtNC90LUg0YPRgdC70L7QstC1INC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4g0KHQsCDQvtCy0L7QvCDQvtC/0YbQuNGY0L7QvCDQvNC+0ZvQtdGC0LUg0L/RgNC10YLRgNCw0LbQuNCy0LDRgtC4INC90L/RgC4g0L3QsNGB0LvQvtCyINGC0LjQutC10YLQsCDRgdCwINGD0YHQu9C+0LLQuNC80LAg0LrQsNC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQntC80L7Qs9GD0ZvQsNCy0LAg0L3QsNC/0YDQtdC00L3QtSDRg9GB0LvQvtCy0LUg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLiDQodCwINC+0LLQvtC8INC+0L/RhtC40ZjQvtC8INC80L7Rm9C10YLQtSDQv9GA0LXRgtGA0LDQttC40LLQsNGC0Lgg0L3Qv9GALiDQvdCw0YHQu9C+0LIg0YLQuNC60LXRgtCwINGB0LAg0YPRgdC70L7QstC40LzQsCDQutCw0L4gIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9CU0L7QtNC10ZnQtdC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0LTQvtC00LXRmdC10L3QtSDRhNC40YDQvNC4INC60LvQuNGY0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQtNC+0LTQtdGZ0LXQvdC1INC60LvQuNGY0LXQvdGC0YMg0LrQvtGA0LjRgdC90LjQutGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCINC/0L7QtNC10YjQsNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQn9GA0L7QstC10YDQsCDRmNC10LTQuNC90YHRgtCy0LXQvdC+0LMg0LjQvNC10L3QsCDRgdCw0LzQviDRgyDQvtC60LLQuNGA0YMg0LjRgdGC0LUg0LrQu9Cw0YHQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4IChcJ9C60LvQsNGB0LBcJykg0LjQu9C4INCz0LvQvtCx0LDQu9C90L4gKFwn0LPQu9C+0LHQsNC70L3QvlwnKSwg0YjRgtC+INC30L3QsNGH0Lgg0LTQsCDRmNC1INGB0LLQsNC60LAg0L/QvtGB0YLQvtGY0LXRm9CwINCa0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwINGD0LfQtdGC0LAg0YMg0L7QsdC30LjRgCDRgyDQv9GA0L7QstC10YDQuCDQtNGD0L/Qu9C40LrQsNGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9CU0L7QtNCw0LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KPRgNC10ZLQuNCy0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LTQvtCz0LDRktCw0ZjQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RmNC4INC+0LzQvtCz0YPRm9Cw0LLQsCDQsdC10LvQtdC20LXRmtC1INGDINC40YHRgtC+0YDQuNGY0LDRgiDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CY0YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn0KjRgtCw0LzQv9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn0JTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0L/QviDRgdGC0YDQsNC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDQv9C+0LTQsNGC0LDQutCwINGD0L/RgNCw0LLRmdCw0ZrQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40ZjQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40Lwg0YHRgtCw0LLQutCw0LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAg0L/RgNC10YLRgNCw0LbRg9GY0LUg0L/QvtC30LDQtNC40L3RgdC60Lgg0YDRg9GC0LXRgCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQmtGA0LXQuNGA0LDRmtC1INC4INGD0L/RgNCw0LLRmdCw0ZrQtSDQtNC10YTQuNC90LjRhtC40ZjQsCDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/QvtC00LDRhtC4INC30LAg0LrQvtGA0LjRiNGb0LXRmtC1INC90LAg0LDRgtGA0LjQsdGD0YLQuNC80LAg0LfQsCDQv9GA0LjQutCw0Lcg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAuINCf0YDQuNC80LXRgDogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9C+0LTQsNGG0Lgg0LfQsCDQutC+0YDQuNGI0ZvQtdGa0LUg0L3QsCDQsNGC0YDQuNCx0YPRgtC40LzQsCDQt9CwINC/0YDQuNC60LDQtyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsC4g0J/RgNC40LzQtdGAOiAiVGlja2V0Q3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO1RpY2tldENyZWF0ZVRpbWVTdGFydERheT00O1RpY2tldENyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdG9wTW9udGg9MTE7VGlja2V0Q3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQsNC60YbQuNGY0LUg0LPQtNC1INGY0LUg0LTRg9Cz0LzQtSDQv9C+0YHRgtCw0LLQutC4INC00L7RgdGC0YPQv9C90L4g0YMg0L/QvtCy0LXQt9Cw0L3QvtC8INCz0YDQsNGE0LjRh9C60L7QvCDQtdC70LXQvNC10L3RgtGDINC+0LHRmNC10LrRgtCwIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCc0L7Qu9C40LzQviDQtNCwINC40LzQsNGC0LUg0L3QsCDRg9C80YMg0LTQsCDQvtCy0LUg0JDQutGG0LjRmNC1INC80L7RgNCw0ZjRgyDQtNCwINCx0YPQtNGDINGA0LXQs9C40YHRgtGA0L7QstCw0L3QtSDRgyDRgdC70LXQtNC10ZvQuNC8IEpTINC4IENTUyDQtNCw0YLQvtGC0LXQutCw0LzQsDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg0LggQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINCx0YDQuNGB0LDRmtC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutGA0L7QtyDQs9C10L3QtdGA0LjRh9C60Lgg0LjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvdC10L7Qv9GF0L7QtNC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDQtNC+0LHQuNGY0LDRmtC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutC+0YDQuNGI0ZvQtdGa0LXQvCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L3QtdC+0L/RhdC+0LTQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0L/RgNC10YLRgNCw0LPRgyBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGA0LjRiNGb0LXRmtC10Lwg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC90LXQvtC/0YXQvtC00L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINC00L7QsdC40ZjQsNGa0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RgNC40YjRm9C10ZrQtdC8INCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80L7QtNGD0Lsg0L/RgNC10LPQu9C10LTQsCDQt9CwINC80LDQu9C4INC/0YDQuNC60LDQtyDQu9C40YHRgtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YDQtdCz0YPQu9Cw0YDQvdC1INC40LfRgNCw0LfQtSDQt9CwINGB0LLQsNC60YMg0LrQu9Cw0YHRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgNCw0LTQuCDQv9GA0L7QstC10YDQtSDQvdCw0LfQuNCy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0Lgg0L/RgNC40LrQsNC30LAg0L/RgNC40L/QsNC00LDRmNGD0ZvQuNGFINC/0L7RgNGD0LrQsCDQviDQs9GA0LXRiNC60LDQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDRgtC40LrQtdGC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUg0YLQuNC60LXRgtCwINGDINGA0LXQt9GD0LvRgtCw0YLRgyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsCDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINGC0LjQutC10YLQsCDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDRgtC40LrQtdGC0LAg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINC40L3RgtC10YDRhNC10ZjRgdCwINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINGC0LjQutC10YLQsCDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDRgtC40LrQtdGC0LAg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC+0LLQvtGYINC+0L/QtdGA0LDRhtC40ZjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCDRgtC40LrQtdGC0LAgKNC/0L7RgdC70LUg0YHQvtGA0YLQuNGA0LDRmtCwINC/0L4g0L/RgNC40L7RgNC40YLQtdGC0YMpINGDINC/0YDQtdCz0LvQtdC00YMg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9GA0LXRgNCw0YLQtdGA0LAuINCT0L7RgNC1OiDQndCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0J3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQg0YLQuNC60LXRgtCwINGDINC/0YDQtdCz0LvQtdC00YMg0L/RgNC10YLRgNCw0LPQtSDRgNC10LfRg9C70YLQsNGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4g0JPQvtGA0LU6INCd0LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQndCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9GA0LjQutCw0Lcg0L/RgNC10YLRgNCw0LPQtSDQsNGC0YDQuNCx0YPRgtCwINGC0LjQutC10YLQsCDQt9CwINC/0YDQuNC60LDQtyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0YDQuNC60LDQtyDQv9GA0LXRgtGA0LDQs9C1INCw0YLRgNC40LHRg9GC0LAg0YLQuNC60LXRgtCwINC30LAg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsC4g0J/RgNC40LzQtdGAOiAiS2V5IiDQvNC+0YDQsCDQuNC80LDRgtC4INC90LDQt9C40LIg0LTQuNC90LDQvNC40YfQutC+0LMg0L/QvtGZ0LAsINGDINC+0LLQvtC8INGB0LvRg9GH0LDRmNGDIFwnWFwnLCAiQ29udGVudCIg0LzQvtGA0LAg0LjQvNCw0YLQuCDQstGA0LXQtNC90L7RgdGCINC00LjQvdCw0LzQuNGH0LrQvtCzINC/0L7RmdCwINGDINC30LDQstC40YHQvdC+0YHRgtC4INC+0LQg0YLQuNC/0LAg0LTQuNC90LDQvNC40YfQutC+0LMg0L/QvtGZ0LAsINCi0LXQutGB0YI6IFwnYSB0ZXh0XCcsINCf0LDQtNCw0ZjRg9Gb0Lg6IFwnMVwnLCDQlNCw0YLRg9C8L9CS0YDQtdC80LU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyDQuC/QuNC70LggXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9C+0LTQvtCx0ZjQtdC60LDRgiDQutC70LDRgdC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQstC40YHQuNC90YMg0LfQsCDQutC+0LzQv9C+0L3QtdC90YLRgyBSaWNoIFRleHQgRWRpdG9yINC30LAg0L7QstCw0Zgg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsC4g0KPQvdC10YHQuCDQsdGA0L7RmCAo0L/QuNC60YHQtdC70LgpINC40LvQuCDQv9GA0L7RhtC10L3RgtGD0LDQu9C90YMg0LLRgNC10LTQvdC+0YHRgiAo0YDQtdC70LDRgtC40LLQvdGDKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQsdGA0L7RmCDRgNC10LTQvtCy0LAg0LfQsCDQtdC00LjRgtC+0YAg0LTQtdGE0LjQvdC40YbQuNGY0LUgQ0kg0YMg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC40LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YDQtdC00L7RgdC70LXQtCDQuNC90YbQuNC00LXQvdGC0L3QuNGFINGB0YLQsNGa0LAg0L7QtCDQstC40YHQvtC60L7QsyAo0L3Qv9GAINC60YDQuNGC0LjRh9C90L4pINC00L4g0L3QuNGB0LrQvtCzICjQvdC/0YAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGA0LXQu9C10LLQsNC90YLQvdCwINGB0YLQsNGa0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAg0LPQtNC1INC/0L7QstC10LfQsNC90Lgg0YLQuNC60LXRgtC4INC80L7Qs9GDINC00LAg0YPRgtC40YfRgyDQvdCwINGB0YLQsNGC0YPRgSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQs9GA0LDQvdC40YbRgyDQv9GA0LXRgtGA0LDQs9C1INC30LAg0LXQutGA0LDQvSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNCw0L3QuNGG0YMg0L/RgNC10YLRgNCw0LPQtSDQt9CwINC10LrRgNCw0L0gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INGDINGC0LDQsdC10LvQuCDQstC10LfQsCDRgyDQt9Cw0LLQuNGB0L3QvtGB0YLQuCDQvtC0INC60LvQsNGB0LUuINCj0LrQvtC70LjQutC+INC90LUg0L/QvtGB0YLQvtGY0Lgg0YPQvdC+0YEg0LfQsCDQv9C+0ZjQtdC00LjQvdCw0YfQvdGDINC60LvQsNGB0YMsINCx0LjRm9C1INC/0YDQuNC60LDQt9Cw0L3QtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QtSDQutC+0LvQvtC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDRgyDRgtCw0LHQtdC70Lgg0LLQtdC30LAg0YMg0LfQsNCy0LjRgdC90L7RgdGC0Lgg0L7QtCDQutC70LDRgdC1LiDQodCy0LDQutC4INGD0L3QvtGBINC80L7RgNCwINGB0LDQtNGA0LbQsNGC0Lgg0L/RgNC10YTQuNC60YEg0YHQsCDQvdCw0LfQuNCy0L7QvCDQutC70LDRgdC1INC4INC00LLQvtGC0LDRh9C60L7QvCAo0L3Qv9GALiBDb21wdXRlcjo6KS4g0J/QvtGB0YLQvtGY0Lgg0L/QsNGAINCw0YLRgNC40LHRg9GC0LAg0LrQvtGY0Lgg0YHRgyDQt9Cw0ZjQtdC00L3QuNGH0LrQuCDQt9CwINGB0LLQtSDQutC70LDRgdC1ICjQvdC/0YAuINC30LAg0LrQu9Cw0YHRgyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4g0JfQsCDQv9GA0LjQutCw0Lcg0L/QvtGY0LXQtNC40L3QsNGH0L3QuNGFINCw0YLRgNC40LHRg9GC0LAg0LjQtyDQtNC10YTQuNC90LjRhtC40ZjQtSwg0LzQvtGA0LDRgtC1INC60L7RgNC40YHRgtC40YLQuCDRgdC70LXQtNC10ZvRgyDRiNC10LzRgyAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHRgyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQo9C60L7Qu9C40LrQviDQvdC1INC/0L7RgdGC0L7RmNC4INGD0L3QvtGBINC30LAg0L/QvtGY0LXQtNC40L3QsNGH0L3RgyDQutC70LDRgdGDLCDQsdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90LUg0LrQvtC70L7QvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LrQvtGY0LUg0YHRgyDRgdGC0LDQstC60LUg0YHQu9C+0LHQvtC00L3QtSDQt9CwIFwnQWN0aW9uXCcg0YMg0YLRgNC10ZvQtdC8INC90LjQstC+0YMgQUNMINGB0YLRgNGD0LrRgtGD0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7RmNC1INGB0YMg0YHRgtCw0LLQutC1INGB0LvQvtCx0L7QtNC90LUg0YMg0L/RgNCy0L7QvCDQvdC40LLQvtGDIEFDTCDRgdGC0YDRg9C60YLRg9GA0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LrQvtGY0LUg0YHRgyDRgdGC0LDQstC60LUg0YHQu9C+0LHQvtC00L3QtSDRgyDQtNGA0YPQs9C+0Lwg0L3QuNCy0L7RgyBBQ0wg0YHRgtGA0YPQutGC0YPRgNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LrQvtGY0Lgg0YLQuNC/INCy0LXQt9C1ICjQs9C70LXQtNCw0L3QviDQuNC3INC/0LXRgNGB0L/QtdC60YLQuNCy0LUg0YLQuNC60LXRgtCwKSDQvNC+0LbQtSDQtNCwINGD0YLQuNGH0LUg0L3QsCDQv9C+0LLQtdC30LDQvdGDIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LrQvtGY0Lgg0YLQuNC/INGC0LjQutC10YLQsCDQvNC+0LbQtSDQtNCwINGD0YLQuNGH0LUg0L3QsCDRgdGC0LDRgtGD0YEg0L/QvtCy0LXQt9Cw0L3QtSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9CR0YDQuNGB0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn0JTRg9C/0LvQuNC60LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtdC60YDQsNC90YMg0LTQvtC00LDRgtC90LjRhSBJVFNNINC/0L7RmdCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQv9GA0LXQs9C70LXQtNGDIEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDQv9GA0LXRgtGA0LDQs9C1INC/0YDQvtC80LXQvdCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0J7QvNC+0LPRg9Gb0LDQstCwINC80LDRgdC+0LLQvdGDINCw0LrRhtC40ZjRgyDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwINGDINC/0YDQuNGB0YLRg9C/0L3QvtC8INGB0LjRgdGC0LXQvNGDINC+0L/QtdGA0LDRgtC10YDQsCDQvdCwINCy0LjRiNC1INC+0LQg0ZjQtdC00L3QtSDRgdGC0LDQstC60LUg0LjRgdGC0L7QstGA0LXQvNC10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAg0YHQstC+0ZjRgdGC0LLQviDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0L3QsCDQutC+0L3RhNC40LPQuNGA0LDRhtC40L7QvdC40Lwg0YHRgtCw0LLQutCw0LzQsCDRgdCw0LzQviDQt9CwINC40LfQu9C40YHRgtCw0L3QtSDQs9GA0YPQv9C1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC00L7Qs9Cw0ZLQsNGY0LAg0LfQsCDQv9C+0LTQtdGI0LDQstCw0ZrQtSDRgdGC0LDRgtGD0YHQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC/0YDQuNC70LjQutC+0Lwg0L/QvtGB0YLQsNCy0ZnQsNGa0LAg0LLQtdC30LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC80L7QtNGD0LvQsCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQt9CwINGB0LvQvtGYINC/0L7Qt9C40LLQsNC+0YbQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAg0LzQvtC00YPQu9CwINCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwINC30LAg0YHQu9C+0Zgg0L/QvtC30LjQstCw0L7RhtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAg0LzQvtC00YPQu9CwINCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwINC30LAg0YHQu9C+0Zgg0L/QvtC30LjQstCw0L7RhtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9Cf0YDQtdCz0LvQtdC0IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ9Ci0LjQvyDRgdGC0LDRmtCwINC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC4INCx0YDQvtGYINGC0LjQutC10YLQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0L7QstC1INC+0L/QtdGA0LDRhtC40ZjQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0YMg0LPRgNGD0L/QtSDQvtC00LPQvtCy0L7RgNC90LUg0LfQsCDQutC70LDRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDQv9GA0L7QstC10YDRgyDQs9GA0YPQv9C1INC+0LTQs9C+0LLQvtGA0L3QtSDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90YMg0YHRgtCw0LLQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQs9C10L3QtdGA0LjRgdCw0ZrQtSDRgdGC0LDRgtC40YHRgtC40LrQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0Zgg0YLQuNC60LXRgtCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INC90LAg0YHQstCw0LrQvtGYINGB0YLRgNCw0L3QuCDRgNC10LfRg9C70YLQsNGC0LAg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINGC0LjQutC10YLQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDQvdCwINGB0LLQsNC60L7RmCDRgdGC0YDQsNC90Lgg0YDQtdC30YPQu9GC0LDRgtCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9Cf0YDQtdCz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRhNC40LvRgtC10YAg0LrQvtC70L7QvdCwINGDINGD0LzQsNGa0LXQvdC+0Lwg0L/RgNC10LPQu9C10LTRgyDRgtC40LrQtdGC0LAuINCd0LDQv9C+0LzQtdC90LA6INC/0L7QtNC10YjQsNCy0LDRmtC1IFwnQWN0aXZlXCcg0L3QsCAwINGb0LUg0YHQsNC80L4g0L7QvdC10LzQvtCz0YPRm9C40YLQuCDQvtC/0LXRgNCw0YLQtdGA0LjQvNCwINC00LAg0LzQtdGa0LDRmNGDINGB0LLQvtGY0LAg0LvQuNGH0L3QsCDQv9C+0LTQtdGI0LDQstCw0ZrQsCDQuNC3INC+0LLQtSDQs9GA0YPQv9C1LCDQsNC70Lgg0ZvQtSDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC4INC4INC00LDRmdC1INC80L7Rm9C4INC00LAg0LjRhSDQvNC10ZrQsNGY0YMg0YMg0ZrQuNGF0L7QstC+INC40LzQtS4g0J/QvtC00LXRgdC40YLQtSBcJ1ByZWZlcmVuY2VHcm91cFwnINC00LAg0LHQuNGB0YLQtSDQvtC00YDQtdC00LjQu9C4INGDINC60L7QvCDQtNC10LvRgyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtCy0LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0YLRgNC10LHQsCDQtNCwINCx0YPQtNGDINC/0YDQuNC60LDQt9Cw0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQsdC+0ZjQtSDRgdGC0LDRgtGD0YHQsCDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINCw0YLRgNC40LHRg9GC0LUg0YPQt9C+0YDQutCwINCz0YDRg9C/0LUg0LfQsCDQtNC+0LfQstC+0LvQtSDQvtC/0YjRgtC10LMg0LrQsNGC0LDQu9C+0LPQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0LDRgtGD0YHQtSDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0YDQsNC90LjRhtC1ICjQvdCwINC60L7RmNC40LzQsCDRgdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC/0YDQuNC60LDQt9Cw0L3QtSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9CwINC/0YDQuNGB0YLRg9C/0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQtNC10YLQsNC70L3QvtCzINC/0YDQuNC60LDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQtNC+0LTQsNCy0LDRmtCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQuNC30LzQtdC90LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQuNGB0YLQvtGA0LjRmNCw0YLQsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDRiNGC0LDQvNC/0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfQn9C+0YLRgNC10LHQvdCwINC/0YDQsNCy0LAg0LfQsCDQsdGA0LjRgdCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfQn9GA0LXRgtGA0LDQs9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfQn9C+0YHRgtCw0LLRmdCwINGB0YLQsNGa0LUg0LjQvdGG0LjQtNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC60LDQtNCwINGY0LUg0YLQuNC60LXRgiDQv9C+0LLQtdC30LDQvSDRgdCwINGB0YLQsNCy0LrQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YHRgtCw0YLRg9GBINC/0YDQuNC80LXQvdC1INC90LAg0LXQutGA0LDQvdGDINC80LDRgdC+0LLQvdC1INCw0LrRhtC40ZjQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YHRgtCw0YLRg9GBINC40L3RhtC40LTQtdC90YLQsCDQvdCwINC10LrRgNCw0L3RgyDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LrQvtGY0LAg0L7QvNC+0LPRg9Gb0LDQstCwINC/0L7QstC10LfQuNCy0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGB0LAg0LTRgNGD0LPQuNC8INC+0LHRmNC10LrRgtC+0Lwg0L3QsCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRmNC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0L/RgNC40YHRgtGD0L8g0LjRgdGC0L7RgNC40ZjQsNGC0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDQv9GA0LXQs9C70LXQtNGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC/0YDQuNGB0YLRg9C/INC40YHRgtC+0YDQuNGY0LDRgtGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINCx0YDQuNGB0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0ZrQtdC90L7QvCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRg9C80L3QvtC20LDQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINC/0YDQtdCz0LvQtdC00YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0YPQvNC90L7QttCw0LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDRmtC10L3QvtC8INC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC40LfQvNC10L3RgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0L/QvtCy0YDQsNGC0LDQuiDQvdCwINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRiNGC0LDQvNC/0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDRmtC10L3QvtC8INC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDQv9GA0LXQs9C70LXQtNGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC40YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSAo0L7QsdGA0L3Rg9GCINGA0LXQtNC+0YHQu9C10LQpINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90YMg0YHRgtCw0LLQutGDLCDQvdC/0YAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDRmNC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn0LPQu9C+0LHQsNC70L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9C/0L7RgdGCLdC/0YDQvtC00YPQutGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LUt0L/RgNC+0LTRg9C60YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9C/0YDQvtC00YPQutGG0LjRmNCwJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn0J3QsNC70L7Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80LjQvdC40YHRgtGA0LDRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfQmNC90YLQtdGA0YTQtdGY0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0JrQu9C40ZjQtdC90YLRgdC60Lgg0YHQtdGA0YLQuNGE0LjQutCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfQotC40L8g0YHQsNC00YDQttCw0ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQvdC4ICoqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQn9GA0LXQs9C70LXQtCDRgNC10LfRg9C70YLQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C8INC+INC90LjQstC+0YMg0YPRgdC70YPQs9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNC00LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sr_Latn_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBvcGVyYXRpb24gZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnTWFwaXJhbmplIHphIGRvbGF6bmUgcG9kYXRrZSB6YWh0ZXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTWFwaXJhbmplIHphIGl6bGF6bmUgcG9kYXRrZSBvZGdvdm9yYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnT3ZkZSBtb8W+ZXRlIGFrdGl2aXJhdGkgUmVhZHkyQWRvcHQgcHJvY2VzZSBwcmltZXJhIG5hamJvbGplIHByYWtzZSBrb2ppIHN1IHNwcmVtbmkgemEgdXBvdHJlYnUuIE1vbGltbyBvYnJhdGl0ZSBwYcW+bmp1IGRhIGplIG1vxb5kYSBuZW9waG9kbmEgZG9kYXRuYSBrb25maWd1cmFjaWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ2tsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVGlwIHN0YW5qYSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRGEgbGkgemFpc3RhIMW+ZWxpdGUgZGEgaXpicmnFoWV0ZSBvdnUgcHJvbWVudT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnU2FkcsW+YWogaXN0b3JpamF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Bva3JlbmkgcHJldHJhZ3UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnT2dyYW5pxI1lbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnVGlwIHN0YW5qYSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnWmFkbmppIHB1dCBwcm9tZW5qZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Byb21lbmlvJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnRGEgbGkgxb5lbGl0ZSBkYSBuYXN0YXZpdGU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ05lb3Bob2RhbiBFeGFtcGxlUHJvY2Vzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgSUQgU3RhdmtlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ1Byb21lbmEgIiVzIiBuaWplIG5hxJFlbmEgdSBiYXppIHBvZGF0YWthISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05pamUgYmlsbyBtb2d1xIdlIG9icmlzYXRpIENoYW5nZUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lIG1vxb5lIHNlIHByaWthemF0aSBpc3RvcmlqYXQsIGplciBuaWplIGRhdCBJRCBTdGF2a2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmUgbW/FvmUgc2UgcHJpa2F6YXRpIGlzdG9yaWphdCwgbmlqZSBkYXQgVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdmEgYWtjaWphIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnT2JyaXNhbiB1c2xvdiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUG92ZXphbm8gc2EgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnT2JyaXNhbmEgdmV6YSBzYSAlcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZSBtb8W+ZSBzZSBwcmlrYXphdGkgaXN0b3JpamF0LCBuaWplIGRhdCBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdQcm9tZW5hICIlcyIgbmlqZSBuYcSRZW5hIHUgYmF6aSBwb2RhdGFrYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCBDaGFuZ2VJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lbWEgcmV6dWx0YXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ1Vwb3pvcmVuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05lbWEgZG96dm9sZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ2l6bWXEkXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnSXN0acSNZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ09tb2d1xIdhdmEgbmFwcmVkbmUgdXNsb3ZlIHByZXRyYWdlIHRpa2V0YSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLiBTYSBvdm9tIG9wY2lqb20gbW/Eh2V0ZSBwcmV0cmHFvml2YXRpIG5wci4gbmFzbG92IHRpa2V0YSBzYSB1c2xvdmltYSBrYW8gIigqa2V5MSomJiprZXkyKikiIGlsaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ09tb2d1xIdhdmEgbmFwcmVkbmUgdXNsb3ZlIHByZXRyYWdlIHRpa2V0YSB1IGludGVyZmVqc3Uga29yaXNuaWthLiBTYSBvdm9tIG9wY2lqb20gbW/Eh2V0ZSBwcmV0cmHFvml2YXRpIG5wci4gbmFzbG92IHRpa2V0YSBzYSB1c2xvdmltYSBrYW8gIigqa2V5MSomJiprZXkyKikiIGlsaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0RvZGVsamVuZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS29uZmlndXJhY2lvbmUgc3RhdmtlIGRvZGVsamVuZSBmaXJtaSBrbGlqZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSBkb2RlbGplbmUga2xpamVudHUga29yaXNuaWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIHBvZGXFoWF2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUHJvdmVyYSBqZWRpbnN0dmVub2cgaW1lbmEgc2FtbyB1IG9rdmlydSBpc3RlIGtsYXNlIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgKFwna2xhc2FcJykgaWxpIGdsb2JhbG5vIChcJ2dsb2JhbG5vXCcpLCDFoXRvIHpuYcSNaSBkYSBqZSBzdmFrYSBwb3N0b2plxIdhIEtvbmZpZ3VyYWNpb25hIHN0YXZrYSB1emV0YSB1IG9iemlyIHUgcHJvdmVyaSBkdXBsaWthdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdEb2RhdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ1VyZcSRaXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCBkb2dhxJFhamEga29uZmlndXJhY2lvbmloIHN0YXZraSBrb2ppIG9tb2d1xIdhdmEgYmVsZcW+ZW5qZSB1IGlzdG9yaWphdCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdJc3RvcmlqYXQga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfFoHRhbXBhIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0RldGFsam5pIHByaWtheiBrb25maWd1cmFjaW5lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnT2dyYW5pxI1lbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnT2dyYW5pxI1lbmplIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgcG8gc3RyYW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmF6YSBwb2RhdGFrYSB1cHJhdmxqYW5qYSBrb25maWd1cmFjaWpvbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ01vZHVsIG1hc292bmUgYWtjaWplIG5hIGtvbmZpZ3VyYWNpb25pbSBzdGF2a2FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhY2lvbmEgc3RhdmthIHByZXRyYcW+dWplIHBvemFkaW5za2kgcnV0ZXIgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0tyZWlyYW5qZSBpIHVwcmF2bGphbmplIGRlZmluaWNpamEgemEga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnUG9kcmF6dW1ldmFuaSBwb2RhY2kgemEga29yacWhxIdlbmplIG5hIGF0cmlidXRpbWEgemEgcHJpa2F6IHByZXRyYWdlIHRpa2V0YS4gUHJpbWVyOiAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtUaWNrZXRDcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmkgcG9kYWNpIHphIGtvcmnFocSHZW5qZSBuYSBhdHJpYnV0aW1hIHphIHByaWtheiBwcmV0cmFnZSB0aWtldGEuIFByaW1lcjogIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBha2NpamUgZ2RlIGplIGR1Z21lIHBvc3RhdmtpIGRvc3R1cG5vIHUgcG92ZXphbm9tIGdyYWZpxI1rb20gZWxlbWVudHUgb2JqZWt0YSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBNb2xpbW8gZGEgaW1hdGUgbmEgdW11IGRhIG92ZSBBa2NpamUgbW9yYWp1IGRhIGJ1ZHUgcmVnaXN0cm92YW5lIHUgc2xlZGXEh2ltIEpTIGkgQ1NTIGRhdG90ZWthbWE6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb3RyZWJuZSBkb3p2b2xlIHphIGJyaXNhbmplIElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrcm96IGdlbmVyacSNa2kgaW50ZXJmZWpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIG5lb3Bob2RuZSBkb3p2b2xlIHphIGRvYmlqYW5qZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga29yacWhxIdlbmplbSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIG5lb3Bob2RuZSBkb3p2b2xlIHphIHByZXRyYWd1IElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrb3JpxaHEh2VuamVtIGdlbmVyacSNa29nIGludGVyZmVqc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgbmVvcGhvZG5lIGRvenZvbGUgemEgZG9iaWphbmplIElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrb3JpxaHEh2VuamVtIGdlbmVyacSNa29nIGludGVyZmVqc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtb2R1bCBwcmVnbGVkYSB6YSBtYWxpIHByaWtheiBsaXN0ZSBrb25maWd1cmFjaW9uaWggc3RhdmtpLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdPZHJlxJF1amUgcmVndWxhcm5lIGl6cmF6ZSB6YSBzdmFrdSBrbGFzdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgcmFkaSBwcm92ZXJlIG5heml2YSBrb25maWd1cmFjaW9uZSBzdGF2a2UgaSBwcmlrYXphIHByaXBhZGFqdcSHaWggcG9ydWthIG8gZ3JlxaFrYW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB0aWtldGEgemEgc29ydGlyYW5qZSB0aWtldGEgdSByZXp1bHRhdHUgcHJldHJhZ2UgdGlrZXRhIGludGVyZmVqc2Egb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB0aWtldGEgemEgc29ydGlyYW5qZSB0aWtldGEgdSByZXp1bHRhdHUgcHJldHJhZ2UgdGlrZXRhIGludGVyZmVqc2Egb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgdGlrZXRhIHphIHNvcnRpcmFuamUgdGlrZXRhIHUgcmV6dWx0YXR1IHByZXRyYWdlIHRpa2V0YSB1IG92b2ogb3BlcmFjaWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgdGlrZXRhIChwb3NsZSBzb3J0aXJhbmphIHBvIHByaW9yaXRldHUpIHUgcHJlZ2xlZHUgcHJldHJhZ2UgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcHJlcmF0ZXJhLiBHb3JlOiBOYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IE5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgdGlrZXRhIHUgcHJlZ2xlZHUgcHJldHJhZ2UgcmV6dWx0YXRhIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4gR29yZTogTmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBOYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcHJpa2F6IHByZXRyYWdlIGF0cmlidXRhIHRpa2V0YSB6YSBwcmlrYXogZWtyYW5hIHByZXRyYWdlIHRpa2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHByaWtheiBwcmV0cmFnZSBhdHJpYnV0YSB0aWtldGEgemEgcHJpa2F6IGVrcmFuYSBwcmV0cmFnZSB0aWtldGEuIFByaW1lcjogIktleSIgbW9yYSBpbWF0aSBuYXppdiBkaW5hbWnEjWtvZyBwb2xqYSwgdSBvdm9tIHNsdcSNYWp1IFwnWFwnLCAiQ29udGVudCIgbW9yYSBpbWF0aSB2cmVkbm9zdCBkaW5hbWnEjWtvZyBwb2xqYSB1IHphdmlzbm9zdGkgb2QgdGlwYSBkaW5hbWnEjWtvZyBwb2xqYSwgVGVrc3Q6IFwnYSB0ZXh0XCcsIFBhZGFqdcSHaTogXCcxXCcsIERhdHVtL1ZyZW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgaS9pbGkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnT2RyZcSRdWplIHBvZHJhenVtZXZhbmkgcG9kb2JqZWthdCBrbGFzZSBJVFNNIGtvbmZpZ3VyYWNpb25hIHN0YXZrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdPZHJlxJF1amUgdmlzaW51IHphIGtvbXBvbmVudHUgUmljaCBUZXh0IEVkaXRvciB6YSBvdmFqIHByaWtheiBla3JhbmEuIFVuZXNpIGJyb2ogKHBpa3NlbGkpIGlsaSBwcm9jZW50dWFsbnUgdnJlZG5vc3QgKHJlbGF0aXZudSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBicm9qIHJlZG92YSB6YSBlZGl0b3IgZGVmaW5pY2lqZSBDSSB1IGFkbWluaXN0cmF0aXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJlZG9zbGVkIGluY2lkZW50bmloIHN0YW5qYSBvZCB2aXNva29nIChucHIga3JpdGnEjW5vKSBkbyBuaXNrb2cgKG5wciBmdW5rY2lvbmFsbm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSByZWxldmFudG5hIHN0YW5qYSByYXNwb3JlxJFpdmFuamEgZ2RlIHBvdmV6YW5pIHRpa2V0aSBtb2d1IGRhIHV0acSNdSBuYSBzdGF0dXMgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGdyYW5pY3UgcHJldHJhZ2UgemEgZWtyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBncmFuaWN1IHByZXRyYWdlIHphIGVrcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGdyYW5pY3UgcHJldHJhZ2UgemEgZWtyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHByaWthemFuZSBrb2xvbmUga29uZmlndXJhY2lvbmloIHN0YXZraSB1IHRhYmVsaSB2ZXphIHUgemF2aXNub3N0aSBvZCBrbGFzZS4gVWtvbGlrbyBuZSBwb3N0b2ppIHVub3MgemEgcG9qZWRpbmHEjW51IGtsYXN1LCBiacSHZSBwcmlrYXphbmUgcG9kcmF6dW1ldmFuZSBrb2xvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSBrb25maWd1cmFjaW9uaWggc3RhdmtpIHUgdGFiZWxpIHZlemEgdSB6YXZpc25vc3RpIG9kIGtsYXNlLiBTdmFraSB1bm9zIG1vcmEgc2FkcsW+YXRpIHByZWZpa3Mgc2EgbmF6aXZvbSBrbGFzZSBpIGR2b3RhxI1rb20gKG5wci4gQ29tcHV0ZXI6OikuIFBvc3RvamkgcGFyIGF0cmlidXRhIGtvamkgc3UgemFqZWRuacSNa2kgemEgc3ZlIGtsYXNlIChucHIuIHphIGtsYXN1IENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBaYSBwcmlrYXogcG9qZWRpbmHEjW5paCBhdHJpYnV0YSBpeiBkZWZpbmljaWplLCBtb3JhdGUga29yaXN0aXRpIHNsZWRlxId1IMWhZW11IChwcmltZXIgemEga2xhc3UgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gVWtvbGlrbyBuZSBwb3N0b2ppIHVub3MgemEgcG9qZWRpbmHEjW51IGtsYXN1LCBiacSHZSBwcmlrYXphbmUgcG9kcmF6dW1ldmFuZSBrb2xvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGtvamUgc3Ugc3RhdmtlIHNsb2JvZG5lIHphIFwnQWN0aW9uXCcgdSB0cmXEh2VtIG5pdm91IEFDTCBzdHJ1a3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGtvamUgc3Ugc3RhdmtlIHNsb2JvZG5lIHUgcHJ2b20gbml2b3UgQUNMIHN0cnVrdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGtvamUgc3Ugc3RhdmtlIHNsb2JvZG5lIHUgZHJ1Z29tIG5pdm91IEFDTCBzdHJ1a3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnT2RyZcSRdWplIGtvamkgdGlwIHZlemUgKGdsZWRhbm8gaXogcGVyc3Bla3RpdmUgdGlrZXRhKSBtb8W+ZSBkYSB1dGnEjWUgbmEgcG92ZXphbnUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnT2RyZcSRdWplIGtvamkgdGlwIHRpa2V0YSBtb8W+ZSBkYSB1dGnEjWUgbmEgc3RhdHVzIHBvdmV6YW5lIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQnJpc2FuamUga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGVrcmFudSBkb2RhdG5paCBJVFNNIHBvbGphIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgcHJlZ2xlZHUgRkFRIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgcHJldHJhZ2UgcHJvbWVuYSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdPbW9ndcSHYXZhIG1hc292bnUgYWtjaWp1IG5hIGtvbmZpZ3VyYWNpb25pbSBzdGF2a2FtYSB1IHByaXN0dXBub20gc2lzdGVtdSBvcGVyYXRlcmEgbmEgdmnFoWUgb2QgamVkbmUgc3RhdmtlIGlzdG92cmVtZW5vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWt0aXZpcmEgc3ZvanN0dm8gbWFzb3ZuZSBha2NpamUgbmEga29uZmlnaXJhY2lvbmltIHN0YXZrYW1hIHNhbW8gemEgaXpsaXN0YW5lIGdydXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBkb2dhxJFhamEgemEgcG9kZcWhYXZhbmplIHN0YXR1c2Ega29uZmlndXJhY2lvbmloIHN0YXZraSBwcmlsaWtvbSBwb3N0YXZsamFuamEgdmV6YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIGdlbmVyacSNa29nIGludGVyZmVqc2EgemEgc2xvaiBwb3ppdmFvY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhIHphIHNsb2ogcG96aXZhb2NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIGdlbmVyacSNa29nIGludGVyZmVqc2EgemEgc2xvaiBwb3ppdmFvY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdUaXAgc3RhbmphIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IG92ZSBvcGVyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgemEgcHJvdmVydSBncnVwZSBvZGdvdm9ybmUgemEga2xhc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgemEgcHJvdmVydSBncnVwZSBvZGdvdm9ybmUgemEga29uZmlndXJhY2lvbnUgc3Rhdmt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHphIGdlbmVyaXNhbmplIHN0YXRpc3Rpa2UgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIG5hIHN2YWtvaiBzdHJhbmkgcmV6dWx0YXRhIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jyb2ogdGlrZXRhIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIG5hIHN2YWtvaiBzdHJhbmkgcmV6dWx0YXRhIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgZmlsdGVyIGtvbG9uYSB1IHVtYW5qZW5vbSBwcmVnbGVkdSB0aWtldGEuIE5hcG9tZW5hOiBwb2RlxaFhdmFuamUgXCdBY3RpdmVcJyBuYSAwIMSHZSBzYW1vIG9uZW1vZ3XEh2l0aSBvcGVyYXRlcmltYSBkYSBtZW5qYWp1IHN2b2phIGxpxI1uYSBwb2RlxaFhdmFuamEgaXogb3ZlIGdydXBlLCBhbGkgxIdlIGFkbWluaXN0cmF0b3JpIGkgZGFsamUgbW/Eh2kgZGEgaWggbWVuamFqdSB1IG5qaWhvdm8gaW1lLiBQb2Rlc2l0ZSBcJ1ByZWZlcmVuY2VHcm91cFwnIGRhIGJpc3RlIG9kcmVkaWxpIHUga29tIGRlbHUgaW50ZXJmZWpzYSBvdmEgcG9kZcWhYXZhbmphIHRyZWJhIGRhIGJ1ZHUgcHJpa2F6YW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBib2plIHN0YXR1c2EgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBhdHJpYnV0ZSB1em9ya2EgZ3J1cGUgemEgZG96dm9sZSBvcMWhdGVnIGthdGFsb2dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0cmFuaWNlIChuYSBrb2ppbWEgc3Uga29uZmlndXJhY2lvbmUgc3RhdmtlIHByaWthemFuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBwcmlzdHVwYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIHByZXRyYWdlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIHByZXRyYWdlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgcHJldHJhZ2UgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBkZXRhbG5vZyBwcmlrYXphIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgZG9kYXZhbmphIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIGl6bWVuZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBpc3RvcmlqYXRhIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSDFoXRhbXBlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb3RyZWJuYSBwcmF2YSB6YSBicmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnUHJldHJhZ2Ega29uZmlndXJhY2lvbmloIHN0YXZraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1Bvc3RhdmxqYSBzdGFuamUgaW5jaWRlbnRhIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBrYWRhIGplIHRpa2V0IHBvdmV6YW4gc2Egc3RhdmtvbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgc3RhdHVzIHByaW1lbmUgbmEgZWtyYW51IG1hc292bmUgYWtjaWplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgc3RhdHVzIGluY2lkZW50YSBuYSBla3JhbnUgbWFzb3ZuZSBha2NpamUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUga29qYSBvbW9ndcSHYXZhIHBvdmV6aXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBzYSBkcnVnaW0gb2JqZWt0b20gbmEgZGV0YWxqbm9tIHByaWthenUga29uZmlndXJhY2lqZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHByaXN0dXAgaXN0b3JpamF0dSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgcHJlZ2xlZHUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHByaXN0dXAgaXN0b3JpamF0dSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBicmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSB1bW5vxb5hdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIHByZWdsZWR1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSB1bW5vxb5hdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgaXptZW51IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBuamVub20gZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHBvdnJhdGFrIG5hIGRldGFsam5pIHByaWtheiBrb25maWd1cmFjaW9uZSBzdGF2a2UgIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgxaF0YW1wdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgZGV0YWxqbmkgcHJpa2F6IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBwcmVnbGVkdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6dWplIGlzdG9yaWphdCBrb25maWd1cmFjaW9uZSBzdGF2a2UgKG9icm51dCByZWRvc2xlZCkgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWthdG9yIHphIGtvbmZpZ3VyYWNpb251IHN0YXZrdSwgbnByLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUG9kcmF6dW1ldmFubyBqZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3QtcHJvZHVrY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlLXByb2R1a2NpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a2NpamEnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdOYWxvZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmZWpzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWplbnRza2kgc2VydGlmaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcCBzYWRyxb5hamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0Jlc3BsYXRuaSAqKic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnUHJlZ2xlZCByZXp1bHRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIG5pdm91IHVzbHVnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sv_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGxtw6RubmEgZHJpZnRkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdJbnN0w6RsbG5pbmdhciBmw7ZyIGlua29tbWFuZGUgZsO2cmZyw6VnbmluZ3NkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSW5zdMOkbGxuaW5nYXIgZsO2ciB1dGfDpWVuZGUgc3ZhcnNkYXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnSGFudGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSBrbGFzc2RlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSByb2xsZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1rbGFzc2J1bnRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0jDpHIga2FuIGR1IGltcG9ydGVyYSBSZWFkeTJJbXBvcnQta2xhc3NidW50YXIgc29tIHZpc2FyIHbDpXJhIHZhbmxpZ2FzdGUga29uZmlndXJhdGlvbnNvYmpla3QuIE9ic2VydmVyYSBhdHQgdmlzcyB5dHRlcmxpZ2FyZSBrb25maWd1cmF0aW9uIGthbiBrcsOkdmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcHBkYXRlcmEgYmVmaW50bGlnYSBlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0ZXJhIFJlYWR5MkFkb3B0LWtsYXNzYnVudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS2xhc3MgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlnIEFydGlrZWwgUm9sbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyZXJhIGtsYXNzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnVsOkbGogZW4ga2xhc3MgZnLDpW4gbGlzdGFuIGbDtnIgYXR0IHNrYXBhIGVuIG55IGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBNYXNzw6V0Z8OkcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudGzDpGdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0zDpG5rYSB0aWxsIGFubmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdPZ2lsdGlndCBudW1tZXIgcMOlIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bXJldCBww6UgZXR0IGFubmF0IENvbmZpZ3VyYXRpb24gSXRlbSBhdHQgbMOkbmthIHRpbGwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZXQgaMOkciBrb25maWd1cmF0aW9uc29iamVrdGV0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1uZXQgcMOlIGRlbm5hIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hbW5ldCBhbnbDpG5kcyByZWRhbiBpIGtvbmZpZ3VyYXRpb25zZW5oZXRlciBtZWQgZsO2cmxqYW5kZSBudW1tZXI6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbnNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb25zbnVtbWVyIGbDtnIgZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uc251bXJldCBhbnbDpG5kcyByZWRhbiBhdiBDb25maWdJdGVtcyBtZWQgZsO2bGphbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGzDpGdlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpayBmw7ZyIGtvbmZpZ3VyZXJpbmdzb2JqZWt0OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3Jpa2lubmVow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVGlkcHVua3QgZsO2ciBza2FwYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdGb2t1c3Z5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXRlciBwZXIgc2lkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nYSBkYXRhIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaGl0dGFkZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOkbGogZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDtnIgc8O2a25pbmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmw7ZyIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEanVwbml2w6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tYSBpbi91dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbMOkbmtuaXbDpSB1cHBuw6VkZCBmw7ZyIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJhdGlvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBrb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ051dmFyYW5kZSBkcmlmdGzDpGdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdOdXZhcmFuZGUgaW5jaWRlbnRsw6RnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdTZW5hc3Qgw6RuZHJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTZW5hc3Qgw6RuZHJhZCBhdic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0RpbmEgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBTw7ZrJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRsO2bGphbmRlIGtsYXNzZXIga29tbWVyIGF0dCBpbXBvcnRlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDtmxqYW5kZSByb2xsZXIga29tbWVyIGF0dCBpbXBvcnRlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ09ic2VydmVyYSBhdHQgw6R2ZW4gbW90c3ZhcmFuZGUgZHluYW1pc2thIGbDpGx0IG9jaCBHZW5lcmFsQ2F0YWxvZy1rbGFzc2VyIGtvbW1lciBhdHQgc2thcGFzIG9jaCBhdHQgZGV0IGludGUgc2tlciBuw6Vnb24gYXV0b21hdGlzayBib3J0dGFnbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWaWxsIGR1IGZvcnRzw6R0dGE/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0JlaMO2dmVyIGV4ZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uZW4gw6RyIGluZ2VuIGdpbHRpZyBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5Z2ZXJzaWt0OiBJVFNNIEtvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQgQ29uZmlnSXRlbUlEIGFuZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IGJlaMO2dmVyIG1pbnN0IGV0dCB2YWx0IENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaW50ZSBza3JpdmJlaMO2cmlnaGV0IHRpbGwgZGV0IGjDpHIga29uZmlndXJhdGlvbnNvYmpla3RldDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0luZ2VuIGRlZmluaXRpb24gaGFyIGRlZmluaWVyYXRzIGbDtnIga2xhc3NlbiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ29iamVrdGV0ICIlcyIgaGl0dGFkZXMgaW50ZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZXQgZ2ljayBpbnRlIGF0dCB0YSBib3J0IGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdJbmdlbiB2ZXJzaW9uIGhpdHRhZGVzIGbDtnIgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdJbmdldCBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGVsbGVyIENsYXNzSUQgYW5nZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdJbmdlbiDDpXRrb21zdCBnZXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpbnRlIHZpc2EgaGlzdG9yaWssIGluZ2V0IENvbmZpZ0l0ZW1JRCBhbmdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaW50ZSB2aXNhIGhpc3RvcmlrLCBpbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ055IGtvbmZpZ3VyYXRpb25zcG9zdCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOeSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdEZXBsb3ltZW50c3RhdHVzIHVwcGRhdGVyYWQgKG55PSVzLCBnYW1tYWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50c3RhdHVzIHVwcGRhdGVyYWQgKG55PSVzLCBnYW1tYWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlnSXRlbSAoSUQ9JXMpIGJvcnR0YWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0zDpG5rIHRpbGwgJXMgKHR5cGU9JXMpIHRpbGxhZ2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0zDpG5rIHRpbGwgJXMgKHR5cGU9JXMpIGJvcnR0YWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnVXBwZGF0ZXJpbmcgYXYgQ29uZmlnSXRlbS1kZWZpbml0aW9uZW4gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbW4gdXBwZGF0ZXJhdCAobnl0dD0lcywgZ2FtbWFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyB1cHBkYXRlcmF0IGZyw6VuICIlcyIgdGlsbCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgcmFkZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdJbmdldCBDb25maWdJdGVtSUQgZWxsZXIgVmVyc2lvbklEIGhhciBhbmdldHRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaW50ZSB2aXNhIGtvbmZpZ3VyYXRpb25zb2JqZWt0LCBpbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgaGl0dGFkZXMgaW50ZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3V0c2tyaXZlbiBhdiAlcyB2aWQgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnT2dpbHRpZ3Qga2xhc3MtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQga2xhc3NJRCBhbmdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdJbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGbDtnIgZGVubmEga2xhc3MgZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW5nZXQgcmVzdWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O2a3Jlc3VsdGF0IGbDtnIga29uZmlndXJlcmFkZSBvYmpla3QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0thbiBpbnRlIHZpc2Egb2JqZWt0ZXQsIGluZ2Egw6V0a29tc3Ryw6R0dGlnaGV0ZXIgZsO2ciBDb25maWdJdGVtIGhhciBnZXR0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnS29uZmlnSXRlbSBoaXR0YWRlcyBpbnRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdJbmdhIHZlcnNpb25lciBoaXR0YWRlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdPcGVyYXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndmFybmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ0jDpG5kZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRHJpZnRsw6RnZSBmw7ZyIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJbmNpZGVudGzDpGdlIGbDtnIga29uZmlndXJhdGlvbnNlbmhldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1Nha25hciByw6R0dGlnaGV0ZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBvZ2lsdGlndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDtmtwYXJhbWV0cmFyIG9naWx0aWdhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Zpc2FkZSBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEcmlmdGzDpGdlc3R5cGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ051dmFyYW5kZSB0eXAgYXYgaW5jaWRlbnRsw6RnZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdNZWxsYW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzYmVncsOkbnNuaW5nYXIgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWw6RsaiBlbiBlbGxlciBmbGVyYSBrbGFzc2VyIGbDtnIgYXR0IGJlZ3LDpG5zYSB2YWxiYXJhIGtvbmZpZ3VyYXRpb25zb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2JlZ3LDpG5zbmluZ2FyIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3RldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDpGxqIGVuIGVsbGVyIGZsZXJhIGtsYXNzZXIgZsO2ciBhdHQgYmVncsOkbnNhIHZhbGJhcmEga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzayAoS29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpc2sgKHZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cCBhdiBsw6Rua3JlZmVyZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ09tIGRlbm5hIGzDpG5rIGfDpGxsZXIgZsO2ciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrYSB2ZXJzaW9uZW4gYXYgZGV0IG9iamVrdCBzb20gcmVmZXJlcmFzIHRpbGwuIEJlcsOka25pbmdlbiBhdiBDdXJyZW50IEluY2lkZW50IFN0YXRlIHV0ZsO2cnMgZW5kYXN0IHDDpSBkeW5hbWlza2EgbMOkbmthci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWw6RsaiBkZXQgYXR0cmlidXQgc29tIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gc2thIHPDtmthcyBlZnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzc3RydWt0dXJlbiDDpHIgaW50ZSBnaWx0aWcuIEFuZ2UgZW4gaGFzaCBtZWQgZGF0YSBpIFlBTUwtZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RldCBrcsOkdnMgYXR0IFlBTUwtc3Ryw6RuZ2VuIGlubGVkcyBtZWQgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0RldCBnaWNrIGludGUgYXR0IHJlbnNhIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0luZ2EgcmVsZXZhbnRhIGR5bmFtaXNrYSBmw6RsdCBoaXR0YWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0RldCBnaWNrIGludGUgYXR0IGluZm9nYSBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5mb2dhZGUgMCByYWRlciBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXggYW50YWwgYXYgZXR0IGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRmVsIHZpZCBzeW5rcm9uaXNlcmluZyBhdiBkZWZpbml0aW9uZXJuYS4gVsOkbmxpZ2VuIGtvbnRyb2xsZXJhIGxvZ2dlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdEdSBoYXIgSVRTTUNvbmZpZ0l0ZW0tZGVmaW5pdGlvbmVyIHNvbSBpbnRlIMOkciBzeW5rcm9uaXNlcmFkZS4gVsOkbmxpZ2VuIGRpc3RyaWJ1ZXJhIGRpbmEgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2thIGbDpGx0w6RuZHJpbmdhci4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0zDtnB0IHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVW5kZXJow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFnZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBlcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfDlnZlcnN5bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5Z2ZXJzaWt0IG9jaCBiZWtyw6RmdGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0ZXJhIGtsYXNzZXIvcm9sbGVyIG9jaCBkZXJhcyByZWxhdGVyYWRlIGbDpGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRXR0IGZlbCBpbnRyw6RmZmFkZSB1bmRlciBrbGFzc2ltcG9ydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gRG9sZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gVmlzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGzDpXRlciB1dMO2a2FkZSBzw7ZrdmlsbGtvciB2aWQgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuIE1lZCBkZW4gaMOkciBmdW5rdGlvbmVuIGthbiBkdSB0LmV4LiBzw7ZrYSBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdGV0cyBuYW1uIG1lZCB2aWxsa29yIGF2IHR5cGVuICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGzDpXRlciB1dMO2a2FkZSBzw7ZrdmlsbGtvciB2aWQgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4gTWVkIGRlbiBow6RyIGZ1bmt0aW9uZW4ga2FuIGR1IHQuZXguIHPDtmthIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIG5hbW4gbWVkIHZpbGxrb3IgYXYgdHlwZW4gIigqa2V5MSomJiprZXkyKikiIGVsbGVyICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVGlsbGRlbGFkZSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSTpzIHNvbSB0aWxsZGVsYXRzIGt1bmRmw7ZyZXRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJOmVyIHNvbSB0aWxsZGVsYXRzIGt1bmRhbnbDpG5kYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCLWluc3TDpGxsbmluZ2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdTw7ZrIGVmdGVyIGV0dCB1bmlrdCBuYW1uIGVuZGFzdCBpbm9tIHNhbW1hIENvbmZpZ0l0ZW0ta2xhc3MgKCJjbGFzcyIpIGVsbGVyIGdsb2JhbHQgKCJnbG9iYWwiKSwgdmlsa2V0IGlubmViw6RyIGF0dCB2YXJqZSBiZWZpbnRsaWd0IENvbmZpZ0l0ZW0gdGFzIG1lZCBpIGJlcsOka25pbmdlbiBuw6RyIG1hbiBsZXRhciBlZnRlciBkdWJibGV0dGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgZ2Vub21kcml2YSBldHQgbmFtbmdpdm5pbmdzc2NoZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgdmVya3N0w6RsbGEgZXR0IG51bW1lcnN5c3RlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVsOkbGogZW4gbW9kdWwgZsO2ciBhdHQgZ2Vub21kcml2YSBldHQgc3lzdGVtIG1lZCB2ZXJzaW9uc3N0csOkbmdhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdWw6RsaiBhdHRyaWJ1dCBmw7ZyIGF0dCB1dGzDtnNhIHNrYXBhbmRldCBhdiBlbiBueSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWw6RsaiBrYXRlZ29yaWVyIHNvbSBza2EgdGlsbGRlbGFzIGRlbm5hIGtsYXNzIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbHVtbmZpbHRlciBmw7ZyIENvbmZpZ0l0ZW0tb2JqZWt0IGbDtnIgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbHVtbmVyIHNvbSBrYW4gZmlsdHJlcmFzIGkgw7Z2ZXJzaWt0ZW4gw7Z2ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuIE9ic2VydmVyYTogRW5kYXN0IENvbmZpZyBJdGVtLWF0dHJpYnV0IG9jaCBkeW5hbWlza2EgZsOkbHQgKER5bmFtaWNGaWVsZF9OYW1lWCkgw6RyIHRpbGzDpXRuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdMw6RnZyB0aWxsIGtvbmZpZ3VyZXJpbmdzb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ1JlZGlnZXJhIGtvbmZpZ3VyZXJpbmdzb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyZXJpbmdzb2JqZWt0IGbDtnIgaMOkbmRlbHNlbW9kdWwgc29tIG3DtmpsaWdnw7ZyIGxvZ2duaW5nIHRpbGwgaGlzdG9yaWsgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0jDpG5kZWxzZW1vZHVsIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3Qgc29tIHVwcGRhdGVyYXIga29uZmlndXJhdGlvbnNvYmpla3RlbiB0aWxsIGRlcmFzIGFrdHVlbGxhIGRlZmluaXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXJlcmFyIGFydGlrZWxoaXN0b3Jpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnVXRza3JpZnQgYXYga29uZmlndXJlcmluZ3NvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlndXJlcmEgem9vbSBmw7ZyIG9iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdLb25maWdJdGVtIHRyw6RkdnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnS29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIGF2IGbDtmxqYW5kZSBrbGFzc2VyIGtvbW1lciBpbnRlIGF0dCBsYWdyYXMgcMOlIEVsYXN0aWNzZWFyY2gtc2VydmVybi4gT20gZHUgdmlsbCB0aWxsw6RtcGEgZGV0dGEgcMOlIGJlZmludGxpZ2EgQ0kgbcOlc3RlIENJLW1pZ3JlcmluZ2VuIGvDtnJhcyB2aWEga29uc29sZW4gZWZ0ZXIgYXR0IGR1IGhhciDDpG5kcmF0IGRldHRhIGFsdGVybmF0aXYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG1lZCBmw7ZsamFuZGUgZHJpZnRzw6R0dG5pbmdzc3RhdHVzIGtvbW1lciBpbnRlIGF0dCBsYWdyYXMgcMOlIEVsYXN0aWNzZWFyY2gtc2VydmVybi4gRsO2ciBhdHQgdGlsbMOkbXBhIGRldHRhIHDDpSBiZWZpbnRsaWdhIENJIG3DpXN0ZSBDSS1taWdyZXJpbmdlbiBrw7ZyYXMgdmlhIGtvbnNvbGVuIGVmdGVyIGF0dCBkZXR0YSBhbHRlcm5hdGl2IGhhciDDpG5kcmF0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQmVncsOkbnNuaW5nIGtvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhdGlvbiBBcnRpa2VsZ3LDpG5zIHBlciBzaWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhcyBmw7ZyIGtvbmZpZ3VyYXRpb25zaGFudGVyaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhdGlvbnNvYmpla3QgYnVsa21vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmF0aW9uc29iamVrdCBzw7ZrIGJhY2tlbmQtcm91dGVyIGbDtnIgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnU2thcGEgb2NoIGhhbnRlcmEgZGVmaW5pdGlvbmVyIGbDtnIga29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnU2thcGFyIGJpbGpldHRlciBmw7ZyIENvbmZpZ0l0ZW1zIHZpZCBzcGVjaWZpa2EgdGlkcHVua3Rlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS3VuZGVybmEga2FuIHNlIGhpc3Rvcmlza2EgQ0ktdmVyc2lvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZXJuYSBoYXIgbcO2amxpZ2hldCBhdHQgbWFudWVsbHQgdsOkeGxhIG1lbGxhbiBoaXN0b3Jpc2thIENJLXZlcnNpb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYSBhbnbDpG5kYXMgcMOlIGF0dHJpYnV0ZXQgZsO2ciBzw7Zrc2vDpHJtZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdC4gRXhlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYSBhbnbDpG5kYXMgcMOlIGF0dHJpYnV0IGbDtnIgc8O2a3Nrw6RybWVuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QuIEV4ZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmllcmEgw6V0Z8OkcmRlciBkw6RyIGVuIGluc3TDpGxsbmluZ3NrbmFwcCDDpHIgdGlsbGfDpG5nbGlnIGkgd2lkZ2V0ZW4gZsO2ciBsw6Rua2FkZSBvYmpla3QgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gT2JzZXJ2ZXJhIGF0dCBkZXNzYSDDpXRnw6RyZGVyIG3DpXN0ZSBoYSByZWdpc3RyZXJhdCBmw7ZsamFuZGUgSlMtIG9jaCBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIG9jaCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllcmEgZXR0IFRlbXBsYXRlOjpUb29sa2l0LXNjaGVtYSBmw7ZyIHZlcnNpb25zc3Ryw6RuZ2FyLiBBbnbDpG5kcyBlbmRhc3Qgb20gVmVyc2lvbiBTdHJpbmcgTW9kdWxlIMOkciBpbnN0w6RsbGQgcMOlIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYSBlbiB1cHBzw6R0dG5pbmcgdmlsbGtvciB1bmRlciB2aWxrYSBlbiBrdW5kIGbDpXIgc2UgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0LiBWaWxsa29yZW4ga2FuIGV2ZW50dWVsbHQgYmVncsOkbnNhcyB0aWxsIHZpc3NhIGt1bmRncnVwcGVyLiBOYW1uIMOkciBkZXQgZW5kYSBvYmxpZ2F0b3Jpc2thIGF0dHJpYnV0ZXQuIE9tIGluZ2EgYW5kcmEgYWx0ZXJuYXRpdiBhbmdlcyBrb21tZXIgYWxsYSBrb25maWd1cmF0aW9uc29iamVrdCBhdHQgdmFyYSBzeW5saWdhIHVuZGVyIGRlbiBrYXRlZ29yaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHRhIGJvcnQgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBtZWQgaGrDpGxwIGF2IGRldCBnZW5lcmlza2EgZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgbsO2ZHbDpG5kaWdhIGJlaMO2cmlnaGV0ZXIgZsO2ciBhdHQgaMOkbXRhIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGhqw6RscCBhdiBkZXQgZ2VuZXJpc2thIGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHPDtmthIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGhqw6RscCBhdiBkZXQgZ2VuZXJpc2thIGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHN0w6RsbGEgaW4gSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBtZWQgaGrDpGxwIGF2IGRldCBnZW5lcmlza2EgZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZXJhciBlbiDDtnZlcnNpa3RzbW9kdWwgc29tIHZpc2FyIGRlbiBsaWxsYSB2eW4gYXYgZW4gbGlzdGEgbWVkIGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG9tIGzDpG5rdHlwZW5zIGV0aWtldHRlciBtw6VzdGUgdmlzYXMgaSBub2RhbnNsdXRuaW5nYXJuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgcmVndWxqw6RyYSB1dHRyeWNrIGluZGl2aWR1ZWxsdCBmw7ZyIHZhcmplIENvbmZpZ0l0ZW0ta2xhc3MgZsO2ciBhdHQga29udHJvbGxlcmEgQ29uZmlnSXRlbS1uYW1uZXQgb2NoIHZpc2EgbW90c3ZhcmFuZGUgZmVsbWVkZGVsYW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSB0aWxsZ8OkbmdsaWdhIGtvbHVtbmVybmEgZsO2ciBDSTplciBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIMO2dmVyc2lrdCBiZXJvZW5kZSBww6UgQ0kta2xhc3Nlbi4gVmFyamUgcG9zdCBtw6VzdGUgYmVzdMOlIGF2IGV0dCBrbGFzc25hbW4gb2NoIGVuIG1hdHJpcyBtZWQgdGlsbGfDpG5nbGlnYSBmw6RsdCBmw7ZyIG1vdHN2YXJhbmRlIGtsYXNzLiBEeW5hbWlza2EgZsOkbHRwb3N0ZXIgbcOlc3RlIGbDtmxqYSBzY2hlbWF0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkYXR0cmlidXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGbDtnIgc29ydGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRhdHRyaWJ1dGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgZsO2ciBzb3J0ZXJpbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBzw7ZrcmVzdWx0YXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBmw7ZyIHNvcnRlcmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHJlc3VsdGF0ZXQgYXYgc8O2a25pbmdlbiBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGRlbm5hIMOldGfDpHJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZG9yZG5pbmdlbiBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4gVXBwOiDDpGxkc3QgcMOlIHRvcHBlbi4gTmVyOiBkZXQgc2VuYXN0ZSDDtnZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZG9yZG5pbmdlbiBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0LiBVcHA6IMOkbGRzdCDDtnZlcnN0LiBOZXI6IGRlbiBzZW5hc3RlIMO2dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIGtvbHVtbmVyIHNvbSB2aXNhcyBzb20gc3RhbmRhcmQgZsO2ciBDSTplciBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIMO2dmVyc2lrdCBiZXJvZW5kZSBww6UgQ0kta2xhc3Nlbi4gVmFyamUgcG9zdCBtw6VzdGUgYmVzdMOlIGF2IGV0dCBrbGFzc25hbW4gb2NoIGVuIG1hdHJpcyBtZWQgdGlsbGfDpG5nbGlnYSBmw6RsdCBmw7ZyIG1vdHN2YXJhbmRlIGtsYXNzLiBEeW5hbWlza2EgZsOkbHRwb3N0ZXIgbcOlc3RlIGbDtmxqYSBzY2hlbWF0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluaWVyYXIgZGV0IHN0YW5kYXJkZGp1cCBmw7ZyIHJlbGF0aW9uZXIgc29tIHNrYSB2aXNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBzb20gdmlzYXMgZsO2ciBza8Okcm1lbiBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBzb20gdmlzYXMgcMOlIHNrw6RybWVuIGbDtnIgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QuIEV4ZW1wZWw6ICJLZXkiIG3DpXN0ZSBoYSBuYW1uZXQgcMOlIGRldCBkeW5hbWlza2EgZsOkbHRldCBpIGRldCBow6RyIGZhbGxldCAiWCIsICJDb250ZW50IiBtw6VzdGUgaGEgdsOkcmRldCBww6UgZGV0IGR5bmFtaXNrYSBmw6RsdGV0IGJlcm9lbmRlIHDDpSB0eXBlbiBhdiBkeW5hbWlza3QgZsOkbHQsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBvY2ggZWxsZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZHVuZGVyb2JqZWt0ZXQgZsO2ciBrbGFzc2VuIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUgdGlsbGfDpG5nbGlnYSBrb2x1bW5lcm5hIGbDtnIgQ0k6ZXIgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyDDtnZlcnNpa3QgYmVyb2VuZGUgcMOlIENJLWtsYXNzZW4uIFZhcmplIHBvc3QgbcOlc3RlIGJlc3TDpSBhdiBldHQga2xhc3NuYW1uIG9jaCBlbiBtYXRyaXMgbWVkIHRpbGxnw6RuZ2xpZ2EgZsOkbHQgZsO2ciBtb3RzdmFyYW5kZSBrbGFzcy4gRHluYW1pc2thIGbDpGx0cG9zdGVyIG3DpXN0ZSBmw7ZsamEgc2NoZW1hdCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGjDtmpkZW4gZsO2ciByZWRpZ2VyaW5nc2tvbXBvbmVudGVuIGbDtnIgcmlrIHRleHQgZsO2ciBkZW4gaMOkciBza8Okcm1lbi4gQW5nZSBhbnRhbCAocGl4bGFyKSBlbGxlciBwcm9jZW50dsOkcmRlIChyZWxhdGl2dCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2VyIGFudGFsIHJhZGVyIGbDtnIgS0UtZWRpdG9ybiBpIGFkbWluZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBvcmRuaW5nc2bDtmxqZGVuIGbDtnIgaW5jaWRlbnR0aWxsc3TDpW5kIGZyw6VuIGjDtmcgKHQuZXguIGNyaWNpdGFsKSB0aWxsIGzDpWcgKHQuZXguIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUgcmVsZXZhbnRhIGRyaWZ0c8OkdHRuaW5nc3N0YXR1c2FyIGTDpHIgbMOkbmthZGUgw6RyZW5kZW4ga2FuIHDDpXZlcmthIHN0YXR1c2VuIGbDtnIgZXR0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc8O2a2dyw6Ruc2VuIGbDtnIgc2vDpHJtZW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcmFyIHPDtmtncsOkbnNlbiBmw7ZyIHNrw6RybWVuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzw7ZrZ3LDpG5zZW4gZsO2ciBza8Okcm1lbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc8O2a2dyw6Ruc2VuIGbDtnIgc2vDpHJtZW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSBrb2x1bW5lciBzb20gdmlzYXMgZsO2ciBDSSBpIGRlbiBrb21wbGV4YSB2eW4gZsO2ciBsw6Rua3RhYmVsbGVuIGbDtnIgYWxsYSBDSS1rbGFzc2VyLiBPbSBkZXQgaW50ZSBmaW5ucyBuw6Vnb24gcG9zdCB2aXNhcyBzdGFuZGFyZGtvbHVtbmVybmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIGtvbHVtbmVyIHNvbSB2aXNhcyBmw7ZyIENJIGkgZGVuIGtvbXBsZXhhIHZ5biBmw7ZyIGzDpG5rdGFiZWxsZW4sIGJlcm9lbmRlIHDDpSBDSS1rbGFzcy4gVmFyamUgcG9zdCBtw6VzdGUgaW5sZWRhcyBtZWQga2xhc3NuYW1uZXQgb2NoIGR1YmJsYSBrb2xvbiAodC5leC4gQ29tcHV0ZXI6OikuIERldCBmaW5ucyBldHQgZsOldGFsIENJLWF0dHJpYnV0IHNvbSDDpHIgZ2VtZW5zYW1tYSBmw7ZyIGFsbGEgQ0kgKGV4ZW1wZWwgZsO2ciBrbGFzc2VuIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBGw7ZyIGF0dCB2aXNhIGVuc2tpbGRhIENJLWF0dHJpYnV0IHNvbSBkZWZpbmllcmFzIGkgQ0ktZGVmaW5pdGlvbmVuIG3DpXN0ZSBmw7ZsamFuZGUgc2NoZW1hIGFudsOkbmRhcyAoZXhlbXBlbCBmw7ZyIGtsYXNzZW4gQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gT20gZGV0IGludGUgZmlubnMgbsOlZ29uIHBvc3QgZsO2ciBlbiBDSS1rbGFzcyB2aXNhcyBzdGFuZGFyZGtvbHVtbmVybmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciB2aWxrYSBvYmpla3Qgc29tIMOkciB0aWxsZ8OkbmdsaWdhIGbDtnIgIkFjdGlvbiIgaSBkZW4gdHJlZGplIG5pdsOlbiBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciB2aWxrYSBvYmpla3Qgc29tIMOkciB0aWxsZ8OkbmdsaWdhIGkgZGVuIGbDtnJzdGEgbml2w6VuIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciB2aWxrYSBvYmpla3Qgc29tIMOkciB0aWxsZ8OkbmdsaWdhIGkgZGVuIGFuZHJhIG5pdsOlbiBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2VuIHR5cCBhdiBsw6RuayAobmFtbmdpdmVuIHVyIGV0dCDDpHJlbmRlcGVyc3Bla3Rpdikgc29tIGthbiBww6V2ZXJrYSBzdGF0dXNlbiBmw7ZyIGV0dCBsw6Rua2F0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2VuIHR5cCBhdiDDpHJlbmRlIHNvbSBrYW4gcMOldmVya2Egc3RhdHVzZW4gZsO2ciBldHQgbMOkbmthdCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdEZWZpbml0aW9uIFVwcGRhdGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdUYSBib3J0IGtvbmZpZ3VyYXRpb25zb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRGVwbG95bWVudCBTdGF0ZSBGw6RyZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljZXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnSMOkbmRlbHNlbW9kdWwgZsO2ciBkeW5hbWlza2EgZsOkbHQgc29tIG1hcmtlcmFyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZGVmaW5pdGlvbmVyIHNvbSBvc3lua3JvbmlzZXJhZGUgb20gZGUgaW5uZWjDpWxsZXIgZHluYW1pc2thIGbDpGx0IHNvbSDDpG5kcmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2thIGbDpGx0IHNvbSB2aXNhcyBww6Ugc2vDpHJtZW4gZsO2ciB5dHRlcmxpZ2FyZSBJVFNNLWbDpGx0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2EgZsOkbHQgc29tIHZpc2FzIHDDpSBza8Okcm1lbiBmw7ZyIMO2dmVyc2lrdCBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2EgZsOkbHQgc29tIHZpc2FzIHDDpSBza8Okcm1lbiBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmVyYXIgZnVua3Rpb25lbiBmw7ZyIG1hc3PDpXRnw6RyZGVyIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3Qgc8OlIGF0dCBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZXRhIG1lZCBtZXIgw6RuIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCDDpXQgZ8Olbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJhciBmdW5rdGlvbmVuIGbDtnIgbWFzc8OldGfDpHJkZXIgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBlbmRhc3QgZsO2ciBkZSBncnVwcGVyIHNvbSBhbmdlcyBpIGxpc3Rhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnSMOkbmRlbHNlbW9kdWwgZsO2ciBhdHQgc8OkdHRhIGNvbmZpZ2l0ZW0tc3RhdHVzIHDDpSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGw6RsdCBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIGluZGV4IHNvbSBhbnbDpG5kcyBmw7ZyIGZ1bGx0ZXh0c8O2a25pbmcuIEbDpGx0IGxhZ3JhcyBvY2tzw6UsIG1lbiDDpHIgaW50ZSBvYmxpZ2F0b3Jpc2thIGbDtnIgZGVuIMO2dmVyZ3JpcGFuZGUgZnVua3Rpb25hbGl0ZXRlbi4gSW5rbHVkZXJpbmcgYXYgYmlsYWdvciBrYW4gaW5ha3RpdmVyYXMgZ2Vub20gYXR0IHPDpHR0YSBwb3N0ZW4gdGlsbCAwIGVsbGVyIHJhZGVyYSBkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGw6RsdCBzb20gbGFncmFzIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgaW5kZXggb2NoIHNvbSBhbnbDpG5kcyBmw7ZyIGFuZHJhIHNha2VyIMOkbiBmdWxsdGV4dHPDtmtuaW5nLiBGw7ZyIGZ1bGxzdMOkbmRpZyBmdW5rdGlvbmFsaXRldCDDpHIgYWxsYSBmw6RsdCBvYmxpZ2F0b3Jpc2thLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIGbDtnIgQ29uZmlnSXRlbUZldGNoLWlua2FsbG5pbmdzbGFncmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIGbDtnIgQ29uZmlnSXRlbUZldGNoLWlua2FsbG5pbmdzbGFncmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCBmw7ZyIENvbmZpZ0l0ZW1GZXRjaC1pbmthbGxuaW5nc2xhZ3JldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBLb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnw5Z2ZXJzaWt0IMO2dmVyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSMOkbmRlbHNlU3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmFyIGRyaWZ0c8OkdHRuaW5nc3N0YXR1c2FyIGkgc8O2a25pbmdlbiBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmFyIGluY2lkZW50c3RhdHVzYXIgaSBzw7ZrbmluZ2VuIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltYWx0IGFudGFsIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSBza2EgdmlzYXMgaSByZXN1bHRhdGV0IGF2IGRlbm5hIMOldGfDpHJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIGbDtnIgYXR0IGtvbnRyb2xsZXJhIHZpbGtlbiBncnVwcCBzb20gw6RyIGFuc3ZhcmlnIGbDtnIgZW4ga2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZsO2ciBhdHQga29udHJvbGxlcmEgdmlsa2VuIGdydXBwIHNvbSDDpHIgYW5zdmFyaWcgZsO2ciBldHQga29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgZsO2ciBhdHQgZ2VuZXJlcmEgc3RhdGlzdGlrIMO2dmVyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtbiBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVyIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSBza2EgdmlzYXMgcMOlIHZhcmplIHNpZGEgaSBldHQgc8O2a3Jlc3VsdGF0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnRhbCBrb25maWd1cmF0aW9uc29iamVrdCBzb20gc2thIHZpc2FzIHDDpSB2YXJqZSBzaWRhIGF2IGV0dCBzw7ZrcmVzdWx0YXQgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0IGF0dCBzw7ZrYSBlZnRlciwgaHVyIG3DpW5nYSBwb3N0ZXIgb2NoIHZpbGthIGF0dHJpYnV0IHNvbSBza2EgdmlzYXMuIENvbmZpZ0l0ZW0tYXR0cmlidXQgbcOlc3RlIHV0dHJ5Y2tsaWdlbiBsYWdyYXMgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ8OWdmVyc2lrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBrYXRlZ29yaWVybmEgZsO2ciBrbGFzc2VyIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgcHJlZmVyZW5zdnluIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBrb2x1bW5maWx0cmVuIGkgZGVuIGxpbGxhIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0LiBPYnNlcnZlcmE6IG9tIGR1IGFuZ2VyICJBY3RpdmUiIHRpbGwgMCBmw7ZyaGluZHJhcyBlbmRhc3QgaGFuZGzDpGdnYXJlIGZyw6VuIGF0dCByZWRpZ2VyYSBpbnN0w6RsbG5pbmdhciBmw7ZyIGRlbm5hIGdydXBwIGkgc2luYSBwZXJzb25saWdhIGluc3TDpGxsbmluZ2FyLCBtZW4gYWRtaW5pc3RyYXTDtnJlciBrYW4gZm9ydGZhcmFuZGUgcmVkaWdlcmEgaW5zdMOkbGxuaW5nYXJuYSBmw7ZyIGVuIGFubmFuIGFudsOkbmRhcmVzIHLDpGtuaW5nLiBBbnbDpG5kICJQcmVmZXJlbmNlR3JvdXAiIGbDtnIgYXR0IHN0eXJhIGkgdmlsa2V0IG9tcsOlZGUgZGVzc2EgaW5zdMOkbGxuaW5nYXIgc2thIHZpc2FzIGkgYW52w6RuZGFyZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZsOkcmdlbiBmw7ZyIGRyaWZ0c8OkdHRuaW5nc3N0YXR1cyBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZHJpZnRzw6R0dG5pbmdzdGlsbHN0w6VuZCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIGV4ZW1wZWwgcMOlIGJlaMO2cmlnaGV0c2VncnVwcGVyIGkgZ3J1bmRrYXRhbG9nZW5zIGF0dHJpYnV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBuYW1ubW9kdWxlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgbnVtbWVybW9kdWxlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBzaWRvcm5hIChkw6RyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gdmlzYXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgbW9kdWxlbiB2ZXJzaW9uIHN0cmluZyBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGbDtnIgY29uZmlnIGl0ZW0gY2xhc3NlcyBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHZlcnNpb25zdXRsw7ZzYXJlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnQmVow7ZyaWdoZXRzZ3J1cHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgw6V0Z8OkcmRlbiBBdHRhY2htZW50IGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBzw7Zrc2vDpHJtZW4gZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBzw7Zrc2vDpHJtZW4gZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHRyw6RkdnluIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHpvb21za8Okcm1lbiBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIEzDpGdnIHRpbGwgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGJ1bGsgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBSZWRpZ2VyYSBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gSGlzdG9yaWsgw7Z2ZXIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBTa3JpdiB1dCBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IHRhIGJvcnQga29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU8O2ayBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnU3TDpGxsIGluIGluY2lkZW50c3RhdHVzIGbDtnIgZXR0IENJIGF1dG9tYXRpc2t0IG7DpHIgZW4gVGlja2V0IGzDpG5rYXMgdGlsbCBldHQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU3TDpGxsZXIgaW4gZHJpZnRzw6R0dG5pbmdzc3RhdHVzIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgYnVsa3Nrw6RybSBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU3TDpGxsZXIgaW4gaW5jaWRlbnRzdGF0dXMgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyBidWxrc2vDpHJtIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gc29tIGfDtnIgZGV0IG3DtmpsaWd0IGF0dCBsw6Rua2EgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IHRpbGwgZXR0IGFubmF0IG9iamVrdCBpIHpvb212eW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdGV0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQga29tbWEgw6V0IGhpc3RvcmlrZW4gZsO2ciBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSDDtnZlcnNpa3RlbiDDtnZlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBrb21tYSDDpXQgaGlzdG9yaWtlbiBmw7ZyIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIHpvb212eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCB0YSBib3J0IGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIGRlc3Mgem9vbXZ5IGF2IGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgdmlzYSBsw6Rua2FybmEgdGlsbCBrb25maWd1cmF0aW9uc29iamVrdGVuIHNvbSBlbiB0csOkZHZ5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgZHVwbGljZXJhIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGR1cGxpY2VyYSBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSB6b29tdnluIGF2IGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgcmVkaWdlcmEgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgem9vbXZ5biBhdiBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGfDpSB0aWxsYmFrYSBpIHpvb212eW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdGV0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgc2tyaXZhIHV0IGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIHpvb212eW4gYXYgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgem9vbWEgaW4gcMOlIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBoaXN0b3Jpa2VuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgKG9tdsOkbmQgb3JkbmluZykgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RlbiBzdGFuZGFyZGthdGVnb3JpIHNvbSB2aXNhcyBvbSBpbmdlbiBrYXRlZ29yaSBoYXIgdmFsdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWVyYXJlbiBmw7ZyIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCwgdC5leC4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFN0YW5kYXJkdsOkcmRldCDDpHIgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdVdGzDtnNlciBDb25maWdJdGVtRmV0Y2gtaW5rYWxsYXJlbiBhdXRvbWF0aXNrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbiBTdHJpbmcgVXR0cnljayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZyBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09tIGvDtnJuaW5nZW4gYXYgQ29uZmlnSXRlbUFDTCBrYW4gdW5kdmlrYXMgZ2Vub20gYXR0IGtvbnRyb2xsZXJhIGNhY2hlbGFncmFkZSBmw6RsdGJlcm9lbmRlbi4gRGV0dGEga2FuIGbDtnJiw6R0dHJhIGxhZGRuaW5nc3RpZGVybmEgZsO2ciBmb3JtdWzDpHIsIG1lbiBtw6VzdGUgYXZha3RpdmVyYXMgb20gQUNMTW9kdWxlcyBza2EgYW52w6RuZGFzIGbDtnIgSVRTTUNvbmZpZ0l0ZW0tIG9jaCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnVmlsa2VuIGFsbG3DpG4gaW5mb3JtYXRpb24gdmlzYXMgaSBydWJyaWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXR1bXMgcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtdHVtcyBrdWdnc3TDpW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSB0dW0gKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy10dW1zIGt1Z2dzdMOlbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHR1bSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogMTA2LDY4IGNtICg0MiB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSB0dW0gKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDEzMywzNSBjbSAoNTIsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSB0dW0gKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDE0Niw2OCBjbSAoNTcsNzUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgdHVtICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCB0dW0gKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiAxNzMsMzUgY20gKDY4LDI1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyB0dW0gKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgdHVtICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDE3LDc4IGNtICg3IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAzMSwxMiBjbSAoMTIsMjUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgdHVtICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHR1bSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnUmVkb3Zpc25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc3N0aWxsZGVsbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXTDtnInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXAgYXYgYXBwYXJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlrYXBhY2l0ZXQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJpdHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnlnZ25hZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzc2dyw6Ruc3NuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVLWtsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0ZXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFjaXRldCBwZXIgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0bMOkc2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXAgYXYga29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS3VuZGNlcnRpZmlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnUHJvZ3JhbXZhcmEgZsO2ciBrbGllbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLdW5ka2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnS2xvY2tzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdLbG9ja2hhc3RpZ2hldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kc2lnbmVyYW5kZSBjZXJ0aWZpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWxlZm9uIGbDtnIga29uZmVyZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnS29uc3VsdGF2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0YSBkaXN0cmlidXTDtnJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0NvbnRhaW5lcmhhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdLb250cmFrdHN0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdBdnRhbHNwZXJpb2QgZnLDpW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnQXZ0YWxzdGlkIHRpbGwgb2NoIG1lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdTbGFkZGzDtnMgdGVsZWZvbiAoREVDVC10ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLb3N0bmFkc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQW50YWwgbGljZW5zZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIGbDtnIgc2thcGFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0FucGFzc2F0IHN0w6RsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlcmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGYWt0dXJhbnMgZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIGbDtnIgYmVzdMOkbGxuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSBmw7ZyIHRlY2tuaW5nc29wdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXR1bSBmw7ZyIHV0Z2l2bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWthdCBmw7ZyIGRva3VtZW50c2lnbmVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RjZXJ0aWZpa2F0IChTL01JTUUtY2VydGlmaWthdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQW5zdMOkbGxuaW5nc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnSVAtYWRyZXNzIGbDtnIgc2x1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1VwcGjDtnJhbmRlIGF2IHN0w7ZkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnVXRnw6VuZ3NkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuIGjDpXJkZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0JyYW5kdsOkZ2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0VuZXJnaWxhZ3JpbmcgbWVkIHN2w6RuZ2hqdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2VhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0FsbG3DpG4gaW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSMOlcmR2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSMOlcmR2YXJ1bW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0jDpXJkdmFyYSBWaWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRldHMtIG9jaCDDpXRrb21zdGhhbnRlcmluZyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmFrdHVyYW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RhbmdlbnRib3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1tb25pdG9yIChmbHl0YW5kZSBrcmlzdGFsbHNrw6RybSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1tb25pdG9yIChsanVzZW1pdHRlcmFuZGUgZGlvZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmFzdCB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYWdlciAxOiBGeXNpc2t0IGxhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xhZ2VyIDI6IERhdGFsw6Rua2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWdlciAzOiBOw6R0dmVya3NsYWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYWdlciAzOiBOw6R0dmVya3NsYWdlciAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhZ2VyIDQ6IFRyYW5zcG9ydGxhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYWdlciA1OiBTZXNzaW9uc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhZ2VyIDY6IFByZXNlbnRhdGlvbnNsYWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhZ2VyIDc6IEFwcGxpa2F0aW9uc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0h5cmVzYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbnNhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5zbnlja2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cCBhdiBsaWNlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2Vuc3BlcmlvZCBmcsOlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2Vuc3BlcmlvZCB0aWxsIG9jaCBtZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGl1bWrDpHJuZm9zZmF0YmF0dGVyaSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGl1bWpvbmJhdHRlcmkgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMw6VuZWF2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdCZWzDpGdldCBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVGlsbHZlcmthcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltYWwgbGFzdGthcGFjaXRldCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWlubmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNaW5uZXN0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbGxiZXNrcml2bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9ybnMgdXBwbMO2c25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvcm5zIHN0b3JsZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ07DpHR2ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ07DpHR2ZXJrc2luZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBuw6R0dmVya2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOw6R0dmVya3Nza2lrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1rYWRtaXVtYmF0dGVyaSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWNrZWwtbWV0YWxsaHlkcmlkYmF0dGVyaSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQXZ0YWwgb20gdHlzdG5hZHNwbGlrdCAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0FudGVja25pbmdzYm9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQW50YWwgcHJvY2Vzc29yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQW50YWwgUkFNLW1vZHVsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW50YWwgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1tb25pdG9yIChvcmdhbmlzayBsanVzZW1pdHRlcmFuZGUgZGlvZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnUsO2cmVsc2Vrb3N0bmFkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnQmVzdMOkbGxuaW5nc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FubmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVdGfDpW5nYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOLUtPRCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJza2Fwc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwIGF2IHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXNpc2thIGvDpHJub3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHLDtm1mw7Zyc8O2cmpuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnS8O2cHRhIHDDpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFja2RqdXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrLWVuaGV0ZXIgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtY2VydGlmaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0bDtnJzw6Rsam5pbmdzYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0bDtnJzZWdsYXQgU0xBLWJhdHRlcmkgKExlYWQtQWNpZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQcm9ncmFtdmFyYSBmw7ZyIHNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2VhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UgVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cCBhdiB1dHRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW12YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSMO2Z3RhbGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdGw7ZydmFyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnTGFncmluZ3NwYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEb3R0ZXJib2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FtbWFuZmF0dG5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUdW5uIGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVHLDpWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ0JsaXh0c25hYmIgYW5zbHV0bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWx0IFJBTS1taW5uZSBmw7ZyIGdyYWZpa2tvcnQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsdCBSQU0tbWlubmUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBtZWQgcGVrc2vDpHJtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1YmInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1oZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVlbGwgbMOkbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/sw_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ1RlbmdlbmV6YSByYW1hbmkga3dhIGFqaWxpIHlhIGRhdGEgemEgbWFvbWJpIHppbmF6b2luZ2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0t1dW5nYW5pc2hhIGRhdGEgemEgbWFqaWJ1IHppbmF6b3Rva2EgbmplLic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1VzYW5pZGkgd2EgdXNpbWFtaXppIHdhIGtpcGVuZ2VsZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdCYWRpbGkgdWZhZmFudXppIHdhIHRhYmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnQmFkaWxpIHVmYWZhbnV6aSB3YSB0YWJha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnVmlwZW5nZWxlIHZ5YSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ2h1amEga3dhIGFqaWxpIHlhIG1hdGFiYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoYWd1YSB0YWJha2Ega3V0b2thIGt3ZW55ZSBvcm9kaGEgeWEga3V0ZW5nZW5lemEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGtpcHlhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUYWJha2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdWaXRlbmRvIHZ5YSB3aW5naSB2eWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1VuZ2FuaXNoYSBuYSBueWluZ2luZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmFtYmEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIG4gYmF0aWxpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOYW1iYSB5YSBraXBlbmdlbGUga2luZ2luZSBjaGEgdXNhbmlkaSBjaGEga3V1bmdhbmlzaGEgbmFjaG8uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnS3dlbGkgdW5hdGFrYSBrdWZ1dGEgbWFiYWRpbGlrbyBoYXlhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdKaW5hIGxhIGhpa2kga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdKaW5hIGhpbGkgdGF5YXJpIGxpbWVrd2lzaGEgdHVtaWthbmEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoZW55ZSBuYW1iYSBpKHopZnVhdGF6bzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOYW1iYSB5YSB0b2xlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSmluYSBsYSBoaWtpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0ppbmEgaGlsaSB0YXlhcmkgbGltZWt3aXNoYSB0dW1pa2FuYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hlbnllIG5hbWJhIGkoeilmdWF0YXpvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnSGFsaSB5YSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ01hdWRodWkgeWEgaGlzdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnTWFuZGhhcmkgaWxpeW9rdXp3YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdWaXBlbmdlbGUgdnlhIHVzYW5pZGkga3dhIGtpbGEgdWt1cnVzYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnVGFmdXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgVXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdUYWFyaWZhIHphIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEgeWEgc2FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyBsYSBzYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ013aXNobyBrdWJhZGlsaXNod2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTXdpc2hvIGt1YmFkaWxpc2h3YSBuYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1VuYXRha2Ega3VlbmRlbGVhPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnS2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ01hcmVqZW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdVZW5kZXNoYWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdPbnlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVHVraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0hhbGkgeWEgbWF0dW1pemkgeWEgaGlpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdIYWxpIHlhIHR1a2lvIHlhIGhpa2kga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSGFrdW5hIHJ1aHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEgdHVraW8gbGEgc2FzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdLYXRpa2F0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ0tpbWEgY2hhIGp1dSBjaGEgbmFtYmEgeWEgZWxlbWVudGkgbW9qYXdhcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnSW1laXNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hdGVuZ2VuZXpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnS3dhbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdJbGl5b3Bhbmd3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZWtlYmlzaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1N0YWFmdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdNYXBpdGlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdKYXJpYmlvLyBNYXN3YWxpIG5hIE1hamlidSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQW5nYWxpYSBtYWppbmEgeWEga2lwZWtlZSB0dSBrYXRpa2EgdGFiYWthIHNhd2EgbGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIChcJ1RhYmFrYVwnKSBhdSB6b3RlIChcJ1pvdGVcJyksIGFtYmF5byBpbmFtYWFuaXNoYSBraWxhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBraWxpY2hvcG8ga2ltZWp1bXVpc2h3YSB3YWthdGkgbmFrYWxhIHBhY2hhIHppbmFhbmdhbGl3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdWaXBlbmdlbGUgdnlhIHVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhbmlkaSBtb2R1bGkgeWEgdHVraW8geWEga2lwZW5nZWxlIGFtYmFjaG8ga2luYXdlemVzaGEga3VpbmdpYSBrYXRpa2EgaGlzdG9yaWEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tpa29tbyBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tpcGFuZ2EgbmppYSBjaGEgbWF6aW5naXJhIHlhIG55dW1hIGNoYSB1dGFmdXRhamkgd2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBraW9sZXN1cmEgY2hhIHdha2FsYS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdUZW5nZW5lemEgbmEgc2ltYW1pYSB1ZmFmYW51emkgd2EgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0YSBjaGFndW8gbWlzbmdpIGt1dHVtaWthIGthdGlrYSBzaWZhIGt3YSBhamlsaSB5YSBza3JpbmkgeWEga3V0YWZ1dGEgeWEgdGlrZXRpLgpNZmFubzoKIlVtYml6byBsYSBNdWRhIGxhIEt1dGVuZ2VuZXphIFRpa2V0aT0gbXdha2E7IE13YW56byB3YSBNdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0gTXdpc2hvOyBQb2ludGkgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGEgY2hhZ3VvLW1zaW5naSBrdXR1bWlhIGthdGlrYSBzaWZhIGt3YSBhamlsaSB5YSBza3JpbmkgeWEga3V0YWZ1dGEgeWEgdGlrZXRpOgoiTXdha2Egd2Ega3VhbnphIHdhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpPTIwMTA7IE13ZXppIHdhIGt1YW56YSB3YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0xMDsgU2lrdSB5YSBrdWFuemEgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9NDsgTXdha2Egd2Ega3VhY2hhIHdhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpID0yMDEwOyBNd2V6aSB3YSBrdWFjaGEgd2EgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGkgPSAxMTsgU2lrdSB5YSBrdWFjaGEgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9MzsgIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1cGF0YXZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBydWh1c2EgemluYXpvaGl0YWppa2Ega3VwYXRhdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZ5YSBJVFNNIGt3YSBrdXR1bWlhIGtpb2xlc3VyYSBjaGEgamVuZXJpa2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHJ1aHVzYSB6aW5hem9oaXRhamlrYSBrdXRhZnV0YSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdnlhIElUU00ga3dhIGt1dHVtaWEga2lvbGVzdXJhIGNoYSBqZW5lcmlraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1cGF0YXZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1vZHVsaSB5YSBtYXBpdGlvIGt1b255ZXNoYSBtYW5kaGFyaSBuZG9nbyB5YSBvcm9kaGEgeWEgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2VtaSB6YSBtYXJhIGt3YSBtYXJhIG1vamFtb2phIGt3YSBraWxhIHRhYmFrYSBsYSBraXBlbmdlbGUgY2ggdXNhbmlkaSBrdWFuZ2FsaWEgamluYSBsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgbmEga3Vvbnllc2hhIHVqdW1iZSB3YSBtYWtvc2EgeWFuYXlvaHVzaWFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrd2EgYWppbGkgeWEga3VwYW5nYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB3YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrd2EgYWppbGkgeWEga3VwYW5nYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB3YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGNoYWd1by1tc2luZ2kga3dhIGFqaWxpIHlhIGt1cGFuZ2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgd2EgdGlrZXRpIHlhIHVlbmRlc2hhamkgaHV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtcGFuZ2lsaW8gd2EgdGlrZXRpIGNoYWd1by1tc2luZ2kga2F0aWthIG1hdG9rZW8geWEgdXRhZnV0YWppIHlhIHRpa2V0aSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogWmEgc2FzYSBqdXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1wYW5naWxpbyB3YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrYXRpa2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgeWEgdGlrZXRpIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IFphIHNhc2EganV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGlsaXlvdGFmdXR3YSBpbGl5b29ueWVzaHdhIGNoYWd1byBtc2luZ2kga3dhIHNrcmluaSB5YSBrdXRhZnV0YSB0aWtldGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGlsaXlvdGFmdXR3YSBpbGl5b29ueWVzaHdhIGNoYWd1byBtc2luZ2kga3dhIHNrcmluaSB5YSBrdXRhZnV0YSB0aWtldGkuIE1mYW5vOiAiS2lib255ZSIgbGF6aW1hIGl3ZSBuYSBqaW5hIGxhIHVnYSB3ZW55ZSBuZ3V2dSBrd2EgaGFwYSBuaSBcJ1hcJywgIk1hdWRodWkiIGxhemltYSBpd2UgbmEgdGhhbWFuaSB1YSB1Z2Egd2VueWUgbmd1dnUga3V0ZWdlbWVhbmEgbmEgYWluYSB5YSB1Z2Egd2VueWUgbmd1dnUsIE1hdGluaTpcJ01hdGluaVwnLCBLdW5qdXppOiBcJzFcJywgVGFyZWhlL011ZGE6ICBNd2FrYSB3YSBrdWFuemEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2E9MTk3NDsgTXdlemkgd2Ega3VhbnphIHdhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhPTAxOyBTaWt1IHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YT0yNjsgU2FhIHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MDA7IERha2lrYSB5YSBrdWFuemEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPSAwMDsgU2VrdW5kZSB5YSBrdWFuemEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPSAwMDsgTXdha2Egd2Ega3Vpc2hhIHdhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0yMDEzOyBNd2V6aSB3YSBrdWlzaGEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTAxOyBTaWt1IHlhIGt1aXNoYSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MjY7IFNhYSB5YSBrdWlzaGEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTIzOyBEYWtpa2EgeWEga3Vpc2hhIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID01OTsgU2VrdW5kZSB5YSBrdWlzaGEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTU5OyBuYSBhdSBVbWJpem8gbGEgcG9pbnRpIHlhIG11ZGEgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0gV2VlazsgTXdhbnpvIHdhIHBvaW50aSB5YSBtdWRhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IEthYmxhOyBUaGFtYW5pIHlhIHBvaW50aSB5YSBtdWRhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IDc7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpcGVuZ2VsZSBjaGEgY2hhZ3VvIG1zaW5naSBjaGEgdGFiYWthIGxhIFwnS2lwZW5nZWxlY2hhIFVzYW5pZGkgY2hhIElUU01cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHVyZWZ1IGt3YSBraWplbnppIGNoYSBtaGFyaXJpIHdhIG1hdGluaSB0YWppbmkga3dhIHNrcmluaSBoaWkuIEluZ2l6YSBuYW1iYSAoUGlrc2VsaSkgYXUgdGhhbWFuaSB5YSBhc2lsaW1pYSAoSW5heW9odXNpa2EpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG5hbWJhIHlhIHNhZnUgbWxhbG8ga3dhIG1oYXJpcmkgd2EgdWZhZmFudXppIHdhIENJIGthdGlrYSBraW9sZXN1cmEgY2hhIGtpb25nb3ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEgdXBlbyB3YSBrdXRhZnV0YSBrd2Egc2tlcmluaSB5YSBLaXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpa29tbyBjaGEga3V0YWZ1dGEga3dhIHNrcmluaSB5YSBLdXRhZnV0YSBLaXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gIGNoYSBXYWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSB1cGVvIHdhIGt1dGFmdXRhIGt3YSBza2VyaW5pIHlhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lrb21vIGNoYSBrdXRhZnV0YSBrd2Egc2tyaW5pIHlhIEt1dGFmdXRhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSAgY2hhIFdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNhZnUgd2ltYSB6YSBDSSB6aWxpem9vbnllc2h3YSBrYXRpa2EgbWFuZGhhcmkgeWEgamVkd2FsaSB0YXRhIGxhIGtpdW5nbyxrdXRlZ2VtZWFuYSBuYSB0YWJha2EgbGEgQ0kuIEtpbGEgaW5naXpvIGxhemltYSBsaXdlIG5hIGtpYW1iaXNoaSBhd2FsaSBqaW5hIGxhIHRhYmFrYSBuYSA6OiAoIG1mYW5vIFRhcmFraWxpc2hpOjopLkt1bmEgdml1bWJpIHZpY2hhY2hlIHZ5YSBDSSBhbWJhdnlvIHZpcG8ga3dhIENJIHpvdGUgKG1mYW5vIGt3ZW55ZSB0YWJha2EgbGEgdGFyYWtpbGlzaGk6IHRhcmFraWxpc2hpOjpqaW5hLCBUYXJha2lsaXNoaTo6SGFsaSB5YUN1ckRlcCwgVGFyYWtpbGlzaGk6Ok11ZGEgd2Ega3V0ZW5nZW5lemEpLiBLdW9ueWVzaGEga2l1bWJpIGNoYSBDSSBraW1vamEga2ltb2phIGthbWEgdmlsaXZ5byBmYWZhbnVsaXdhIGt3ZW55ZSB1ZmFmYW51emkgd2EgQ0ksIG1wYW5naWxpbyB1ZnVhdGFvIGxhemltYSB1dHVtaWtlIChtZmFubyBrd2VueWUgdGFiYWthIHRhcmFraWxpc2hpKTogVGFyYWtpbGlzaGk6OmRpc2tpIGt1dTo6MSwgVGFyYWtpbGlzaGk6OkRpc2tpIGt1dSBuZ3VtdTo6MVV3ZXpvOjoxLCBUYXJha2lsaXNoaTo6RGlza2kga3V1IG5ndW11OjoyLCBUYXJha2lsaXNoaTo6RGlza2kga3V1IG5ndW11OjoyOjpVd2V6bzo6MS4gS2FtYSBoYWt1bmEgaW5naXpvIGt3YSB0YWJha2EgbGEgQ0ksIHNhZnV3aW1hIGNoYWd1byBtc2luZ2kgemluYW9ueWVzaHdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0luYWZhZmEgdmlwZW5nZWxlZSBhbWJhdnlvIHZpbmFwYXRpa2FuYSBrd2EgYWppbGkgeWEgXCdLaXRlbmRvXCcga2F0aWthIG5nYXppIHlhIHRhdHUgeWEgbXV1bmRvIHdhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHZpcGVuZ2VsZSBhbWJhdnlvIHZpbmFwYXRpa2FuYSBrYXRpa2EgbmdhemkgeWEga3dhbnphIHlhIG11dW5kbyB3YSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgdmlwZW5nZWxlIGFtYmF2eW8gdmluYXBhdGlrYW5hIGthdGlrYSBuZ2F6aSB5YSBwaWxpIHlhIG11dW5kbyB3YSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS2lwZW5nZWxlIGNoYSBVc2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnSGFsaSB5YSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0hhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdOYWthbGEgcGFjaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lueWVzaGEgdWdhIHphIGtpY2h3YSBjaGEgaGFiYXJpIGthdGlrYSBza3JpbmkgeWEgdWdhIHdhIElUU00gdWxpb29uZ2V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lueWVzaGEgdWdhIHphIGtpY2h3YSBjaGEgaGFiYXJpIGthdGlrYSBza3JpbmkgeWEgdWdhIHdhIElUU00gdWxpb29uZ2V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lueWVzaGEgdWdhIHphIGtpY2h3YSBjaGEgaGFiYXJpIGthdGlrYSBza3JpbmkgeWEgdWdhIHdhIElUU00gdWxpb29uZ2V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEga2lwZW5nZWxlIGNoYSBraXRlbmRvIGNoIHdpbmdpIGNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga3dhIG1haW5naXJhIHlhIG1iZWxlIHlhIHdha2FsYSBrdWZhbnlhIGthemkga2F0aWthIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB6YWlkaSB5YSBraW1vamEga3dhIG11ZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdJbmF3ZXplc2hhIGtpcGVuZ2VsZSBjaGEga2l0ZW5kbyBjaGEgd2luZ2kgY2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrd2EgbWFrdW5kaSB5YWxpeW9vcm9kaGVzaHdhIHR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdVc2FqaWxpIHdhIG1vZHVsaSB5YSBraW9sZXN1cmEgY2hhIGp1bWxhIGt3YWFqaWxpIGxhIHRhYmFrYSBsYSBraWhhbXNoYWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1VzYWppbGkgd2EgbW9kdWxpIHlhIGtpb2xlc3VyYSBjaGEganVtbGEga3dhYWppbGkgbGEgdGFiYWthIGxhIGtpaGFtc2hhamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1VzYWppbGkgd2EgbW9kdWxpIHlhIGtpb2xlc3VyYSBjaGEganVtbGEga3dhYWppbGkgbGEgdGFiYWthIGxhIGtpaGFtc2hhamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHdhIHRpa2V0aSB6aXRha2F6byBvbnllc2h3YSBrYXRpa2EgbWF0b2tlbyB5YSBtY2hha2F0byBodXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxpIHlhIGt1YW5nYWxpYSBtYWt1bmRpIHlhbmF5b2h1c2lrYSBuYSB0YWJha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHlhIGt1YW5nYWxpYSBtYWt1bmRpIHlhbmF5b2h1c2lrYSBuYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxpIHlhIGt1dGVuZ2VuZXphIHRha3dpbXUgemEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNPic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHRhIHRpa2V0aSB6aXRha2F6b29ueWVzaHdhIGthdGlrYSBraWxhIHVrdXJhc2Egd2EgbWF0b2tlbyB5YSB1dGFmdXRhamkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB0YSB0aWtldGkgeml0YWthem9vbnllc2h3YSBrYXRpa2Ega2lsYSB1a3VyYXNhIHdhIG1hdG9rZW8geWEgdXRhZnV0YWppIGthdGlrYSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnTWFwaXRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIHJhbmdpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgbWZhbm8gcnVodXNhIHphIHZpa3VuZGkga3dhIHNpZmEgemEga2F0YWxvZ2kgemEgdWp1bWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIHVrdXJhc2EgKGFtYmF2eW8gdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZpbWVvbnllc2h3YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGt1dGFmdXRhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBrdXRhZnV0YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga3V0YWZ1dGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgaWxpeW9rdXp3YSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGtpbGljaG9vbmdlemEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGtpbGljaG9oYXJpcml3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGNoYSBoaXN0b3JpYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEga3VjaGFwaXNoYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdVcGVuZGVsZW8gdW5hb3Rha2l3YSBpbGkga3VmdXRhIG1hYmFkaWxpa28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIGhhbGkgeWEga3V0dW1pYSBrYXRpa2Egc2tyaW5pIHlhIHdpbmdpIHdhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSBoYWxpIHlhIHR1a2lvIGthdGlrYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2lvbmdvIGthdGlrYSBtZW55dSBhbWJhY2hvIGtpbmF1bmdhbmlzaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIG5hIGtpcGVuZ2VlIGtpbmdpbmUga2F0aWthIG1hbmRoYXJpIGlsaXlva3V6d2EgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xldXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrd2VueWUgIG1lbnl1IGt1d2V6YSBrdWZpa2lhIGhpc3RvcmlhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFwaXRpbyB5YSBraXBlbmdlbGUgeWEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga3dlbnllICBtZW55dSBrdXdlemEga3VmaWtpYSBoaXN0b3JpYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3VoYXJpcmkgIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSBpbGl5b2t1endhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1dG9hIG5ha2FsYSBwYWNoYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hcGl0aW8geWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3V0b2EgbmFrYWxhIHBhY2hhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1aGFyaXJpICBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGt3ZW55ZSBtZW55dSBpbGkga3VydWRpIG55dW1hIGt3ZW55ZSBtdW9uZWthbm8gd2EgbWFiYWRpbGlrbyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1Y2hhcGlzaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIGlsaXlva3V6d2EgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1a3V6YSBrYXRpa2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYXBpdGlvIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYWxsIGJvdGggcm8gYW5kIHJ3IGNvbmZpZyBpdGVtcyBpbiB0aGUgY29uZmlnIGl0ZW0gdmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBoaXN0b3JpYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgKGt3YSBtcGFuZ2lsaW8gd2Ega3VydWRpIG55dW1hKSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnS2l0YW1idWxpc2hpIGNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGksIG1mYW5vLkNvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBDaGFndS1tc2luZ2kgbmkgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnVGFiYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdVaGFzaWJ1IHdhIG11ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1V0YXdhbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0plbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdLaW9sZXN1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VuZW8ga2F6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdQcm9ncmFtdSB5YSBidXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0JvYWJvbnllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdLb21weXV0YSB5YSBta29ub25pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNZmFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnS2lwYW55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTXRhbmRhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0VuZ2luZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnTWF0b2tlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0NodW1iYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0t1YmFsaWFubyB5YSBraXZhbmdvIGNoYSBodWR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0tpd2FuZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/th_TH_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+C5geC4nOC4meC4l+C4teC5iOC4quC4s+C4q+C4o+C4seC4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4guC4suC5gOC4guC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+C5geC4nOC4meC4l+C4teC5iOC4quC4s+C4q+C4o+C4seC4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C4leC4reC4muC4quC4meC4reC4h+C4l+C4teC5iOC4quC5iOC4h+C4reC4reC4gSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4oyBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+C4meC4tOC4ouC4suC4oeC4guC4reC4h+C4hOC4peC4suC4quC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn4LiZ4Li04Lii4Liy4Lih4LiC4Lit4LiH4LiE4Lil4Liy4Liq4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn4LiV4Lix4Lin4LiB4Lij4Lit4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+C5gOC4peC4t+C4reC4geC4hOC4peC4suC4quC4iOC4suC4geC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4quC4o+C5ieC4suC4hyBDb25maWcgSXRlbSDguYPguKvguKHguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfguITguKXguLLguKonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKHguILguK3guIcgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguLjguIHguLLguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4LmE4Lib4LiX4Li14LmI4Lit4Li34LmI4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfguIjguLPguJnguKfguJnguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLLguYTguKHguYjguJbguLnguIHguJXguYnguK3guIchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+C4iOC4s+C4meC4p+C4meC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4reC4t+C5iOC4meC5huC4l+C4teC5iOC4leC5ieC4reC4h+C4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4hyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4peC4mkNoYW5nZSDguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyDguIrguLfguYjguK3guILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYlcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn4LiK4Li34LmI4Lit4LiX4Li14LmI4LiW4Li54LiB4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmC4LiU4LiiIENvbmZpZ0l0ZW1zIOC4oeC4teC4iOC4s+C4meC4p+C4meC4lOC4seC4h+C4leC5iOC4reC5hOC4m+C4meC4teC5iSAocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmA4Lin4Lit4Lij4LmM4LiK4Lix4LmJ4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguIrguLfguYjguK3guILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYlcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+C4iuC4t+C5iOC4reC4l+C4teC5iOC4luC4ueC4geC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5guC4lOC4oiBDb25maWdJdGVtcyDguKHguLXguIjguLPguJnguKfguJnguJTguLHguIfguJXguYjguK3guYTguJvguJnguLXguYkgKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Lib4Lij4Liw4Lin4Lix4LiV4Li0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfguYDguKfguKXguLLguJfguLXguYjguKrguKPguYnguLLguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54LihJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NvbmZpZyBJdGVtcyDguYPguJnguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4hOC5ieC4meC4q+C4sic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn4LiC4LmJ4Lit4Lih4Li54Lil4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC4m+C4seC4iOC4iOC4uOC4muC4seC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmM4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4peC5iOC4suC4quC4uOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfguIHguLLguKPguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguKXguYjguLLguKrguLjguJTguYLguJTguKInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfguITguLjguJPguJXguYnguK3guIfguIHguLLguKPguJTguLPguYDguJnguLTguJnguIHguLLguKPguJXguYjguK3guYTguJvguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ+C4leC5ieC4reC4h+C4geC4suC4oyBFeGFtcGxlUHJvY2Vzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn4LmE4Lih4LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmB4Liq4LiU4LiH4Lib4Lij4Liw4Lin4Lix4LiV4Li0IOC5hOC4oeC5iOC5hOC4lOC5ieC4o+C4seC4miBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfguYTguKHguYjguKrguLLguKHguLLguKPguJbguYHguKrguJTguIfguJvguKPguLDguKfguLHguJXguLQg4LmE4Lih4LmI4LmE4LiU4LmJ4Lij4Lix4LiaIFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC5geC4quC4lOC4h+C4m+C4o+C4sOC4p+C4seC4leC4tCDguYTguKHguYjguYTguJTguYnguKPguLHguJogVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+C4reC5ieC4suC4h+C4reC4tOC4hyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn4LmE4Lih4LmI4Lih4Li14Lic4Lil4Lil4Lix4Lie4LiY4LmMISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfguIHguLLguKPguJTguLPguYDguJnguLTguJnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+C4hOC4s+C5gOC4leC4t+C4reC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ+C5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4LiB4Liy4Lij4LiC4Lit4LiHIGNvbmZpZyBpdGVtIOC4meC4teC5iSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guYDguKvguJXguLjguIHguLLguKPguJPguYzguILguK3guIcgY29uZmlnIGl0ZW0g4LiZ4Li1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn4LmE4Lih4LmI4LmE4LiU4LmJ4Lij4Lix4Lia4Lit4LiZ4Li44LiN4Liy4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4quC4luC4suC4meC4oOC4suC4nuC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfguJvguKPguLDguYDguKDguJfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguYzguIHguLLguKPguJPguYzguJvguLHguIjguIjguLjguJrguLHguJknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn4Lij4Liw4Lir4Lin4LmI4Liy4LiHJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn4LiI4Liz4LiZ4Lin4LiZ4Liq4Li54LiH4Liq4Li44LiU4LiC4Lit4LiH4Lir4LiZ4Li24LmI4LiH4Lit4Li44Lib4LiB4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+C4q+C4oeC4lOC4reC4suC4ouC4uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+C4geC4suC4o+C4lOC4ueC5geC4peC4o+C4seC4geC4qeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+C4geC4suC4o+C4meC4s+C4o+C5iOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn4LiB4Liy4Lij4Lin4Liy4LiH4LmB4Lic4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+C4i+C5iOC4reC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn4LmA4LiB4Lip4Li14Lii4LiTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+C4leC4seC4p+C4reC4ouC5iOC4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn4LiX4LiU4Liq4Lit4LiaL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfguJXguKPguKfguIjguKrguK3guJrguIrguLfguYjguK3guYDguInguJ7guLLguLDguYDguJfguYjguLLguJnguLHguYnguJnguJfguLXguYjguK3guKLguLnguYjguYPguJkgQ29uZmlnSXRlbSDguIrguLHguYnguJnguYDguJTguLXguKLguKfguIHguLHguJkgKOC4iuC4seC5ieC4mSkg4Lir4Lij4Li34Lit4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJfguLHguYnguIfguKvguKHguJQpIOC4i+C4tuC5iOC4h+C4q+C4oeC4suC4ouC4hOC4p+C4suC4oeC4p+C5iOC4skNvbmZpZ0l0ZW0g4LiX4Li14LmI4Lih4Li14Lit4Lii4Li54LmI4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiI4Liw4LiW4Li54LiB4LiZ4Liz4LmA4LiC4LmJ4Liy4Lia4Lix4LiN4LiK4Li14LmA4Lie4Li34LmI4Lit4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiL4LmJ4Liz4LiB4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlnIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYLguKHguJTguLnguKXguIHguLTguIjguIHguKPguKPguKHguILguK3guIdDb25maWcgaXRlbSDguJfguLXguYjguIrguYjguKfguKLguYPguKvguYnguYDguILguYnguLLguKrguLnguYjguKPguLDguJrguJrguJvguKPguLDguKfguLHguJXguLTguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guKrguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfguIHguLLguKPguIjguLPguIHguLHguJQgQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gSXRlbSDguITguYnguJnguKvguLIgYmFja2VuZCByb3V0ZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfguKrguKPguYnguLLguIfguYHguKXguLDguIjguLHguJTguIHguLLguKPguITguLPguJnguLTguKLguLLguKHguKrguLPguKvguKPguLHguJogQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn4LiC4LmJ4Lit4Lih4Li54Lil4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiX4Li14LmI4LiI4Liw4LmD4LiK4LmJ4LmD4LiZ4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinIOC4leC4seC4p+C4reC4ouC5iOC4suC4hzogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+C4guC5ieC4reC4oeC4ueC4peC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4l+C4teC5iOC4iOC4sOC5g+C4iuC5ieC5g+C4meC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4pyDguJXguLHguKfguK3guKLguYjguLLguIc6ICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4quC4tOC4l+C4mOC4tOC5jOC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C5gOC4reC4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNN4LmC4LiU4Lii4LmD4LiK4LmJ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguYDguK3guLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Liq4Li04LiX4LiY4Li04LmM4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU03guYLguJTguKLguYPguIrguYnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4quC4tOC4l+C4mOC4tOC5jOC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C5gOC4reC4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNN4LmC4LiU4Lii4LmD4LiK4LmJ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC5guC4oeC4lOC4ueC4peC4oOC4suC4nuC4o+C4p+C4oeC5g+C4meC4geC4suC4o+C5geC4quC4lOC4h+C4oeC4uOC4oeC4oeC4reC4h+C4guC4meC4suC4lOC5gOC4peC5h+C4geC4guC4reC4h+C4o+C4suC4ouC4geC4suC4oyAgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4meC4tOC4nuC4iOC4meC5jOC4l+C4seC5iOC4p+C5hOC4m+C5gOC4m+C5h+C4meC4o+C4suC4ouC4muC4uOC4hOC4hOC4peC5g+C4mUNvbmZpZ0l0ZW0g4LmB4LiV4LmI4Lil4Liw4LiK4Lix4LmJ4LiZIOC5gOC4nuC4t+C5iOC4reC4leC4o+C4p+C4iOC4quC4reC4muC4iuC4t+C5iOC4rSBDb25maWdJdGVtIOC5geC4peC4sOC5gOC4nuC4t+C5iOC4reC5geC4quC4lOC4h+C4guC5ieC4reC4hOC4p+C4suC4oeC4nOC4tOC4lOC4nuC4peC4suC4lOC4l+C4teC5iOC4quC4reC4lOC4hOC4peC5ieC4reC4h+C4geC4seC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4Lia4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJrguJXguLHguYvguKfguILguK3guIfguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJrguJXguLHguYvguKfguILguK3guIfguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguILguK3guIfguIHguLLguKPguJTguLPguYDguJnguLTguJnguIHguLLguKPguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4geC4suC4o+C4iOC4seC4lOC5gOC4o+C4teC4ouC4h+C5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C5g+C4meC4nOC4peC4peC4seC4nuC4mOC5jOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4p+C4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiB4Liy4Lij4LiI4Lix4LiU4LmA4Lij4Li14Lii4LiH4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Lil4Li54LiB4LiE4LmJ4LiyIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4p+C4l+C4teC5iOC5geC4quC4lOC4h+C4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LiX4Li14LmI4LiW4Li54LiB4LmB4Liq4LiU4LiH4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinIOC4leC4seC4p+C4reC4ouC5iOC4suC4hzogIuC4hOC4teC4ouC5jCIg4LiV4LmJ4Lit4LiH4Lih4Li14LiK4Li34LmI4Lit4LiC4Lit4LiH4Lif4Li04Lil4LiU4LmM4LmB4Lia4Lia4LmE4LiU4LiZ4Liy4Lih4Li04LiB4LmD4LiZ4LiB4Lij4LiT4Li14LiZ4Li14LmJ4LiE4Li34LitIFwnWFwnICAi4LmA4LiZ4Li34LmJ4Lit4Lir4LiyIiDguJXguYnguK3guIfguKHguLXguITguYjguLLguILguK3guIfguJ/guLTguKXguJTguYzguYTguJTguJnguLLguKHguLTguIHguIvguLbguYjguIfguILguLbguYnguJnguK3guKLguLnguYjguIHguLHguJrguJvguKPguLDguYDguKDguJfguILguK3guIfguJ/guLTguKXguJTguYzguYTguJTguJnguLLguKHguLTguIEg4LiC4LmJ4Lit4LiE4Lin4Liy4LihOiDguITguLfguK0gXCfguILguYnguK3guITguKfguLLguKFcJyAg4LmA4Lih4LiZ4Li54LmB4Lia4Lia4LmA4Lil4Li34LmI4Lit4LiZ4Lil4LiHOiBcJzFcJywgIOC4p+C4seC4meC4l+C4teC5iCAvIOC5gOC4p+C4peC4sjogU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguK3guJrguYDguIjguIHguJXguYzguKLguYjguK3guKLguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguITguKXguLLguKogXCdJVFNNQ29uZmlnSXRlbVwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lin4Liy4Lih4Liq4Li54LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lit4Lih4LmC4Lie4LmA4LiZ4LiZ4LiV4LmM4LmB4LiB4LmJ4LmE4LiC4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiZ4Li14LmJIOC5g+C4quC5iOC4q+C4oeC4suC4ouC5gOC4peC4giAo4Lie4Li04LiB4LmA4LiL4LilKSDguKvguKPguLfguK3guITguYjguLLguKPguYnguK3guKLguKXguLAgKOC5gOC4l+C4teC4ouC4miknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4LmB4LiW4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiV4Lix4Lin4LmB4LiB4LmJ4LmE4LiC4LiB4Liy4Lij4LiZ4Li04Lii4Liy4LihIENJIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4quC4guC4reC4h+C4nOC4ueC5ieC4lOC4ueC5geC4peC4o+C4sOC4muC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguLXguJTguIjguLPguIHguLHguJTguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK0gQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC4teC4lOC4iOC4s+C4geC4seC4lOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4rSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiC4Li14LiU4LiI4Liz4LiB4Lix4LiU4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4LitIEFnZW50SVRTTUNvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguLXguJTguIjguLPguIHguLHguJTguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC4reC4peC4seC4oeC4meC5jOC4l+C4teC5iOC5geC4quC4lOC4hyBDSXMg4LmD4LiZ4LiV4Liy4Lij4Liy4LiH4LiB4Liy4Lij4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4Lih4Li44Lih4Lih4Lit4LiH4LiX4Li14LmI4LiL4Lix4Lia4LiL4LmJ4Lit4LiZ4LiL4Li24LmI4LiH4LiC4Li24LmJ4LiZ4Lit4Lii4Li54LmI4LiB4Lix4Lia4LiE4Lil4Liy4LiqIENJIOC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4m+C5ieC4reC4meC5geC4leC5iOC4peC4sOC4o+C4suC4ouC4geC4suC4o+C4iOC4sOC4leC5ieC4reC4h+C4meC4s+C4q+C4meC5ieC4suC4lOC5ieC4p+C4ouC4iuC4t+C5iOC4reC4hOC4peC4suC4quC5geC4peC4sOC5gOC4hOC4o+C4t+C5iOC4reC4h+C4q+C4oeC4suC4ouC4l+C4p+C4tOC4oOC4suC4hOC4hOC4ueC5iCAo4LmA4LiK4LmI4LiZ4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOiA6KSDguKHguLXguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgQ0kg4LmA4Lie4Li14Lii4LiH4LmE4Lih4LmI4LiB4Li14LmI4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIOC4l+C4teC5iOC5g+C4iuC5ieC4geC4seC4meC4l+C4seC5iOC4p+C5hOC4m+C5g+C4mSBDSXMg4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJXguLHguKfguK3guKLguYjguLLguIfguKrguLPguKvguKPguLHguJrguITguKXguLLguKrguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6IOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64LiK4Li34LmI4LitLCDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OkN1ckRlcGxTdGF0ZSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjpDcmVhdGVUaW1lKSDguYPguJnguIHguLLguKPguYHguKrguJTguIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgQ0kg4LiV4Liy4Lih4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJ4LmD4LiZ4LiE4Liz4LiZ4Li04Lii4Liy4LihIENJIOC4iOC4sOC4leC5ieC4reC4h+C5g+C4iuC5ieC4o+C4ueC4m+C5geC4muC4muC4leC5iOC4reC5hOC4m+C4meC4teC5iSjguJXguLHguKfguK3guKLguYjguLLguIfguKrguLPguKvguKPguLHguJrguITguKXguLLguKrguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYwpOiDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4ruC4suC4o+C5jOC4lOC4lOC4tOC4quC4geC5jDo6MSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjE6OuC4hOC4p+C4suC4oeC4iOC4uDo6MSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjIsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoyOjrguITguKfguLLguKHguIjguLg6OjEg4Lir4Liy4LiB4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiE4Lil4Liy4Liq4LiX4Li14LmIIENJIOC5geC4peC5ieC4p+C4hOC4reC4peC4seC4oeC4meC5jOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4iOC4sOC5geC4quC4lOC4h+C4leC4suC4oeC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5ieC5g+C4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNQ29uZmlnSXRlbSA6OkZyb250ZW5kIDo6IEFnZW50SVRTTUNvbmZpZ0l0ZW0gIyMjIFNob3dDb2x1bW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiX4Li14LmI4LmD4LiK4LmJ4LmE4LiU4LmJ4Liq4Liz4Lir4Lij4Lix4LiaIFwn4LiB4Liy4Lij4LiB4Lij4Liw4LiX4LizXCcg4LmD4LiZ4Lij4Liw4LiU4Lix4Lia4LiX4Li14LmI4Liq4Liy4Lih4LiC4Lit4LiH4LmC4LiE4Lij4LiH4Liq4Lij4LmJ4Liy4LiHIEFDTCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4l+C4teC5iOC5g+C4iuC5ieC5hOC4lOC5ieC5g+C4meC4o+C4sOC4lOC4seC4muC5geC4o+C4geC4guC4reC4h+C5guC4hOC4o+C4h+C4quC4o+C5ieC4suC4hyBBQ0wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiX4Li14LmI4LmD4LiK4LmJ4LmE4LiU4LmJ4LmD4LiZ4Lij4Liw4LiU4Lix4Lia4LiX4Li14LmI4Liq4Lit4LiH4LiC4Lit4LiH4LmC4LiE4Lij4LiH4Liq4Lij4LmJ4Liy4LiHIEFDTCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn4LiL4LmJ4LizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKvguLHguKfguILguYnguK3guJ/guLTguKXguJTguYzguYPguJnguKvguJnguYnguLLguIjguK3guJ/guLTguKXguJTguYzguYDguJ7guLTguYjguKHguYDguJXguLTguKHguILguK3guIcgSVRTTeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKvguLHguKfguILguYnguK3guJ/guLTguKXguJTguYzguYPguJnguKvguJnguYnguLLguIjguK3guJ/guLTguKXguJTguYzguYDguJ7guLTguYjguKHguYDguJXguLTguKHguILguK3guIcgSVRTTeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKvguLHguKfguILguYnguK3guJ/guLTguKXguJTguYzguYPguJnguKvguJnguYnguLLguIjguK3guJ/guLTguKXguJTguYzguYDguJ7guLTguYjguKHguYDguJXguLTguKHguILguK3guIcgSVRTTeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKPguLLguKLguIHguLLguKPguITguLjguJPguKXguLHguIHguKnguJPguLDguILguK3guIfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKEg4Liq4Liz4Lir4Lij4Lix4Lia4Lif4Lij4Lit4LiZ4LiV4LmM4LmA4Lit4LiZ4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LmA4Lie4Li34LmI4Lit4LiX4Liz4LiH4Liy4LiZ4LiB4Lix4Lia4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LiX4Li14LmI4Lih4Li14Lih4Liy4LiB4LiB4Lin4LmI4Liy4Lir4LiZ4Li24LmI4LiH4LmD4LiZ4Lir4LiZ4Li24LmI4LiH4LiE4Lij4Lix4LmJ4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKPguLLguKLguIHguLLguKPguITguLjguJPguKXguLHguIHguKnguJPguLDguILguK3guIfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKHguYDguInguJ7guLLguLDguKrguLPguKvguKPguLHguJrguIHguKXguLjguYjguKHguJfguLXguYjguKPguLDguJrguLjguYTguKfguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEdlbmVyaWNJbnRlcmZhY2Ug4Liq4Liz4Lir4Lij4Lix4Lia4LiK4Lix4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Lij4LmJ4Lit4LiH4LiC4LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEdlbmVyaWNJbnRlcmZhY2Ug4Liq4Liz4Lir4Lij4Lix4Lia4LiK4Lix4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Lij4LmJ4Lit4LiH4LiC4LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBHZW5lcmljSW50ZXJmYWNlIOC4quC4s+C4q+C4o+C4seC4muC4iuC4seC5ieC4meC4guC4reC4h+C4nOC4ueC5ieC4o+C5ieC4reC4h+C4guC4rSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C5gOC4q+C4leC5jOC4geC4suC4o+C4k+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ+C5guC4oeC4lOC4ueC4peC5g+C4meC4geC4suC4o+C4leC4o+C4p+C4iOC4quC4reC4muC4nOC4ueC5ieC4o+C4seC4muC4nOC4tOC4lOC4iuC4reC4muC4geC4peC4uOC5iOC4oeC4quC4s+C4q+C4o+C4seC4muC4hOC4peC4suC4qic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ+C5guC4oeC4lOC4ueC4peC5g+C4meC4geC4suC4o+C4leC4o+C4p+C4iOC4quC4reC4muC4nOC4ueC5ieC4o+C4seC4muC4nOC4tOC4lOC4iuC4reC4muC4geC4peC4uOC5iOC4oeC4quC4s+C4q+C4o+C4seC4miBjb25maWd1cmF0aW9uIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfguYLguKHguJTguLnguKXguKrguKPguYnguLLguIfguKrguJbguLTguJXguLQgSVRTTSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lia4LiZ4LmB4LiV4LmI4Lil4Liw4Lir4LiZ4LmJ4Liy4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lia4LiZ4LmB4LiV4LmI4Lil4Liw4Lir4LiZ4LmJ4Liy4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfguKDguLLguJ7guKPguKfguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C4quC4teC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguJXguLHguKfguK3guKLguYjguLLguIfguIHguKXguLjguYjguKHguJfguLXguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJXguILguK3guIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYHguITguYfguJXguJXguLLguKXguYfguK3guIHguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYHguJXguYjguKXguLDguKvguJnguYnguLIo4LiL4Li24LmI4LiHIGNvbmZpZ3VyYXRpb24gaXRlbXMg4LmB4Liq4LiU4LiHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiL4Li54Lih4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LiB4Liy4Lij4LmA4Lie4Li04LmI4Lih4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguIHguLLguKPguYHguIHguYnguYTguILguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Lib4Lij4Liw4Lin4Lix4LiV4Li04LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguIHguLLguKPguJ7guLTguKHguJ7guYzguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ+C4quC4tOC4l+C4mOC4tOC4nuC4tOC5gOC4qOC4qeC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C4peC4muC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Liq4LiW4Liy4LiZ4Liw4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LmA4Lib4LmH4LiZ4LiB4Lil4Li44LmI4Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4leC4seC5ieC4h+C4hOC5iOC4suC4quC4luC4suC4meC4sOC4guC4reC4h+C5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4o+C4suC4ouC4geC4suC4o+C5gOC4m+C5h+C4meC4geC4peC4uOC5iOC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4peC4tOC4h+C4hOC5jOC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4geC4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jOC4reC4t+C5iOC4meC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5gOC4guC5ieC4suC4iuC4oeC4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiX4Lix4LmI4Lin4LmE4Lib4LiC4Lit4LiHY29uZmlndXJhdGlvbiBpdGVt4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5gOC4guC5ieC4suC4iuC4oeC4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LmB4LiB4LmJ4LmE4LiCIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4iOC4s+C4peC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiX4Lix4LmI4Lin4LmE4Lib4LiC4Lit4LiHY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LiI4Liz4Lil4Lit4LiHY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5geC4geC5ieC5hOC4giBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guIHguKXguLHguJrguYTguJvguKLguLHguIfguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguIHguLLguKPguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYPguJnguIHguLLguKPguJfguLXguYjguIjguLDguJ7guLTguKHguJ7guYwgY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4i+C4ueC4oeC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguJvguKPguLDguKfguLHguJXguLQgY29uZmlnIGl0ZW0gKOC4peC4s+C4lOC4seC4muC4ouC5ieC4reC4meC4geC4peC4seC4mikg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn4LiV4Lix4Lin4Lia4LmI4LiH4LiK4Li14LmJ4Liq4Liz4Lir4Lij4Lix4LiaICBDb25maWd1cmF0aW9uIEl0ZW0g4LmA4LiK4LmI4LiZIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jIOC4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4hOC4t+C4rSBDb25maWdJdGVtIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+C4hOC4peC4suC4qic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+C4geC4suC4o+C4quC4o+C5ieC4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ+C4i+C4teC4nuC4teC4ouC4uSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfguYDguJTguKrguJfguK3guJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn4Lif4Lij4Li14LmB4Lin4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+C5geC4m+C5ieC4meC4nuC4tOC4oeC4nuC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn4LmB4Lil4LmH4Lib4LiX4LmH4Lit4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfguYLguKHguYDguJTguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+C5gOC4oeC5ieC4suC4quC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn4Lit4Li34LmI4LiZ4LmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfguILguYnguK3guKHguLnguKXguJfguLXguYjguKrguYjguIfguK3guK3guIHguKHguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfguKvguYnguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfguILguYnguK3guJXguIHguKXguIfguKPguLDguJTguLHguJrguIHguLLguKPguYPguKvguYnguJrguKPguLTguIHguLLguKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+C4oeC4suC4leC4o+C4kOC4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/tr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lbCDDp2FsxLHFn21hIHZlcmlsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdHZWxlbiB0YWxlcCB2ZXJpbGVyaSBpw6dpbiBheWFybGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnR2lkZW4geWFuxLF0IHZlcmlsZXJpIGnDp2luIGF5YXJsYXInOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdLb25maWfDvHJhc3lvbiDDlsSfZXNpIFnDtm5ldGltaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1PEsW7EsWYgdGFuxLFtxLFuxLEgZGXEn2nFn3Rpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnUm9sIHRhbsSxbcSxbsSxIGRlxJ9pxZ90aXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgU8SxbsSxZiBQYWtldGxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdCdXJhZGEsIGVuIHlheWfEsW4geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbWl6aSBzZXJnaWxleWVuIFJlYWR5MkltcG9ydCBzxLFuxLFmIHBha2V0bGVyaW5pIGnDp2UgYWt0YXJhYmlsaXJzaW5pei4gQmF6xLEgZWsgeWFwxLFsYW5kxLFybWFsYXLEsW4gZ2VyZWtsaSBvbGFiaWxlY2XEn2luaSBsw7x0ZmVuIHVudXRtYXnEsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01ldmN1dCB2YXJsxLFrbGFyxLEgZ8O8bmNlbGxleWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQgc8SxbsSxZiBwYWtldGxlcmluaSBpw6dlIGFrdGFyxLFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ29uZmlnIMOWxJ9lIFPEsW7EsWbEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBSb2zDvCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ1PEsW7EsWZsYXIgacOnaW4gRmlsdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1llbmkgYmlyIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2kgb2x1xZ90dXJtYWsgacOnaW4gbGlzdGVkZW4gYmlyIFPEsW7EsWYgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1PEsW7EsWYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gVG9wbHUgRXlsZW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEYcSfxLF0xLFtIGR1cnVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ09sYXkgZHVydW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0RpxJ9lcmluZSBiYcSfbGFudMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdHZcOnZXJzaXogWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBudW1hcmFzxLEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0JhxJ9sYW50xLEga3VydWxhY2FrIGJhxZ9rYSBiaXIgWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pbiBudW1hcmFzxLEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGdlcsOnZWt0ZW4gc2lsbWVrIGlzdGl5b3IgbXVzdW51ej8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBhZMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdBZCwgYcWfYcSfxLFkYWtpIFNhecSxKGxhcilhIHNhaGlwIENvbmZpZ0l0ZW1zIHRhcmFmxLFuZGFuIHphdGVuIGt1bGxhbsSxbMSxeW9yOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1PDvHLDvG0gTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmluIHPDvHLDvG0gbnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnU8O8csO8bSBOdW1hcmFzxLEsIGHFn2HEn8SxZGFraSBOdW1hcmF5YS9OdW1hcmFsYXJhIHNhaGlwIENvbmZpZ0l0ZW1zIHRhcmFmxLFuZGFuIHphdGVuIGt1bGxhbsSxbMSxeW9yOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGHEn8SxdMSxbSBEdXJ1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdPbGF5IER1cnVtdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pbiBHZcOnbWnFn2k6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1RhcmloIMSww6dlcmnEn2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnU2F5ZmEgYmHFn8SxbmEgS29uZmlnw7xyYXN5b24gw5bEn2VsZXJpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHZlcmlzaSBidWx1bmFtYWTEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgc2XDp2luJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnQXJhbWEgw4dhbMSxxZ90xLFyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSBpw6dpbiBUcmVlVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RlcmlubGlrIFNldml5ZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWWFrxLFubGHFn3TEsXJtYS9VemFrbGHFn3TEsXJtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdDb25maWdJdGVtIGnDp2luIG1ha3NpbXVtIGJhxJ9sYW50xLEgZMO8emV5aW5lIHVsYcWfxLFsZMSxISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1lhcMSxbGFuZMSxcm1hIMOWxJ9lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBCaWxnaWxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTWV2Y3V0IERhxJ/EsXTEsW0gRHVydW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdNZXZjdXQgT2xheSBEdXJ1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU29uIGRlxJ9pxZ9pa2xpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTb24gZGXEn2nFn3RpcmVuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnQ29uZmlnSXRlbXMgw7bEn2VsZXJpbml6JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gQXJhbWEnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBxZ9hxJ/EsWRha2kgc8SxbsSxZmxhciBpw6dlIGFrdGFyxLFsYWNha3TEsXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQcWfYcSfxLFkYWtpIHJvbGxlciBpw6dlIGFrdGFyxLFsYWNha3TEsXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnxLBsZ2lsaSBkaW5hbWlrIGFsYW5sYXLEsW4gdmUgR2VuZXJhbENhdGFsb2cgc8SxbsSxZmxhcsSxbsSxbiBkYSBvbHXFn3R1cnVsYWNhxJ/EsW7EsSB2ZSBvdG9tYXRpayBvbGFyYWsga2FsZMSxcsSxbG1heWFjYcSfxLFuxLEgdW51dG1hecSxbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEZXZhbSBldG1layBpc3RpeW9yIG11c3VuPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfDlnJuZWsgU8SxbsSxZmxhcmEgxLBodGl5YcOnIFZhciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnVGFuxLFtIGdlw6dlcmxpIGJpciBZQU1MIGthcm1hc8SxIGRlxJ9pbGRpci4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdHZW5lbCBCYWvEscWfOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEIHZlcmlsbWVtacWfISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0VuIGF6IGJpciBzZcOnaWxpIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2luZSBpaHRpeWFjxLFuxLF6IHZhciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgeWF6bWEgZXJpxZ9pbWluaXogeW9rOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnU8SxbsSxZiAlcyBpw6dpbiB0YW7EsW1sYW1hIHlhcMSxbG1hZMSxISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSAiJXMiIHZlcml0YWJhbsSxbmRhIGJ1bHVuYW1hZMSxISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kga2ltbGnEn2kgJXMgc2lsaW5lbWVkaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBpw6dpbiBzw7xyw7xtIGJ1bHVuYW1hZMSxISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIHZleWEgQ2xhc3NJRCB2ZXJpbG1lbWnFn3RpciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0VyacWfaW0gaXpuaSB5b2shJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCB2ZXJpbG1lZGnEn2kgacOnaW4gZ2XDp21pxZ8gZ8O2c3RlcmlsZW1peW9yISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0dlw6dtacWfIGfDtnN0ZXJpbGVtaXlvciwgZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdZZW5pIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnWWVuaSBzw7xyw7xtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdEYcSfxLF0xLFtIGR1cnVtdSBnw7xuY2VsbGVuZGkgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdPbGF5IGR1cnVtdSBnw7xuY2VsbGVuZGkgKHllbmk9JXMsIGVza2k9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNpbGluZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdzICh0eXBlPSVzKSBiYcSfbGFudMSxc8SxIGVrbGVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ3MgKHR5cGU9JXMpIGJhxJ9sYW50xLFzxLEgc2lsaW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSB0YW7EsW3EsSBnw7xuY2VsbGVuZGkgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0FkIGfDvG5jZWxsZW5kaSAoeWVuaT0lcywgZXNraT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfDlnpuaXRlbGlrICVzICIlcyAiZGVuICIlcyAieWUgZ8O8bmNlbGxlbmRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1PDvHLDvG0gJXMgc2lsaW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQgdmV5YSBWZXJzaW9uSUQgdmVyaWxtZWRpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGfDtnN0ZXJpbGVtaXlvciwgZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIHZlcml0YWJhbsSxbmRhIGJ1bHVuYW1hZMSxISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnc1wnZGUgJXMgdGFyYWbEsW5kYW4geWF6ZMSxcsSxbGTEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJhbnMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdHZcOnZXJzaXogQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEIHZlcmlsbWVtacWfdGlyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0J1IHPEsW7EsWYgacOnaW4gZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ90aXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTb251w6cgeW9rISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ8O8cmFzeW9uIMOWxJ9lc2kgQXJhbWEgU29udcOnbGFyxLEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ8OWxJ9lIGfDtnN0ZXJpbGVtaXlvciwgQ29uZmlnSXRlbSBpw6dpbiBlcmnFn2ltIGhha2vEsSB2ZXJpbG1lbWnFnyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBidWx1bmFtYWTEsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnSGnDp2JpciB2ZXJzaXlvbiBidWx1bmFtYWTEsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXN5b25lbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndXlhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnb2xheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBkYcSfxLF0xLFtIGR1cnVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0J1IHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gb2xheSBkdXJ1bXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfEsHppbiB5b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJlIGdlw6dlcnNpeiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ0FyYW1hIHBhcmFtZXRyZWxlcmkgZ2XDp2Vyc2l6ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0fDtnN0ZXJpbGVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEYcSfxLF0xLFtIER1cnVtdSBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTWV2Y3V0IE9sYXkgRHVydW0gVMO8csO8JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0FyYXPEsW5kYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpw6dpbiBzxLFuxLFmIGvEsXPEsXRsYW1hbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1Nlw6dpbGViaWxpciB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBrxLFzxLF0bGFtYWsgacOnaW4gYmlyIHZleWEgZGFoYSBmYXpsYSBzxLFuxLFmIHNlw6dpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpw6dpbiBzxLFuxLFmIGvEsXPEsXRsYW1hbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZcOnaWxlYmlsaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkga8Sxc8SxdGxhbWFrIGnDp2luIGJpciB2ZXlhIGRhaGEgZmF6bGEgc8SxbsSxZiBzZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlrIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaXlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnQmHEn2xhbnTEsSBSZWZlcmFuc2xhbWEgVMO8csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0J1IGJhxJ9sYW50xLFuxLFuIENvbmZpZ0l0ZW0gacOnaW4gbWkgeW9rc2EgYmHFn3Z1cmFuIG5lc25lbmluIHN0YXRpayBzw7xyw7xtw7wgacOnaW4gbWkgZ2XDp2VybGkgb2xkdcSfdS4gR2XDp2VybGkgT2xheSBEdXJ1bXUgaGVzYXBsYW1hc8SxIHlhbG7EsXpjYSBkaW5hbWlrIGJhxJ9sYW50xLFsYXJkYSBnZXLDp2VrbGXFn3RpcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIGFyYW5hY2HEn8SxIMO2em5pdGVsacSfaSBzZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1RlbWVsIHlhcMSxIGdlw6dlcmxpIGRlxJ9pbC4gTMO8dGZlbiBZQU1MIGJpw6dpbWluZGUgdmVyaSBpw6dlcmVuIGJpciBrYXJtYSBnaXJpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MIGRpemVzaW5pbiBcJy0tLVwnIGlsZSBiYcWfbGFtYXPEsSBnZXJla2xpZGlyLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdjb25maWdpdGVtX2xpbmsgdGFibG9zdSB0ZW1pemxlbmVtZWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnxLBsZ2lsaSBkaW5hbWlrIGFsYW4gYnVsdW5hbWFkxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdjb25maWdpdGVtX2xpbmsgdGFibG9zdW5hIGVrbGVuZW1lZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGluayB0YWJsb3N1bmEgMCBzYXTEsXIgZWtsZW5kaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYWtzaW11bSBiaXIgZWxlbWFuIHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1PDvHLDvG0gRGl6ZXNpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ1RhbsSxbWxhciBzZW5rcm9uaXplIGVkaWxpcmtlbiBoYXRhIG9sdcWfdHUuIEzDvHRmZW4gZ8O8bmzDvMSfw7wga29udHJvbCBlZGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1Nlbmtyb25pemUgZWRpbG1lbWnFnyBJVFNNQ29uZmlnSXRlbSB0YW7EsW1sYXLEsW7EsXogdmFyLiBMw7x0ZmVuIElUU01Db25maWdJdGVtIGRpbmFtaWsgYWxhbiBkZcSfacWfaWtsaWtsZXJpbml6aSBkYcSfxLF0xLFuLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnU8O8cmVzaSBkb2xkdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0Jha8SxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFubcSxxZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnT25hcsSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnRW1la2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ8SwbmNlbGVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnR2VuZWwgQmFrxLHFnyB2ZSBPbmF5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ1PEsW7EsWZsYXLEsS9yb2xsZXJpIHZlIGlsZ2lsaSBhbGFubGFyxLEgacOnZSBha3Rhcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU8SxbsSxZiBpw6dlIGFrdGFyxLFtxLEgc8SxcmFzxLFuZGEgYmlyIGhhdGEgb2x1xZ90dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEdpemxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBHw7ZzdGVyaWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5kYSBnZW5pxZ9sZXRpbG1pxZ8gYXJhbWEga2/Fn3VsbGFyxLFuYSBpemluIHZlcmlyLiBCdSDDtnplbGxpayBzYXllc2luZGUsIMO2cm5lxJ9pbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFkxLFuxLEgIigqa2V5MSomKmtleTIqKSIgdmV5YSAiKCprZXkxKnwqa2V5MiopIiBnaWJpIGJ1IHTDvHIga2/Fn3VsbGFybGEgYXJheWFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hc8SxbmRhIGdlbmnFn2xldGlsbWnFnyBhcmFtYSBrb8WfdWxsYXLEsW5hIGl6aW4gdmVyaXIuIEJ1IMO2emVsbGlrIHNheWVzaW5kZSwgw7ZybmXEn2luIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYWTEsW7EsSAiKCphbmFodGFyMSomKmFuYWh0YXIyKikiIHZleWEgIigqYW5haHRhcjEqfCphbmFodGFyMiopIiBnaWJpIGJ1IHTDvHIga2/Fn3VsbGFybGEgYXJheWFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdBdGFubcSxxZ8gQ0lcJ2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdNw7zFn3RlcmkgxZ9pcmtldGUgYXRhbmFuIENJXCdsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdNw7zFn3Rlcmkga3VsbGFuxLFjxLF5YSBhdGFuYW4gQ0lcJ2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBBeWFybGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1lhbG7EsXpjYSBheW7EsSBDb25maWdJdGVtIHPEsW7EsWbEsSAoXCdjbGFzc1wnKSBpw6dpbmRlIHZleWEgZ2VuZWwgb2xhcmFrIChcJ2dsb2JhbFwnKSBiZW56ZXJzaXogYmlyIGFkIG9sdXAgb2xtYWTEscSfxLFuxLEga29udHJvbCBlZGluOyBidSwgeWluZWxlbmVubGVyaSBhcmFya2VuIG1ldmN1dCBoZXIgQ29uZmlnSXRlbVwnxLFuIGRpa2thdGUgYWzEsW5kxLHEn8SxIGFubGFtxLFuYSBnZWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0JpciBhZGxhbmTEsXJtYSDFn2VtYXPEsSB1eWd1bGFtYWsgacOnaW4gYmlyIG1vZMO8bCBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdCaXIgc2F5xLEgxZ9lbWFzxLFuxLEgdXlndWxhbWFrIGnDp2luIGJpciBtb2TDvGwgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdTw7xyw7xtIGRpemVzaSDFn2VtYXPEsW7EsSB1eWd1bGFtYWsgacOnaW4gYmlyIG1vZMO8bCBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnWWVuaSBiaXIgc8O8csO8bcO8biBvbHXFn3R1cnVsbWFzxLFuxLEgdGV0aWtsZW1layBpw6dpbiDDtnpuaXRlbGlrbGVyaSBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0J1IHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZsSxbmEgYXRhbmFjYWsga2F0ZWdvcmlsZXJpIHNlw6dpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb25maWdJdGVtIE92ZXJ2aWV3IGnDp2luIHPDvHR1biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGZpbHRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luZSBnZW5lbCBiYWvEscWfxLFuZGEgZmlsdHJlbGVuZWJpbGVuIHPDvHR1bmxhci4gTm90OiBZYWxuxLF6Y2EgWWFwxLFsYW5kxLFybWEgw5bEn2VzaSDDtnpuaXRlbGlrbGVyaW5lIHZlIERpbmFtaWsgQWxhbmxhcmEgKER5bmFtaWNGaWVsZF9OYW1lWCkgaXppbiB2ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZWxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGTDvHplbmxlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIGdlw6dtacWfZSBnw7xubMO8xJ9lIGtheWRldG1leWkgc2HEn2xheWFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgb2xheSBtb2TDvGzDvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkgZ2XDp2VybGkgdGFuxLFtbGFyxLFuYSBnw7ZyZSBnw7xuY2VsbGV5ZW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBvbGF5IG1vZMO8bMO8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2XDp21pxZ9pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlhemTEsXJtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlha8SxbmxhxZ90xLFybWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBBxJ9hw6cgR8O2csO8bsO8bcO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gU8O8csO8bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdBxZ9hxJ/EsWRha2kgc8SxbsSxZmxhcsSxbiBDb25maWdJdGVtcyDDtsSfZWxlcmkgRWxhc3RpY3NlYXJjaCBzdW51Y3VzdW5kYSBzYWtsYW5tYXlhY2FrdMSxci4gQnVudSBtZXZjdXQgQ0lcJ2xhcmEgdXlndWxhbWFrIGnDp2luLCBidSBzZcOnZW5layBkZcSfacWfdGlyaWxkaWt0ZW4gc29ucmEgQ0kgZ2XDp2nFn2luaW4ga29uc29sIMO8emVyaW5kZW4gw6dhbMSxxZ90xLFyxLFsbWFzxLEgZ2VyZWtpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQcWfYcSfxLFkYWtpIGRhxJ/EsXTEsW0gZHVydW1sYXLEsW5hIHNhaGlwIENvbmZpZ0l0ZW1zLCBFbGFzdGljc2VhcmNoIHN1bnVjdXN1bmRhIGRlcG9sYW5tYXlhY2FrdMSxci4gQnVudSBtZXZjdXQgQ0lcJ2xhcmEgdXlndWxhbWFrIGnDp2luLCBidSBzZcOnZW5layBkZcSfacWfdGlyaWxkaWt0ZW4gc29ucmEgQ0kgZ2XDp2nFn2luaW4ga29uc29sIMO8emVyaW5kZW4gw6dhbMSxxZ90xLFyxLFsbWFzxLEgZ2VyZWtpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBTxLFuxLFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ8O8cmFzeW9uIFNheWZhIGJhxZ/EsW5hIMO2xJ9lIHPEsW7EsXLEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ8O8cmFzeW9uIFnDtm5ldGltaSBWZXJpdGFiYW7EsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgbW9kw7xsw7wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgYXJrYSB1w6cgecO2bmxlbmRpcmljaXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VsZXJpIGnDp2luIHRhbsSxbWxhciBvbHXFn3R1cnVuIHZlIHnDtm5ldGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0JlbGlybGkgemFtYW4gbm9rdGFsYXLEsW5kYSBDb25maWdJdGVtcyBpw6dpbiBCaWxldGxlciBvbHXFn3R1cnVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdNw7zFn3RlcmlsZXIgZ2XDp21pxZ8gQ0kgc8O8csO8bWxlcmluaSBnw7ZyZWJpbGlybGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdNw7zFn3RlcmlsZXIsIGdlw6dtacWfIENJIHPDvHLDvG1sZXJpIGFyYXPEsW5kYSBtYW51ZWwgb2xhcmFrIGdlw6dpxZ8geWFwbWEgb2xhbmHEn8SxbmEgc2FoaXB0aXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxIGnDp2luIMO2em5pdGVsaWt0ZSBrdWxsYW7EsWxhY2FrIHZhcnNhecSxbGFuIHZlcmlsZXIuIMOWcm5lazogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLEgacOnaW4gw7Z6bml0ZWxpa3RlIGt1bGxhbsSxbGFjYWsgdmFyc2F5xLFsYW4gdmVyaWxlci4gw5ZybmVrOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnQmHEn2xhbnTEsWzEsSBuZXNuZWxlciB3aWRnZXRcJ8SxbmRhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikgYmlyIGF5YXIgZMO8xJ9tZXNpbmluIG1ldmN1dCBvbGR1xJ91IEV5bGVtbGVyaSB0YW7EsW1sYXnEsW4uIEzDvHRmZW4gYnUgRXlsZW1sZXJpbiBhxZ9hxJ/EsWRha2kgSlMgdmUgQ1NTIGRvc3lhbGFyxLFuxLEga2F5ZGV0bWnFnyBvbG1hc8SxIGdlcmVrdGnEn2luaSB1bnV0bWF5xLFuOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB2ZSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdTw7xyw7xtIGRpemVsZXJpIGnDp2luIGJpciBUZW1wbGF0ZTo6VG9vbGtpdCDFn2VtYXPEsSB0YW7EsW1sYXnEsW4uIFlhbG7EsXpjYSBTw7xyw7xtIERpemVzaSBNb2TDvGzDvCBUZW1wbGF0ZVRvb2xraXQgb2xhcmFrIGF5YXJsYW5txLHFn3NhIGt1bGxhbsSxbMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0JpciBtw7zFn3RlcmluaW4gYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSBnw7ZybWVzaW5lIGl6aW4gdmVyaWxlbiBiaXIgZGl6aSBrb8WfdWwgdGFuxLFtbGF5xLFuLiBLb8WfdWxsYXIgaXN0ZcSfZSBiYcSfbMSxIG9sYXJhayBiZWxpcmxpIG3DvMWfdGVyaSBncnVwbGFyxLF5bGEgc8SxbsSxcmxhbmTEsXLEsWxhYmlsaXIuIEFkIHRlayB6b3J1bmx1IG5pdGVsaWt0aXIuIEJhxZ9rYSBiaXIgc2XDp2VuZWsgYmVsaXJ0aWxtZXpzZSwgdMO8bSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmkgYnUga2F0ZWdvcmkgYWx0xLFuZGEgZ8O2csO8bsO8ciBvbGFjYWt0xLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZWwgQXJhecO8esO8IGt1bGxhbmFyYWsgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBzaWxtZWsgacOnaW4gR2VyZWtsaSBpemlubGVyaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lbCBBcmF5w7x6w7wga3VsbGFuYXJhayBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGFsbWFrIGnDp2luIEdlcmVrbGkgaXppbmxlcmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZWwgQXJhecO8esO8IGt1bGxhbmFyYWsgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBhcmFtYWsgacOnaW4gR2VyZWtsaSBpemlubGVyaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lbCBBcmF5w7x6w7wga3VsbGFuYXJhayBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGF5YXJsYW1hayBpw6dpbiBHZXJla2xpIGl6aW5sZXJpIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgbGlzdGVzaW5pbiBrw7zDp8O8ayBnw7Zyw7xuw7xtw7xuw7wgZ8O2c3Rlcm1layBpw6dpbiBiaXIgZ2VuZWwgYmFrxLHFnyBtb2TDvGzDvCB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0JhxJ9sYW50xLEgdMO8csO8IGV0aWtldGxlcmluaW4gZMO8xJ/DvG0gYmHEn2xhbnTEsWxhcsSxbmRhIGfDtnN0ZXJpbGlwIGfDtnN0ZXJpbG1leWVjZcSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW0gYWTEsW7EsSBkZW5ldGxlbWVrIHZlIGlsZ2lsaSBoYXRhIGlsZXRpbGVyaW5pIGfDtnN0ZXJtZWsgacOnaW4gaGVyIENvbmZpZ0l0ZW0gc8SxbsSxZsSxIGnDp2luIGF5csSxIGF5csSxIGTDvHplbmxpIGlmYWRlbGVyIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSBzxLFuxLFmxLFuYSBiYcSfbMSxIG9sYXJhayB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlbmVsIGfDtnLDvG7DvG3DvG5kZWtpIGt1bGxhbsSxbGFiaWxpciBDSSBzw7x0dW5sYXLEsW7EsSB0YW7EsW1sYXIuIEhlciBnaXJpxZ8gYmlyIHPEsW7EsWYgYWTEsSB2ZSBpbGdpbGkgc8SxbsSxZiBpw6dpbiBrdWxsYW7EsWxhYmlsaXIgYWxhbmxhcmRhbiBvbHXFn2FuIGJpciBkaXppZGVuIG9sdcWfbWFsxLFkxLFyLiBEaW5hbWlrIGFsYW4gZ2lyacWfbGVyaSBEeW5hbWljRmllbGRfRmllbGROYW1lIMWfZW1hc8SxbmEgdXltYWsgem9ydW5kYWTEsXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIHNvbnVjdW51biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhbGFtYXPEsSBpw6dpbiB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIMO2em5pdGVsacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bnVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFsYW1hc8SxIGnDp2luIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7Z6bml0ZWxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0J1IGnFn2xlbWluIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bnVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFsYW1hc8SxIGnDp2luIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7Z6bml0ZWxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VuZGFraSB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhc8SxbsSxIHRhbsSxbWxhci4gWXVrYXLEsTogZW4gZXNraSBlbiDDvHN0dGUuIEHFn2HEn8SxOiBlbiBzb24gw7xzdHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VuZGFraSB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhc8SxbsSxIHRhbsSxbWxhci4gWXVrYXLEsTogZW4gZXNraSBlbiDDvHN0dGUuIEHFn2HEn8SxOiBlbiBzb24gw7xzdHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGUgQ0lcJ2xhcsSxbiB2YXJzYXnEsWxhbiBnw7Zyw7xudMO8bGVuZW4gc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfIGJpciBzxLFuxLFmIGFkxLEgdmUgaWxnaWxpIHPEsW7EsWYgacOnaW4ga3VsbGFuxLFsYWJpbGlyIGFsYW5sYXLEsW4gYmlyIGRpemlzaW5kZW4gb2x1xZ9tYWzEsWTEsXIuIERpbmFtaWsgYWxhbiBnaXJpxZ9sZXJpIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgxZ9lbWFzxLFuYSB1eW1hayB6b3J1bmRhZMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnR8O2c3RlcmlsZWNlayB2YXJzYXnEsWxhbiBpbGnFn2tpIGRlcmlubGnEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsSBpw6dpbiB2YXJzYXnEsWxhbiBnw7ZzdGVyaWxlbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIMO2em5pdGVsacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsSBpw6dpbiB2YXJzYXnEsWxhbiBnw7ZzdGVyaWxlbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIG5pdGVsacSfaW5pIHRhbsSxbWxhci4gw5ZybmVrOiAiQW5haHRhciIgRGluYW1payBBbGFuxLFuIGFkxLFuxLEgacOnZXJtZWxpZGlyLCBidSBkdXJ1bWRhIFwnWFwnLCAixLDDp2VyaWsiIERpbmFtaWsgQWxhbiB0w7xyw7xuZSBiYcSfbMSxIG9sYXJhayBEaW5hbWlrIEFsYW7EsW4gZGXEn2VyaW5pIGnDp2VybWVsaWRpciwgTWV0aW46IFwnYmlyIG1ldGluXCcsIEHDp8SxbMSxciBtZW7DvDogXCcxXCcsIFRhcmloL1NhYXQ6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB2ZSB2ZXlhIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ1wnSVRTTUNvbmZpZ0l0ZW1cJyBzxLFuxLFmxLFuxLFuIHZhcnNhecSxbGFuIGFsdCBuZXNuZXNpbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGVraSBrdWxsYW7EsWxhYmlsaXIgQ0kgc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfIGJpciBzxLFuxLFmIGFkxLEgdmUgaWxnaWxpIHPEsW7EsWYgacOnaW4ga3VsbGFuxLFsYWJpbGlyIGFsYW5sYXJkYW4gb2x1xZ9hbiBiaXIgZGl6aWRlbiBvbHXFn21hbMSxZMSxci4gRGluYW1payBhbGFuIGdpcmnFn2xlcmkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDFn2VtYXPEsW5hIHV5bWFrIHpvcnVuZGFkxLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdCdSBla3JhbiBpw6dpbiB6ZW5naW4gbWV0aW4gZMO8emVubGV5aWNpIGJpbGXFn2VuaW5pbiB5w7xrc2VrbGnEn2luaSB0YW7EsW1sYXIuIFNhecSxIChwaWtzZWwpIHZleWEgecO8emRlIGRlxJ9lcmkgKGfDtnJlbGkpIGdpcmluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdZw7ZuZXRpY2kgYXJhecO8esO8bmRla2kgQ0kgdGFuxLFtxLEgZMO8emVubGV5aWNpc2kgacOnaW4gc2F0xLFyIHNhecSxc8SxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT2xheSBkdXJ1bWxhcsSxbsSxbiB5w7xrc2VrICjDtnJuLiBrcmlraXRhbCkgaWxlIGTDvMWfw7xrICjDtnJuLiBmb25rc2l5b25lbCkgYXJhc8SxbmRha2kgc8SxcmFzxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0JhxJ9sYW50xLFsxLEgZGVzdGVrIHRhbGVwbGVyaW5pbiBiaXIgQ0lcJ27EsW4gZHVydW11bnUgZXRraWxleWViaWxlY2XEn2kgaWxnaWxpIGRhxJ/EsXTEsW0gZHVydW1sYXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbSBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBla3JhbsSxIGnDp2luIGFyYW1hIHPEsW7EsXLEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ1TDvG0gQ0kgc8SxbsSxZmxhcsSxIGnDp2luIGJhxJ9sYW50xLEgdGFibG9zdSBrYXJtYcWfxLFrIGfDtnLDvG7DvG3DvG5kZSBDSVwnbGFyxLFuIGfDtnN0ZXJpbGVuIHPDvHR1bmxhcsSxbsSxIHRhbsSxbWxhci4gSGVyaGFuZ2kgYmlyIGdpcmnFnyB5b2tzYSwgdmFyc2F5xLFsYW4gc8O8dHVubGFyIGfDtnN0ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgYmHEn2xhbnTEsSB0YWJsb3N1IGthcm1hxZ/EsWsgZ8O2csO8bsO8bcO8bmRlIENJXCdsYXLEsW4gZ8O2c3RlcmlsZW4gc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfaW4gw7Zuw7xuZSBzxLFuxLFmIGFkxLEgdmUgw6dpZnQgaWtpIG5va3RhIMO8c3Qgw7xzdGUga29udWxtYWzEsWTEsXIgKMO2cm5lxJ9pbiBCaWxnaXNheWFyOjopLiBUw7xtIENJXCdsYXJkYSBvcnRhayBvbGFuIGJpcmthw6cgQ0ktw5Z6bml0ZWxpxJ9pIHZhcmTEsXIgKEJpbGdpc2F5YXIgc8SxbsSxZsSxIGnDp2luIMO2cm5lazogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gQ0ktVGFuxLFtxLFuZGEgdGFuxLFtbGFuZMSxxJ/EsSBnaWJpIGJpcmV5c2VsIENJLcOWem5pdGVsaWtsZXJpbmkgZ8O2c3Rlcm1layBpw6dpbiBhxZ9hxJ/EsWRha2kgxZ9lbWEga3VsbGFuxLFsbWFsxLFkxLFyIChCaWxnaXNheWFyIHPEsW7EsWbEsSBpw6dpbiDDtnJuZWspOiBCaWxnaXNheWFyOjpIYXJkRGlzazo6MSwgQmlsZ2lzYXlhcjo6SGFyZERpc2s6OjE6OkthcGFzaXRlOjoxLCBCaWxnaXNheWFyOjpIYXJkRGlzazo6MiwgQmlsZ2lzYXlhcjo6SGFyZERpc2s6OjI6OkthcGFzaXRlOjoxLiBCaXIgQ0kgc8SxbsSxZsSxIGnDp2luIGdpcmnFnyB5b2tzYSwgdmFyc2F5xLFsYW4gc8O8dHVubGFyIGfDtnN0ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiDDvMOnw7xuY8O8IHNldml5ZXNpbmRlIGhhbmdpIMO2xJ9lbGVyaW4gXCdFeWxlbVwnIGnDp2luIGt1bGxhbsSxbGFiaWxpciBvbGR1xJ91bnUgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiBiaXJpbmNpIHNldml5ZXNpbmRlIGhhbmdpIMO2xJ9lbGVyaW4gbWV2Y3V0IG9sZHXEn3VudSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiBpa2luY2kgc2V2aXllc2luZGUgaGFuZ2kgw7bEn2VsZXJpbiBtZXZjdXQgb2xkdcSfdW51IHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnSGFuZ2kgYmHEn2xhbnTEsSB0w7xyw7xuw7xuIChiaWxldCBwZXJzcGVrdGlmaW5kZW4gYWRsYW5kxLFyxLFsYW4pIGJhxJ9sYW50xLFsxLEgYmlyIENJXCduxLFuIGR1cnVtdW51IGV0a2lsZXllYmlsZWNlxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0JhxJ9sxLEgYmlyIENJXCduxLFuIGR1cnVtdW51IGhhbmdpIHTDvHIgYmlsZXRsZXJpbiBldGtpbGV5ZWJpbGVjZcSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdUYW7EsW0gR8O8bmNlbGxlbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pIFNpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RhxJ/EsXTEsW0gRHVydW11IFJlbmdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdZaW5lbGVuZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEaW5hbWlrIGFsYW4gb2xheSBtb2TDvGzDvCwgZGluYW1payBhbGFubGFyxLFuIGRlxJ9pxZ9tZXNpIGR1cnVtdW5kYSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRhbsSxbWxhcsSxbsSxIHNlbmtyb25pemFzeW9uIGTEscWfxLEgb2xhcmFrIGnFn2FyZXRsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIGVrIElUU00gYWxhbsSxIGVrcmFuxLFuZGEgZ8O2c3RlcmlsZW4gZGluYW1payBhbGFubGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFnyBla3JhbsSxbmRhIGfDtnN0ZXJpbGVuIGRpbmFtaWsgYWxhbmxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLFuZGEgZ8O2c3RlcmlsZW4gZGluYW1payBhbGFubGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdUZW1zaWxjaSDDtm4gdWN1bnVuIGF5bsSxIGFuZGEgYmlyZGVuIGZhemxhIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7x6ZXJpbmRlIMOnYWzEscWfbWFzxLEgacOnaW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB0b3BsdSBleWxlbSDDtnplbGxpxJ9pbmkgZXRraW5sZcWfdGlyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IGV5bGVtIMO2emVsbGnEn2luaSB5YWxuxLF6Y2EgbGlzdGVsZW5lbiBncnVwbGFyIGnDp2luIGV0a2lubGXFn3RpcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdCaWxldC1jb25maWdpdGVtLWxpbmsgw7x6ZXJpbmRlIGNvbmZpZ2l0ZW0tc3RhdHVzIGF5YXJsYW1hayBpw6dpbiBvbGF5IG1vZMO8bMO8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdUYW0gbWV0aW4gYXJhbWEgacOnaW4ga3VsbGFuxLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBkaXppbmkgYWxhbmxhcsSxLiBBbGFubGFyIGRhIHNha2xhbsSxciwgYW5jYWsgZ2VuZWwgacWfbGV2c2VsbGlrIGnDp2luIHpvcnVubHUgZGXEn2lsZGlyLiBFa2xlcmluIGRhaGlsIGVkaWxtZXNpLCBnaXJpxZ9pIDAgb2xhcmFrIGF5YXJsYXlhcmFrIHZleWEgc2lsZXJlayBkZXZyZSBkxLHFn8SxIGLEsXJha8SxbGFiaWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZGl6aW5pbmRlIGRlcG9sYW5hbiB2ZSB0YW0gbWV0aW4gYXJhbWFsYXLEsW7EsW4geWFuxLEgc8SxcmEgYmHFn2thIMWfZXlsZXIgacOnaW4gZGUga3VsbGFuxLFsYW4gYWxhbmxhci4gVGFtIGnFn2xldnNlbGxpayBpw6dpbiB0w7xtIGFsYW5sYXIgem9ydW5sdWR1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggw6dhxJ/EsXLEsWPEsSBrYXRtYW7EsSBpw6dpbiBHZW5lcmljSW50ZXJmYWNlIG1vZMO8bCBrYXlkxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIMOnYcSfxLFyxLFjxLEga2F0bWFuxLEgacOnaW4gR2VuZXJpY0ludGVyZmFjZSBtb2TDvGwga2F5ZMSxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggw6dhxJ/EsXLEsWPEsSBrYXRtYW7EsSBpw6dpbiBHZW5lcmljSW50ZXJmYWNlIG1vZMO8bCBrYXlkxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaW5lIGdlbmVsIGJha8SxxZ8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5kYSBkYcSfxLF0xLFtIGR1cnVtbGFyxLFuxLEgacOnZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5hIG9sYXkgZHVydW1sYXLEsW7EsSBkYWhpbCBlZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdCdSBpxZ9sZW1pbiBzb251Y3VuZGEgZ8O2csO8bnTDvGxlbmVjZWsgbWFrc2ltdW0geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzYXnEsXPEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdCaXIgc8SxbsSxZnRhbiBzb3J1bWx1IGdydWJ1IGtvbnRyb2wgZXRtZWsgacOnaW4gbW9kw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ0JpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmRlbiBzb3J1bWx1IGdydWJ1IGtvbnRyb2wgZXRtZWsgacOnaW4gbW9kw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ0lUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpc3RhdGlzdGlrbGVyaSBvbHXFn3R1cm1hayBpw6dpbiBtb2TDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnxLBzaW0gTW9kw7xsw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWFyYSBNb2TDvGzDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bmRlIGJpciBhcmFtYSBzb251Y3VudW4gaGVyIHNheWZhc8SxbmRhIGfDtnLDvG50w7xsZW5lY2VrIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pbiBzYXnEsXPEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG5kZSBiaXIgYXJhbWEgc29udWN1bnVuIGhlciBzYXlmYXPEsW5kYSBnw7Zyw7xudMO8bGVuZWNlayB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaW4gc2F5xLFzxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0FyYW5hY2FrIG5lc25lbGVyLCBrYcOnIGdpcmnFnyB2ZSBoYW5naSDDtnpuaXRlbGlrbGVyaW4gZ8O2c3RlcmlsZWNlxJ9pLiBDb25maWdJdGVtIMO2em5pdGVsaWtsZXJpbmluIEVsYXN0aWNzZWFyY2ggYXJhY8SxbMSxxJ/EsXlsYSBhw6fEsWvDp2EgZGVwb2xhbm1hc8SxIGdlcmVraXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ0dlbmVsIGJha8SxxZ8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEga2F0ZWdvcmlsZXJpIGnDp2luIHBhcmFtZXRyZWxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw7zDp8O8ayB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFn8SxbiBzw7x0dW4gZmlsdHJlbGVyaSBpw6dpbiBwYXJhbWV0cmVsZXIuIEzDvHRmZW4gZGlra2F0OiBcJ0FrdGlmXCcgZGXEn2VyaW5pIDAgb2xhcmFrIGF5YXJsYW1haywgdGVtc2lsY2lsZXJpbiBidSBncnVidW4gYXlhcmxhcsSxbsSxIGtpxZ9pc2VsIHRlcmNpaGxlcmluZGUgZMO8emVubGVtZWxlcmluaSBlbmdlbGxlciwgYW5jYWsgecO2bmV0aWNpbGVyaW4gYmHFn2thIGJpciBrdWxsYW7EsWPEsSBhZMSxbmEgYXlhcmxhcsSxIGTDvHplbmxlbWVsZXJpbmUgaXppbiB2ZXJpci4gQnUgYXlhcmxhcsSxbiBrdWxsYW7EsWPEsSBhcmF5w7x6w7xuZGUgaGFuZ2kgYWxhbmRhIGfDtnN0ZXJpbGVjZcSfaW5pIGtvbnRyb2wgZXRtZWsgacOnaW4gXCdQcmVmZXJlbmNlR3JvdXBcJyBrdWxsYW7EsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGHEn8SxdMSxbSBkdXJ1bWxhcsSxIGnDp2luIHBhcmFtZXRyZWxlciwgbcO8xZ90ZXJpIHRlbXNpbGNpc2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHJlbmtsZW5kaXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZWtpIGRhxJ/EsXTEsW0gZHVydW1sYXLEsSBpw6dpbiBwYXJhbWV0cmVsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ0dlbmVsIGthdGFsb2cgw7Z6bml0ZWxpa2xlcmluaW4gw7ZybmVrIGl6aW4gZ3J1cGxhcsSxbsSxbiBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBhZCBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGnDp2luIHNhecSxIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1NheWZhbGFyIGnDp2luIHBhcmFtZXRyZWxlciAoeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIGfDtnN0ZXJpbGRpxJ9pKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGnDp2luIHPDvHLDvG0gZGl6ZXNpIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRla2kgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEgacOnaW4gc8O8csO8bSBkaXplc2kgxZ9hYmxvbiBhcmHDpyBzZXRpIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBzw7xyw7xtIHRldGlrbGV5aWNpc2kgcGFyYW1ldHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfEsHppbiBncnVidSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtsZW1lIGV5bGVtaW5pIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhxJ9hw6cgZ8O2csO8bsO8bcO8IGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrbGVtZSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSB0b3BsdSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGTDvHplbmxlbWUgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgZ2XDp21pxZ8gSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgeWF6ZMSxciBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBzaWxtZWsgacOnaW4gZ2VyZWtsaSBheXLEsWNhbMSxa2xhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBhcmF5xLFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQmlyIEJpbGV0IGJpciBDSVwneWEgQmHEn2xhbmTEscSfxLFuZGEgQ0lcJ27EsW4gb2xheSBkdXJ1bXVudSBvdG9tYXRpayBvbGFyYWsgYXlhcmxhecSxbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IGVrcmFuxLFuZGEgZGHEn8SxdMSxbSBkdXJ1bXVudSBheWFybGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgZWtyYW7EsW5kYSBvbGF5IGR1cnVtdW51IGF5YXJsYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuw7xkZSwgYXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGJhxZ9rYSBiaXIgbmVzbmV5bGUgaWxpxZ9raWxlbmRpcm1leWkgc2HEn2xheWFuIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRla2kgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gZ2XDp21pxZ9pbmUgZXJpxZ9tZWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gZ2XDp21pxZ9pbmUgZXJpxZ9tZWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIHNpbG1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYmHEn2xhbnTEsWxhcsSxbsSxIEHEn2HDpyBHw7Zyw7xuw7xtw7wgb2xhcmFrIGfDtnLDvG50w7xsZW1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgw6dvxJ9hbHRtYWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSDDp2/En2FsdG1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSBkw7x6ZW5sZW1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5lIGdlcmkgZMO2bm1layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgeWF6ZMSxcm1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgeWFrxLFubGHFn3TEsXJtYWsgacOnaW4gbWVuw7xkZSBiaXIgYmHEn2xhbnTEsSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlw6dtacWfaW5pICh0ZXJzIHPEsXJhbMSxKSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0hpw6diaXJpIHNlw6dpbG1lbWnFn3NlIGfDtnN0ZXJpbGVuIHZhcnNhecSxbGFuIGthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gdGFuxLFtbGF5xLFjxLFzxLEsIMO2cm5lxJ9pbiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVmFyc2F5xLFsYW4gQ29uZmlnSXRlbSNcJ2Rpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0NvbmZpZ0l0ZW1GZXRjaCDDp2HEn8SxcsSxY8Sxc8SxbsSxIG90b21hdGlrIG9sYXJhayB0ZXRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnU8O8csO8bSBEaXplc2kgxLBmYWRlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnU8O8csO8bSBEaXplc2kgTW9kw7xsw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnU8O8csO8bSBUZXRpa2xleWljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUFDTFwnbmluIHnDvHLDvHTDvGxtZXNpbmluIMO2bmJlbGxlxJ9lIGFsxLFubcSxxZ8gYWxhbiBiYcSfxLFtbMSxbMSxa2xhcsSxbsSxIGtvbnRyb2wgZWRlcmVrIMO2bmxlbmlwIMO2bmxlbmVtZXllY2XEn2kuIEJ1LCBmb3Jtw7xsZXJsZXJpbiB5w7xrbGVtZSBzw7xyZWxlcmluaSBpeWlsZcWfdGlyZWJpbGlyLCBhbmNhayBBQ0xNb2TDvGxsZXJpIElUU01Db25maWdJdGVtLSB2ZSBGb3JtLVJldHVyblR5cGVzIGnDp2luIGt1bGxhbsSxbGFjYWtzYSBkZXZyZSBkxLHFn8SxIGLEsXJha8SxbG1hbMSxZMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0JhxZ9sxLFrdGEgaGFuZ2kgZ2VuZWwgYmlsZ2lsZXIgZ8O2c3RlcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnc8SxbsSxZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdrw7xyZXNlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ8OcUkVNRSBTT05SQVNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfDnFJFTUUgw5ZOQ0VTxLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ8O8cmV0a2VuJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluw6cgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbsOnICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW7DpyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbsOnICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgaW7DpyBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGluw6cgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW7DpyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgaW7DpyBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluw6cgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBpbsOnIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW7DpyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW7DpyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW7DpyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluw6cgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW7DpyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW7DpyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW7DpyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW7DpyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW7DpyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluw6cgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBpbsOnICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgaW7DpyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW7DpyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbsOnICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGluw6cgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbsOnICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgaW7DpyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluw6cgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluw6cgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluw6cgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW7DpyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbsOnICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluw6cgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ011aGFzZWJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXMgVGFoc2lzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnWcO2bmV0aWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyBUZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnQ2loYXogVGlwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0Frw7wgS2FwYXNpdGVzaSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1BpbCBUaXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnT3RvYsO8cyBBcmF5w7x6w7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUgU8SxbsSxZsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhc2l0ZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnR3JhZmlrIGthcnTEsSBiYcWfxLFuYSBrYXBhc2l0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0thcnQgTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS2FydCBPa3V5dWN1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thcnQgVGlwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnTcO8xZ90ZXJpIFNlcnRpZmlrYWxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ03DvMWfdGVyaSBZYXrEsWzEsW3EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdNw7zFn3Rlcmkga2F0ZWdvcmlzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdTYWF0IEjEsXrEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnU2FhdCBIxLF6xLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvZCDEsG16YWxhbWEgU2VydGlmaWthbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmFucyBUZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0RhbsSxxZ9tYW5sxLFrIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnxLBsZXRpxZ9pbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnRGlzdHJpYsO8dMO2cmxlIMSwbGV0acWfaW1lIEdlw6dpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnRleW5lciBZw7ZuZXRpbWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdTw7Z6bGXFn21lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdTw7Z6bGXFn21lIFTDvHLDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1PDtnpsZcWfbWUgc8O8cmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdTw7Z6bGXFn21lIHPDvHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnS2FibG9zdXogVGVsZWZvbiAoREVDVCBUZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdNYWxpeWV0IGJpcmltaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1J1aHNhdCBzYXnEsXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnT2x1xZ90dXJ1bG1hIFRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnw5Z6ZWwgUmFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIEF5csSxbG3EscWfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMgU3VudWN1c3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0ZhdHVyYSBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1NpcGFyacWfIFRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnVGVtaW5hdCBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnWWF5xLFubGFubWEgdGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdNYXNhw7xzdMO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdCZWxnZSDEsG16YWxhbWEgU2VydGlmaWthbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhZsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RhIFNlcnRpZmlrYWxhcsSxIChTL01JTUUgU2VydGlmaWthbGFyxLEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ8SwxZ8gU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnU29uIElQIEFkcmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0Rlc3RlxJ9pbiBzb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnU29uIEt1bGxhbm1hIFRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnSGFyaWNpIFNhYml0IFPDvHLDvGPDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0fDvHZlbmxpayBEdXZhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnw5xyw7xuIFlhesSxbMSxbcSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnVm9sYW4gRW5lcmppIERlcG9sYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybSBGYWt0w7Zyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZSBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfDnGNyZXRzaXogeWF6xLFsxLFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0dlbmVsIEJpbGdpbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlrIEthcnRsYXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlrIGthcnTEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0RvbmFuxLFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnRG9uYW7EsW0gTW9kZWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0RvbmFuxLFtIEHEn8SxcmzEscSfxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0t1bGFrbMSxayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIFByb3Rva29sw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnS2ltbGlrIHZlIEVyacWfaW0gWcO2bmV0aW1pIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdFbnZhbnRlciBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ZhdHVyYSBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbGF2eWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIE1vbml0w7ZyIChTxLF2xLEgS3Jpc3RhbCBFa3JhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBNb25pdMO2ciAoScWfxLFrIFlheWFuIERpeW90KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdTYWJpdCBUZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0RpesO8c3TDvCBCaWxnaXNheWFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnRW5sZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdLYXRtYW4gMTogRml6aWtzZWwgS2F0bWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0thdG1hbiAyOiBWZXJpIEJhxJ9sYW50xLEgS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0thdG1hbiAzOiBBxJ8gS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnS2F0bWFuIDM6IEHEnyBLYXRtYW7EsSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0thdG1hbiA0OiBUYcWfxLFtYSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnS2F0bWFuIDU6IE90dXJ1bSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdLYXRtYW4gNjogU3VudW0gS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdLYXRtYW4gNzogVXlndWxhbWEgS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnS2lyYSBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaXNhbnMgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXNhbnMgQW5haHRhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpc2FucyBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpc2FucyBzw7xyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnxZ51IHRhcmloZSBrYWRhciBsaXNhbnMgc8O8cmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0eXVtIERlbWlyIEZvc2ZhdCAoTGlGZVBPNCkgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXR5dW0gxLB5b24gKExpLWlvbikgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnS3JlZGkgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfEsMOnaW5kZSBidWx1bmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0JveWxhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ8OccmV0aWNpIGZpcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW11bSBZw7xrIEthcGFzaXRlc2kgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0hhZsSxemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdCZWxsZWsgVMO8csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnQ2VwIFRlbGVmb251IE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWwgQcOnxLFrbGFtYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdMO2ciDDh8O2esO8bsO8cmzDvMSfw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXTDtnIgQm95dXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnRmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnxZ5lYmVrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdBxJ8gQmlsZ2lzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnQcSfIEJpbGdpbGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQcSfIEthdG1hbsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWwtS2FkbWl5dW0gKE5pQ2QpIFBpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2VsLU1ldGFsIEhpZHJpdCAoTmlNSCkgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0dpemxpbGlrIFPDtnpsZcWfbWVzaSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdCBEZWZ0ZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTSBtb2TDvGzDvCBzYXnEsXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFmaWsga2FydMSxIHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIE1vbml0w7ZyIChPcmdhbmlrIEnFn8SxayBZYXlhbiBEaXlvdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnxLDFn2xldG1lIG1hbGl5ZXRsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1NpcGFyacWfIE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0RpxJ9lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnw4fEsWt0xLFsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnT3J0YWtsxLFrIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb24gTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9uIFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGaXppa3NlbCDDh2VraXJkZWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdHw7zDpyBEYcSfxLF0xLFtxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfFnnVyYWRhbiBzYXTEsW4gYWzEsW5kxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JhZiBEZXJpbmxpxJ9pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFmIMOcbml0ZWxlcmkgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdPZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0gS2FydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgU2VydGlmaWthbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYXTEscWfIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdVeWR1IFRlbGVmb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1PEsXpkxLFybWF6IEt1csWfdW4tQXNpdCAoU0xBKSBBa8O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaSBudW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU3VudWN1IFlhesSxbMSxbcSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnSGl6bWV0IFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpcyBFdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Nva2V0IFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdZYXrEsWzEsW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdLb251xZ9tYWPEsWxhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0JhxZ9sYW5nxLHDpyBJUCBBZHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0RlcG9sYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnRGVwb2xhbWEgQsO2bMO8bcO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnQmHEn2zEsSBPcnRha2zEsWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ8OWemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnxLBuY2UgxLBzdGVtY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ8SwcGxpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3BsYW0gR3JhZmlrIGthcnTEsSBSQU1cJ2kgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvcGxhbSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnRG9rdW5tYXRpayBFa3JhbiBNb25pdMO2csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnS3VsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIEh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIEt1bGFrbMSxayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYiBrYW1lcmFzxLEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDbGFzcyBpbXBvcnQgZmFpbGVkLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/uk_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQl9Cw0LPQsNC70YzQvdGWINC10LrRgdC/0LvRg9Cw0YLQsNGG0ZbQudC90ZYg0LTQsNC90ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstGF0ZbQtNC90LjRhSDQtNCw0L3QuNGFINC30LDQv9C40YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstC40YXRltC00L3QuNGFINC00LDQvdC40YUg0LLRltC00L/QvtCy0ZbQtNGWJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQtdGA0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9CX0LzRltC90LjRgtC4INCy0LjQt9C90LDRh9C10L3QvdGPINC60LvQsNGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9CX0LzRltC90LjRgtC4INCy0LjQt9C90LDRh9C10L3QvdGPINGA0L7Qu9GWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn0J/QsNC60LXRgtC4INC60LvQsNGB0YMgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn0KLRg9GCINCy0Lgg0LzQvtC20LXRgtC1INGW0LzQv9C+0YDRgtGD0LLQsNGC0Lgg0L/QsNC60YPQvdC60Lgg0LrQu9Cw0YHRltCyIFJlYWR5MkltcG9ydCwg0YnQviDQvNGW0YHRgtGP0YLRjCDQvdCw0LnQv9C+0YjQuNGA0LXQvdGW0YjRliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDLCDRidC+INC80L7QttC1INC30L3QsNC00L7QsdC40YLQuNGB0Y8g0LTQvtC00LDRgtC60L7QstCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAn0J7QvdC+0LLQu9C10L3QvdGPINGW0YHQvdGD0Y7Rh9C40YUg0YHRg9GC0L3QvtGB0YLQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0IbQvNC/0L7RgNGCINC/0LDQutC10YLRltCyINC60LvQsNGB0ZbQsiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0KDQvtC70YwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0ZbQu9GM0YLRgCDQtNC70Y8g0LrQu9Cw0YHRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LrQu9Cw0YEg0LfRliDRgdC/0LjRgdC60YMsINGJ0L7QsSDRgdGC0LLQvtGA0LjRgtC4INC90L7QstC40Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGBLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfQn9C+0YHQuNC70LDQvdC90Y8g0L3QsCDRltC90YjQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0L3QvtC80LXRgCDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0J3QvtC80LXRgCDRltC90YjQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINC3INGP0LrQuNC8INC/0L7RgtGA0ZbQsdC90L4g0LfQslwn0Y/Qt9Cw0YLQuC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfQktC4INC00ZbQudGB0L3QviDRhdC+0YfQtdGC0LUg0LLQuNC00LDQu9C40YLQuCDRhtC10Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQndCw0LfQstCwINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CG0LxcJ9GPINCy0LbQtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQtdC70LXQvNC10L3RgtCw0LzQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Lcg0YLQsNC60LjQvNC4INC90L7QvNC10YDQsNC80Lg6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Cd0L7QvNC10YAg0LLQtdGA0YHRltGXINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQndC+0LzQtdGAINCy0LXRgNGB0ZbRlyDQstC20LUg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8g0LXQu9C10LzQtdC90YLQsNC80Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGC0LDQutC40LzQuCDQvdC+0LzQtdGA0LDQvNC4OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0IbRgdGC0L7RgNGW0Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zc6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9CX0LzRltGB0YIg0ZbRgdGC0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Cn0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn0JfQsdGW0LvRjNGI0LXQvdC40Lkg0LLQuNC0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9CV0LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC90LAg0YHRgtC+0YDRltC90YbRlic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDQt9C90LDQudC00LXQvdC+INC00LDQvdC40YUg0L/RgNC+INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQktC40LHQtdGA0ZbRgtGMINGG0LXQuSDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQl9Cw0L/Rg9GB0YLQuNGC0Lgg0L/QvtGI0YPQuic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3INC00LvRjyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn0KDRltCy0LXQvdGMINCz0LvQuNCx0LjQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAn0JfQsdGW0LvRjNGI0LjRgtC4L9C30LzQtdC90YjQuNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn0JTQvtGB0Y/Qs9C90YPRgtC+INC80LDQutGB0LjQvNCw0LvRjNC90L7Qs9C+INGA0ZbQstC90Y8g0L/QvtGB0LjQu9Cw0L3RjCDQtNC70Y8gQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn0IbQvdGE0L7RgNC80LDRhtGW0Y8g0L/RgNC+INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQn9C+0YLQvtGH0L3QuNC5INGB0YLQsNC9INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ9Cf0L7RgtC+0YfQvdC40Lkg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9Ce0YHRgtCw0L3QvdGW0Lkg0YDQsNC3INC30LzRltC90LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Ce0YHRgtCw0L3QvdGW0Lkg0YDQsNC3INC30LzRltC90LXQvdC+JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn0JLQsNGI0ZYg0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn0J/QvtGI0YPQuiDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9CR0YPQtNC1INGW0LzQv9C+0YDRgtC+0LLQsNC90L4g0L3QsNGB0YLRg9C/0L3RliDQutC70LDRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9CR0YPQtNGD0YLRjCDRltC80L/QvtGA0YLQvtCy0LDQvdGWINC90LDRgdGC0YPQv9C90ZYg0YDQvtC70ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDLCDRidC+INGC0LDQutC+0LYg0LHRg9C00YPRgtGMINGB0YLQstC+0YDQtdC90ZYg0LLRltC00L/QvtCy0ZbQtNC90ZYg0LTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPINGWINC60LvQsNGB0LggR2VuZXJhbENhdGFsb2csINGWINCw0LLRgtC+0LzQsNGC0LjRh9C90LUg0LLQuNC00LDQu9C10L3QvdGPINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfQpdC+0YfQtdGC0LUg0L/RgNC+0LTQvtCy0LbQuNGC0Lg/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ9Cf0L7RgtGA0ZbQsdC90ZYg0L/RgNC40LrQu9Cw0LTQuCDQutC70LDRgdGW0LIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ9CS0LjQt9C90LDRh9C10L3QvdGPINC90LUg0ZQg0LrQvtGA0LXQutGC0L3QuNC8IFlBTUwg0YXQtdGI0LXQvC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQntCz0LvRj9C0OiDQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQg0L3QtSDQstC60LDQt9GD0ZTRgtGM0YHRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfQktCw0Lwg0L/QvtGC0YDRltCx0LXQvSDQv9GA0LjQvdCw0LnQvNC90ZYg0L7QtNC40L0g0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn0KMg0LLQsNGBINC90LXQvNCw0ZQg0L/RgNCw0LIg0L3QsCDQt9Cw0L/QuNGBINC00L4g0YbRjNC+0LPQviDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlzogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ9CU0LvRjyDQutC70LDRgdGDICVzINC90LUg0LLQuNC30L3QsNGH0LXQvdC+INCy0LjQt9C90LDRh9C10L3QvdGPISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXICIlcyIg0L3QtSDQt9C90LDQudC00LXQvdC+INCyINCx0LDQt9GWINC00LDQvdC40YUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QtSDQstC00LDQu9C+0YHRjyDQstC40LTQsNC70LjRgtC4INGW0LTQtdC90YLQuNGE0ZbQutCw0YLQvtGAINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ9CS0LXRgNGB0ZbRjiDQtNC70Y8gQ29uZmlnSXRlbUlEICVzINC90LUg0LfQvdCw0LnQtNC10L3QviEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDQsNCx0L4gQ2xhc3NJRCDQvdC1INCy0LrQsNC30YPRjtGC0YzRgdGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn0JTQvtGB0YLRg9C/INC90LUg0L3QsNC00LDRlNGC0YzRgdGPISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfQndC10LzQvtC20LvQuNCy0L4g0L/QvtC60LDQt9Cw0YLQuCDRltGB0YLQvtGA0ZbRjiwg0L3QtSDQstC60LDQt9Cw0L3QviBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdC80L7QttC70LjQstC+INC/0L7QutCw0LfQsNGC0Lgg0ZbRgdGC0L7RgNGW0Y4sINC90LXQvNCw0ZQg0L/RgNCw0LIg0LTQvtGB0YLRg9C/0YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfQndC+0LLQsCDQstC10YDRgdGW0Y8gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ce0L3QvtCy0LvQtdC90L4g0YHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3RjyAo0L3QvtCy0LjQuT0lcywg0YHRgtCw0YDQuNC5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQntC90L7QstC70LXQvdC40Lkg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDICjQvdC+0LLQuNC5PSVzLCDRgdGC0LDRgNC40Lk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpINCy0LjQtNCw0LvQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfQlNC+0LTQsNC90L4g0L/QvtGB0LjQu9Cw0L3QvdGPINC90LAgJXMgKNGC0LjQvz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9Cf0L7RgdC40LvQsNC90L3RjyDQvdCwICVzICh0eXBlPSVzKSDQstC40LTQsNC70LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfQntC90L7QstC70LXQvdC+INCy0LjQt9C90LDRh9C10L3QvdGPIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9CG0LxcJ9GPINC+0L3QvtCy0LvQtdC90L4gKNC90L7QstC1PSVzLCDRgdGC0LDRgNC1PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ9CQ0YLRgNC40LHRg9GCICVzINC30LzRltC90LXQvdC+INC3ICIlcyIg0L3QsCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ9CS0LjQtNCw0LvQtdC90L4g0LLQtdGA0YHRltGOICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCDQsNCx0L4gVmVyc2lvbklEINC90LUg0LLQutCw0LfRg9GO0YLRjNGB0Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LXQvNC+0LbQu9C40LLQviDQv9C+0LrQsNC30LDRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0L3QtdC80LDRlCDQv9GA0LDQsiDQtNC+0YHRgtGD0L/RgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMg0L3QtSDQt9C90LDQudC00LXQvdC+INCyINCx0LDQt9GWINC00LDQvdC40YUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfQvdCw0LTRgNGD0LrQvtCy0LDQvdC+INC30LAg0LTQvtC/0L7QvNC+0LPQvtGOICVzINCyICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfQn9C+0YHQuNC70LDQvdC90Y8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfQndC10L/RgNCw0LLQuNC70YzQvdC40LkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEINC90LUg0L3QsNC00LDRlNGC0YzRgdGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9Cf0YDQsNCy0LAg0LTQvtGB0YLRg9C/0YMg0LTQu9GPINGG0YzQvtCz0L4g0LrQu9Cw0YHRgyDQvdC1INC90LDQtNCw0L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9CR0LXQt9GA0LXQt9GD0LvRjNGC0LDRgtC90L4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn0KDQtdC30YPQu9GM0YLQsNGC0Lgg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ9Cd0LXQvNC+0LbQu9C40LLQviDQv9C+0LrQsNC30LDRgtC4INC10LvQtdC80LXQvdGCLCDQvdC10LzQsNGUINC/0YDQsNCyINC00L7RgdGC0YPQv9GDINC00LvRjyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtINC90LUg0LfQvdCw0LnQtNC10L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn0JLQtdGA0YHRltC5INC90LUg0LfQvdCw0LnQtNC10L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfQvtC/0LXRgNCw0YLQuNCy0L3QuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQv9C+0L/QtdGA0LXQtNC20LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfRltC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodGC0LDQvSDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMg0YbRjNC+0LPQviDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXQvNCw0ZQg0L/RgNCw0LIg0LTQvtGB0YLRg9C/0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn0KTRltC70YzRgtGAINC90LXQtNGW0LnRgdC90LjQuSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQv9C+0YjRg9C60YMg0L3QtdCy0ZbRgNC90ZYhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn0J/QvtC60LDQt9Cw0L3RliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0YHRgtCw0L3RgyDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Cf0L7RgtC+0YfQvdC40Lkg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINCi0LjQvyDRltC90YbQuNC00LXQvdGC0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnINCc0ZbQtic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7QsdC80LXQttC10L3QvdGPINC60LvQsNGB0ZbQsiDQtNC70Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CS0LjQsdC10YDRltGC0Ywg0L7QtNC40L0g0LDQsdC+INC00LXQutGW0LvRjNC60LAg0LrQu9Cw0YHRltCyLCDRidC+0LEg0L7QsdC80LXQttC40YLQuCDQstC40LHRltGAINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ9Ce0LHQvNC10LbQtdC90L3RjyDQutC70LDRgdGW0LIg0LTQu9GPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JLQuNCx0LXRgNGW0YLRjCDQvtC00LjQvSDQsNCx0L4g0LTQtdC60ZbQu9GM0LrQsCDQutC70LDRgdGW0LIsINGJ0L7QsSDQvtCx0LzQtdC20LjRgtC4INCy0LjQsdGW0YAg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ9CU0LjQvdCw0LzRltGH0L3QuNC5IChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn0KHRgtCw0YLQuNGH0L3QuNC5ICjQstC10YDRgdGW0Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ9Ci0LjQvyDQv9C+0YHQuNC70LDQvdC90Y8g0L3QsCDQv9C+0YHQuNC70LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn0KfQuCDRgdGC0L7RgdGD0ZTRgtGM0YHRjyDRhtC1INC/0L7RgdC40LvQsNC90L3RjyBDb25maWdJdGVtINCw0LHQviDRgdGC0LDRgtC40YfQvdC+0Zcg0LLQtdGA0YHRltGXINC+0LFcJ9GU0LrRgtCwLCDQvdCwINGP0LrQuNC5INC/0L7RgdC40LvQsNGU0YLRjNGB0Y8g0L/QvtGB0LjQu9Cw0L3QvdGPLiDQlNC70Y8g0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtGB0LjQu9Cw0L3RjCDQstC40LrQvtC90YPRlNGC0YzRgdGPINC70LjRiNC1INC+0LHRh9C40YHQu9C10L3QvdGPINC/0L7RgtC+0YfQvdC+0LPQviDRgdGC0LDQvdGDINGW0L3RhtC40LTQtdC90YLRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfQktC40LHQtdGA0ZbRgtGMINCw0YLRgNC40LHRg9GCLCDQt9CwINGP0LrQuNC8INCx0YPQtNC1INC30LTRltC50YHQvdGO0LLQsNGC0LjRgdGPINC/0L7RiNGD0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn0KHRgtGA0YPQutGC0YPRgNCwINCx0LDQt9C4INC00LDQvdC40YUg0L3QtdCy0ZbRgNC90LAuINCR0YPQtNGMINC70LDRgdC60LAsINC90LDQtNCw0LnRgtC1INGF0LXRiCDQtyDQtNCw0L3QuNC80Lgg0YMg0YTQvtGA0LzQsNGC0ZYgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfQoNGP0LTQvtC6IFlBTUwg0L/QvtGC0YDRltCx0L3QviDQv9C+0YfQuNC90LDRgtC4INC3IFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9Cd0LUg0LLQtNCw0LvQvtGB0Y8g0L7Rh9C40YHRgtC40YLQuCDRgtCw0LHQu9C40YbRjiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfQktGW0LTQv9C+0LLRltC00L3QuNGFINC00LjQvdCw0LzRltGH0L3QuNGFINC/0L7Qu9GW0LIg0L3QtSDQt9C90LDQudC00LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0J3QtSDQstC00LDQu9C+0YHRjyDQstGB0YLQsNCy0LjRgtC4INCyINGC0LDQsdC70LjRhtGOIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0JLRgdGC0LDQstC40LIgMCDRgNGP0LTQutGW0LIg0YMg0YLQsNCx0LvQuNGG0Y4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC+0LTQvdC+0LPQviDQtdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ9Cg0Y/QtNC+0Log0LLQtdGA0YHRltGXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ9Cf0L7QvNC40LvQutCwINGB0LjQvdGF0YDQvtC90ZbQt9Cw0YbRltGXINCy0LjQt9C90LDRh9C10L3RjC4g0JHRg9C00Ywg0LvQsNGB0LrQsCwg0L/QtdGA0LXQstGW0YDRgtC1INC70L7Qsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGR5bmFtaWMgZmllbGQgXCclc1wnIGNhbiBub3QgYmUgZGVsZXRlZCBiZWNhdXNlIHRoZSBmaWVsZCAob3IgYSBTZXQgZmllbGQgaXQgaXMgcGFydCBvZikgaXMgaW4gdXNlIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzZXM6PC9icj48L2JyPiVzPC9icj48L2JyPlBsZWFzZSByZW1vdmUgaXQgZnJvbSBhbGwgY29uZmlndXJhdGlvbiBpdGVtIGNsYXNzIGFuZCByb2xlIGRlZmluaXRpb25zIGJlZm9yZSBkZWxldGluZyBpdCB0byBhdm9pZCBlcnJvcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfQoyDQstCw0YEg0ZQg0LLQuNC30L3QsNGH0LXQvdC90Y8gSVRTTUNvbmZpZ0l0ZW0sINGP0LrRliDQvdC1INGB0LjQvdGF0YDQvtC90ZbQt9C+0LLQsNC90ZYuINCR0YPQtNGMINC70LDRgdC60LAsINGA0L7Qt9Cz0L7RgNC90ZbRgtGMINC00LjQvdCw0LzRltGH0L3RliDQt9C80ZbQvdC4INC/0L7Qu9GW0LIgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfQl9Cw0LrRltC90YfQuNCy0YHRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ce0LHRgdC70YPQs9C+0LLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfQn9GW0LvQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfQl9Cw0L/Qu9Cw0L3QvtCy0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9Cg0LXQvNC+0L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0J3QsCDQv9C10L3RgdGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Ce0LPQu9GP0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9Ci0LXRgdGC0YPQstCw0L3QvdGPL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfQntCz0LvRj9C0INGC0LAg0L/RltC00YLQstC10YDQtNC20LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn0IbQvNC/0L7RgNGCINC60LvQsNGB0ZbQsi/RgNC+0LvQtdC5INGC0LAg0L/QvtCyXCfRj9C30LDQvdC40YUg0Lcg0L3QuNC80Lgg0L/QvtC70ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ9CS0LjQvdC40LrQu9CwINC/0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0ZbQvNC/0L7RgNGC0YMg0LrQu9Cw0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtINCf0YDQuNGF0L7QstCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g0J/QvtC60LDQt9Cw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0JTQvtC30LLQvtC70Y/RlCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0YDQvtC30YjQuNGA0LXQvdGWINGD0LzQvtCy0Lgg0L/QvtGI0YPQutGDINC00LvRjyDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuINCX0LAg0LTQvtC/0L7QvNC+0LPQvtGOINGG0ZbRlNGXINGE0YPQvdC60YbRltGXINCy0Lgg0LzQvtC20LXRgtC1INGI0YPQutCw0YLQuCwg0L3QsNC/0YDQuNC60LvQsNC0LCDQvdCw0LfQstGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGC0LDQutC40LzQuCDRg9C80L7QstCw0LzQuCwg0Y/QuiAiKCprZXkxKiYmKmtleTIqKSIg0LDQsdC+ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0JTQvtC30LLQvtC70Y/RlCDRgNC+0LfRiNC40YDQtdC90ZYg0YPQvNC+0LLQuCDQv9C+0YjRg9C60YMg0YMg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LrQu9GW0ZTQvdGC0LAuINCX0LAg0LTQvtC/0L7QvNC+0LPQvtGOINGG0ZbRlNGXINGE0YPQvdC60YbRltGXINCy0Lgg0LzQvtC20LXRgtC1INGI0YPQutCw0YLQuCwg0L3QsNC/0YDQuNC60LvQsNC0LCDQvdCw0LfQstGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGC0LDQutC40LzQuCDRg9C80L7QstCw0LzQuCwg0Y/QuiAiKCprZXkxKiYmKmtleTIqKSIg0LDQsdC+ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn0J/RgNC40LfQvdCw0YfQtdC90ZYg0JrQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfQmtCGLCDQv9GA0LjQt9C90LDRh9C10L3RliDQutC+0LzQv9Cw0L3RltGXLdC60LvRltGU0L3RgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn0J/RltC70L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAn0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0LXRgNC10LLRltGA0Y/RgtC4INGD0L3RltC60LDQu9GM0L3QtSDRltC8XCfRjyDRgtGW0LvRjNC60Lgg0LIg0LzQtdC20LDRhSDQvtC00L3QvtCz0L4g0LrQu9Cw0YHRgyBDb25maWdJdGVtIChcJ2NsYXNzXCcpINCw0LHQviDQs9C70L7QsdCw0LvRjNC90L4gKFwnZ2xvYmFsXCcpLCDRidC+INC+0LfQvdCw0YfQsNGULCDRidC+INC/0YDQuCDQv9C+0YjRg9C60YMg0LTRg9Cx0LvRltC60LDRgtGW0LIg0LLRgNCw0YXQvtCy0YPRlNGC0YzRgdGPINC60L7QttC10L0g0ZbRgdC90YPRjtGH0LjQuSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQvNC+0LTRg9C70YwsINGJ0L7QsSDQt9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INGB0YXQtdC80YMg0ZbQvNC10L3Rg9Cy0LDQvdC90Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINC80L7QtNGD0LvRjCwg0YnQvtCxINC30LDRgdGC0L7RgdGD0LLQsNGC0Lgg0L3QvtC80LXRgNC90YMg0YHRhdC10LzRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQvNC+0LTRg9C70Ywg0LTQu9GPINC30LDRgdGC0L7RgdGD0LLQsNC90L3RjyDRgdGF0LXQvNC4INGA0Y/QtNC60ZbQsiDQstC10YDRgdGW0LkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQsNGC0YDQuNCx0YPRgtC4LCDRidC+0LEg0LfQsNC/0YPRgdGC0LjRgtC4INGB0YLQstC+0YDQtdC90L3RjyDQvdC+0LLQvtGXINCy0LXRgNGB0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQutCw0YLQtdCz0L7RgNGW0ZcsINGP0LrRliDRgdC70ZbQtCDQv9GA0LjQt9C90LDRh9C40YLQuCDRhtGM0L7QvNGDINC60LvQsNGB0YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfQpNGW0LvRjNGC0YDQuCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGB0YLQvtCy0L/RhtGPINC00LvRjyDQntCz0LvRj9C00YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ9Ch0YLQvtCy0L/RhtGWLCDRj9C60ZYg0LzQvtC20L3QsCDQstGW0LTRhNGW0LvRjNGC0YDRg9Cy0LDRgtC4INCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4g0J/RgNC40LzRltGC0LrQsDog0JTQvtC/0YPRgdC60LDRjtGC0YzRgdGPINC70LjRiNC1INCw0YLRgNC40LHRg9GC0Lgg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgtCwINC00LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9CU0L7QtNCw0YLQuCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KDQtdC00LDQs9GD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQvNC+0LTRg9C70Y8g0L/QvtC00ZbQuSwg0Y/QutC40Lkg0LTQvtC30LLQvtC70Y/RlCDQt9Cw0L/QuNGB0YPQstCw0YLQuCDRltGB0YLQvtGA0ZbRjiDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQv9C+0LTRltC5INC00LvRjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60LjQuSDQvtC90L7QstC70Y7RlCDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtNC+INGX0YUg0L/QvtGC0L7Rh9C90L7Qs9C+INCy0LjQt9C90LDRh9C10L3QvdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CG0YHRgtC+0YDRltGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ9CU0YDRg9C6INC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Cc0LDRgdGI0YLQsNCxINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ9CU0LXRgNC10LLQviDQtdC70LXQvNC10L3RgtCwINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtINCS0LXRgNGB0ZbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyDQvdCw0YHRgtGD0L/QvdC40YUg0LrQu9Cw0YHRltCyINC90LUg0LHRg9C00YPRgtGMINC30LHQtdGA0ZbQs9Cw0YLQuNGB0Y8g0L3QsCDRgdC10YDQstC10YDRliBFbGFzdGljc2VhcmNoLiDQqdC+0LEg0LfQsNGB0YLQvtGB0YPQstCw0YLQuCDRhtC1INC00L4g0ZbRgdC90YPRjtGH0LjRhSBDSSwg0LzRltCz0YDQsNGG0ZbRjyBDSSDQv9C+0LLQuNC90L3QsCDQsdGD0YLQuCDQt9Cw0L/Rg9GJ0LXQvdCwINGH0LXRgNC10Lcg0LrQvtC90YHQvtC70Ywg0L/RltGB0LvRjyDQt9C80ZbQvdC4INGG0ZbRlNGXINC+0L/RhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINC3INC90LDRgdGC0YPQv9C90LjQvNC4INGB0YLQsNC90LDQvNC4INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L3QtSDQsdGD0LTRg9GC0Ywg0LfQsdC10YDRltCz0LDRgtC40YHRjyDQvdCwINGB0LXRgNCy0LXRgNGWIEVsYXN0aWNzZWFyY2guINCp0L7QsSDQt9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INGG0LUg0LTQviDRltGB0L3Rg9GO0YfQuNGFIENJLCDQvNGW0LPRgNCw0YbRltGPIENJINC/0L7QstC40L3QvdCwINCx0YPRgtC4INC30LDQv9GD0YnQtdC90LAg0YfQtdGA0LXQtyDQutC+0L3RgdC+0LvRjCDQv9GW0YHQu9GPINC30LzRltC90Lgg0YbRltGU0Zcg0L7Qv9GG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0J7QsdC80LXQttC10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQmtC+0L3RhNGW0LPRg9GA0LDRhtGW0Y8g0J7QsdC80LXQttC10L3QvdGPINC60ZbQu9GM0LrQvtGB0YLRliDQtdC70LXQvNC10L3RgtGW0LIg0L3QsCDRgdGC0L7RgNGW0L3RhtGWLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn0JHQsNC30LAg0LTQsNC90LjRhSDRg9C/0YDQsNCy0LvRltC90L3RjyDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZTRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ9CV0LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQvNCw0YHQvtCy0L7Qs9C+INC80L7QtNGD0LvRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC90YTRltCz0YPRgNCw0YbRltGPINC10LvQtdC80LXQvdGC0LAg0L/QvtGI0YPQutGDINCx0LXQutC10L3QtC3QvNCw0YDRiNGA0YPRgtC40LfQsNGC0L7RgNCwINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9Ch0YLQstC+0YDRjtC50YLQtSDRgtCwINC60LXRgNGD0LnRgtC1INCy0LjQt9C90LDRh9C10L3QvdGP0LzQuCDQtNC70Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfQodGC0LLQvtGA0Y7RlCDQutCy0LjRgtC60Lgg0LTQu9GPIENvbmZpZ0l0ZW1zINGDINC/0LXQstC90ZYg0LzQvtC80LXQvdGC0Lgg0YfQsNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ9Ca0LvRltGU0L3RgtC4INC80L7QttGD0YLRjCDQv9C10YDQtdCz0LvRj9C00LDRgtC4INGW0YHRgtC+0YDQuNGH0L3RliDQstC10YDRgdGW0ZcgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ9Ca0LvRltGU0L3RgtC4INC80LDRjtGC0Ywg0LzQvtC20LvQuNCy0ZbRgdGC0Ywg0LLRgNGD0YfQvdGDINC/0LXRgNC10LzQuNC60LDRgtC40YHRjyDQvNGW0LYg0ZbRgdGC0L7RgNC40YfQvdC40LzQuCDQstC10YDRgdGW0Y/QvNC4IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdGWINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQsiDQsNGC0YDQuNCx0YPRgtGWINC90LAg0LXQutGA0LDQvdGWINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0J/RgNC40LrQu9Cw0LQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn0JTQsNC90ZYg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINCyINCw0YLRgNC40LHRg9GC0ZYg0L3QsCDQtdC60YDQsNC90ZYg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLiDQn9GA0LjQutC70LDQtDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0YLQtSDQtNGW0ZcsINC00LvRjyDRj9C60LjRhSDQutC90L7Qv9C60LAg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDQtNC+0YHRgtGD0L/QvdCwINGDINCy0ZbQtNC20LXRgtGWINC/0L7Qslwn0Y/Qt9Cw0L3QuNGFINC+0LFcJ9GU0LrRgtGW0LIgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDLCDRidC+INCyINGG0LjRhSDQtNGW0Y/RhSDQv9C+0LLQuNC90L3RliDQsdGD0YLQuCDQt9Cw0YDQtdGU0YHRgtGA0L7QstCw0L3RliDQvdCw0YHRgtGD0L/QvdGWIEpTINGWIENTUyDRhNCw0LnQu9C4OiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDRliBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGB0YXQtdC80YMgVGVtcGxhdGU6OlRvb2xraXQg0LTQu9GPINGA0Y/QtNC60ZbQsiDQstC10YDRgdGW0LkuINCS0LjQutC+0YDQuNGB0YLQvtCy0YPRlNGC0YzRgdGPINC70LjRiNC1INGDINCy0LjQv9Cw0LTQutGDLCDRj9C60YnQviDQvNC+0LTRg9C70Ywg0YDRj9C00LrRltCyINCy0LXRgNGB0ZbQuSDQvNCw0ZQg0LfQvdCw0YfQtdC90L3RjyBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfRgtC1INC90LDQsdGW0YAg0YPQvNC+0LIsINC30LAg0Y/QutC40YUg0LrQvtGA0LjRgdGC0YPQstCw0YfQtdCy0ZYg0LTQvtC30LLQvtC70LXQvdC+INCx0LDRh9C40YLQuCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCX0LAg0LHQsNC20LDQvdC90Y/QvCwg0YPQvNC+0LLQuCDQvNC+0LbRg9GC0Ywg0LHRg9GC0Lgg0L7QsdC80LXQttC10L3RliDQv9C10LLQvdC40LzQuCDQs9GA0YPQv9Cw0LzQuCDQutC+0YDQuNGB0YLRg9Cy0LDRh9GW0LIuINCE0LTQuNC90LjQvCDQvtCx0L7Qslwn0Y/Qt9C60L7QstC40Lwg0LDRgtGA0LjQsdGD0YLQvtC8INGUINC90LDQt9Cy0LAuINCv0LrRidC+INC90LUg0LLQutCw0LfQsNC90L4g0LbQvtC00L3QuNGFINGW0L3RiNC40YUg0L/QsNGA0LDQvNC10YLRgNGW0LIsINCy0YHRliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsdGD0LTRg9GC0Ywg0LLQuNC00LjQvNC40LzQuCDRgyDRhtGW0Lkg0LrQsNGC0LXQs9C+0YDRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvdC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQtNCw0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LfQsNCz0LDQu9GM0L3QvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC90LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0L7RgtGA0LjQvNCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQt9Cw0LPQsNC70YzQvdC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC30LDQs9Cw0LvRjNC90L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvdC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LfQsNCz0LDQu9GM0L3QvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQvtC00YPQu9GMINC+0LPQu9GP0LTRgyDQtNC70Y8g0LLRltC00L7QsdGA0LDQttC10L3QvdGPINC90LXQstC10LvQuNC60L7Qs9C+INGB0L/QuNGB0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRh9C4INC/0L7RgtGA0ZbQsdC90L4g0L/QvtC60LDQt9GD0LLQsNGC0Lgg0LzRltGC0LrQuCDRgtC40L/RgyDQt9CyXCfRj9C30LrRgyDRgyDQt1wn0ZTQtNC90LDQvdC90Y/RhSDQstGD0LfQu9GW0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQtNC+0YHRgtGD0L/QvdGWINGB0YLQvtCy0L/RhtGWIENJINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDIENJLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINGB0LrQu9Cw0LTQsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC80LDRgdC40LLRgyDQtNC+0YHRgtGD0L/QvdC40YUg0L/QvtC70ZbQsiDQtNC70Y8g0LLRltC00L/QvtCy0ZbQtNC90L7Qs9C+INC60LvQsNGB0YMuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC/0L7QstC40L3QvdGWINCy0ZbQtNC/0L7QstGW0LTQsNGC0Lgg0YHRhdC10LzRliBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRgdC+0YDRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRgdC+0YDRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LrQu9GW0ZTQvdGC0YHRjNC60L7QvNGDINGW0L3RgtC10YDRhNC10LnRgdGWLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LDRgtGA0LjQsdGD0YIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0YHQvtGA0YLRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LAg0YbRltGU0Y4g0L7Qv9C10YDQsNGG0ZbRlNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9C+0YDRj9C00L7QuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0YMg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuINCS0LPQvtGA0YM6INC90LDQudGB0YLQsNGA0ZbRiNGWINC30LLQtdGA0YXRgy4g0JLQvdC40Lc6INC90LDQudC90L7QstGW0YjRliDQt9Cy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0L7RgNGP0LTQvtC6INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC60LvRltGU0L3RgtGB0YzQutC+0LzRgyDRltC90YLQtdGA0YTQtdC50YHRli4g0JLQs9C+0YDRgzog0L3QsNC50YHRgtCw0YDRltGI0ZYg0LfQstC10YDRhdGDLiDQktC90LjQtzog0L3QsNC50L3QvtCy0ZbRiNGWINC30LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YHRgtC+0LLQv9GG0ZYgQ0ksINGJ0L4g0LLRltC00L7QsdGA0LDQttCw0Y7RgtGM0YHRjyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDIENJLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINGB0LrQu9Cw0LTQsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC80LDRgdC40LLRgyDQtNC+0YHRgtGD0L/QvdC40YUg0L/QvtC70ZbQsiDQtNC70Y8g0LLRltC00L/QvtCy0ZbQtNC90L7Qs9C+INC60LvQsNGB0YMuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC80LDRjtGC0Ywg0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRgdGF0LXQvNGWIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ9CS0LjQt9C90LDRh9Cw0ZQg0LPQu9C40LHQuNC90YMg0LfQslwn0Y/Qt9C60ZbQsiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8LCDRj9C60YMg0LHRg9C00LUg0L/QvtC60LDQt9Cw0L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrQuNC5INCx0YPQtNC1INC/0L7QutCw0LfQsNC90L4g0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGC0LjQv9C+0LLQuNC5INCw0YLRgNC40LHRg9GCINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0Y/QutC40Lkg0LHRg9C00LUg0L/QvtC60LDQt9Cw0L3QviDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCf0YDQuNC60LvQsNC0OiAi0JrQu9GO0YciINC80LDRlCDQvNGW0YHRgtC40YLQuCDQvdCw0LfQstGDINC00LjQvdCw0LzRltGH0L3QvtCz0L4g0L/QvtC70Y8sINGDINGG0YzQvtC80YMg0LLQuNC/0LDQtNC60YMgXCdYXCcsICLQl9C80ZbRgdGCIiDQvNCw0ZQg0LzRltGB0YLQuNGC0Lgg0LfQvdCw0YfQtdC90L3RjyDQtNC40L3QsNC80ZbRh9C90L7Qs9C+INC/0L7Qu9GPINC30LDQu9C10LbQvdC+INCy0ZbQtCDRgtC40L/RgyDQtNC40L3QsNC80ZbRh9C90L7Qs9C+INC/0L7Qu9GPLCDQotC10LrRgdGCOiBcJ9GC0LXQutGB0YJcJywg0JLQuNC/0LDQtNCw0Y7Rh9C40Lkg0YHQv9C40YHQvtC6OiBcJzFcJywg0JTQsNGC0LAv0KfQsNGBOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0YLQsCDQsNCx0L4gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9GW0LTQvtCxXCfRlNC60YIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQutC70LDRgdGDIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LTQvtGB0YLRg9C/0L3RliDRgdGC0L7QstC/0YbRliBDSSDQsiDQvtCz0LvRj9C00ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9Cw0LvQtdC20L3QviDQstGW0LQg0LrQu9Cw0YHRgyBDSS4g0JrQvtC20LXQvSDQt9Cw0L/QuNGBINC80LDRlCDRgdC60LvQsNC00LDRgtC40YHRjyDQtyDQvdCw0LfQstC4INC60LvQsNGB0YMg0YLQsCDQvNCw0YHQuNCy0YMg0LTQvtGB0YLRg9C/0L3QuNGFINC/0L7Qu9GW0LIg0LTQu9GPINCy0ZbQtNC/0L7QstGW0LTQvdC+0LPQviDQutC70LDRgdGDLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtC70ZbQsiDQv9C+0LLQuNC90L3RliDQstGW0LTQv9C+0LLRltC00LDRgtC4INGB0YXQtdC80ZYgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQstC40YHQvtGC0YMg0LrQvtC80L/QvtC90LXQvdGC0LAg0YDQtdC00LDQutGC0L7RgNCwINGA0L7Qt9GI0LjRgNC10L3QvtCz0L4g0YLQtdC60YHRgtGDINC00LvRjyDRhtGM0L7Qs9C+INC10LrRgNCw0L3QsC4g0JLQstC10LTRltGC0Ywg0YfQuNGB0LvQviAo0L/RltC60YHQtdC70ZYpINCw0LHQviDQt9C90LDRh9C10L3QvdGPINGDINCy0ZbQtNGB0L7RgtC60LDRhSAo0LLRltC00L3QvtGB0L3QtSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LrRltC70YzQutGW0YHRgtGMINGA0Y/QtNC60ZbQsiDQtNC70Y8g0YDQtdC00LDQutGC0L7RgNCwINCy0LjQt9C90LDRh9C10L3RjCBDSSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0L7RgNGP0LTQvtC6INGB0YLQsNC90ZbQsiDRltC90YbQuNC00LXQvdGC0YMg0LLRltC0INCy0LjRgdC+0LrQvtCz0L4gKNC90LDQv9GA0LjQutC70LDQtCwg0LrRgNC40YLQuNGH0L3QvtCz0L4pINC00L4g0L3QuNC30YzQutC+0LPQviAo0L3QsNC/0YDQuNC60LvQsNC0LCDRhNGD0L3QutGG0ZbQvtC90LDQu9GM0L3QvtCz0L4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LLRltC00L/QvtCy0ZbQtNC90ZYg0YHRgtCw0L3QuCDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPLCDQsiDRj9C60LjRhSDQv9C+0LJcJ9GP0LfQsNC90ZYg0YLRltC60LXRgtC4INC80L7QttGD0YLRjCDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC10LbRgyDQv9C+0YjRg9C60YMg0LTQu9GPINC10LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDRgdGC0L7QstC/0YbRliDQmtCGLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0LIg0LrQvtC80L/Qu9C10LrRgdC90L7QvNGDINC/0L7QtNCw0L3QvdGWINGC0LDQsdC70LjRhtGWINC/0L7RgdC40LvQsNC90Ywg0LTQu9GPINCy0YHRltGFINC60LvQsNGB0ZbQsiDQmtCGLiDQr9C60YnQviDQt9Cw0L/QuNGBINCy0ZbQtNGB0YPRgtC90ZbQuSwg0YLQviDQv9C+0LrQsNC30YPRjtGC0YzRgdGPINGB0YLQvtCy0L/RhtGWINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60ZYg0YHRgtC+0LLQv9GG0ZYg0JrQhiDQstGW0LTQvtCx0YDQsNC20LDRgtC40LzRg9GC0YzRgdGPINGDINC60L7QvNC/0LvQtdC60YHQvdC+0LzRgyDQv9C+0LTQsNC90L3RliDRgtCw0LHQu9C40YbRliDQv9C+0YHQuNC70LDQvdGMLCDQt9Cw0LvQtdC20L3QviDQstGW0LQg0LrQu9Cw0YHRgyDQmtCGLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINC/0L7Rh9C40L3QsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC/0L7QtNCy0ZbQudC90L7Qs9C+INC00LLQvtC60YDQsNC/0LrQuCAo0L3QsNC/0YDQuNC60LvQsNC0LCBDb21wdXRlcjo6KS4g0IbRgdC90YPRlCDQtNC10LrRltC70YzQutCwINCw0YLRgNC40LHRg9GC0ZbQsiDQmtCGLCDRj9C60ZYg0ZQg0YHQv9GW0LvRjNC90LjQvNC4INC00LvRjyDQstGB0ZbRhSDQmtCGICjQvdCw0L/RgNC40LrQu9Cw0LQsINC00LvRjyDQutC70LDRgdGDIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDQlNC70Y8g0LLRltC00L7QsdGA0LDQttC10L3QvdGPINC+0LrRgNC10LzQuNGFIENJLdCw0YLRgNC40LHRg9GC0ZbQsiwg0LLQuNC30L3QsNGH0LXQvdC40YUg0YMgQ0kt0LLQuNC30L3QsNGH0LXQvdC90ZYsINGB0LvRltC0INCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDQvdCw0YHRgtGD0L/QvdGDINGB0YXQtdC80YMgKNC/0YDQuNC60LvQsNC0INC00LvRjyDQutC70LDRgdGDIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCv0LrRidC+INC00LvRjyDQutC70LDRgdGDIENJINC90LXQvNCw0ZQg0LbQvtC00L3QvtCz0L4g0LfQsNC/0LjRgdGDLCDQsdGD0LTQtSDQv9C+0LrQsNC30LDQvdC+INGB0YLQvtCy0L/Rh9C40LrQuCDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDQtdC70LXQvNC10L3RgtC4INC00L7RgdGC0YPQv9C90ZYg0LTQu9GPICLQlNGW0ZciINC90LAg0YLRgNC10YLRjNC+0LzRgyDRgNGW0LLQvdGWINGB0YLRgNGD0LrRgtGD0YDQuCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60ZYg0LXQu9C10LzQtdC90YLQuCDQtNC+0YHRgtGD0L/QvdGWINC90LAg0L/QtdGA0YjQvtC80YMg0YDRltCy0L3RliDRgdGC0YDRg9C60YLRg9GA0LggSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDQtdC70LXQvNC10L3RgtC4INC00L7RgdGC0YPQv9C90ZYg0L3QsCDQtNGA0YPQs9C+0LzRgyDRgNGW0LLQvdGWINGB0YLRgNGD0LrRgtGD0YDQuCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutC40Lkg0YLQuNC/INC30LJcJ9GP0LfQutGDICjQvdCw0LfQstCw0L3QuNC5INC3INGC0L7Rh9C60Lgg0LfQvtGA0YMg0LrQstC40YLQutCwKSDQvNC+0LbQtSDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBINC30LJcJ9GP0LfQsNC90L7Qs9C+INCa0IYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutC40Lkg0YLQuNC/INC60LLQuNGC0LrQsCDQvNC+0LbQtSDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBINC/0L7Qslwn0Y/Qt9Cw0L3QvtGXINCa0IYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn0J7QvdC+0LLQu9C10L3QvdGPINCy0LjQt9C90LDRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQktC40LTQsNC70LjRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9Ca0L7Qu9GW0YAg0YHRgtCw0L3RgyDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQlNGD0LHQu9GW0LrQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC/0L7QtNGW0Lkg0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtC70ZbQsiwg0Y/QutC40Lkg0L/QvtC30L3QsNGH0LDRlCDQstC40LfQvdCw0YfQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGP0Log0L3QtdGB0LjQvdGF0YDQvtC90ZbQt9C+0LLQsNC90ZYsINGP0LrRidC+INC30LzRltC90Y7RjtGC0YzRgdGPINC00LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjywg0L/QvtC60LDQt9Cw0L3RliDQvdCwINC00L7QtNCw0YLQutC+0LLQvtC80YMg0LXQutGA0LDQvdGWINC/0L7Qu9GW0LIgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjywg0YnQviDQstGW0LTQvtCx0YDQsNC20LDRjtGC0YzRgdGPINC90LAg0LXQutGA0LDQvdGWINC+0LPQu9GP0LTRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC60LvRltGU0L3RgtGB0YzQutC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0L3QsCDQtdC60YDQsNC90ZYg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQktC80LjQutCw0ZQg0YTRg9C90LrRhtGW0Y4g0LzQsNGB0L7QstC40YUg0LTRltC5INC3INC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtNC70Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLCDRidC+INC00L7Qt9Cy0L7Qu9GP0ZQg0L/RgNCw0YbRjtCy0LDRgtC4INC3INC00LXQutGW0LvRjNC60L7QvNCwINC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQvtC00L3QvtGH0LDRgdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfQktC80LjQutCw0ZQg0YTRg9C90LrRhtGW0Y4g0LzQsNGB0L7QstC40YUg0LTRltC5INC00LvRjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC70LjRiNC1INC00LvRjyDQv9C10YDQtdC70ZbRh9C10L3QuNGFINCz0YDRg9C/Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0L/QvtC00ZbQuSDQtNC70Y8g0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPIGNvbmZpZ2l0ZW0tc3RhdHVzINC30LAg0L/QvtGB0LjQu9Cw0L3QvdGP0LwgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn0J/QvtC70Y8g0ZbQvdC00LXQutGB0YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0YnQviDQstC40LrQvtGA0LjRgdGC0L7QstGD0Y7RgtGM0YHRjyDQtNC70Y8g0L/QvtCy0L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+INC/0L7RiNGD0LrRgy4g0J/QvtC70Y8g0YLQsNC60L7QtiDQt9Cx0LXRgNGW0LPQsNGO0YLRjNGB0Y8sINCw0LvQtSDQvdC1INGUINC+0LHQvtCyXCfRj9C30LrQvtCy0LjQvNC4INC00LvRjyDQt9Cw0LPQsNC70YzQvdC+0Zcg0YTRg9C90LrRhtGW0L7QvdCw0LvRjNC90L7RgdGC0ZYuINCS0LrQu9GO0YfQtdC90L3RjyDQstC60LvQsNC00LXQvdGMINC80L7QttC90LAg0LLQuNC80LrQvdGD0YLQuCwg0LLRgdGC0LDQvdC+0LLQuNCy0YjQuCDQt9C90LDRh9C10L3QvdGPIDAg0LDQsdC+INCy0LjQtNCw0LvQuNCy0YjQuCDRl9GFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn0J/QvtC70Y8sINGJ0L4g0LfQsdC10YDRltCz0LDRjtGC0YzRgdGPINCyINGW0L3QtNC10LrRgdGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrRliDQstC40LrQvtGA0LjRgdGC0L7QstGD0Y7RgtGM0YHRjyDQtNC70Y8g0ZbQvdGI0LjRhSDRhtGW0LvQtdC5LCDQvtC60YDRltC8INC/0L7QstC90L7RgtC10LrRgdGC0L7QstC+0LPQviDQv9C+0YjRg9C60YMuINCU0LvRjyDQv9C+0LLQvdC+0Zcg0YTRg9C90LrRhtGW0L7QvdCw0LvRjNC90L7RgdGC0ZYg0LLRgdGWINC/0L7Qu9GPINGUINC+0LHQvtCyXCfRj9C30LrQvtCy0LjQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXRlNGB0YLRgNCw0YbRltGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRiNCw0YDRgyDQstC40LrQu9C40LrRgyBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdGU0YHRgtGA0LDRhtGW0Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGI0LDRgNGDINCy0LjQutC70LjQutGDIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdGU0YHRgtGA0LDRhtGW0Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGI0LDRgNGDINCy0LjQutC70LjQutGDIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J7Qs9C70Y/QtCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0ZQg0YHRgtCw0L3QuCDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPINC00L4g0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LrQu9GW0ZTQvdGC0YHRjNC60L7QvNGDINGW0L3RgtC10YDRhNC10LnRgdGWLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDRlCDRgdGC0LDQvdC4INGW0L3RhtC40LTQtdC90YLRltCyINGDINC/0L7RiNGD0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQutC70ZbRlNC90YLRgdGM0LrQvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrRliDQsdGD0LTQtSDQstGW0LTQvtCx0YDQsNC20LXQvdC+INCyINGA0LXQt9GD0LvRjNGC0LDRgtGWINGG0ZbRlNGXINC+0L/QtdGA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDQv9C10YDQtdCy0ZbRgNC60Lgg0LPRgNGD0L/QuCwg0LLRltC00L/QvtCy0ZbQtNCw0LvRjNC90L7RlyDQt9CwINC60LvQsNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/QtdGA0LXQstGW0YDQutC4INCz0YDRg9C/0LgsINCy0ZbQtNC/0L7QstGW0LTQsNC70YzQvdC+0Zcg0LfQsCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDQs9C10L3QtdGA0LDRhtGW0Zcg0YHRgtCw0YLQuNGB0YLQuNC60Lgg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRltC80LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINGH0LjRgdC70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrRltC70YzQutGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrRliDQsdGD0LTRg9GC0Ywg0LLRltC00L7QsdGA0LDQttCw0YLQuNGB0Y8g0L3QsCDQutC+0LbQvdGW0Lkg0YHRgtC+0YDRltC90YbRliDRgNC10LfRg9C70YzRgtCw0YLRltCyINC/0L7RiNGD0LrRgyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60ZYg0LHRg9C00YPRgtGMINCy0ZbQtNC+0LHRgNCw0LbQsNGC0LjRgdGPINC90LAg0LrQvtC20L3RltC5INGB0YLQvtGA0ZbQvdGG0ZYg0YDQtdC30YPQu9GM0YLQsNGC0ZbQsiDQv9C+0YjRg9C60YMg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LrQu9GW0ZTQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ9Ce0LFcJ9GU0LrRgtC4INC00LvRjyDQv9C+0YjRg9C60YMsINC60ZbQu9GM0LrRltGB0YLRjCDQt9Cw0L/QuNGB0ZbQsiDRliDRj9C60ZYg0LDRgtGA0LjQsdGD0YLQuCDQv9C+0LrQsNC30YPQstCw0YLQuC4g0JDRgtGA0LjQsdGD0YLQuCBDb25maWdJdGVtINC80LDRjtGC0Ywg0LHRg9GC0Lgg0Y/QstC90L4g0LfQsdC10YDQtdC20LXQvdGWINGH0LXRgNC10LcgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn0J7Qs9C70Y/QtC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQutCw0YLQtdCz0L7RgNGW0Lkg0LTQu9GPINC60LvQsNGB0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRhNGW0LvRjNGC0YDRltCyINGB0YLQvtCy0L/RhtGW0LIg0LIg0L7Qs9C70Y/QtNGWINC80LDQu9C40YUg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDOiDQstGB0YLQsNC90L7QstC70LXQvdC90Y8g0LfQvdCw0YfQtdC90L3RjyAi0JDQutGC0LjQstC90LjQuSIg0L3QsCAwINC70LjRiNC1INC30LDQsdC+0YDQvtC90LjRgtGMINCw0LPQtdC90YLQsNC8INGA0LXQtNCw0LPRg9Cy0LDRgtC4INC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDRhtGW0ZTRlyDQs9GA0YPQv9C4INGDINGB0LLQvtGX0YUg0L7RgdC+0LHQuNGB0YLQuNGFINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rj9GFLCDQsNC70LUg0LTQvtC30LLQvtC70LjRgtGMINCw0LTQvNGW0L3RltGB0YLRgNCw0YLQvtGA0LDQvCDRgNC10LTQsNCz0YPQstCw0YLQuCDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0LLRltC0INGW0LzQtdC90ZYg0ZbQvdGI0L7Qs9C+INC60L7RgNC40YHRgtGD0LLQsNGH0LAuINCS0LjQutC+0YDQuNGB0YLQvtCy0YPQudGC0LUgIlByZWZlcmVuY2VHcm91cCIsINGJ0L7QsSDQutC+0L3RgtGA0L7Qu9GO0LLQsNGC0LgsINCyINGP0LrRltC5INC+0LHQu9Cw0YHRgtGWINC60L7RgNC40YHRgtGD0LLQsNGG0YzQutC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgyDQstGW0LTQvtCx0YDQsNC20LDRgtC4INGG0ZYg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0YHRgtCw0L3RltCyINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L/QvtC30L3QsNGH0LDRjtGC0YzRgdGPINC60L7Qu9GM0L7RgNC+0Lwg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINGB0YLQsNC90ZbQsiDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0L/RgNC40LrQu9Cw0LTRgyDQtNC+0LfQstC+0LvRgyDQs9GA0YPQvyDQt9Cw0LPQsNC70YzQvdC40YUg0LDRgtGA0LjQsdGD0YLRltCyINC60LDRgtCw0LvQvtCz0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC80L7QtNGD0LvRjyDRltC80LXQvSDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQvNC+0LTRg9C70Y8g0YfQuNGB0LvQsCDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgdGC0L7RgNGW0L3QvtC6ICjQvdCwINGP0LrQuNGFINCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINC80L7QtNGD0LvRjyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINC80L7QtNGD0LvRjyDRiNCw0LHQu9C+0L3RgyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyDRltC90YHRgtGA0YPQvNC10L3RgtCw0YDRltGOINC00LvRjyDQutC70LDRgdGW0LIg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQv9C+0LTQsNC90L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgtGA0LjQs9C10YDQsCDQstC10YDRgdGW0Zcg0LTQu9GPINC60LvQsNGB0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn0JPRgNGD0L/QsCDQtNC+0LfQstC+0LvRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LTRltGXINC/0YDQuNC60YDRltC/0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQutC70ZbRlNC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0L/QtdGA0LXQs9C70Y/QtNGDINC00LXRgNC10LLQsCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LTQvtC00LDQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LzQsNGB0L7QstC40YUg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINGA0LXQtNCw0LPRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0ZbRgdGC0L7RgNGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LTRgNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn0J3QtdC+0LHRhdGW0LTQvdGWINC/0YDQuNCy0ZbQu9C10Zcg0LTQu9GPINCy0LjQtNCw0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0L7RiNGD0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ9CQ0LLRgtC+0LzQsNGC0LjRh9C90L4g0LLRgdGC0LDQvdC+0LLQu9GO0LLQsNGC0Lgg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINC00LvRjyDQmtCGLCDQutC+0LvQuCDQotGW0LrQtdGCINC/0YDQuNCyXCfRj9C30LDQvdC40Lkg0LTQviDQmtCGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0YHRgtCw0L3QvtCy0LvRjtGUINGB0YLQsNC9INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L3QsCDQvtGB0L3QvtCy0L3QvtC80YMg0LXQutGA0LDQvdGWINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLRgdGC0LDQvdC+0LLQu9GO0ZQg0YHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINC90LAg0L7RgdC90L7QstC90L7QvNGDINC10LrRgNCw0L3RliDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOLCDRj9C60LUg0LTQvtC30LLQvtC70Y/RlCDQt9CyXCfRj9C30LDRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtyDRltC90YjQuNC8INC+0LFcJ9GU0LrRgtC+0Lwg0YMg0LLRltC60L3RliDQvNCw0YHRiNGC0LDQsdGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNC+0YHRgtGD0L/RgyDQtNC+INGW0YHRgtC+0YDRltGXINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNC+0YHRgtGD0L/RgyDQtNC+INGW0YHRgtC+0YDRltGXINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0LLQuNC00LDQu9C10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC30LHRltC70YzRiNC10L3QvtC80YMg0LLQuNCz0LvRj9C00ZYg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQstGW0LTQvtCx0YDQsNC20LXQvdC90Y8g0L/QvtGB0LjQu9Cw0L3RjCDQvdCwINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0LjQs9C70Y/QtNGWINC00LXRgNC10LLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00YPQsdC70Y7QstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQtNGD0LHQu9GO0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDQudC+0LPQviDQt9Cx0ZbQu9GM0YjQtdC90L7QvNGDINCy0LjQs9C70Y/QtNGWINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQstGW0LrQvdGWINC80LDRgdGI0YLQsNCx0YPQstCw0L3QvdGPINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0L/QvtCy0LXRgNC90LXQvdC90Y8g0LTQviDQv9GD0L3QutGC0YMg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC80LDRgdGI0YLQsNCx0YPQstCw0L3QvdGPINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00YDRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LfQsdGW0LvRjNGI0LXQvdC+0LzRgyDQstC40LPQu9GP0LTRliDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQt9Cx0ZbQu9GM0YjQtdC90L3RjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDQvtCz0LvRj9C00ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINGW0YHRgtC+0YDRltGOINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgKNGDINC30LLQvtGA0L7RgtC90L7QvNGDINC/0L7RgNGP0LTQutGDKSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0ZbRjyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8LCDRj9C60LAg0LLRltC00L7QsdGA0LDQttCw0ZTRgtGM0YHRjywg0Y/QutGJ0L4g0L3QtSDQstC40LHRgNCw0L3QviDQttC+0LTQvdC+0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQhtC00LXQvdGC0LjRhNGW0LrQsNGC0L7RgCDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0L3QsNC/0YDQuNC60LvQsNC0LCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4g0JfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRhtC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JDQstGC0L7QvNCw0YLQuNGH0L3QviDQt9Cw0L/Rg9GB0LrQsNGUINCy0LjQutC70LjRh9C90LjQuiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LjRgNCw0Lcg0YDRj9C00LrQsCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINGA0Y/QtNC60LAg0LLQtdGA0YHRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ9Ci0YDQuNCz0LXRgCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9Cn0Lgg0LzQvtC20L3QsCDRg9C90LjQutC90YPRgtC4INCy0LjQutC+0L3QsNC90L3RjyBDb25maWdJdGVtQUNMINGI0LvRj9GF0L7QvCDQv9C10YDQtdCy0ZbRgNC60Lgg0LrQtdGI0L7QstCw0L3QuNGFINC30LDQu9C10LbQvdC+0YHRgtC10Lkg0L/QvtC70ZbQsi4g0KbQtSDQvNC+0LbQtSDQv9C+0LrRgNCw0YnQuNGC0Lgg0YfQsNGBINC30LDQstCw0L3RgtCw0LbQtdC90L3RjyDRhNC+0YDQvNGD0LssINCw0LvQtSDQudC+0LPQviDRgdC70ZbQtCDQstC40LzQutC90YPRgtC4LCDRj9C60YnQviBBQ0xNLdC80L7QtNGD0LvRliDQsdGD0LTQtSDQstC40LrQvtGA0LjRgdGC0LDQvdC+INC00LvRjyBJVFNNQ29uZmlnSXRlbS0g0ZYgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ9Cv0LrQsCDQt9Cw0LPQsNC70YzQvdCwINGW0L3RhNC+0YDQvNCw0YbRltGPINCy0ZbQtNC+0LHRgNCw0LbQsNGU0YLRjNGB0Y8g0LIg0LfQsNCz0L7Qu9C+0LLQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ9Cz0LvQvtCx0LDQu9GM0L3QuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YLQv9GA0L7QtNGD0LrRgtC40LLQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ9C/0YDQtdC/0YDQvtC00YPQutGC0LjQstC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YLQuNCy0L3QuNC5JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC00Y7QudC80ZbQsiAoNDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEg0LTRjtC50LwgKDUzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1INC00Y7QudC80LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQtNGO0LnQvNCwICg4MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS3QtNGO0LnQvNC+0LLQsCDRgdGC0ZbQudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC00Y7QudC80LAgKDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSDQtNGO0LnQvNGW0LIgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LTRjtC50LzQvtCy0LAg0YHRgtGW0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDQtNGO0LnQvNGW0LIgKDk3LDc5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLdC00Y7QudC80L7QstCwINGB0YLRltC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LTRjtC50LzQsCAoNjAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiDQtNGO0LnQvNC4ICgxMDYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1INC00Y7QudC80ZbQsiAoMTIwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUg0LTRjtC50LzQsCAoOCw4OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1INC00Y7QudC80LAgKDEzMywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUg0LTRjtC50LzQsCAoODAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSDQtNGO0LnQvNGW0LIgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LTRjtC50LzQsCAoOTAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyDQtNGO0LnQvNC4ICgxNjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDQtNGO0LnQvNCwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQtNGO0LnQvNGW0LIgKDE3MywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1INC00Y7QudC80LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LTRjtC50LzQsCAoMTg2LDY5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzINC00Y7QudC80LAgKDExMDAg0LzQvCk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSDQtNGO0LnQvNGW0LIgKDIwMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyINC00Y7QudC80LAgKDEyMDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0INC00Y7QudC80LggKDIxMywzNiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INC00Y7QudC80ZbQsiAoMTcsNzgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSDQtNGO0LnQvNCwICgyMiwyMyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1INC00Y7QudC80ZbQsiAoMjYsNjcg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1INC00Y7QudC80LAgKDMxLDEyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDQtNGO0LnQvNGW0LIgKDM1LDU2INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSDQtNGO0LnQvNCwICg0MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9CR0YPRhdCz0LDQu9GC0LXRgNGB0YzQutC40Lkg0L7QsdC70ZbQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cf0YDQuNGB0LLQvtGU0L3QvdGPINCw0LTRgNC10YHQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn0JDQvdCw0LvQvtCz0L7QstC40Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfQotC40L8g0L/RgNC40LvQsNC00YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfQhNC80L3RltGB0YLRjCDQsNC60YPQvNGD0LvRj9GC0L7RgNCwICjQkNGHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfQotC40L8g0LHQsNGC0LDRgNC10ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfQsdGD0LTQuNC90L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn0IbQvdGC0LXRgNGE0LXQudGBINGI0LjQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQn9Cg0J7QptCV0KHQntCgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC/0YDQvtGG0LXRgdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn0ITQvNC90ZbRgdGC0YwgKNCT0JEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn0J/QvtGC0YPQttC90ZbRgdGC0Ywg0L3QsCDQvtC00L3RgyDQstGW0LTQtdC+0LrQsNGA0YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LrQsNGA0YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn0JfRh9C40YLRg9Cy0LDRhyDQutCw0YDRgtC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAn0KLQuNC/INC60LDRgNGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0JrQu9GW0ZTQvdGC0YHRjNC60ZYg0YHQtdGA0YLQuNGE0ZbQutCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfQmtC70ZbRlNC90YLRgdGM0LrQtSDQv9GA0L7Qs9GA0LDQvNC90LUg0LfQsNCx0LXQt9C/0LXRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ9Ca0LDRgtC10LPQvtGA0ZbRjyDQutC70ZbRlNC90YLRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ9Ci0LDQutGC0L7QstCwINGH0LDRgdGC0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfQotCw0LrRgtC+0LLQsCDRh9Cw0YHRgtC+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0ZbQutCw0YLQuCDQutC+0LTQvtCy0L7Qs9C+INC/0ZbQtNC/0LjRgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfQmtC+0L3RhNC10YDQtdC90YYt0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0ZbRgCDQv9GA0L4g0L3QsNC00LDQvdC90Y8g0LrQvtC90YHRg9C70YzRgtCw0YbRltC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfQmtC+0L3RgtCw0LrRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfQl9CyXCfRj9C30LDRgtC40YHRjyDQtyDQtNC40YHRgtGA0LjQsVwn0Y7RgtC+0YDQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70ZbQvdC90Y8g0LrQvtC90YLQtdC50L3QtdGA0LDQvNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAn0JrQvtC90YLRgNCw0LrRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn0KLQuNC/INC60L7QvdGC0YDQsNC60YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ9Cf0LXRgNGW0L7QtCDQtNGW0Zcg0LrQvtC90YLRgNCw0LrRgtGDINCy0ZbQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICfQotC10YDQvNGW0L0g0LTRltGXINC60L7QvdGC0YDQsNC60YLRgyDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ9CR0LXQt9C00YDQvtGC0L7QstC40Lkg0YLQtdC70LXRhNC+0L0gKERFQ1Qt0YLQtdC70LXRhNC+0L0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ9Ce0LTQuNC90LjRhtGPINCy0LjQvNGW0YDRgyDQstC40YLRgNCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LvRltGG0LXQvdC30ZbQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn0JTQsNGC0LAg0YHRgtCy0L7RgNC10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICfQodC/0LXRhtGW0LDQu9GM0L3QuNC5INGB0YLQtdC70LDQtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDQt9Cw0YDQtdC30LXRgNCy0L7QstCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLdGB0LXRgNCy0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn0JTQsNGC0LAg0ZbQvdCy0L7QudGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ9CU0LDRgtCwINC30LDQvNC+0LLQu9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfQlNCw0YLQsCDQv9C+0YfQsNGC0LrRgyDQtNGW0Zcg0LPQsNGA0LDQvdGC0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfQlNCw0YLQsCDQstC40L/Rg9GB0LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn0KDQvtCx0L7Rh9C40Lkg0YHRgtGW0LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0Lgg0L/RltC00L/QuNGB0LDQvdC90Y8g0LTQvtC60YPQvNC10L3RgtGW0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0Lgg0LXQu9C10LrRgtGA0L7QvdC90L7RlyDQv9C+0YjRgtC4IChTL01JTUUg0YHQtdGA0YLQuNGE0ZbQutCw0YLQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn0KLRgNGD0LTQvtCy0LjQuSDQtNC+0LPQvtCy0ZbRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ9Ca0ZbQvdGG0LXQstCwIElQLdCw0LTRgNC10YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ9Ca0ZbQvdC10YbRjCDQv9GW0LTRgtGA0LjQvNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfQotC10YDQvNGW0L0g0L/RgNC40LTQsNGC0L3QvtGB0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn0JfQvtCy0L3RltGI0L3RltC5INC20L7RgNGB0YLQutC40Lkg0LTQuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfQkdGA0LDQvdC00LzQsNGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ9Cf0YDQvtGI0LjQstC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfQndCw0LrQvtC/0LjRh9GD0LLQsNGHINC10L3QtdGA0LPRltGXINC80LDRhdC+0LLQuNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfQpNC+0YDQvC3RhNCw0LrRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINGE0YDQsNC90YfQsNC50LfQuNC90LPRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXQt9C60L7RiNGC0L7QstC90LUg0L/RgNC+0LPRgNCw0LzQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfQl9Cw0LPQsNC70YzQvdCwINGW0L3RhNC+0YDQvNCw0YbRltGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn0JLRltC00LXQvtC60LDRgNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9CS0ZbQtNC10L7QutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn0JDQv9Cw0YDQsNGC0L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfQnNC+0LTQtdC70Ywg0L7QsdC70LDQtNC90LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn0JLQsNCz0LAg0L7QsdC70LDQtNC90LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9CT0LDRgNC90ZbRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ9Cf0YDQvtGC0L7QutC+0LsgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn0KPQv9GA0LDQstC70ZbQvdC90Y8g0ZbQtNC10L3RgtC40YTRltC60LDRhtGW0ZTRjiDRgtCwINC00L7RgdGC0YPQv9C+0LwgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9CG0L3QstC10L3RgtCw0YDQvdC40Lkg0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgNCw0YXRg9C90LrRgy3RhNCw0LrRgtGD0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9Ca0LvQsNCy0ZbQsNGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ9Cg0Jot0LzQvtC90ZbRgtC+0YAgKNGA0ZbQtNC60L7QutGA0LjRgdGC0LDQu9GW0YfQvdC40Lkg0LTQuNGB0L/Qu9C10LkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfQodCy0ZbRgtC70L7QtNGW0L7QtNC90LjQuSDQvNC+0L3RltGC0L7RgCAo0YHQstGW0YLQu9C+0LTRltC+0LTQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn0KHRgtCw0YbRltC+0L3QsNGA0L3QuNC5INGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9Cd0L7Rg9GC0LHRg9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn0KjQuNGA0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDE6INCk0ZbQt9C40YfQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCAyOiDQmtCw0L3QsNC70YzQvdC40Lkg0YDRltCy0LXQvdGMINC/0LXRgNC10LTQsNGH0ZYg0LTQsNC90LjRhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDM6INCc0LXRgNC10LbQtdCy0LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn0KDRltCy0LXQvdGMIDM6INCc0LXRgNC10LbQtdCy0LjQuSDRgNGW0LLQtdC90YwgKNGB0YPQv9C10YDQvNC10YDQtdC20LApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA0OiDQotGA0LDQvdGB0L/QvtGA0YLQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNTog0KDRltCy0LXQvdGMINGB0LXQsNC90YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNjog0KDRltCy0LXQvdGMINC/0YDQtdC30LXQvdGC0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNzog0L/RgNC40LrQu9Cw0LTQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC+0YDQtdC90LTQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9Cb0ZbRhtC10L3Qt9GW0LnQvdCwINGD0LPQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9Cb0ZbRhtC10L3Qt9GW0LnQvdC40Lkg0LrQu9GO0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn0KLQuNC/INC70ZbRhtC10L3Qt9GW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ9Ci0LXRgNC80ZbQvSDQtNGW0Zcg0LvRltGG0LXQvdC30ZbRlyDQstGW0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfQotC10YDQvNGW0L0g0LTRltGXINC70ZbRhtC10L3Qt9GW0Zcg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn0JvRltGC0ZbQuS3Qt9Cw0LvRltC30L4t0YTQvtGB0YTQsNGC0L3QuNC5IChMaUZlUE80KSDQsNC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn0JvRltGC0ZbQuS3RltC+0L3QvdC40LkgKExpLWlvbikg0LDQutGD0LzRg9C70Y/RgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfQmtGA0LXQtNC40YLQvdC40Lkg0LTQvtCz0L7QstGW0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9Cg0L7Qt9GC0LDRiNC+0LLQsNC90LjQuSDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfQlNC+0LLQs9C+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ9CS0LjRgNC+0LHQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0L3QsNCy0LDQvdGC0LDQttGD0LLQsNC70YzQvdCwINC30LTQsNGC0L3RltGB0YLRjCAo0JLRgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn0J/QsNC8XCfRj9GC0YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICfQotC40L8g0L/QsNC8XCfRj9GC0ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ9Cc0ZbQvdGWLdGB0YLQtdC70LDQtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvNC+0LHRltC70YzQvdC+0LPQviDRgtC10LvQtdGE0L7QvdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ9Cc0L7QsdGW0LvRjNC90LjQuS/QstCx0YPQtNC+0LLQsNC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LvRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9Ce0L/QuNGBINC80L7QtNC10LvRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfQoNC+0LfQtNGW0LvRjNC90LAg0LfQtNCw0YLQvdGW0YHRgtGMINC80L7QvdGW0YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn0KDQvtC30LzRltGAINC80L7QvdGW0YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQnNC40YjQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9Cc0LXRgNC10LbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfQhtC90YTQvtGA0LzQsNGG0ZbRjyDQv9GA0L4g0LzQtdGA0LXQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfQhtC90YTQvtGA0LzQsNGG0ZbRjyDQv9GA0L4g0LzQtdGA0LXQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfQnNC10YDQtdC20LXQstC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn0J3RltC60LXQu9GMLdC60LDQtNC80ZbRlNCy0ZYgKE5pQ2QpINCw0LrRg9C80YPQu9GP0YLQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfQndGW0LrQtdC70Ywt0LzQtdGC0LDQuy3Qs9GW0LTRgNC40LTQvdC40LkgKE5pTUgpINCw0LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ9Cj0LPQvtC00LAg0L/RgNC+INC90LXRgNC+0LfQs9C+0LvQvtGI0LXQvdC90Y8gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfQkdC70L7QutC90L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQv9GA0L7RhtC10YHQvtGA0ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LzQvtC00YPQu9GW0LIg0L7Qv9C10YDQsNGC0LjQstC90L7RlyDQv9Cw0LxcJ9GP0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LLRltC00LXQvtC60LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELdC80L7QvdGW0YLQvtGAICjQvtGA0LPQsNC90ZbRh9C90LjQuSDRgdCy0ZbRgtC70L7QtNGW0L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn0J7Qv9C10YDQsNGG0ZbQudC90ZYg0LLQuNGC0YDQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQt9Cw0LzQvtCy0LvQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ9CG0L3RiNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQoNC10LfRg9C70YzRgtCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICfQn9CG0J0t0JrQntCUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOLdCa0J7QlCAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ9CR0JvQrtCS0J7QotCQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn0J/QsNGA0YLQvdC10YDRgdGM0LrQsCDRg9Cz0L7QtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfQotC40L8g0YLQtdC70LXRhNC+0L3Rgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9Ck0ZbQt9C40YfQvdGWINGP0LTRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn0J/QvtGB0YLQsNGH0LDQvdC90Y8g0LXQu9C10LrRgtGA0L7QtdC90LXRgNCz0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9Cf0YDQuNC00LHQsNC90L4g0LfQsCDQsNC00YDQtdGB0L7Rjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn0JPQu9C40LHQuNC90LAg0YHRgtGW0LnQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn0KHRgtC10LvQsNC20L3RliDQsdC70L7QutC4IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0JrRltC80L3QsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0t0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0LggU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC60YPQv9GW0LLQu9GWLdC/0YDQvtC00LDQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ9Ch0YPQv9GD0YLQvdC40LrQvtCy0LjQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfQk9C10YDQvNC10YLQuNGH0L3QuNC5INGB0LLQuNC90YbQtdCy0L4t0LrQuNGB0LvQvtGC0L3QuNC5IChTTEEpINCw0LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn0KHQtdGA0ZbQudC90LjQuSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ9Ch0LXRgNCy0LXRgNC90LUg0L/RgNC+0LPRgNCw0LzQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC/0YDQviDQvdCw0LTQsNC90L3RjyDQv9C+0YHQu9GD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfQodC10YDQstGW0YHQvdC40Lkg0YLQtdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ9Ci0LjQvyDRgNC+0LfQtdGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9Cf0YDQvtCz0YDQsNC80L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfQodC/0ZbQutC10YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfQn9C+0YfQsNGC0LrQvtCy0LAgSVAt0LDQtNGA0LXRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfQl9Cx0LXRgNGW0LPQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ9Cg0L7Qt9C00ZbQuyDQtNC70Y8g0LfQsdC10YDRltCz0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfQlNC+0YfRltGA0L3RlCDQv9GW0LTQv9GA0LjRlNC80YHRgtCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ9Cf0ZbQtNGB0YPQvNC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfQotC+0L3QutC40Lkg0LrQu9GW0ZTQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfQndC40YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn0JHQu9C40YHQutCw0LLQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn0JfQsNCz0LDQu9GM0L3QuNC5INC+0LHRgdGP0LMg0L7Qv9C10YDQsNGC0LjQstC90L7RlyDQv9Cw0LxcJ9GP0YLRliDQstGW0LTQtdC+0LrQsNGA0YLQuCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfQl9Cw0LPQsNC70YzQvdCwINC+0L/QtdGA0LDRgtC40LLQvdCwINC/0LDQvFwn0Y/RgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn0KHQtdC90YHQvtGA0L3QuNC5INC80L7QvdGW0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn0JLQtdC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi3QutC+0L3RhtC10L3RgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi3Qs9Cw0YDQvdGW0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC3RgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn0JLQtdCxLdC60LDQvNC10YDQsCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/vi_VN_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnZpX1ZOX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdC4bqhbiBjw7MgdGjhuq10IHPhu7EgbXXhu5FuIHhvw6EgxJHDoXAgw6FuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUcuG6oW5nIHRow6FpIHRyaeG7g24ga2hhaSBj4bunYSDEkeG7kWkgdMaw4bujbmcgbsOgeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUcuG6oW5nIHRow6FpIHRyaeG7g24ga2hhaSBj4bunYSDEkeG7kWkgdMaw4bujbmcgbsOgeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1ThuqFvIGzhuqduIGPhuq1wIG5o4bqtdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ+G6pXUgaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSBoaeG7h24gdGjhu51pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1RoYXkgxJHhu5VpIGzhuqduIGN14buRaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdUaGF5IMSR4buVaSBs4bqnbiBjdeG7kWknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdUaGFtIGNoaeG6v3UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdIb+G6oXQgxJHhu5luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnQ+G6o25oIGLDoW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Ry4bqhbmcgdGjDoWkgdHJp4buDbiBraGFpIGPhu6dhIMSR4buRaSB0xrDhu6NuZyBuw6B5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVHLhuqFuZyB0aMOhaSB0cmnhu4NuIGtoYWkgY+G7p2EgxJHhu5FpIHTGsOG7o25nIG7DoHknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdLaMO0bmcgY8OzIHF1eeG7gW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSBoaeG7h24gdGjhu51pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0dp4buvYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfEkMOjIGjhur90IGjhuqFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnQuG6o28gdHLDrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnVGhlbyBr4bq/IGhv4bqhY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnU+G7rWEgY2jhu69hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdLaMO0bmcgc+G7rSBk4bulbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnVGjhuqltIMSR4buLbmgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ0tp4buDbSB0cmEvSOG7j2kgxJHDoXAnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ+G6pXUgaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgbeG7mXQgbcO0LcSRdW4gdOG7lW5nIHF1w6F0IMSR4buDIGhp4buDbiB0aOG7iyBt4buZdCBkYW5oIHPDoWNoIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdD4bqldSBoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdOaMOibiDEkcO0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWIgc2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZ3VyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1Ry4bqhbmcgdGjDoWkgc+G7sSBj4buRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Thu5VuZyBxdWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnVGhhbSBz4buRIGNobyBuaMOzbSBj4bqlcCBwaMOpcCBj4bunYSB0aHXhu5ljIHTDrW5oIGRhbmggbeG7pWMgY2h1bmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBpbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHF1YXkgbOG6oWkgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4Mgc+G7rWEga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgbGlua2VkIHRpY2tldHMsIGZvciBleGFtcGxlIGZvciBwcm9jZXNzZXMgY2hlY2tpbmcgbGVuc2VzLiBXaXRoICJDbGFzc2VzIiBhbmQgIkxpbmtUeXBlcyIsIHRoZSBleGVjdXRpb24gY2FuIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjb25maWcgaXRlbSBjbGFzc2VzIGFuZCBsaW5rIHR5cGVzLiBQbGVhc2UgcHV0IGluIHRoZSBleGFjdCBjbGFzcyBuYW1lcyBpbnRvICJDbGFzc2VzIiBhcyB3ZWxsIGFzIHRoZSBleGFjdCBsaW5rIHR5cGUgbmFtZXMgaW4gIkxpbmtUeXBlcyIsIHJlc3BlY3RpdmVseS4gQ3VycmVudGx5IGF2YWlsYWJsZSBMaW5rVHlwZXMgYXJlOiBOb3JtYWwsIFBhcmVudENoaWxkLCBMb2NhdGlvbk9mLCBBbHRlcm5hdGl2ZVRvLCBDb25uZWN0ZWRUbywgRGVwZW5kc09uLCBJbmNsdWRlcywgUmVsZXZhbnRUby4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIHVzYWJsZSBsaW5rIHR5cGVzIG1heSBiZSBmdXJ0aGVyIHJlc3RyaWN0ZWQgYnkgdGhlIHNldHRpbmdzIGdyb3VwZWQgdW5kZXIgTGlua09iamVjdDo6UG9zc2libGVMaW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1F14bqjbiBsw70gdGjhu51pIGdpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnVG/DoCBuaMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdHaWFvIGRp4buHbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnTcOheSDEkeG7gyBiw6BuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ1Bo4bqnbiBt4buBbSBtaeG7hW4gcGjDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCw6BuIHBow61tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdNw6F5IHjDoWNoIHRheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnQ2jhu6duZyBsb+G6oWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ0NodeG7mXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0tow6FjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdL4bq/dCBxdeG6oyB04burJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUGjDsm5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVGhv4bqjIHRodeG6rW4gTeG7qWMgxJHhu5kgROG7i2NoIHbhu6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1Rpw6p1IGNodeG6qW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/zh_CN_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzov5DooYzmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+aOpeaUtuivt+axguaVsOaNrueahOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+WkluWPkeWTjeW6lOaVsOaNrueahOiuvue9ric7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+euoeeQhumFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUueexu+WumuS5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5pu05pS56KeS6Imy5a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOexu+WMhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+WcqOi/memHjO+8jOaCqOWPr+S7peWvvOWFpSBSZWFkeTJJbXBvcnQg57G75o2G57uR5YyF77yM5YW25Lit5bGV56S65LqG5oiR5Lus5pyA5bi455So55qE6YWN572u6aG544CC6K+35rOo5oSP77yM5Y+v6IO96ZyA6KaB5LiA5Lqb6aKd5aSW55qE6YWN572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+abtOaWsOeOsOacieWunuS9kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ+WvvOWFpSBSZWFkeTJBZG9wdCDnsbvmjYbnu5HljIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfphY3nva7pobnnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ+mFjee9rumhueS9nOeUqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn57G76L+H5ruk5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOS7juWIl+ihqOS4remAieaLqeexu++8jOeEtuWQjuWIm+W7uuaWsOeahOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+exuyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00g6YWN572u6aG5IOaJuemHj+aTjeS9nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn6YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn5LqL5Lu254q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+mTvuaOpeWIsOWFtuS7lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn5peg5pWI55qE6YWN572u6aG557yW5Y+377yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+WwhuimgemTvuaOpeeahOWPpuWkluS4gOS4qumFjee9rumhuee8luWPt+OAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+S9oOecn+eahOaDs+imgeWIoOmZpOi/meS4qumFjee9rumhueWQlz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn5Li66L+Z5Liq6YWN572u6aG55ZG95ZCNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfnvJblj7fkuLoocyk6JXPnmoTphY3nva7pobnlt7Lnu4/kvb/nlKjkuobmraTlkI3lrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ivpemFjee9rumhueeahOeJiOacrOWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+eJiOacrOWPt+W3suiiq+mFjee9rumhueS9v+eUqO+8jOWFtue8luWPt+WmguS4i++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfmlYXpmpznirbmgIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+mFjee9rumhue+8miVzIOeahOWOhuWPsuS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfljoblj7LlgLwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WIm+W7uuaXtumXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfor6bmg4Xop4blm74nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn5q+P6aG16YWN572u6aG55Liq5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfphY3nva7pobnmoJHlvaLop4blm74nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfmt7HluqbnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfmlL7lpKcv57yp5bCPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW0g5bey6L6+5Yiw5pyA5aSn6ZO+5o6l57qn5Yir77yBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ+mFjee9rumhueS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICflvZPliY3nmoTpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+W9k+WJjeeahOaVhemanOeKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDlkI7kv67mlLknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5pyA5ZCO5L+u5pS55Lq6JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn5oKo55qE6YWN572u6aG5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ+mFjee9rumhueaQnOe0oic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+WwhuWvvOWFpeS7peS4i+exu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICflsIblr7zlhaXku6XkuIvop5LoibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn6K+35rOo5oSP77yM5Lmf5Lya5Yib5bu655u45bqU55qE5Yqo5oCB5a2X5q615ZKMIEdlbmVyYWxDYXRhbG9nIOexu++8jOiAjOS4lOS4jeS8muiHquWKqOWIoOmZpOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ+aCqOimgee7p+e7rei/m+ihjOWQl++8nyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfpnIDopoHnpLrkvovnsbvvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn5a6a5LmJ5rKh5pyJ5pyJ5pWI55qEIFlBTUwg5ZOI5biM5YC844CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTemFjee9rumhueamguiniCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprphY3nva7poblJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+aCqOiHs+WwkemcgOimgeS4gOS4qumAieWumueahOmFjee9rumhue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+S9oOayoeacieatpOmFjee9rumhueeahOWGmeadg+mZkO+8miVz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ+ayoeacieexuyAlc+eahOWumuS5ie+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn5Zyo5pWw5o2u5bqT5Lit5om+5LiN5Yiw6YWN572u6aG54oCcJXPigJ3vvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfml6Dms5XliKDpmaTphY3nva7poblJRCAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn5om+5LiN5Yiw6YWN572u6aG5SUQlc+eahOeJiOacrO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprphY3nva7poblJROOAgUR1cGxpY2F0ZUlE5oiWQ2xhc3NJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+S4jeiDveaYvuekuuWOhuWPsuS/oeaBr++8jOWboOS4uuayoeacieaMh+WumumFjee9rumhuUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S65Y6G5Y+y6K6w5b2V77yM5Zug5Li65rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDlu7rphY3nva7pobnvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn5paw5bu654mI5pys77yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfpg6jnvbLnirbmgIHlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5pWF6Zqc54q25oCB5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn6YWN572u6aG577yISUQ9JXPvvInlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfliLAlc+mTvuaOpeeahO+8iOexu+Weiz0lc++8ieW3sua3u+WKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn5YiwJXPpk77mjqXnmoTvvIjnsbvlnos9JXPvvInlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ+mFjee9rumhueWumuS5ieW3suabtOaWsO+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5ZCN56ew5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn5bGe5oCnJXPlt7Lku47igJwlc+KAneabtOaWsOS4uuKAnCVz4oCdJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+eJiOacrCVzIOW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprphY3nva7poblJROaIlueJiOacrElE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuumFjee9rumhue+8jOWboOS4uuayoeacieiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+WcqOaVsOaNruW6k+S4reaJvuS4jeWIsOmFjee9rumhuUlEICVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ+aJk+WNsOS6uu+8miVzIO+8jOaJk+WNsOaXpeacn++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdBQ0zorr7nva7lj4LogIMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfml6DmlYjnmoTnsbtJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+Wumuexu0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn5rKh5pyJ6L+Z5Liq5oyH5a6a57G755qE6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfml6Dnu5PmnpzvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfphY3nva7pobnmkJzntKLnu5PmnpwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ+aXoOazleaYvuekuumFjee9rumhue+8jOWboOS4uuayoeaciee7meWumumFjee9rumhueeahOiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfmnKrmib7liLDphY3nva7pobnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn5pyq5om+5Yiw5Lu75L2V54mI5pys77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn5q2j5bi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICforablkYonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfmlYXpmpwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhuemDqOe9sueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueaVhemanOeKtuaAgSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+ayoeacieadg+mZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfov4fmu6Tlmajml6DmlYjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ+aQnOe0ouWPguaVsOaXoOaViO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+W3suaYvuekuueahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfpg6jnvbLnirbmgIHnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn5b2T5YmN55qE5pWF6Zqc54q25oCB57G75Z6LJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+aXtumXtOWMuumXtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aG555qE57G75Yir6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgInmi6nkuIDkuKrmiJblpJrkuKrnsbvliKvmnaXpmZDliLblj6/pgInmi6nnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueeahOexu+WIq+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mAieaLqeS4gOS4quaIluWkmuS4quexu+WIq+adpemZkOWItuWPr+mAieaLqeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ+WKqOaAge+8iENvbmZpZ0l0ZW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ+mdmeaAge+8iOeJiOacrO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfpk77mjqXlvJXnlKjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn5q2k6ZO+5o6l6YCC55So5LqO5byV55So5a+56LGh55qE6YWN572u6aG56L+Y5piv6Z2Z5oCB54mI5pys44CC5b2T5YmN5LqL5Lu254q25oCB6K6h566X5LuF5Zyo5Yqo5oCB6ZO+5o6l5LiK5omn6KGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn6YCJ5oup5pCc57Si6YWN572u6aG555qE5bGe5oCnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfln7rnoYDnu5PmnoTml6DmlYjjgILor7fmj5DkvpvljIXlkKsgWUFNTCDmoLzlvI/mlbDmja7nmoTlk4jluIzlgLzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICflv4Xpobvku6UiLS0tIuW8gOWniyBZQU1MIOWtl+espuS4suOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfml6Dms5XmuIXpmaTooaggY29uZmlnaXRlbV9saW5r44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfmnKrmib7liLDnm7jlhbPliqjmgIHlrZfmrrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfml6Dms5Xmj5LlhaXooaggY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICflkJHooaggY29uZmlnaXRlbV9saW5rIOaPkuWFpeS6hiAwIOadoeiusOW9lSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfljZXkuKrlhYPntKDnmoTmnIDlpKfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn54mI5pys5a2X56ym5LiyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ+WQjOatpeWumuS5ieaXtuWHuumUmeOAguivt+afpeeci+aXpeW/l+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZHluYW1pYyBmaWVsZCBcJyVzXCcgY2FuIG5vdCBiZSBkZWxldGVkIGJlY2F1c2UgdGhlIGZpZWxkIChvciBhIFNldCBmaWVsZCBpdCBpcyBwYXJ0IG9mKSBpcyBpbiB1c2UgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3Nlczo8L2JyPjwvYnI+JXM8L2JyPjwvYnI+UGxlYXNlIHJlbW92ZSBpdCBmcm9tIGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgYmVmb3JlIGRlbGV0aW5nIGl0IHRvIGF2b2lkIGVycm9ycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ+aCqOeahCBJVFNNQ29uZmlnSXRlbSDlrprkuYnmnKrlkIzmraXjgILor7fpg6jnvbLmgqjnmoQgSVRTTUNvbmZpZ0l0ZW0g5Yqo5oCB5a2X5q615pu05pS544CCJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICflt7Lov4fmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfnu7TmiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfor5XpqownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+W3suiuoeWIkic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfkv67lpI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ+aKpeW6nyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICflpI3lrqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ+a1i+ivlS/lk4HotKjkv53or4EnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ+amgui/sOWSjOehruiupCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICflr7zlhaXnsbsv6KeS6Imy5Y+K5YW255u45YWz5a2X5q61JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn57G75a+85YWl5pe25Y+R55Sf6ZSZ6K+v44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIGltcG9ydCBmYWlsZWQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDpmpDol48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIOaYvuekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5YWB6K645Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5L2/55So5omp5bGV5pCc57Si5p2h5Lu244CC5Yip55So6K+l5Yqf6IO977yM5oKo5Y+v5Lul5L2/55SoIigqa2V5MSomJiprZXkyKikgIuaIliIoKmtleTEqfHwqa2V5MiopICLnrYnmnaHku7bmkJzntKLphY3nva7pobnlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5YWB6K645Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5L2/55So5omp5bGV5pCc57Si5p2h5Lu244CC5Yip55So6K+l5Yqf6IO977yM5oKo5Y+v5Lul5L2/55SoIigqa2V5MSomJiprZXkyKikgIuaIliIoKmtleTEqfHwqa2V5MiopICLnrYnmnaHku7bmkJzntKLphY3nva7pobnlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn5bey5YiG6YWN55qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ+W3suWIhumFjee7meWuouaIt+WNleS9jeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ+W3suWIhumFjee7meWuouaIt+eUqOaIt+eahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQuiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn5qOA5p+l5piv5ZCm5Li65ZSv5LiA5ZCN56ew55qE6IyD5Zu05piv5LuF5ZyoXCdjbGFzc1wn77yI6YWN572u6aG557G777yJ5YaF6L+Y5pivXCdnbG9iYWxcJyjlhajlsYAp77yM5bCx5piv5Zyo5p+l5om+6YeN5aSN6YWN572u6aG55ZCN56ew5pe255qE6IyD5Zu044CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzlkb3lkI3mlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOaVsOWtl+aWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzniYjmnKzlrZfnrKbkuLLmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfpgInmi6nop6blj5HliJvlu7rmlrDniYjmnKznmoTlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn6YCJ5oup6KaB5YiG6YWN57uZ5q2k6YWN572u6aG557G75Yir55qE57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAn6YWN572u6aG55qaC6KeI55qE5YiX6YWN572u6aG56L+H5ruk5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICflj6/lnKjku6PnkIbnlYzpnaLphY3nva7pobnmpoLop4jkuK3ov4fmu6TnmoTliJfjgILms6jmhI/vvJrlj6rlhYHorrjkvb/nlKjphY3nva7pobnlsZ7mgKflkozliqjmgIHlrZfmrrUgKER5bmFtaWNGaWVsZF9OYW1lWCnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICfmt7vliqDphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfnvJbovpHphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLnlKjkuo7orrDlvZXphY3nva7pobnkuovku7bliLDljoblj7LnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn6YWN572u6aG55LqL5Lu25qih5Z2X77yM55So5LqO5bCG6YWN572u6aG55pu05paw5Li65b2T5YmN5a6a5LmJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn6YWN572u6aG55Y6G5Y+y44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ+aJk+WNsOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ+mFjee9rumhueivpuaDheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfphY3nva7pobnnm67niYjmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn5Lul5LiL57G75Yir55qE6YWN572u6aG55bCG5LiN5Lya5a2Y5YKo5ZyoIEVsYXN0aWNzZWFyY2gg5pyN5Yqh5Zmo5LiK44CC6KaB5bCG5q2k5bqU55So5LqO546w5pyJ55qEIENJ77yM5b+F6aG75Zyo5pu05pS55q2k6YCJ6aG55ZCO6YCa6L+H5o6n5Yi25Y+w6L+Q6KGMIENJIOi/geenu+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICflhbfmnInku6XkuIvpg6jnvbLnirbmgIHnmoTphY3nva7pobnlsIbkuI3kvJrlrZjlgqjlnKggRWxhc3RpY3NlYXJjaCDmnI3liqHlmajkuIrjgILopoHlsIbmraTlupTnlKjkuo7njrDmnInnmoQgQ0nvvIzlv4XpobvlnKjmm7TmlLnmraTpgInpobnlkI7pgJrov4fmjqfliLblj7Dov5DooYwgQ0kg6L+B56e744CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ+mFjee9rumhuemZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn5q+P5Liq6aG16Z2i5LiK55qE6YWN572u6aG56ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfphY3nva7nrqHnkIbmlbDmja7lupPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ+mFjee9rumhueaJueWkhOeQhuaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLnmoTphY3nva7pobnmkJzntKLlkI7nq6/ot6/nlLHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+WIm+W7uuWSjOeuoeeQhumFjee9rumhueWumuS5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+WcqOeJueWumuaXtumXtOeCueS4uiBDb25maWdJdGVtcyDliJvlu7ogVGlja2V0c+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICflrqLmiLflj6/ku6Xmn6XnnIvljoblj7IgQ0kg54mI5pys44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ+WuouaIt+WPr+S7peaJi+WKqOWIh+aNouWOhuWPsiBDSSDniYjmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICflnKjphY3nva7pobnmkJzntKLlsY/luZXnmoTlsZ7mgKfkuIrkvb/nlKjnmoTpu5jorqTmlbDmja7jgILkvovlpoLvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9Mjsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn5Zyo6YWN572u6aG55pCc57Si5bGP5bmV55qE5bGe5oCn5LiK5L2/55So55qE6buY6K6k5pWw5o2u44CC5L6L5aaC77yaIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn5a6a5LmJ6ZO+5o6l5a+56LGh5bCP6YOo5Lu2KExpbmtPYmplY3Q6OlZpZXdNb2RlID0gXCJjb21wbGV4XCIp6K6+572u5oyJ6ZKu5Lit55qE5pON5L2c44CC6K+35rOo5oSP77yM6L+Z5Lqb5pON5L2c5b+F6aG75bey57uP5Zyo5Lul5LiLSlPlkoxDU1Pmlofku7bkuK3ms6jlhozvvJpDb3JlLkFsbG9jYXRpb25MaXN0LmNzc+OAgUNvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanPjgIEgQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz44CBQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanPlkoxDb3JlLkFnZW50LkxpbmtPYmplY3QuanPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ+S4uueJiOacrOWtl+espuS4suWumuS5ieS4gOS4qiBUZW1wbGF0ZTo6VG9vbGtpdCDmlrnmoYjjgILku4XlnKjniYjmnKzlrZfnrKbkuLLmqKHlnZforr7nva7kuLogVGVtcGxhdGVUb29sa2l0IOaXtuS9v+eUqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn5a6a5LmJ5LiA57uE5YWB6K645a6i5oi35p+l55yL6YWN572u6aG555qE5p2h5Lu244CC5Y+v6YCJ5oup5bCG5p2h5Lu26ZmQ5Yi25Li65p+Q5Lqb5a6i5oi357uE44CC5ZCN56ew5piv5ZSv5LiA55qE5by65Yi25bGe5oCn44CC5aaC5p6c5rKh5pyJ57uZ5Ye65YW25LuW6YCJ6aG577yM5YiZ6K+l57G75Yir5LiL55qE5omA5pyJ6YWN572u6aG56YO95bCG5Y+v6KeB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PliKDpmaRJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Pojrflj5ZJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PmkJzntKJJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Porr7nva4gSVRTTSDphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn5a6a5LmJ5pi+56S66YWN572u6aG55YiX6KGo566A5rSB6KeG5Zu+55qE5qaC6KeI5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ+WumuS5ieaYr+WQpuW/hemhu+WcqOiKgueCuei/nuaOpeS4reaYvuekuumTvuaOpeexu+Wei+agh+etvuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn5Li65q+P5Liq6YWN572u6aG557G75a6a5LmJ54us56uL55qE5q2j5YiZ6KGo6L6+5byP77yM5Lul5qOA5p+l6YWN572u6aG55ZCN56ew5bm25pi+56S655u45bqU55qE6ZSZ6K+v5raI5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WIq+WumuS5iemFjee9rumhueamguiniOS4rSBDSSDnmoTlj6/nlKjliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS7o+eQhueVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4remFjee9rumhueaOkuW6j+eahOm7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi355WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit6YWN572u6aG55o6S5bqP55qE6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn5a6a5LmJ5q2k5pON5L2c55qE6YWN572u6aG55pCc57Si57uT5p6c55qE6YWN572u6aG55o6S5bqP6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnku6PnkIbnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3nmoTpu5jorqTphY3nva7pobnpobrluo/jgILkuIrvvJrmnIDml6fnmoTlnKjmnIDliY3pnaLjgILkuIvvvJrmnIDmlrDnmoTlnKjkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt+eVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4reeahOm7mOiupOmFjee9rumhuemhuuW6j+OAguS4iu+8muacgOaXp+eahOWcqOacgOWJjemdouOAguS4i++8muacgOaWsOeahOWcqOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WumuS5iemFjee9rumhueamguiniOS4rem7mOiupOaYvuekuueahCBDSSDliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn5a6a5LmJ6buY6K6k5pi+56S655qE5YWz57O75rex5bqm44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5iemFjee9rumhueebruaQnOe0oueVjOmdoum7mOiupOaYvuekuueahOmFjee9rumhueebruaQnOe0ouWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG55pCc57Si5bGP5bmV6buY6K6k5pi+56S655qE6YWN572u6aG55pCc57Si5bGe5oCn44CCRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTpTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc077ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAx77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNu+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAw77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMe+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTnvvJtcJ+WSjOaIliBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+WumuS5iVwnSVRTTUNvbmZpZ0l0ZW1cJ+exu+eahOm7mOiupOWtkOWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WIq+WumuS5iemFjee9rumhueamguiniOS4rSBDSSDnmoTlj6/nlKjliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn5a6a5LmJ5pys5bGP5bmV5a+M5paH5pys57yW6L6R5Zmo57uE5Lu255qE6auY5bqm44CC6L6T5YWl5pWw5YC877yI5YOP57Sg5YC877yJ5oiW55m+5YiG5q+U5YC877yI55u45a+55YC877yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOezu+e7n+euoeeQhumdouadv+S4reS/ruaUuemFjee9rumhueWumuS5ieeahOe8lui+keWZqOeahOihjOaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICflrprkuYnmlYXpmpznirbmgIHku47pq5jvvIjlpoLntKfmgKXvvInliLDkvY7vvIjlpoLmraPluLjvvInnmoTpobrluo/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICflrprkuYnlhbPogZTnmoTpg6jnvbLnirbmgIHvvIzljbPpk77mjqXnmoTlt6XljZXlj6/ku6XlvbHlk43phY3nva7pobnnirbmgIHnmoTmg4XlhrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYlBZ2VudElUU01Db25maWdJdGVt77yI5pyN5Yqh5Lq65ZGY6YWN572u6aG577yJ56qX5Y+j55qE5pCc57Si6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaO+8iOacjeWKoeS6uuWRmOmFjee9rumhueaQnOe0ou+8ieeql+WPo+eahOaQnOe0oumZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt0lUU01Db25maWdJdGVtIOWxj+W5leeahOaQnOe0oumZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt0lUU01Db25maWdJdGVtU2VhcmNoIOWxj+W5leeahOaQnOe0oumZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICflnKjmiYDmnInphY3nva7pobnnsbvnmoTpk77mjqXooajlpI3mnYLop4blm77kuK3lrprkuYnopoHmmL7npLrnmoTphY3nva7pobnlrZfmrrXjgIIg5aaC5p6c5rKh5pyJ5p2h55uu77yM5YiZ5pi+56S66buY6K6k5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICflrprkuYnpk77mjqXooajlpI3lkIjop4blm77kuK3mjInphY3nva7pobnnsbvliIbnsbvmmL7npLrnmoTlrZfmrrXjgILmr4/kuKrmnaHnm67lnYfpnIDku6XnsbvlkI3kuLrliY3nvIDlho3liqDkuIrlj4zlhpLlj7fvvIjlpoLorqHnrpfmnLo6Ou+8ieOAguacieS4gOS6m+mFjee9rumhueWxnuaAp+aYr+aJgOaciemFjee9rumhuemDveacieeahO+8iOS+i+Wmgu+8jOWvueS6juiuoeeul+acuuexu++8muiuoeeul+acujo65ZCN56ew44CB6K6h566X5py6OjpDdXJEZXBsU3RhdGXlvZPliY3pg6jnvbLnirbmgIHjgIHorqHnrpfmnLo6OkNyZWF0ZVRpbWXliJvlu7rml7bpl7TvvInjgILopoHmmL7npLrlnKjphY3nva7pobnlrprkuYnkuK3lrprkuYnnmoTni6znibnnmoTphY3nva7pobnlsZ7mgKfvvIzlv4Xpobvkvb/nlKjkuIvpnaLnmoTmlrnmoYjvvIjkvovlpoLvvJrlr7nkuo7orqHnrpfmnLrnsbvvvJrorqHnrpfmnLo6OuehrOebmDo6MeOAgeiuoeeul+acujo656Gs55uYOjrlrrnph486OjHjgIHorqHnrpfmnLo6OuehrOebmDo6MuOAgeiuoeeul+acujo656Gs55uYOjoy6K6h566X5py6Ojrnoaznm5g6OjLvvInjgILlpoLmnpzkuIDkuKrphY3nva7pobnnsbvmsqHmnInmnaHnm67lrZjlnKjvvIzliJnkvb/nlKjlnKhJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1uc+S4reiuvue9rueahOm7mOiupOWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+WumuS5ieWTquS6m+mhueebruWPr+eUqOS6jiBJVFNNIENvbmZpZyDpobnnm64gQUNMIOe7k+aehOesrOS4ieWxguS4reeahCAi5pON5L2cIuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+WumuS5iSBJVFNNIENvbmZpZyDpobnnm64gQUNMIOe7k+aehOesrOS4gOWxguS4reeahOWPr+eUqOmhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYkgSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuozlsYLkuK3nmoTlj6/nlKjpobnnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn5a6a5LmJ5ZOq5LiA57G7KOS7juW3peWNleinkuW6puWRveWQjeeahCnpk77mjqXlj6/ku6XlvbHlk43kuIDkuKrpk77mjqXnmoTphY3nva7pobnnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICflrprkuYnlk6rkuIDnsbvlt6XljZXlj6/ku6XlvbHlk43kuIDkuKrpk77mjqXnmoTphY3nva7pobnnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICflrprkuYnmm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+WIoOmZpOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+mDqOe9sueKtuaAgeeahOminOiJsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn5aSN5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn5Yqo5oCB5a2X5q615LqL5Lu25qih5Z2X77yM55So5LqO5Zyo5YyF5ZCr55qE5Yqo5oCB5a2X5q615Y+R55Sf5Y+Y5YyW5pe25bCG6YWN572u6aG55a6a5LmJ5qCH6K6w5Li65LiN5ZCM5q2l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLnmoTpmYTliqBJVFNN5a2X5q6156qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdoumFjee9rumhueebruamguiniOWxj+W5leS4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmkJzntKLlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5ZCv55So6YWN572u6aG55om56YeP5pON5L2c5Yqf6IO977yM5Y+v5Lul5LiA5qyh5aSE55CG5aSa5Liq6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICflj6rmnInliJfooajkuK3nmoTnu4TmiY3mnInmnYPpmZDkvb/nlKjphY3nva7pobnmibnph4/mk43kvZzlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn5Zyo5bel5Y2VLemFjee9rumhueeahOmTvuaOpeS4reiuvue9rumFjee9rumhuS3nirbmgIHnmoTkuovku7bmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn6YWN572u6aG557Si5byV5a2X5q6177yM55So5LqO5YWo5paH5pCc57Si44CC5a2X5q615Lmf5Lya6KKr5a2Y5YKo77yM5L2G5a+55LqO5pW05L2T5Yqf6IO95p2l6K+05bm26Z2e5b+F6aG744CC5Y+v6YCa6L+H5bCG5p2h55uu6K6+572u5Li6IDAg5oiW5Yig6Zmk5p2l56aB55So6ZmE5Lu255qE5YyF5ZCr44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICflrZjlgqjlnKjphY3nva7pobnntKLlvJXkuK3nmoTlrZfmrrXvvIzpmaTnlKjkuo7lhajmlofmo4DntKLlpJbvvIzov5jlj6/nlKjkuo7lhbbku5bnlKjpgJTjgILkuLrkuoblrp7njrDlrozmlbTnmoTlip/og73vvIzmiYDmnInlrZfmrrXpg73mmK/lv4XloavlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYiBzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlndXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00g6YWN572u6aG555uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTemFjee9rumhueamguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+S6i+S7tueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5YyF5ZCr6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdoueahOmFjee9rumhueebruaQnOe0ouS4reWMheWQq+S6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICflnKjmraTmk43kvZznu5PmnpzkuK3mmL7npLrnmoTphY3nva7pobnnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfnlKjkuo7mo4Dmn6XphY3nva7pobnnsbvnmoTnu4TmnYPpmZDnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfnlKjkuo7mo4Dmn6XphY3nva7pobnnmoTnu4TmnYPpmZDnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfnlKjkuo7nlJ/miJBJVFNN6YWN572u6aG557uf6K6h55qE5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAn5ZCN56ew5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfnvJblj7fmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5pCc57Si57uT5p6c55qE5q+P5LiA6aG15Lit5pi+56S655qE6YWN572u6aG55pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdouaQnOe0oue7k+aenOavj+mhteaYvuekuueahOmFjee9rumhueaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfopoHmkJzntKLnmoTlr7nosaHjgIHmnaHnm67mlbDph4/ku6Xlj4ropoHmmL7npLrnmoTlsZ7mgKfjgILphY3nva7pobnlsZ7mgKflv4XpobvpgJrov4cgRWxhc3RpY3NlYXJjaCDmmI7noa7lrZjlgqjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn5qaC6KeI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvliKvnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflsI/phY3nva7pobnnm67mpoLop4jnmoTliJfov4fmu6Tlmajlj4LmlbDjgILor7fms6jmhI/vvJrlsIYgIkFjdGl2Ze+8iOa0u+WKqO+8iSLorr7nva7kuLogMCDlj6rkvJrpmLvmraLku6PnkIblnKjlhbbkuKrkurrlgY/lpb3orr7nva7kuK3nvJbovpHor6Xnu4TnmoTorr7nva7vvIzkvYbku43lhYHorrjnrqHnkIblkZjnvJbovpHlhbbku5bnlKjmiLfnmoTorr7nva7jgILkvb/nlKggIlByZWZlcmVuY2VHcm91cO+8iOWBj+Wlvee7hO+8iSLlj6/mjqfliLbov5nkupvorr7nva7lupTmmL7npLrlnKjnlKjmiLfnlYzpnaLnmoTlk6rkuKrljLrln5/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHpopzoibLnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn55uu5b2V5bGe5oCn5qC35L6LLeadg+mZkOe7hOeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WQjeensOaooeWdl+eahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G75Yir55qE57yW5Y+35qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ+aYvuekuumFjee9rumhueeahOmhtemdouWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzlrZfnrKbkuLLmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfnlKjkuo7ku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzlrZfnrKbkuLLmqKHmnb/lt6XlhbfljIXmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys6Kem5Y+R5Zmo5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gaW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCB3ZWIgc2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn5p2D6ZmQ57uEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu6ZmE5Lu25pON5L2c5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG556qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55SoSVRTTemFjee9rumhueaQnOe0oueql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS9v+eUqCBJVFNNIOmFjee9rumhueebruaQnOe0ouWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebruagkeinhuWbvuWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG56K+m5oOF56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55So5re75YqgSVRTTemFjee9rumhueeql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKjmibnph48gSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55So57yW6L6RSVRTTemFjee9rumhueeql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG55Y6G5Y+y56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG55omT5Y2w56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfliKDpmaTphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmkJzntKLphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+W9k+S4gOS4quW3peWNlemTvuaOpeWIsOS4gOS4qumFjee9rumhueaXtuiHquWKqOiuvue9rui/meS4qumFjee9rumhueeahOaVhemanOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueaJuemHj+aTjeS9nOeql+WPo+iuvue9rumDqOe9sueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmibnph4/mk43kvZznqpflj6Porr7nva7kuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlhYHorrjpk77mjqXphY3nva7pobnliLDlj6bkuIDlr7nosaHnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmpoLop4jop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlhYHorrjorr/pl67phY3nva7pobnljoblj7LnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5YWB6K646K6/6Zeu6YWN572u6aG55Y6G5Y+y55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5Yig6Zmk6YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIzku6XmoJHlvaLop4blm77mmL7npLrphY3nva7pobnpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmpoLop4jop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlpI3liLbphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5aSN5Yi26YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrnvJbovpHphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4qui/lOWbnumTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quaJk+WNsOmFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueamguiniOinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quafpeeci+mFjee9rumhueivpuaDheeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhbGwgYm90aCBybyBhbmQgcncgY29uZmlnIGl0ZW1zIGluIHRoZSBjb25maWcgaXRlbSB2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLmmL7npLrphY3nva7pobnljoblj7LvvIjlgJLluo/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn5aaC5p6c5pyq6YCJ5oup5Lu75L2V57G75Yir77yM5YiZ5pi+56S66buY6K6k57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfphY3nva7pobnmoIfor4bnrKbvvIzlpoJDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPvvIzpu5jorqTmmK9Db25maWdJdGVtI+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn6Ieq5Yqo6Kem5Y+RIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGxpbmtlZCB0aWNrZXRzLCBmb3IgZXhhbXBsZSBmb3IgcHJvY2Vzc2VzIGNoZWNraW5nIGxlbnNlcy4gV2l0aCAiQ2xhc3NlcyIgYW5kICJMaW5rVHlwZXMiLCB0aGUgZXhlY3V0aW9uIGNhbiBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgbGluayB0eXBlcy4gUGxlYXNlIHB1dCBpbiB0aGUgZXhhY3QgY2xhc3MgbmFtZXMgaW50byAiQ2xhc3NlcyIgYXMgd2VsbCBhcyB0aGUgZXhhY3QgbGluayB0eXBlIG5hbWVzIGluICJMaW5rVHlwZXMiLCByZXNwZWN0aXZlbHkuIEN1cnJlbnRseSBhdmFpbGFibGUgTGlua1R5cGVzIGFyZTogTm9ybWFsLCBQYXJlbnRDaGlsZCwgTG9jYXRpb25PZiwgQWx0ZXJuYXRpdmVUbywgQ29ubmVjdGVkVG8sIERlcGVuZHNPbiwgSW5jbHVkZXMsIFJlbGV2YW50VG8uIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCB1c2FibGUgbGluayB0eXBlcyBtYXkgYmUgZnVydGhlciByZXN0cmljdGVkIGJ5IHRoZSBzZXR0aW5ncyBncm91cGVkIHVuZGVyIExpbmtPYmplY3Q6OlBvc3NpYmxlTGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn54mI5pys5a2X56ym5Liy6KGo6L6+5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ+eJiOacrOWtl+espuS4suaooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfniYjmnKzop6blj5HlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAn5a2X5q615piv5ZCm6Ieq5Yqo5aGr5YWFKDEp77yMIOmCo+enjeaDheWGteS4i+WwhuS8muWcqOW3peWNleihqOS4remakOiXj+i1t+adpSgyKeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfmmK/lkKblj6/ku6XpgJrov4fmo4Dmn6XnvJPlrZjnmoTlrZfmrrXkvp3otZblhbPns7vmnaXpgb/lhY3miafooYwgQ29uZmlnSXRlbUFDTOOAgui/meWPr+S7pee8qeefreihqOagvOeahOWKoOi9veaXtumXtO+8jOS9huWmguaenOimgeWcqCBJVFNNQ29uZmlnSXRlbSDlkowgRm9ybS1SZXR1cm5UeXBlIOS4reS9v+eUqCBBQ0wg5qih5Z2X77yM5YiZ5b+F6aG756aB55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfmoIfpopjkuK3mmL7npLrkuoblk6rkupvkuIDoiKzkv6Hmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn5YWo5bGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn6Zey572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICflh4blpIfmipXkuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+aKleS6pyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVe+8mjE3LjUg6Iux5a+477yINDQuNDUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlXvvJoyMSDoi7Hlr7jvvIg1My4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1Ve+8mjI2LjI1IOiLseWvuO+8iDY2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFXvvJozMS41IOiLseWvuO+8iDgwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSDoi7Hlr7jmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFV77yaMS43NSDoi7Hlr7jvvIg0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFXvvJozNSDoi7Hlr7jvvIg4OC45IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSDoi7Hlr7jmlK/mnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNSDoi7Hlr7jvvIg5Ny43OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiDoi7Hlr7jvvIg2MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRV77yaNDIg6Iux5a+477yIMTA2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3Ve+8mjQ3LjI1IOiLseWvuO+8iDEyMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlXvvJozLjUg6Iux5a+477yIOC44OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVe+8mjUyLjUg6Iux5a+477yIMTMzLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUg6Iux5a+477yIODAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVe+8mjU3Ljc1IOiLseWvuO+8iDE0Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40IOiLseWvuO+8iDkwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlXvvJo2MyDoi7Hlr7jvvIgxNjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQg6Iux5a+477yIMTAwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVXvvJo2OC4yNSDoi7Hlr7jvvIgxNzMuMzUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1XvvJo1LjI1IOiLseWvuO+8iDEzLjM0IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJV77yaNzMuNSDoi7Hlr7jvvIgxODYuNjkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIOiLseWvuO+8iDExMDAg5q+r57Gz77yJ77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVV77yaNzguNzUg6Iux5a+477yIMjAwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yIOiLseWvuO+8iDEyMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhV77yaODQg6Iux5a+477yIMjEzLjM2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRV77yaNyDoi7Hlr7jvvIgxNy43OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1Ve+8mjguNzUg6Iux5a+477yIMjIuMjMg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlXvvJoxMC41IOiLseWvuO+8iDI2LjY3IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3Ve+8mjEyLjI1IOiLseWvuO+8iDMxLjEyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4Ve+8mjE0IOiLseWvuO+8iDM1LjU2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5Ve+8mjE1Ljc1IOiLseWvuO+8iDQwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ+S8muiuoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ+WcsOWdgOWIhumFjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn566h55CG5ZGYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+aooeaLn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+iuvuWkh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+eUteaxoOWuuemHj++8iOWuieaXtu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfnlLXmsaDnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICflpKfljqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+aAu+e6v+aOpeWPoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHj++8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn5q+P5Liq5Zu+5b2i5Y2h55qE5a656YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn5Y2h5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn6K+75Y2h5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+WNoeeJh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn5a6i5oi36K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+WuouaIt+err+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICflrqLmiLfnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn5pe26ZKf6aKR546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfml7bpkp/pgJ/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+S7o+eggeetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn5Lya6K6u55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn5ZKo6K+i5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfogZTns7vmlrnlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ+iBlOezu+e7j+mUgOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+mbhuijheeuseeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn5ZCI5ZCM57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn5ZCI5ZCM5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+WQiOWQjOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfml6Dnu7PnlLXor53vvIhERUNUIOeUteivne+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfmiJDmnKzljZXkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICforrjlj6/or4HmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+WIm+W7uuaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn5a6a5Yi25py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIOS/neeVmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIOacjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn5Y+R56Wo5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICforqLotK3ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+aOiOadg+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICflj5HluIPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+WPsOW8j+eUteiEkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn5paH5Lu2562+5ZCN6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+eUteWtkOmCruS7tuivgeS5pu+8iFMvTUlNRSDor4HkuabvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH5L2j5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57uI56uvIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ+aUr+aMgee7k+adnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+acieaViOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn5aSW572u56Gs55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn6Ziy54Gr5aKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn5Zu65Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn6aOe6L2u5YKo6IO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn5aSW5b2i5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfnibnorrjnu4/okKXljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICflhY3otLnova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn5LiA6Iis5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICflm77lvaLljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfnoazku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfnoazku7blnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn56Gs5Lu26YeN6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfogLPmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn6Lqr5Lu95ZKM6K6/6Zeu566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflupPlrZjnvJblj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ+WPkeelqOWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+mUruebmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qg5pi+56S65Zmo77yI5ray5pm25pi+56S65Zmo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQg5pi+56S65Zmo77yI5Y+R5YWJ5LqM5p6B566h77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ+WbuuWumueUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfnrJTorrDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfnuqzluqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfnrKwgMSDlsYLvvJrniannkIblsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn56ysIDIg5bGC77ya5pWw5o2u6ZO+6Lev5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfnrKwgMyDlsYLvvJrnvZHnu5zlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn56ysIDMg5bGC77ya572R57uc5bGC77yI6LaF57qn572R77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ+esrCA0IOWxgu+8muS8oOi+k+Wxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn56ysIDUg5bGC77ya5Lya6K+d5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ+esrCA2IOWxgu+8muaYvuekuuWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ+esrCA3IOWxgu+8muW6lOeUqOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfnp5/otYHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICforrjlj6/ljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+iuuOWPr+ivgeWvhumSpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICforrjlj6/or4HnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+iuuOWPr+ivgeacieaViOacn+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+iuuOWPr+ivgeacieaViOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn56O36YW46ZOB6ZSC77yITGlGZVBPNO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn6ZSC56a75a2Q77yITGktSW9u77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn6LS35qy+5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfkvY3kuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57uP5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn5Yi26YCg5ZWGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfmnIDlpKfotJ/ovb3og73lipvvvIjnk6bvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn5YaF5a2YJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn5YaF5a2Y57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICfov7fkvaDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ+aJi+acuuWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfnp7vliqgv5bWM5YWl5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn5Z6L5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn5Z6L5Y+36K+05piOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ+aYvuekuuWZqOWIhui+qOeOhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfmmL7npLrlmajlsLrlr7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfpvKDmoIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+e9kee7nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfnvZHnu5zkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+e9kee7nOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn572R57uc5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn6ZWN6ZWJ77yITmlDZO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+mVjeawou+8iE5pTUjvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn5L+d5a+G5Y2P6K6u77yITkRB77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn56yU6K6w5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIOaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICflhoXlrZjmqKHlnZfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn5Zu+5b2i5Y2h5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIOaYvuekuuWZqO+8iOacieacuuWPkeWFieS6jOaegeeuoe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfov5DokKXmiJDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn6K6i5Y2V5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5YW25a6DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfovpPlh7onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn5a+G56CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn5a+G56CBIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn5ZCI5LyZ5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn55S16K+d5Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfnlLXor53nsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfniannkIbno4Hoiq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfnlLXlipvovpPpgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICflnKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+acuuaetua3seW6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+acuuaetuWNleWFgyAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+aIv+mXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIOivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ+mUgOWUruWQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfljavmmJ/nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn5a+G5bCB6ZOF6YW4IChTTEEpIOeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+W6j+WIl+WPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfmnI3liqHlmajova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfmnI3liqHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfmnI3liqHmoIfnrb4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn5o+S5bqn57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn6L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn5Y+R6KiA5Lq6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+agh+WHhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn5ZCv5YqoIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn5a2Y5YKoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn5a2Y5YKo5YiG5Yy6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn6ZmE5bGe5py65p6EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfmkZjopoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfnmKblrqLmiLfmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ+e6v+eoiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ+mbt+eUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn5pi+5Y2h5oC75YaF5a2Y77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfmgLvlhoXlrZjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn6Kem5pG45bGP5pi+56S65ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn5aGU5qW8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ig6ZuG57q/5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ+iZmuaLn+S4k+eUqOe9kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIg5aS055uUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAn6Jma5ouf6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfnvZHnu5znlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+e9kee7nOaRhOWDj+WktCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/zh_TW_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzov5DooYzmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+aOpeaUtuivt+axguaVsOaNrueahOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+WkluWPkeWTjeW6lOaVsOaNrueahOiuvue9ric7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+euoeeQhumFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUuemhnuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5pu05pS56KeS6Imy5a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOexu+WMhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+WcqOi/memHjO+8jOaCqOWPr+S7peWvvOWFpSBSZWFkeTJJbXBvcnQg57G75o2G57uR5YyF77yM5YW25Lit5bGV56S65LqG5oiR5Lus5pyA5bi455So55qE6YWN572u6aG544CC6K+35rOo5oSP77yM5Y+v6IO96ZyA6KaB5LiA5Lqb6aKd5aSW55qE6YWN572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+abtOaWsOeOsOacieWunuS9kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ+WvvOWFpSBSZWFkeTJBZG9wdCDnsbvmjYbnu5HljIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfphY3nva7pobnnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ+mFjee9rumhueS9nOeUqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn6YGO5r++6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOW+nuWIl+ihqOS4remBuOaTh+mhnuWIpe+8jOeEtuW+jOW7uueri+aWsOeahOmFjee9rumgheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+mhnuWIpSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00g6YWN572u6aG555uu5om56YeP5pON5L2cJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfmlYXpmpzni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn5Y+m5LiA5Liq6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfphY3nva7pobnnm67nvJblj7fml6DmlYjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn6KaB6ZO+5o6l55qE5Y+m5LiA5Liq6YWN572u6aG555qE57yW5Y+344CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn5oKo55yf55qE5oOz5Yig6Zmk6L+Z5Liq6YWN572u6aG55ZCX77yfJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+eCuumAmeWAi+mFjee9rumgheWRveWQjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn5ZCN56ew5bey6KKr6YWN572u6aG55L2/55So77yM57yW5Y+35aaC5LiL77yaJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzomZ/norwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ivpemFjee9rumhueeahOeJiOacrOWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+eJiOacrOWPt+W3suiiq+mFjee9rumhueS9v+eUqO+8jOWFtue8luWPt+WmguS4i++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfmlYXpmpzni4DmhYsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+mFjee9rumhueWOhuWPsu+8miAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfmrbflj7LlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WJteW7uuaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfnvKnmlL7oppblnJYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn5q+P6aCB6YWN572u6aCF5YCL5pW4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfphY3nva7pobnmoJHlvaLop4blm74nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfmt7HluqbnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfmlL7lpKcv57yp5bCPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW0g5bey6L6+5Yiw5pyA5aSn6ZO+5o6l57qn5Yir77yBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6YWN572u6aCFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ+mFjee9rumgheS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfnlbbliY3nmoTpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+eVtuWJjeeahOaVhemanOeLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDlvozkv67mlLknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5pyA5b6M5L+u5pS55pa8JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn5oKo55qE6YWN572u6aG5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ+mFjee9rumhueaQnOe0oic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+WwhuWvvOWFpeS7peS4i+exu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICflsIblr7zlhaXku6XkuIvop5LoibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn6K+35rOo5oSP77yM5Lmf5Lya5Yib5bu655u45bqU55qE5Yqo5oCB5a2X5q615ZKMIEdlbmVyYWxDYXRhbG9nIOexu++8jOiAjOS4lOS4jeS8muiHquWKqOWIoOmZpOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ+S9oOaDs+e7p+e7reWQl++8nyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfpnIDopoHnpLrkvovnsbvvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn5a6a5LmJ5rKh5pyJ5pyJ5pWI55qEIFlBTUwg5ZOI5biM5YC844CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn5qaC6L+w77yaSVRTTSDphY3nva7pobnnm64nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5pyq57uZ5Ye6IENvbmZpZ0l0ZW1JRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+aCqOmcgOimgeiHs+WwkeS4gOS4qumAieWumueahOmFjee9rumhue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+aCqOayoeacieWGmeWFpeatpOmFjee9rumhueeahOadg+mZkO+8miVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfmnKrlrprkuYkgJXMg57G755qE5a6a5LmJ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfmlbDmja7lupPkuK3mnKrlj5HnjrDphY3nva7pobkgIiVzIu+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ+aXoOazleWIoOmZpOmFjee9rumhuSBJRCAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn5re75Yqg6YWN572u6aG555uu44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ+acque7meWHuiBDb25maWdJdGVtSUTjgIFEdXBsaWNhdGVJRCDmiJYgQ2xhc3NJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn5pyq5o+Q5L6b6K6/6Zeu5p2D6ZmQ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuuWOhuWPsuiusOW9le+8jOWboOS4uuayoeaciee7meWHuiBDb25maWdJdGVtSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrljoblj7LorrDlvZXvvIzmsqHmnInorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ+aWsOmFjee9rumhue+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfmlrDniYjmnKzvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+mDqOe9sueKtuaAgeW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfkuovku7bnirbmgIHlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfphY3nva7pobnnm67vvIhJRD0lc++8ieW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ+W3sua3u+WKoCAlcyAodHlwZT0lcykg6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfmjIflkJEgJXMgKHR5cGU9JXMpIOeahOmTvuaOpeW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn6YWN572u6aG55a6a5LmJ5bey5pu05paw77yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICflkI3np7Dlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICflsZ7mgKcgJXMg5LuOIiVzICLmm7TmlrDkuLoiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+eJiOacrCAlcyDlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn5pyq57uZ5Ye6IENvbmZpZ0l0ZW1JRCDmiJYgVmVyc2lvbklE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuumFjee9rumhue+8jOacqui1i+S6iOiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+aVsOaNruW6k+S4reaJvuS4jeWIsOmFjee9rumhueebrue8luWPtyAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn6YWN572u6aCFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfnlLEgJXMg5ZyoICVzIOaJk+WNsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn55u46Zec5Y+C6ICDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn5peg5pWIIENsYXNzSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfmnKrnu5nlh7ogQ2xhc3NJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+ivpeexu+ayoeacieiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn5rKS5pyJ57WQ5p6cISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ+mFjee9rumgheebruaQnOWwi+e1kOaenCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn5peg5rOV5pi+56S66aG555uu77yM5rKh5pyJ57uZ5a6aIENvbmZpZ0l0ZW0g55qE6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ+acquaJvuWIsOmFjee9rumhue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfmnKrmib7liLDku7vkvZXniYjmnKzvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfkuJrliqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+itpuWRiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ+S6i+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aCF6YOo572y54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aCF5pWF6Zqc54uA5oWLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn5rKS5pyJ5qyK6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ+i/h+a7pOWZqOaXoOaViO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn5pCc57Si5Y+C5pWw5peg5pWI77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn5pi+56S655qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+mDqOe9sueLgOaFi+mhnuWeiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfnlbbliY3nmoTmlYXpmpzni4DmhYvpoZ7lnosnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn5LmL6Ze0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnnmoTnsbvliKvpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mAieaLqeS4gOS4quaIluWkmuS4quexu+WIq+adpemZkOWItuWPr+mAieaLqeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aG555qE57G75Yir6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn6YCJ5oup5LiA5Liq5oiW5aSa5Liq57G75Yir5p2l6ZmQ5Yi25Y+v6YCJ5oup55qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAn5Yqo5oCB77yIQ29uZmlnSXRlbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn6Z2Z5oCB77yI54mI5pys77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ+mTvuaOpeW8leeUqOexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfmraTpk77mjqXpgILnlKjkuo7lvJXnlKjlr7nosaHnmoTphY3nva7pobnov5jmmK/pnZnmgIHniYjmnKzjgILlvZPliY3kuovku7bnirbmgIHorqHnrpfku4XlnKjliqjmgIHpk77mjqXkuIrmiafooYzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfpgInmi6nmkJzntKLphY3nva7pobnnmoTlsZ7mgKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ+WfuuehgOe7k+aehOaXoOaViOOAguivt+aPkOS+m+WMheWQqyBZQU1MIOagvOW8j+aVsOaNrueahOWTiOW4jOWAvOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ+W/hemhu+S7pSItLS0i5byA5aeLIFlBTUwg5a2X56ym5Liy44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ+aXoOazlea4hemZpOihqCBjb25maWdpdGVtX2xpbmvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+acquaJvuWIsOebuOWFs+WKqOaAgeWtl+autSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ+aXoOazleaPkuWFpeihqCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ+WQkeihqCBjb25maWdpdGVtX2xpbmsg5o+S5YWl5LqGIDAg5p2h6K6w5b2VJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ+atpOWFg+e0oOeahOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfniYjmnKzlrZfnrKbkuLInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn5ZCM5q2l5a6a5LmJ5pe25Ye66ZSZ44CC6K+35p+l55yL5pel5b+X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkeW5hbWljIGZpZWxkIFwnJXNcJyBjYW4gbm90IGJlIGRlbGV0ZWQgYmVjYXVzZSB0aGUgZmllbGQgKG9yIGEgU2V0IGZpZWxkIGl0IGlzIHBhcnQgb2YpIGlzIGluIHVzZSBpbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzOjwvYnI+PC9icj4lczwvYnI+PC9icj5QbGVhc2UgcmVtb3ZlIGl0IGZyb20gYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzcyBhbmQgcm9sZSBkZWZpbml0aW9ucyBiZWZvcmUgZGVsZXRpbmcgaXQgdG8gYXZvaWQgZXJyb3JzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn5oKo55qEIElUU01Db25maWdJdGVtIOWumuS5ieacquWQjOatpeOAguivt+mDqOe9suaCqOeahCBJVFNNQ29uZmlnSXRlbSDliqjmgIHlrZfmrrXmm7TmlLnjgIInOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+WIsOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+e2reittyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+ippumplyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn5bey6KiI5YqDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+S/ruW+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn5aCx5buiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+ikh+WvqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn5rWL6KmmL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfmpoLov7Dlkoznoa7orqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn5a+85YWl57G7L+inkuiJsuWPiuWFtuebuOWFs+Wtl+autSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ+exu+WvvOWFpeaXtuWPkeeUn+mUmeivr+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyBpbXBvcnQgZmFpbGVkLid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g6ZqQ6JePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDmmL7npLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+WFgeiuuOWcqOS7o+eQhueVjOmdoueahOmFjee9rumhueaQnOe0ouS4reS9v+eUqOaJqeWxleaQnOe0ouadoeS7tuOAguWIqeeUqOivpeWKn+iDve+8jOaCqOWPr+S7peS9v+eUqCIoKmtleTEqJiYqa2V5MiopICLmiJYiKCprZXkxKnx8KmtleTIqKSAi562J5p2h5Lu25pCc57Si6YWN572u6aG55ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+WFgeiuuOWcqOWuouaIt+eVjOmdoueahOmFjee9rumhueaQnOe0ouS4reS9v+eUqOaJqeWxleaQnOe0ouadoeS7tuOAguWIqeeUqOivpeWKn+iDve+8jOaCqOWPr+S7peS9v+eUqCIoKmtleTEqJiYqa2V5MiopICLmiJYiKCprZXkxKnx8KmtleTIqKSAi562J5p2h5Lu25pCc57Si6YWN572u6aG55ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ+WIhumFjeeahCBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfliIbphY3nu5nlrqLmiLflhazlj7jnmoQgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfliIbphY3nu5nlrqLmiLfnlKjmiLfnmoQgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIg6K6+572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfku4XlnKjlkIzkuIAgQ29uZmlnSXRlbSDnsbvvvIgiY2xhc3Mi77yJ5oiW5YWo5bGA77yIImdsb2JhbCLvvInlhoXmo4Dmn6XllK/kuIDlkI3np7DvvIzov5nmhI/lkbPnnYDlnKjmn6Xmib7ph43lpI3ml7bvvIzmr4/kuKrnjrDmnInnmoQgQ29uZmlnSXRlbSDpg73kvJrooqvogIPomZHlnKjlhoXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOWRveWQjeaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn6YCJ5oup5LiA5Liq5qih5Z2X5p2l5omn6KGM5pWw5a2X5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOeJiOacrOWtl+espuS4suaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ+mAieaLqeinpuWPkeWIm+W7uuaWsOeJiOacrOeahOWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfpgInmi6nopoHliIbphY3nu5nmraTphY3nva7pobnnsbvliKvnmoTnsbvliKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfphY3nva7pobnmpoLop4jnmoTliJfphY3nva7pobnov4fmu6TlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ+WPr+WcqOS7o+eQhueVjOmdoumFjee9rumhueamguiniOS4rei/h+a7pOeahOWIl+OAguazqOaEj++8muWPquWFgeiuuOS9v+eUqOmFjee9rumhueWxnuaAp+WSjOWKqOaAgeWtl+autSAoRHluYW1pY0ZpZWxkX05hbWVYKeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ+a3u+WKoOmFjee9rumhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ+mFjee9rumhueebrue8lui+keOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mFjee9rumhueS6i+S7tuaooeWdl++8jOWPr+WwhuaXpeW/l+iusOW9leWIsOS7o+eQhueVjOmdoueahOWOhuWPsuiusOW9leS4reOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfphY3nva7pobnkuovku7bmqKHlnZfvvIznlKjkuo7lsIbphY3nva7pobnmm7TmlrDkuLrlvZPliY3lrprkuYnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfphY3nva7pobnnm67ljoblj7LjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn6YWN572u6aG555uu5omT5Y2w44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn6YWN572u6aG555uu57yp5pS+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn6YWN572u6aG55qCR5b2i6KeG5Zu+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ+mFjee9rumhueebrueJiOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfku6XkuIvnsbvliKvnmoTphY3nva7pobnlsIbkuI3kvJrlrZjlgqjlnKggRWxhc3RpY3NlYXJjaCDmnI3liqHlmajkuIrjgILopoHlsIbmraTlupTnlKjkuo7njrDmnInnmoQgQ0nvvIzlv4XpobvlnKjmm7TmlLnmraTpgInpobnlkI7pgJrov4fmjqfliLblj7Dov5DooYwgQ0kg6L+B56e744CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+WFt+acieS7peS4i+mDqOe9sueKtuaAgeeahOmFjee9rumhueWwhuS4jeS8muWtmOWCqOWcqCBFbGFzdGljc2VhcmNoIOacjeWKoeWZqOS4iuOAguimgeWwhuatpOW6lOeUqOS6jueOsOacieeahCBDSe+8jOW/hemhu+WcqOabtOaUueatpOmAiemhueWQjumAmui/h+aOp+WItuWPsOi/kOihjCBDSSDov4Hnp7vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn6YWN572u6aG555uu6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfmr4/pobXphY3nva7pobnnm67pmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ+mFjee9rueuoeeQhuaVsOaNruW6k+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn6YWN572u6aG55om56YeP5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mFjee9rumhueaQnOe0ouS7o+eQhuaOpeWPo+eahOWQjuerr+i3r+eUseWZqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgcHVibGljIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn5Ym15bu65ZKM566h55CG6YWN572u6aCF5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn5Zyo54m55a6a5pe26Ze054K55Li6IENvbmZpZ0l0ZW1zIOWIm+W7uiBUaWNrZXRz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+WuouaIt+WPr+S7peafpeeci+WOhuWPsiBDSSDniYjmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn5a6i5oi35Y+v5Lul5omL5Yqo5YiH5o2i5Y6G5Y+yIENJIOeJiOacrOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+WcqOmFjee9rumhueaQnOe0ouWxj+W5leeahOWxnuaAp+S4iuS9v+eUqOeahOm7mOiupOaVsOaNruOAguS+i+Wmgu+8miJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICflnKjphY3nva7pobnmkJzntKLlsY/luZXnmoTlsZ7mgKfkuIrkvb/nlKjnmoTpu5jorqTmlbDmja7jgILkvovlpoLvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9Mzsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICflrprkuYnlj6/lnKjpk77mjqXlr7nosaEgd2lkZ2V0IOS4reS9v+eUqOiuvue9ruaMiemSrueahOaTjeS9nO+8iExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgi77yJ44CC6K+35rOo5oSP77yM6L+Z5Lqb5pON5L2c5b+F6aG75bey5rOo5YaM5Lul5LiLIEpTIOWSjCBDU1Mg5paH5Lu277yaQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz44CBQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg5ZKMIENvcmUuQWdlbnQuTGlua09iamVjdC5qc+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn5Li654mI5pys5a2X56ym5Liy5a6a5LmJ5LiA5LiqIFRlbXBsYXRlOjpUb29sa2l0IOaWueahiOOAguS7heWcqOeJiOacrOWtl+espuS4suaooeWdl+iuvue9ruS4uiBUZW1wbGF0ZVRvb2xraXQg5pe25L2/55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICflrprkuYnkuIDnu4TlhYHorrjlrqLmiLfmn6XnnIvphY3nva7pobnnmoTmnaHku7bjgILlj6/pgInmi6nlsIbmnaHku7bpmZDliLbkuLrmn5DkupvlrqLmiLfnu4TjgILlkI3np7DmmK/llK/kuIDnmoTlvLrliLblsZ7mgKfjgILlpoLmnpzmsqHmnInnu5nlh7rlhbbku5bpgInpobnvvIzliJnor6XnsbvliKvkuIvnmoTmiYDmnInphY3nva7pobnpg73lsIblj6/op4HjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+WIoOmZpCBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j6I635Y+WIElUU00g6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PmkJzntKIgSVRTTSDphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+iuvue9riBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICflrprkuYnkuIDkuKrmpoLop4jmqKHlnZfvvIznlKjkuo7mmL7npLrphY3nva7pobnnm67liJfooajnmoTlsI/op4blm77jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn5a6a5LmJ5piv5ZCm5b+F6aG75Zyo6IqC54K56L+e5o6l5Lit5pi+56S66ZO+5o6l57G75Z6L5qCH562+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfkuLrmr4/kuKogQ29uZmlnSXRlbSDnsbvljZXni6zlrprkuYnmraPliJnooajovr7lvI/vvIzku6Xmo4Dmn6UgQ29uZmlnSXRlbSDlkI3np7DlubbmmL7npLrnm7jlupTnmoTplJnor6/kv6Hmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir5a6a5LmJ6YWN572u6aG55qaC6KeI5LitIENJIOeahOWPr+eUqOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Luj55CG55WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit6YWN572u6aG55o6S5bqP55qE6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlrqLmiLfnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3phY3nva7pobnmjpLluo/nmoTpu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICflrprkuYnmraTmk43kvZznmoTphY3nva7pobnmkJzntKLnu5PmnpznmoTphY3nva7pobnmjpLluo/pu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieS7o+eQhueVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4reeahOm7mOiupOmFjee9rumhuemhuuW6j+OAguS4iu+8muacgOaXp+eahOWcqOacgOWJjemdouOAguS4i++8muacgOaWsOeahOWcqOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi355WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75a6a5LmJ6YWN572u6aG55qaC6KeI5Lit6buY6K6k5pi+56S655qEIENJIOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICflrprkuYnpu5jorqTmmL7npLrnmoTlhbPns7vmt7HluqbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG555uu5pCc57Si55WM6Z2i6buY6K6k5pi+56S655qE6YWN572u6aG555uu5pCc57Si5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICflrprkuYnphY3nva7pobnmkJzntKLlsY/luZXpu5jorqTmmL7npLrnmoTphY3nva7pobnmkJzntKLlsZ7mgKfjgIJFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzTvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDHvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI277ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDDvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAx77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01Oe+8m1wn5ZKM5oiWIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnO+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn5a6a5LmJICJJVFNNQ29uZmlnSXRlbSAi57G755qE6buY6K6k5a2Q5a+56LGh44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir5a6a5LmJ6YWN572u6aG55qaC6KeI5LitIENJIOeahOWPr+eUqOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICflrprkuYnor6XlsY/luZXlr4zmlofmnKznvJbovpHlmajnu4Tku7bnmoTpq5jluqbjgILovpPlhaXmlbDlrZfvvIjlg4/ntKDvvInmiJbnmb7liIbmr5TlgLzvvIjnm7jlr7nlgLzvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ566h55CG55WM6Z2i5LitIENJIOWumuS5iee8lui+keWZqOeahOihjOaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICflrprkuYnkuovku7bnirbmgIHku47pq5jliLDkvY7vvIjlpoLnjq/nirbvvInnmoTpobrluo/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGVsYXN0aWNzZWFyY2ggd2lkZ2V0IGJhY2tlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICflrprkuYnnm7jlhbPpg6jnvbLnirbmgIHvvIzlhbbkuK3pk77mjqXnmoTnpajljZXlj6/lvbHlk40gQ0kg55qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJIEFnZW50SVRTTUNvbmZpZ0l0ZW0g5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi3SVRTTUNvbmZpZ0l0ZW0g5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi3SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+WumuS5iemTvuaOpeihqOWkjeWQiOinhuWbvuS4reaJgOaciSBDSSDnsbvnmoQgQ0kg5pi+56S65YiX44CC5aaC5p6c5rKh5pyJ5p2h55uu77yM5YiZ5pi+56S66buY6K6k5YiX44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir77yM5a6a5LmJ6ZO+5o6l6KGo5aSN5ZCI6KeG5Zu+5Lit5pi+56S655qEIENJIOWIl+OAguavj+S4quadoeebrumDveW/hemhu+S7peexu+WQjeWSjOWPjOWGkuWPt+S4uuWJjee8gO+8iOWmgiBDb21wdXRlcjo677yJ44CC5omA5pyJIENJIOmDveacieS4gOS6m+WFseWQjOeahCBDSSDlsZ7mgKfvvIjku6UgIuiuoeeul+acuiAi57G75Li65L6L77yaQ29tcHV0ZXI6Ok5hbWXjgIFDb21wdXRlcjo6Q3VyRGVwbFN0YXRl44CBQ29tcHV0ZXI6OkNyZWF0ZVRpbWXvvInjgILopoHmmL7npLogQ0kg5a6a5LmJ5Lit5a6a5LmJ55qE5Y2V5LiqIENJIOWxnuaAp++8jOW/hemhu+S9v+eUqOS7peS4i+aWueahiO+8iOS7peiuoeeul+acuuexu+S4uuS+i++8ie+8mkNvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLuWmguaenOayoeaciSBDSSDnsbvmnaHnm67vvIzliJnmmL7npLrpu5jorqTliJfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYnlk6rkupvpobnnm67lj6/nlKjkuo4gSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuInlsYLkuK3nmoQgIuaTjeS9nCLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYkgSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuIDlsYLkuK3nmoTlj6/nlKjpobnnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn5a6a5LmJIElUU00gQ29uZmlnIOmhueebriBBQ0wg57uT5p6E56ys5LqM5bGC5Lit55qE5Y+v55So6aG555uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+WumuS5ieWTquenjeexu+Wei+eahOmTvuaOpe+8iOS7juelqOaNruinkuW6puWRveWQje+8ieS8muW9seWTjemTvuaOpSBDSSDnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICflrprkuYnlk6rnp43nsbvlnovnmoTnpajljZXkvJrlvbHlk43pk77mjqUgQ0kg55qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn5a6a5LmJ5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfliKDpmaTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfpg6jnvbLnirbmgIHpopzoibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn6YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+ikh+ijvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ+WKqOaAgeWtl+auteS6i+S7tuaooeWdl++8jOeUqOS6juWcqOWMheWQq+eahOWKqOaAgeWtl+auteWPkeeUn+WPmOWMluaXtuWwhumFjee9rumhueWumuS5ieagh+iusOS4uuS4jeWQjOatpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE6ZmE5YqgIElUU00g5a2X5q615bGP5bmV5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdoumFjee9rumhueebruamguiniOWxj+W5leS4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmkJzntKLlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn5ZCv55So6YWN572u6aG55om56YeP5pON5L2c5Yqf6IO977yM5L2/5Luj55CG5YmN5Y+w6IO95ZCM5pe25aSE55CG5aSa5Liq6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfku4Xlr7nliJflh7rnmoTnu4TlkK/nlKjphY3nva7pobnmibnph4/mk43kvZzlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn5ZyoIHRpY2tldC1jb25maWdpdGVtLWxpbmsg5LiK6K6+572uIGNvbmZpZ2l0ZW0tc3RhdHVzIOeahOS6i+S7tuaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfphY3nva7pobnntKLlvJXlrZfmrrXvvIznlKjkuo7lhajmlofmkJzntKLjgILlrZfmrrXkuZ/kvJrooqvlrZjlgqjvvIzkvYblr7nkuo7mlbTkvZPlip/og73mnaXor7TlubbpnZ7lv4XpobvjgILlj6/pgJrov4flsIbmnaHnm67orr7nva7kuLogMCDmiJbliKDpmaTmnaXnpoHnlKjpmYTku7bnmoTljIXlkKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ+WtmOWCqOWcqOmFjee9rumhuee0ouW8leS4reeahOWtl+aute+8jOmZpOeUqOS6juWFqOaWh+ajgOe0ouWklu+8jOi/mOWPr+eUqOS6juWFtuS7lueUqOmAlOOAguS4uuS6huWunueOsOWujOaVtOeahOWKn+iDve+8jOaJgOacieWtl+autemDveaYr+W/heWhq+Wtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2ViIHNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWd1cmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn55So5LqOIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlsYLnmoQgR2VuZXJpY0ludGVyZmFjZSDmqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn55So5LqOIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlsYLnmoQgR2VuZXJpY0ludGVyZmFjZSDmqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSDphY3nva7pobnnm64nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIOmFjee9rumhueebruamguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+S6i+S7tueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5YyF5ZCr6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdoueahOmFjee9rumhueebruaQnOe0ouS4reWMheWQq+S6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICflnKjmraTmk43kvZznu5PmnpzkuK3mmL7npLrnmoTphY3nva7pobnnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfmo4Dmn6XotJ/otKPnj63nuqfnmoTlsI/nu4TnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfmqKHlnZfvvIznlKjkuo7mo4Dmn6XotJ/otKPphY3nva7pobnnmoTnu4TjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfnlJ/miJAgSVRTTSDphY3nva7pobnnu5/orqHmlbDmja7nmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICflkI3np7DmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ+e8luWPt+aooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLmkJzntKLnu5PmnpznmoTmr4/kuIDpobXkuK3mmL7npLrnmoTphY3nva7pobnmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6i5oi355WM6Z2i5pCc57Si57uT5p6c5q+P6aG15pi+56S655qE6YWN572u6aG55pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ+imgeaQnOe0oueahOWvueixoeOAgeadoeebruaVsOmHj+S7peWPiuimgeaYvuekuueahOWxnuaAp+OAgumFjee9rumhueWxnuaAp+W/hemhu+mAmui/hyBFbGFzdGljc2VhcmNoIOaYjuehruWtmOWCqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfmpoLms4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WIq+eahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+Wwj+mFjee9rumhueebruamguiniOeahOWIl+i/h+a7pOWZqOWPguaVsOOAguivt+azqOaEj++8muWwhiAiQWN0aXZl77yI5rS75Yqo77yJIuiuvue9ruS4uiAwIOWPquS8mumYu+atouS7o+eQhuWcqOWFtuS4quS6uuWBj+Wlveiuvue9ruS4ree8lui+keivpee7hOeahOiuvue9ru+8jOS9huS7jeWFgeiuuOeuoeeQhuWRmOe8lui+keWFtuS7lueUqOaIt+eahOiuvue9ruOAguS9v+eUqCAiUHJlZmVyZW5jZUdyb3Vw77yI5YGP5aW957uE77yJIuWPr+aOp+WItui/meS6m+iuvue9ruW6lOaYvuekuuWcqOeUqOaIt+eVjOmdoueahOWTquS4quWMuuWfn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remDqOe9sueKtuaAgeminOiJsueahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remDqOe9sueKtuaAgeeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfpgJrnlKjnm67lvZXlsZ7mgKfmnYPpmZDnu4TnpLrkvovnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvlkI3np7DmqKHlnZfnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WIq+eahOe8luWPt+aooeWdl+WPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfpobXpnaLvvIjmmL7npLrphY3nva7pobnnmoTpobXpnaLvvInlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys5a2X56ym5Liy5qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn55So5LqO5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys5a2X56ym5Liy5qih5p2/5bel5YW35YyF5qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+eahOeJiOacrOinpuWPkeWZqOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIGludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgd2ViIHNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ+adg+mZkOe7hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebrumZhOS7tuaTjeS9nOaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5pCc57Si5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5L2/55SoIElUU00g6YWN572u6aG555uu5pCc57Si5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5qCR6KeG5Zu+5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebrue8qeaUvuWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S9v+eUqOS7o+eQhueVjOmdouS4reeahOa3u+WKoCBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKjmibnph48gSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5L2/55So5Luj55CG55WM6Z2i5Lit55qE57yW6L6RIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqOWOhuWPsiBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55So5omT5Y2wIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfliKDpmaTphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmkJzntKLphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+W9k+elqOWNlemTvuaOpeWIsCBDSSDml7bvvIzoh6rliqjorr7nva4gQ0kg55qE5LqL5Lu254q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG55om56YeP5bGP5bmV5Lit6K6+572u6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruaJuemHj+eVjOmdouS4reiuvue9ruS6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aYvuekuuiPnOWNleS4reeahOmTvuaOpe+8jOWFgeiuuOWcqOS7o+eQhueVjOmdoueahOmFjee9rumhuee8qeaUvuinhuWbvuS4reWwhuS4gOS4qumFjee9rumhueS4juWPpuS4gOS4quWvueixoeebuOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruamguiniOS4reaYvuekuuS4gOS4quiPnOWNlemTvuaOpe+8jOeUqOS6juiuv+mXrumFjee9rumhueebrueahOWOhuWPsuiusOW9leOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmmL7npLroj5zljZXkuK3nmoTpk77mjqXvvIzku6Xkvr/lnKjku6PnkIbnlYzpnaLnmoTnvKnmlL7op4blm77kuK3orr/pl67phY3nva7pobnnmoTljoblj7LorrDlvZXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnvKnmlL7op4blm77nmoToj5zljZXkuK3mmL7npLrliKDpmaTphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ+WcqOiPnOWNleS4reaYvuekuuS4gOS4qumTvuaOpe+8jOS7peagkeW9ouinhuWbvuaYvuekuumFjee9rumhuemTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruamguiniOS4reaYvuekuuiPnOWNlemTvuaOpe+8jOS7peWkjeWItumFjee9rumhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIznlKjkuo7lnKjku6PnkIbnlYzpnaLnmoTnvKnmlL7op4blm77kuK3lpI3liLbkuIDkuKrphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOe8qeaUvuinhuWbvuS4reaYvuekuue8lui+kemFjee9rumhueeahOiPnOWNlemTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6ZO+5o6l77yM55So5LqO6L+U5Zue5Luj55CG55WM6Z2i55qE6YWN572u6aG557yp5pS+6KeG5Zu+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE57yp5pS+6KeG5Zu+5Lit5pi+56S66I+c5Y2V6ZO+5o6l77yM5Lul5omT5Y2w6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6ZO+5o6l77yM55So5LqO5pS+5aSn5Luj55CG55WM6Z2i6YWN572u6aG55qaC6KeI5Lit55qE6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGFsbCBib3RoIHJvIGFuZCBydyBjb25maWcgaXRlbXMgaW4gdGhlIGNvbmZpZyBpdGVtIHZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aYvuekuuS7o+eQhueVjOmdouS4reeahOmFjee9rumhueebruWOhuWPsuiusOW9le+8iOmAhuW6j++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICflpoLmnpzmnKrpgInmi6nku7vkvZXnsbvliKvvvIzliJnmmL7npLrpu5jorqTnsbvliKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+mFjee9rumhueeahOagh+ivhuespu+8jOWmgiBDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPjgILpu5jorqTkuLogQ29uZmlnSXRlbSPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ+iHquWKqOinpuWPkSBDb25maWdJdGVtRmV0Y2gg6LCD55So5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBsaW5rZWQgdGlja2V0cywgZm9yIGV4YW1wbGUgZm9yIHByb2Nlc3NlcyBjaGVja2luZyBsZW5zZXMuIFdpdGggIkNsYXNzZXMiIGFuZCAiTGlua1R5cGVzIiwgdGhlIGV4ZWN1dGlvbiBjYW4gYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGxpbmsgdHlwZXMuIFBsZWFzZSBwdXQgaW4gdGhlIGV4YWN0IGNsYXNzIG5hbWVzIGludG8gIkNsYXNzZXMiIGFzIHdlbGwgYXMgdGhlIGV4YWN0IGxpbmsgdHlwZSBuYW1lcyBpbiAiTGlua1R5cGVzIiwgcmVzcGVjdGl2ZWx5LiBDdXJyZW50bHkgYXZhaWxhYmxlIExpbmtUeXBlcyBhcmU6IE5vcm1hbCwgUGFyZW50Q2hpbGQsIExvY2F0aW9uT2YsIEFsdGVybmF0aXZlVG8sIENvbm5lY3RlZFRvLCBEZXBlbmRzT24sIEluY2x1ZGVzLCBSZWxldmFudFRvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgdXNhYmxlIGxpbmsgdHlwZXMgbWF5IGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSB0aGUgc2V0dGluZ3MgZ3JvdXBlZCB1bmRlciBMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ+eJiOacrOWtl+espuS4suihqOi+vuW8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfniYjmnKzlrZfnrKbkuLLmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn54mI5pys6Kem5Y+R5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfmmK/lkKblj6/ku6XpgJrov4fmo4Dmn6XnvJPlrZjlrZfmrrXkvp3otZblhbPns7vmnaXpgb/lhY3miafooYwgQ29uZmlnSXRlbUFDTOOAgui/meWPr+S7pee8qeefreihqOagvOeahOWKoOi9veaXtumXtO+8jOS9huWmguaenOimgeWcqCBJVFNNQ29uZmlnSXRlbSDlkowgRm9ybS1SZXR1cm5UeXBlIOS4reS9v+eUqCBBQ0wg5qih5Z2X77yM5YiZ5b+F6aG756aB55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfmoIfpopjkuK3mmL7npLrkuoblk6rkupvkuIDoiKzkv6Hmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn5YWo55CDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn5ZCO55Sf5LqnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfnlJ/mrpbliY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+eUn+S6p+aApyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVe+8mjE3LjUg6Iux5a+477yINDQuNDUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlXvvJoyMSDoi7Hlr7jvvIg1My4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1Ve+8mjI2LjI1IOiLseWvuO+8iDY2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFXvvJozMS41IOiLseWvuO+8iDgwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSDoi7Hlr7jmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFV77yaMS43NSDoi7Hlr7jvvIg0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFXvvJozNSDoi7Hlr7jvvIg4OC45IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSDoi7Hlr7jmlK/mnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNSDoi7Hlr7jvvIg5Ny43OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiDoi7Hlr7jvvIg2MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRV77yaNDIg6Iux5a+477yIMTA2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3Ve+8mjQ3LjI1IOiLseWvuO+8iDEyMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlXvvJozLjUg6Iux5a+477yIOC44OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVe+8mjUyLjUg6Iux5a+477yIMTMzLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUg6Iux5a+477yIODAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVe+8mjU3Ljc1IOiLseWvuO+8iDE0Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40IOiLseWvuO+8iDkwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlXvvJo2MyDoi7Hlr7jvvIgxNjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQg6Iux5a+477yIMTAwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVXvvJo2OC4yNSDoi7Hlr7jvvIgxNzMuMzUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1XvvJo1LjI1IOiLseWvuO+8iDEzLjM0IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJV77yaNzMuNSDoi7Hlr7jvvIgxODYuNjkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIOiLseWvuO+8iDExMDAg5q+r57Gz77yJ77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVV77yaNzguNzUg6Iux5a+477yIMjAwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yIOiLseWvuO+8iDEyMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhV77yaODQg6Iux5a+477yIMjEzLjM2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRV77yaNyDoi7Hlr7jvvIgxNy43OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1Ve+8mjguNzUg6Iux5a+477yIMjIuMjMg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlXvvJoxMC41IOiLseWvuO+8iDI2LjY3IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3Ve+8mjEyLjI1IOiLseWvuO+8iDMxLjEyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4Ve+8mjE0IOiLseWvuO+8iDM1LjU2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5Ve+8mjE1Ljc1IOiLseWvuO+8iDQwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ+S8muiuoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ+WcsOWdgOWIhumFjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn566h55CG5ZGYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+aooeaLn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+iuvuWkh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+eUteaxoOWuuemHj++8iOWuieaXtu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfnlLXmsaDnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICflpKflu4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+aAu+e6v+aOpeWPoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHj++8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn5q+P5Liq5Zu+5b2i5Y2h55qE5a656YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn5Y2h5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn6K+75Y2h5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+WNoeeJh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn5a6i5oi36K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+WuouaIt+err+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICflrqLmiLfnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn5pe26ZKf6aKR546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfml7bpkp/pgJ/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+S7o+eggeetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn5Lya6K6u55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn5ZKo6K+i5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfogZTns7vmlrnlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ+iBlOezu+e7j+mUgOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+mbhuijheeuseeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn5ZCI5ZCM57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn5ZCI5ZCM5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+WQiOWQjOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfml6Dnu7PnlLXor53vvIhERUNUIOeUteivne+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfmiJDmnKzljZXkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICforrjlj6/or4HmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+WIm+W7uuaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn5a6a5Yi25py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIOS/neeVmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIOacjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn5Y+R56Wo5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICforqLotK3ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+aOiOadg+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICflj5HluIPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+ahjOS4iuWei+mbu+iFpic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn5paH5Lu2562+5ZCN6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+eUteWtkOmCruS7tuivgeS5pu+8iFMvTUlNRSDor4HkuabvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH5L2j5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57uI56uvIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ+aUr+aMgee7k+adnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+acieaViOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn5aSW572u56Gs55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn6Ziy54Gr5aKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn5Zu65Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn6aOe6L2u5YKo6IO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn5aSW5b2i5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfnibnorrjnu4/okKXljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICflhY3osrvou5/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn5LiA6Iis5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICflm77lvaLljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfnoazku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfnoazku7blnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn56Gs5Lu26YeN6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfogLPmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn6Lqr5Lu95ZKM6K6/6Zeu566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflupPlrZjnvJblj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ+WPkeelqOWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+mNteebpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qg5pi+56S65Zmo77yI5ray5pm25pi+56S65Zmo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQg5pi+56S65Zmo77yI5Y+R5YWJ5LqM5p6B566h77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ+WbuuWumueUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfnrYboqJjmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfnuqzluqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfnrKwgMSDlsYLvvJrniannkIblsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn56ysIDIg5bGC77ya5pWw5o2u6ZO+6Lev5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfnrKwgMyDlsYLvvJrnvZHnu5zlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn56ysIDMg5bGC77ya572R57uc5bGC77yI6LaF57qn572R77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ+esrCA0IOWxgu+8muS8oOi+k+Wxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn56ysIDUg5bGC77ya5Lya6K+d5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ+esrCA2IOWxgu+8muaYvuekuuWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ+esrCA3IOWxgu+8muW6lOeUqOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfnp5/otYHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICforrjlj6/ljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+iuuOWPr+ivgeWvhumSpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICforrjlj6/or4HnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+iuuOWPr+ivgeacieaViOacn+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+iuuOWPr+ivgeacieaViOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn56O36YW46ZOB6ZSC77yITGlGZVBPNO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn6ZSC56a75a2Q77yITGktSW9u77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn6LS35qy+5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfkvY3kuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57uP5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn5Yi26YCg5ZWGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfmnIDlpKfotJ/ovb3og73lipvvvIjnk6bvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn5YaF5a2YJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn5YaF5a2Y57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICfov7fkvaDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ+aJi+acuuWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfnp7vliqgv5bWM5YWl5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn5Z6L6JmfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn5Z6L5Y+36K+05piOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ+aYvuekuuWZqOWIhui+qOeOhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfmmL7npLrlmajlsLrlr7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfmu5HpvKAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+e9kee7nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfnvZHnu5zkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+e9kee7nOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn572R57uc5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn6ZWN6ZWJ77yITmlDZO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+mVjeawou+8iE5pTUjvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn5L+d5a+G5Y2P6K6u77yITkRB77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn56yU6K6w5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIOaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICflhoXlrZjmqKHlnZfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn5Zu+5b2i5Y2h5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIOaYvuekuuWZqO+8iOacieacuuWPkeWFieS6jOaegeeuoe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfov5DokKXmiJDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn6K6i5Y2V5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5YW25a6DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfovpPlh7onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn5a+G56CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn5a+G56CBIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn5ZCI5LyZ5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn55S16K+d5Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfnlLXor53nsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfniannkIbno4Hoiq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfnlLXlipvovpPpgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICflnKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+acuuaetua3seW6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+acuuaetuWNleWFgyAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+aIv+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSDljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIOivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ+mUgOWUruWQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfljavmmJ/nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn5a+G5bCB6ZOF6YW4IChTTEEpIOeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+W6j+WIl+WPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfmnI3liqHlmajova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfmnI3liqHljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfmnI3liqHmoIfnrb4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn5o+S5bqn57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn6L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn5Y+R6KiA5Lq6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+aomea6lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn5ZCv5YqoIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn5a2Y5YKoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn5a2Y5YKo5YiG5Yy6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAn6ZmE5bGe5py65p6EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfmkZjopoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfnmKblrqLmiLfmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ+e6v+eoiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ+mbt+eUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn5pi+5Y2h5oC75YaF5a2Y77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfmgLvlhoXlrZjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn6Kem5pG45bGP5pi+56S65ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn5aGU5qW8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ig6ZuG57q/5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAn5pi+5YOP566hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ+iZmuaLn+S4k+eUqOe9kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIg5aS055uUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAn6Jma5ouf6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfnvZHnu5znlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+e9kee7nOaRhOWDj+WktCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AdminGenericInterfaceInvokerConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckNvbmZpZ0l0ZW07Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkV2Vic2VydmljZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1dlYnNlcnZpY2VJRCcgKTsKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoJFdlYnNlcnZpY2VJRCkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBXZWJzZXJ2aWNlSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1dlYnNlcnZpY2VJRCcsCiAgICAgICAgVmFsdWUgPT4gJFdlYnNlcnZpY2VJRAogICAgKTsKCiAgICBteSAkV2Vic2VydmljZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZ2V0IGRhdGEgZm9yIFdlYnNlcnZpY2VJRCAlcycsICRXZWJzZXJ2aWNlSUQgKSwKICAgICAgICApOwogICAgfQoKICAgICRTZWxmLT5fRXh0cmFTZXR0aW5ncygKICAgICAgICBXZWJzZXJ2aWNlID0+ICRXZWJzZXJ2aWNlRGF0YS0+e05hbWV9LAogICAgKTsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9BZGQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZEFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0NoYW5nZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlQWN0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZUFjdGlvbicgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9EZWxldGVBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkRXZlbnQnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkRXZlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlRXZlbnQnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRGVsZXRlRXZlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIFN1YmFjdGlvbiEnKSwKICAgICk7Cn0KCnN1YiBfQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlclR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ0ludm9rZXJUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIE1vZGUgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgSW52b2tlckNvbmZpZyA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJEdldFBhcmFtLT57SW52b2tlclR5cGV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgX0FkZEFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBFeHRyYVBhcmFtczsKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIGlmICggJFNlbGYtPntTZXR0aW5nc30gJiYgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259ICkgewogICAgICAgICAgICBwdXNoIEBFeHRyYVBhcmFtcywgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlclR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ0ludm9rZXJUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnSW52b2tlcicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdNYXBwaW5nSW5ib3VuZCcsCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdNYXBwaW5nVHlwZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdNYXBwaW5nT3V0Ym91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBARXh0cmFQYXJhbXMsCiAgICAgICAgXSwKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkV2Vic2VydmljZURhdGEgPSAkUGFyYW17V2Vic2VydmljZURhdGF9OwogICAgbXkgJUVycm9yczsKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRHZXRQYXJhbS0+e0ludm9rZXJ9ICkgKSB7CiAgICAgICAgJEVycm9yc3tJbnZva2VyU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIEludm9rZXIgd2l0aCBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuCiAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gKSApIHsKICAgICAgICAkRXJyb3Jze0ludm9rZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRJbnZva2VyQ29uZmlnID0gewogICAgICAgIERlc2NyaXB0aW9uID0+ICRHZXRQYXJhbS0+e0Rlc2NyaXB0aW9ufSwKICAgICAgICBUeXBlICAgICAgICA9PiAkR2V0UGFyYW0tPntJbnZva2VyVHlwZX0sCiAgICB9OwoKICAgIGZvciBteSAkUGFyYW1Db25maWcgKEBFeHRyYVBhcmFtcykgewogICAgICAgIGlmICggZXhpc3RzICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259ICkgewogICAgICAgICAgICBteSAkRXJyb3IgPSAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufS0+KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gPT4gJEdldFBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRFcnJvcikgewogICAgICAgICAgICAgICAgJEVycm9yc3sgJFBhcmFtQ29uZmlnLT57TmFtZX0gLiAnU2VydmVyRXJyb3InIH0gPSAkRXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRJbnZva2VyQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICAjIFZhbGlkYXRpb24gZXJyb3JzLgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICA9PiAnQWRkJywKICAgICAgICAgICAgSW52b2tlckNvbmZpZyA9PiAkSW52b2tlckNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRHZXRQYXJhbS0+eyREaXJlY3Rpb259OwoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgJEludm9rZXJDb25maWctPnskRGlyZWN0aW9ufSA9IHsKICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICB9OwogICAgfQoKICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfSA9ICRJbnZva2VyQ29uZmlnOwoKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlRGF0YX0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgdXBkYXRlIHdlYiBzZXJ2aWNlJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUmVkaXJlY3RVUkwgPQogICAgICAgICdBY3Rpb249JwogICAgICAgIC4gJFNlbGYtPntBY3Rpb259CiAgICAgICAgLiAnO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgLiAnO0ludm9rZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57SW52b2tlcn0gKQogICAgICAgIC4gJzsnOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0NoYW5nZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ0ludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V2ZW50VHlwZScsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSA9ICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX07CiAgICBteSAkSW52b2tlckNvbmZpZyAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3IgaW52b2tlciAlcycsICRHZXRQYXJhbS0+e0ludm9rZXJ9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICAleyRHZXRQYXJhbX0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIEludm9rZXIgICAgICAgICA9PiAkR2V0UGFyYW0tPntJbnZva2VyfSwKICAgICAgICBJbnZva2VyQ29uZmlnICAgPT4gJEludm9rZXJDb25maWcsCiAgICAgICAgTWFwcGluZ0luYm91bmQgID0+ICRJbnZva2VyQ29uZmlnLT57TWFwcGluZ0luYm91bmR9LT57VHlwZX0sCiAgICAgICAgTWFwcGluZ091dGJvdW5kID0+ICRJbnZva2VyQ29uZmlnLT57TWFwcGluZ091dGJvdW5kfS0+e1R5cGV9LAogICAgKTsKfQoKc3ViIF9DaGFuZ2VBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0cmFQYXJhbXM7CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBpZiAoICRTZWxmLT57U2V0dGluZ3N9ICYmICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufSApIHsKICAgICAgICAgICAgcHVzaCBARXh0cmFQYXJhbXMsICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCo7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09sZEludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0ludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ29udGludWVBZnRlclNhdmUnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V2ZW50VHlwZScsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQEV4dHJhUGFyYW1zLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9IGRlbGV0ZSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBkZXRlcm1pbmUgY29uZmlnIGZvciBpbnZva2VyICVzJywgJEdldFBhcmFtLT57T2xkSW52b2tlcn0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntJbnZva2VyfSApICkgewogICAgICAgICRFcnJvcnN7SW52b2tlclNlcnZlckVycm9yfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBJbnZva2VyIHdhcyByZW5hbWVkIGFuZCBuZXcgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgIGVsc2lmICgKICAgICAgICAkR2V0UGFyYW0tPntPbGRJbnZva2VyfSBuZSAkR2V0UGFyYW0tPntJbnZva2VyfQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkRXJyb3Jze0ludm9rZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICRJbnZva2VyQ29uZmlnLT57RGVzY3JpcHRpb259ID0gJEdldFBhcmFtLT57RGVzY3JpcHRpb259OwoKICAgIGZvciBteSAkUGFyYW1Db25maWcgKEBFeHRyYVBhcmFtcykgewogICAgICAgIGlmICggZXhpc3RzICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259ICkgewogICAgICAgICAgICBteSAkRXJyb3IgPSAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufS0+KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gPT4gJEdldFBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRFcnJvcikgewogICAgICAgICAgICAgICAgJEVycm9yc3sgJFBhcmFtQ29uZmlnLT57TmFtZX0gLiAnU2VydmVyRXJyb3InIH0gPSAkRXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRJbnZva2VyQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICBpZiAoJUVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXskR2V0UGFyYW19LAogICAgICAgICAgICAlRXJyb3JzLAogICAgICAgICAgICBNb2RlICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICBJbnZva2VyICAgICAgID0+ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9LAogICAgICAgICAgICBJbnZva2VyQ29uZmlnID0+ICRJbnZva2VyQ29uZmlnLAogICAgICAgICAgICBOZXdJbnZva2VyICAgID0+ICRHZXRQYXJhbS0+e0ludm9rZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiBtYXBwaW5nIHR5cGVzIHdlcmUgbm90IGNoYW5nZWQsIGtlZXAgdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbi4KICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CgogICAgICAgICMgTm8gbWFwcGluZyBzZXQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICBpZiAoICEkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSApIHsKICAgICAgICAgICAgZGVsZXRlICRJbnZva2VyQ29uZmlnLT57JERpcmVjdGlvbn07CiAgICAgICAgICAgIG5leHQgRElSRUNUSU9OOwogICAgICAgIH0KCiAgICAgICAgIyBNYXBwaW5nIGFkZGVkIG9yIGNoYW5nZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgbXkgJE9sZE1hcHBpbmcgPSAkSW52b2tlckNvbmZpZy0+eyREaXJlY3Rpb259LT57VHlwZX07CiAgICAgICAgaWYgKCAhJE9sZE1hcHBpbmcgfHwgKCAkT2xkTWFwcGluZyAmJiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSBuZSAkT2xkTWFwcGluZyApICkgewogICAgICAgICAgICAkSW52b2tlckNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBVcGRhdGUgaW52b2tlciBjb25maWcuCiAgICAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gPSAkSW52b2tlckNvbmZpZzsKCiAgICAjIFRha2UgY2FyZSBvZiBlcnJvciBoYW5kbGVycyB3aXRoIGludm9rZXIgZmlsdGVycyBpZiBpbnZva2VyIHdhcyByZW5hbWVkLgogICAgaWYgKAogICAgICAgICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IG5lICRHZXRQYXJhbS0+e0ludm9rZXJ9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57RXJyb3JIYW5kbGluZ30gKQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkRXJyb3JIYW5kbGluZ0NvbmZpZyA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57RXJyb3JIYW5kbGluZ307CgogICAgICAgIEVSUk9SSEFORExJTkc6CiAgICAgICAgZm9yIG15ICRFcnJvckhhbmRsaW5nICggc29ydCBrZXlzICV7JEVycm9ySGFuZGxpbmdDb25maWd9ICkgewogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfSApOwoKICAgICAgICAgICAgbXkgJEludm9rZXJGaWx0ZXIgPSAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e0ludm9rZXJGaWx0ZXJ9OwogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkSW52b2tlckZpbHRlcik7CgogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIWdyZXAgeyAkXyBlcSAkR2V0UGFyYW0tPntPbGRJbnZva2VyfSB9IEB7JEludm9rZXJGaWx0ZXJ9OwoKICAgICAgICAgICAgIyBSZW5hbWUgaW52b2tlciBpbiBlcnJvciBoYW5kbGluZyBpbnZva2VyIGZpbHRlciB0byBrZWVwIGNvbnNpc3RlbmN5LgogICAgICAgICAgICBteSBATmV3SW52b2tlckZpbHRlciA9IG1hcCB7ICRfIGVxICRHZXRQYXJhbS0+e09sZEludm9rZXJ9ID8gJEdldFBhcmFtLT57SW52b2tlcn0gOiAkXyB9IEB7JEludm9rZXJGaWx0ZXJ9OwogICAgICAgICAgICAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e0ludm9rZXJGaWx0ZXJ9ID0gXEBOZXdJbnZva2VyRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntFcnJvckhhbmRsaW5nfSA9ICRFcnJvckhhbmRsaW5nQ29uZmlnOwogICAgfQoKICAgICMgYWRkZWQgZm9yIE9UT0JPVGlja2V0SW52b2tlcgoKICAgICMgVGFrZSBjYXJlIG9mIGludm9rZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb24gaWYgaW52b2tlciB3YXMgcmVuYW1lZC4KICAgIGlmICggJEdldFBhcmFtLT57T2xkSW52b2tlcn0gbmUgJEdldFBhcmFtLT57SW52b2tlcn0gKSB7CgogICAgICAgICMgSW52b2tlciBjb250cm9sbGVyIG1hcHBpbmcuCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9CiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmdDb25maWcKICAgICAgICAgICAgICAgID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ307CgogICAgICAgICAgICBJTlZPS0VSOgogICAgICAgICAgICBmb3IgbXkgJEludm9rZXIgKCBzb3J0IGtleXMgJXskSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnfSApIHsKICAgICAgICAgICAgICAgIG5leHQgSU5WT0tFUiBpZiAkSW52b2tlciBuZSAkR2V0UGFyYW0tPntPbGRJbnZva2VyfTsKCiAgICAgICAgICAgICAgICAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnLT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnLT57ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9CiAgICAgICAgICAgICAgICA9ICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmdDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIE91dGJvdW5kIGhlYWRlciBjb25maWcuCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntPdXRib3VuZEhlYWRlcnN9LT57U3BlY2lmaWN9CiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRPdXRib3VuZEhlYWRlckNvbmZpZwogICAgICAgICAgICAgICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfTsKCiAgICAgICAgICAgIElOVk9LRVI6CiAgICAgICAgICAgIGZvciBteSAkSW52b2tlciAoIHNvcnQga2V5cyAleyRPdXRib3VuZEhlYWRlckNvbmZpZ30gKSB7CiAgICAgICAgICAgICAgICBuZXh0IElOVk9LRVIgaWYgJEludm9rZXIgbmUgJEdldFBhcmFtLT57T2xkSW52b2tlcn07CgogICAgICAgICAgICAgICAgJE91dGJvdW5kSGVhZGVyQ29uZmlnLT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkT3V0Ym91bmRIZWFkZXJDb25maWctPnsgJEdldFBhcmFtLT57T2xkSW52b2tlcn0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e091dGJvdW5kSGVhZGVyc30tPntTcGVjaWZpY30KICAgICAgICAgICAgICAgID0gJE91dGJvdW5kSGVhZGVyQ29uZmlnOwogICAgICAgIH0KCiAgICB9CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCB1cGRhdGUgd2ViIHNlcnZpY2UnKSwKICAgICAgICApOwogICAgfQoKICAgICMgSWYgdGhlIHVzZXIgd291bGQgbGlrZSB0byBjb250aW51ZSBlZGl0aW5nIHRoZSBpbnZva2VyIGNvbmZpZywganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4uCiAgICBteSAkUmVkaXJlY3RVUkw7CiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbnRpbnVlQWZ0ZXJTYXZlfSBlcSAxICkgewogICAgICAgICRSZWRpcmVjdFVSTCA9CiAgICAgICAgICAgICdBY3Rpb249JwogICAgICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJztJbnZva2VyPScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0UGFyYW0tPntJbnZva2VyfSApCiAgICAgICAgICAgIC4gJztFdmVudFR5cGU9JwogICAgICAgICAgICAuICRHZXRQYXJhbS0+e0V2ZW50VHlwZX0KICAgICAgICAgICAgLiAnOyc7CiAgICB9CgogICAgIyBPdGhlcndpc2UgcmV0dXJuIHRvIG92ZXJ2aWV3LgogICAgZWxzZSB7CiAgICAgICAgJFJlZGlyZWN0VVJMID0KICAgICAgICAgICAgJ0FjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAgICAgLiAkUGFyYW17V2Vic2VydmljZUlEfQogICAgICAgICAgICAuICc7JzsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gJFJlZGlyZWN0VVJMLAogICAgKTsKfQoKc3ViIF9EZWxldGVBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdJbnZva2VyJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17V2Vic2VydmljZURhdGF9LT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3IgaW52b2tlciAiIC4gJEdldFBhcmFtLT57SW52b2tlcn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgICMgUmVtb3ZlIGludm9rZXIgZnJvbSBjb25maWcuCiAgICBkZWxldGUgJFBhcmFte1dlYnNlcnZpY2VEYXRhfS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyAkUGFyYW17V2Vic2VydmljZURhdGF9IH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmLT5fSlNPTlJlc3BvbnNlKCBTdWNjZXNzID0+ICRTdWNjZXNzICk7Cn0KCnN1YiBfQWRkRXZlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdJbnZva2VyJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ05ld0V2ZW50JywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdBc3luY2hyb25vdXMnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRXZlbnRUeXBlJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJbnZva2VyQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIGludm9rZXIgJXMnLCAkR2V0UGFyYW0tPntJbnZva2VyfSApLAogICAgICAgICk7CiAgICB9CgogICAgIyBBZGQgdGhlIG5ldyBldmVudCB0byB0aGUgbGlzdC4KICAgIG15IEBFdmVudHMgPSBJc0FycmF5UmVmV2l0aERhdGEoICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSApID8gQHsgJEludm9rZXJDb25maWctPntFdmVudHN9IH0gOiAoKTsKICAgIHB1c2ggQEV2ZW50cywgewogICAgICAgIEFzeW5jaHJvbm91cyA9PiAkR2V0UGFyYW0tPntBc3luY2hyb25vdXN9LAogICAgICAgIEV2ZW50ICAgICAgICA9PiAkR2V0UGFyYW0tPntOZXdFdmVudH0sCiAgICB9OwoKICAgICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSA9IFxARXZlbnRzOwogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ID0gJEludm9rZXJDb25maWc7CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCB1cGRhdGUgd2ViIHNlcnZpY2UnKSwKICAgICAgICApOwogICAgfQoKICAgICMgU3RheSBpbiBlZGl0IG1vZGUuCiAgICBteSAkUmVkaXJlY3RVUkwgPQogICAgICAgICdBY3Rpb249JwogICAgICAgIC4gJFNlbGYtPntBY3Rpb259CiAgICAgICAgLiAnO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgLiAnO0ludm9rZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57SW52b2tlcn0gKQogICAgICAgIC4gJztFdmVudFR5cGU9JwogICAgICAgIC4gJEdldFBhcmFtLT57RXZlbnRUeXBlfQogICAgICAgIC4gJzsnOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0RlbGV0ZUV2ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlcicsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudE5hbWUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJbnZva2VyQ29uZmlnKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBkZXRlcm1pbmUgY29uZmlnIGZvciBpbnZva2VyICRHZXRQYXJhbS0+e0ludm9rZXJ9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgICMgZGVsZXRlIHNlbGVjdGVkIGV2ZW50IGZyb20gbGlzdCBvZiBldmVudHMuCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGZpbmQgZXZlbnQgdG8gZGVsZXRlIGluIGNvbmZpZyBjb25maWcgZm9yIGludm9rZXIgJEdldFBhcmFtLT57SW52b2tlcn0hIiwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgQHsgJEludm9rZXJDb25maWctPntFdmVudHN9IH0gPSBncmVwIHsgJF8tPntFdmVudH0gbmUgJEdldFBhcmFtLT57RXZlbnROYW1lfSB9IEB7ICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSB9OwogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ID0gJEludm9rZXJDb25maWc7CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IHVwZGF0ZSB3ZWIgc2VydmljZScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAxICk7Cn0KCnN1YiBfU2hvd1NjcmVlbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdJbnZva2VyJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17SW52b2tlcn0sCiAgICApOwoKICAgIG15ICVUZW1wbGF0ZURhdGEgPSAoCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJFBhcmFte0ludm9rZXJDb25maWd9LT57RGVzY3JpcHRpb259LAogICAgICAgIEludm9rZXJUeXBlID0+ICRQYXJhbXtJbnZva2VyQ29uZmlnfS0+e1R5cGV9LAogICAgICAgIEludm9rZXIgICAgID0+ICRQYXJhbXtJbnZva2VyfSwKICAgICAgICBOZXdJbnZva2VyICA9PiAkUGFyYW17TmV3SW52b2tlcn0gLy8gJFBhcmFte0ludm9rZXJ9LAogICAgKTsKCiAgICAjIEhhbmRsZSBtYXBwaW5nLgogICAgbXkgJE1hcHBpbmdNb2R1bGVzICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpNYXBwaW5nOjpNb2R1bGUnKSB8fCB7fTsKICAgIG15IEBNYXBwaW5nTW9kdWxlTGlzdCA9IHNvcnQga2V5cyAleyRNYXBwaW5nTW9kdWxlc307CiAgICBESVJFQ1RJT046CiAgICBmb3IgbXkgJERpcmVjdGlvbiAocXcoTWFwcGluZ0luYm91bmQgTWFwcGluZ091dGJvdW5kKSkgewogICAgICAgIG15ICRPbGRNYXBwaW5nID0gJFBhcmFte0ludm9rZXJDb25maWd9LT57JERpcmVjdGlvbn0tPntUeXBlfTsKICAgICAgICBteSAkTWFwcGluZyAgICA9ICRQYXJhbXskRGlyZWN0aW9ufTsKCiAgICAgICAgJFRlbXBsYXRlRGF0YXsgJERpcmVjdGlvbiAuICdTdHJnJyB9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBNYXBwaW5nTW9kdWxlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkRGlyZWN0aW9uLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRNYXBwaW5nLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplIFJlZ2lzdGVyQ2hhbmdlJywKICAgICAgICApOwoKICAgICAgICAjIE9ubHkgc2hvdyBjb25maWd1cmUgYnV0dG9uIGlmIHdlIGhhdmUgYW4gdW5jaGFuZ2VkIGV4aXN0aW5nIG1hcHBpbmcgdHlwZS4KICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAhJE9sZE1hcHBpbmc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICRNYXBwaW5nIG5lICRPbGRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICEkTWFwcGluZ01vZHVsZXMtPnskTWFwcGluZ30tPntDb25maWdEaWFsb2d9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAkRGlyZWN0aW9uIC4gJ0NvbmZpZ3VyZUJ1dHRvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiAuIENvbmZpZ0RpYWxvZyA9PiAkTWFwcGluZ01vZHVsZXMtPnskTWFwcGluZ30tPntDb25maWdEaWFsb2d9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgU0VDVElPTjoKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIG5leHQgU0VDVElPTiBpZiAhJFNlbGYtPntTZXR0aW5nc307CiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICEkU2VsZi0+e1NldHRpbmdzfXskU2VjdGlvbn07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRTZWN0aW9uLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkU2V0dGluZyAoICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZXR0aW5nSFRNTDsKICAgICAgICAgICAgaWYgKCAkU2V0dGluZy0+e1R5cGV9IGVxICdBcnJheScgKSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ0hUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+JSosCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SW52b2tlckNvbmZpZ30tPnsgJFNldHRpbmctPntOYW1lfSB9IC8vICRTZXR0aW5nLT57U2VsZWN0ZWRJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NldHRpbmcnIC4gJFNlY3Rpb24sCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nTmFtZSAgICAgICAgPT4gJFNldHRpbmctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nTGFiZWwgICAgICAgPT4gJFNldHRpbmctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgU2V0dGluZ0hUTUwgICAgICAgID0+ICRTZXR0aW5nSFRNTCwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nRXhwbGFuYXRpb24gPT4gJFNldHRpbmctPntFeHBsYW5hdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgICAgICAgID0+ICRQYXJhbXsgJFNldHRpbmctPntOYW1lfSAuICdTZXJ2ZXJFcnJvcicgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ2hhbmdlJyApIHsKCiAgICAgICAgIyBTaG93IGFsbCBpbnZva2VyIGV2ZW50IHRyaWdnZXJzLgogICAgICAgIG15ICRJbnZva2VyRXZlbnRzID0gJFBhcmFte0ludm9rZXJDb25maWd9LT57RXZlbnRzfSAvLyBbXTsKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJEludm9rZXJFdmVudHMpICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0aGUgZXZlbnQgdHJpZ2dlcnMgdGFibGUuCiAgICAgICAgbXkgQEV2ZW50czsKICAgICAgICBteSAlSW52b2tlckV2ZW50TG9va3VwOwogICAgICAgIG15ICVSZWdpc3RlcmVkRXZlbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkV2ZW50JyktPkV2ZW50TGlzdCgpOwogICAgICAgIGZvciBteSAkRXZlbnQgKCBAeyRJbnZva2VyRXZlbnRzfSApIHsKICAgICAgICAgICAgcHVzaCBARXZlbnRzLCAkRXZlbnQtPntFdmVudH07CgogICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBldmVudHMgdGhhdCBhcmUgYWxyZWFkeSBhc3NpZ25lZCB0byB0aGlzIGludm9rZXIKICAgICAgICAgICAgIyAgIHRoZSBzZWxlY3RzIHNob3VsZCBsb29rIGZvciB0aGlzIHZhbHVlcyBhbmQgb21pdCB0aGVtIGZyb20gdGhlaXIgbGlzdHMuCiAgICAgICAgICAgICRJbnZva2VyRXZlbnRMb29rdXB7ICRFdmVudC0+e0V2ZW50fSB9ID0gMTsKCiAgICAgICAgICAgICMgU2V0IHRoZSBldmVudCB0eXBlIChldmVudCBvYmplY3QgbGlrZSBBcnRpY2xlIG9yIFRpY2tldCkuCiAgICAgICAgICAgICMgVmFsdWUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnV0IGtlcHQgYXMgaXQgbWlnaHQgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUuCiAgICAgICAgICAgIG15ICRFdmVudFR5cGU7CiAgICAgICAgICAgIEVWRU5UVFlQRToKICAgICAgICAgICAgZm9yIG15ICRUeXBlICggc29ydCBrZXlzICVSZWdpc3RlcmVkRXZlbnRzICkgewogICAgICAgICAgICAgICAgbmV4dCBFVkVOVFRZUEUgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFJlZ2lzdGVyZWRFdmVudHN7JFR5cGV9ICk7CiAgICAgICAgICAgICAgICBuZXh0IEVWRU5UVFlQRSBpZiAhZ3JlcCB7ICRfIGVxICRFdmVudC0+e0V2ZW50fSB9IEB7ICRSZWdpc3RlcmVkRXZlbnRzeyRUeXBlfSB9OwoKICAgICAgICAgICAgICAgICRFdmVudFR5cGUgPSAkVHlwZTsKICAgICAgICAgICAgICAgIGxhc3QgRVZFTlRUWVBFOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0V2ZW50Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkUGFyYW17V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJFBhcmFte0ludm9rZXJ9LAogICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgICAgICA9PiAkRXZlbnQtPntFdmVudH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRFdmVudFR5cGUgLy8gJy0nLAogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAkRXZlbnQtPntBc3luY2hyb25vdXN9ICAgICAgICAgICAgICAgICAgID8gVHJhbnNsYXRhYmxlKCdZZXMnKSA6IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb24gICAgPT4gSXNIYXNoUmVmV2l0aERhdGEoICRFdmVudC0+e0NvbmRpdGlvbn0gKSA/IFRyYW5zbGF0YWJsZSgnWWVzJykgOiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnRXZlbnRzJywKICAgICAgICAgICAgVmFsdWUgPT4gXEBFdmVudHMKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBldmVudCB0cmlnZ2VyIHNlbGVjdG9ycyAob25lIGZvciBlYWNoIHR5cGUpLgogICAgICAgIG15IEBFdmVudFR5cGVMaXN0OwogICAgICAgIFRZUEU6CiAgICAgICAgZm9yIG15ICRUeXBlICggc29ydCBrZXlzICVSZWdpc3RlcmVkRXZlbnRzICkgewogICAgICAgICAgICBuZXh0IEVWRU5UVFlQRSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUmVnaXN0ZXJlZEV2ZW50c3skVHlwZX0gKTsKCiAgICAgICAgICAgICMgUmVmcmVzaCBldmVudCBsaXN0IGZvciBlYWNoIGV2ZW50IHR5cGUuCiAgICAgICAgICAgIG15IEBFdmVudExpc3QgPSBncmVwIHsgISRJbnZva2VyRXZlbnRMb29rdXB7JF99IH0gQHsgJFJlZ2lzdGVyZWRFdmVudHN7JFR5cGV9IH07CgogICAgICAgICAgICAjIGhpZGUgaW5hY3RpdmUgZXZlbnQgbGlzdHMKICAgICAgICAgICAgbXkgJEV2ZW50TGlzdEhpZGRlbiA9ICcnOwogICAgICAgICAgICBpZiAoICRUeXBlIG5lICRQYXJhbXtFdmVudFR5cGV9ICkgewogICAgICAgICAgICAgICAgJEV2ZW50TGlzdEhpZGRlbiA9ICdIaWRkZW4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRXZlbnRTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBFdmVudExpc3QsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFR5cGUgLiAnRXZlbnQnLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0V2ZW50JyksCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBFdmVudExpc3QgR2VuZXJpY0ludGVyZmFjZVNwYWNpbmcgJyAuICRFdmVudExpc3RIaWRkZW4sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0V2ZW50QWRkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEV2ZW50U3RyZyA9PiAkRXZlbnRTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEV2ZW50VHlwZUxpc3QsICRUeXBlOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgZXZlbnQgdHlwZSBzZWxlY3Rvci4KICAgICAgICAkVGVtcGxhdGVEYXRhe0V2ZW50VHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBFdmVudFR5cGVMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdFdmVudFR5cGUnLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0V2ZW50VHlwZX0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVGVtcGxhdGVEYXRhLAogICAgICAgICAgICBXZWJzZXJ2aWNlTmFtZSA9PiAkUGFyYW17V2Vic2VydmljZURhdGF9LT57TmFtZX0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfUGFyYW1zR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAlR2V0UGFyYW07CiAgICBERUZJTklUSU9OOgogICAgZm9yIG15ICREZWZpbml0aW9uICggQHsgJFBhcmFte0RlZmluaXRpb259IH0gKSB7CiAgICAgICAgbXkgJE5hbWUgPSAkRGVmaW5pdGlvbi0+e05hbWV9OwoKICAgICAgICBpZiAoICREZWZpbml0aW9uLT57VHlwZX0gZXEgJ1N0cmluZycgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTmFtZSApIC8vICREZWZpbml0aW9uLT57RGVmYXVsdH07CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiBJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05lZWQgJXMnLCAoICREZWZpbml0aW9uLT57TGFiZWx9IHx8ICREZWZpbml0aW9uLT57TmFtZX0gKSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntUeXBlfSBlcSAnQXJyYXknICkgewogICAgICAgICAgICAkR2V0UGFyYW17JE5hbWV9ID0gWyAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkTmFtZSApIF07CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXskTmFtZX0gKTsKCiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiAhJERlZmluaXRpb24tPntNYW5kYXRvcnl9OwogICAgICAgICAgICAkR2V0UGFyYW17RXJyb3J9ID0gVHJhbnNsYXRhYmxlKCAnTmVlZCAlcycsICggJERlZmluaXRpb24tPntMYWJlbH0gfHwgJERlZmluaXRpb24tPntOYW1lfSApICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KICAgIH0KCiAgICAjIFR5cGUgY2hlY2tzLgogICAgREVGSU5JVElPTjoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG5leHQgREVGSU5JVElPTiBpZiAhJERlZmluaXRpb24tPntDaGVja307CgogICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb24tPntOYW1lfTsKCiAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFkZWZpbmVkICRHZXRQYXJhbXskTmFtZX07CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ0ludm9rZXJUeXBlJyApIHsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICRTZWxmLT5fSW52b2tlclR5cGVDaGVjayggSW52b2tlclR5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludm9rZXJUeXBlICVzIGlzIG5vdCByZWdpc3RlcmVkJywgJEdldFBhcmFteyROYW1lfSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ01hcHBpbmdUeXBlJyApIHsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW17TmFtZX0gKTsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICRTZWxmLT5fTWFwcGluZ1R5cGVDaGVjayggTWFwcGluZ1R5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ01hcHBpbmdUeXBlICVzIGlzIG5vdCByZWdpc3RlcmVkJywgJEdldFBhcmFteyROYW1lfSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlR2V0UGFyYW07Cn0KCnN1YiBfSW52b2tlclR5cGVDaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0ludm9rZXJUeXBlfTsKCiAgICBteSAkSW52b2tlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZScpOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlcnMpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbnZva2Vycy0+eyAkUGFyYW17SW52b2tlclR5cGV9IH0gKTsKICAgIHJldHVybiAxOwp9CgpzdWIgX01hcHBpbmdUeXBlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtNYXBwaW5nVHlwZX07CgogICAgbXkgJE1hcHBpbmdzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpNYXBwaW5nOjpNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE1hcHBpbmdzKTsKCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkTWFwcGluZ3MtPnsgJFBhcmFte01hcHBpbmdUeXBlfSB9ICk7CiAgICByZXR1cm4gMTsKfQoKc3ViIF9KU09OUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJldHVybiBKU09OIG91dHB1dC4KICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkpTT05SZXBseSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAkUGFyYW17U3VjY2Vzc30gLy8gMCwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIF9FeHRyYVNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENsYXNzTGlzdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnICk7CiAgICBteSAkQ2xhc3NSZXN0cmljdGlvbnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW1GZXRjaDo6Q2xhc3NlcycpOwogICAgbXkgQENsYXNzZXM7CgogICAgaWYgKCAkQ2xhc3NSZXN0cmljdGlvbnMgJiYgJENsYXNzUmVzdHJpY3Rpb25zLT57ICRQYXJhbXtXZWJzZXJ2aWNlfSB9ICkgewogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgQENsYXNzZXMgPSBtYXAgeyAkQ2xhc3NMb29rdXB7JF99IH0gJENsYXNzUmVzdHJpY3Rpb25zLT57ICRQYXJhbXtXZWJzZXJ2aWNlfSB9LT5AKjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBDbGFzc2VzID0ga2V5cyAkQ2xhc3NMaXN0LT4lKjsKICAgIH0KCiAgICAkU2VsZi0+e1NldHRpbmdzfXtSZXNwb25zZX0gPSBbCiAgICAgICAgbWFwIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgPT4gJ0lkZW50aWZpZXIgZm9yICcgLiAkQ2xhc3NMaXN0LT57JF99LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0lkZW50aWZpZXInIC4gJF8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnQXJyYXknLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gPT4gJ1BsZWFzZSBzZWxlY3QgYW4gYXR0cmlidXRlIG9yIGEgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyB3aGljaCB1bmlxdWVseSBtYXAgdGhlIGNvbmZpZyBpdGVtcy4nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJFNlbGYtPl9Qb3NzaWJsZVZhbHVlc0dldCggQ2xhc3NJRCA9PiAkXyApLAogICAgICAgICAgICB9CiAgICAgICAgfSBAQ2xhc3NlcywKICAgIF07CgogICAgcmV0dXJuOwp9CgpzdWIgX1Bvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICBxdy9DbGFzc2VzIENvbmZpZ0l0ZW1JRCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVzLywKICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyB9IHNvcnQga2V5cyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgXTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AdminGenericInterfaceOperationConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRXZWJzZXJ2aWNlSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnV2Vic2VydmljZUlEJyApOwogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkV2Vic2VydmljZUlEKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIFdlYnNlcnZpY2VJRCEnKSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnV2Vic2VydmljZUlEJywKICAgICAgICBWYWx1ZSA9PiAkV2Vic2VydmljZUlECiAgICApOwoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VHZXQoCiAgICAgICAgSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VEYXRhKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBnZXQgZGF0YSBmb3IgV2Vic2VydmljZUlEICVzJywgJFdlYnNlcnZpY2VJRCApLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPl9FeHRyYVNldHRpbmdzKAogICAgICAgIFdlYnNlcnZpY2UgPT4gJFdlYnNlcnZpY2VEYXRhLT57TmFtZX0sCiAgICApOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkQWN0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9DaGFuZ2VBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0RlbGV0ZUFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgU3ViYWN0aW9uIScpLAogICAgKTsKfQoKc3ViIF9BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdPcGVyYXRpb25UeXBlJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICAgICAgQ2hlY2sgICAgID0+ICdPcGVyYXRpb25UeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgT3BlcmF0aW9uQ29uZmlnID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb25UeXBlfSwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIF9BZGRBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0cmFQYXJhbXM7CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBpZiAoICRTZWxmLT57U2V0dGluZ3N9ICYmICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufSApIHsKICAgICAgICAgICAgcHVzaCBARXh0cmFQYXJhbXMsICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCo7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09wZXJhdGlvblR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ09wZXJhdGlvblR5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQEV4dHJhUGFyYW1zLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgT3BlcmF0aW9uIHdpdGggc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgZWxzaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRPcGVyYXRpb25Db25maWcgPSB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gJEdldFBhcmFtLT57RGVzY3JpcHRpb259LAogICAgICAgIFR5cGUgICAgICAgID0+ICRHZXRQYXJhbS0+e09wZXJhdGlvblR5cGV9LAogICAgfTsKCiAgICBmb3IgbXkgJFBhcmFtQ29uZmlnIChARXh0cmFQYXJhbXMpIHsKICAgICAgICBpZiAoIGV4aXN0cyAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufSApIHsKICAgICAgICAgICAgbXkgJEVycm9yID0gJFBhcmFtQ29uZmlnLT57RXJyb3JGdW5jdGlvbn0tPigKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIEdldFBhcmFtID0+ICRHZXRQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkRXJyb3IpIHsKICAgICAgICAgICAgICAgICRFcnJvcnN7ICRQYXJhbUNvbmZpZy0+e05hbWV9IC4gJ1NlcnZlckVycm9yJyB9ID0gJEVycm9yOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkT3BlcmF0aW9uQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICAjIFZhbGlkYXRpb24gZXJyb3JzLgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZGQnLAogICAgICAgICAgICBPcGVyYXRpb25Db25maWcgPT4gJE9wZXJhdGlvbkNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRHZXRQYXJhbS0+eyREaXJlY3Rpb259OwoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICBUeXBlID0+ICRHZXRQYXJhbS0+eyREaXJlY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ID0gJE9wZXJhdGlvbkNvbmZpZzsKCiAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXskV2Vic2VydmljZURhdGF9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ291bGQgbm90IHVwZGF0ZSB3ZWIgc2VydmljZScpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFJlZGlyZWN0VVJMID0KICAgICAgICAnQWN0aW9uPScKICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgIC4gJztTdWJhY3Rpb249Q2hhbmdlO1dlYnNlcnZpY2VJRD0nCiAgICAgICAgLiAkUGFyYW17V2Vic2VydmljZUlEfQogICAgICAgIC4gJztPcGVyYXRpb249JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57T3BlcmF0aW9ufSApCiAgICAgICAgLiAnOyc7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICRSZWRpcmVjdFVSTCwKICAgICk7Cn0KCnN1YiBfQ2hhbmdlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnT3BlcmF0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhICA9ICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX07CiAgICBteSAkT3BlcmF0aW9uQ29uZmlnID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJE9wZXJhdGlvbkNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3Igb3BlcmF0aW9uICVzJywgJEdldFBhcmFtLT57T3BlcmF0aW9ufSApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd1NjcmVlbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIE9wZXJhdGlvbiAgICAgICA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb259LAogICAgICAgIE9wZXJhdGlvbkNvbmZpZyA9PiAkT3BlcmF0aW9uQ29uZmlnLAogICAgICAgIE1hcHBpbmdJbmJvdW5kICA9PiAkT3BlcmF0aW9uQ29uZmlnLT57TWFwcGluZ0luYm91bmR9LT57VHlwZX0sCiAgICAgICAgTWFwcGluZ091dGJvdW5kID0+ICRPcGVyYXRpb25Db25maWctPntNYXBwaW5nT3V0Ym91bmR9LT57VHlwZX0sCiAgICApOwp9CgpzdWIgX0NoYW5nZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBFeHRyYVBhcmFtczsKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIGlmICggJFNlbGYtPntTZXR0aW5nc30gJiYgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259ICkgewogICAgICAgICAgICBwdXNoIEBFeHRyYVBhcmFtcywgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnT2xkT3BlcmF0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ29udGludWVBZnRlclNhdmUnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEBFeHRyYVBhcmFtcywKICAgICAgICBdLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSAgPSAkUGFyYW17V2Vic2VydmljZURhdGF9OwogICAgbXkgJE9wZXJhdGlvbkNvbmZpZyA9IGRlbGV0ZSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkT3BlcmF0aW9uQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIG9wZXJhdGlvbiAlcycsICRHZXRQYXJhbS0+e09sZE9wZXJhdGlvbn0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgT3BlcmF0aW9uIHdhcyByZW5hbWVkIGFuZCBuZXcgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgIGVsc2lmICgKICAgICAgICAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IG5lICRHZXRQYXJhbS0+e09wZXJhdGlvbn0KICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICRPcGVyYXRpb25Db25maWctPntEZXNjcmlwdGlvbn0gPSAkR2V0UGFyYW0tPntEZXNjcmlwdGlvbn07CgogICAgZm9yIG15ICRQYXJhbUNvbmZpZyAoQEV4dHJhUGFyYW1zKSB7CiAgICAgICAgaWYgKCBleGlzdHMgJFBhcmFtQ29uZmlnLT57RXJyb3JGdW5jdGlvbn0gKSB7CiAgICAgICAgICAgIG15ICRFcnJvciA9ICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259LT4oCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBHZXRQYXJhbSA9PiAkR2V0UGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJEVycm9yKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUGFyYW1Db25maWctPntOYW1lfSAuICdTZXJ2ZXJFcnJvcicgfSA9ICRFcnJvcjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyAkUGFyYW1Db25maWctPntOYW1lfSB9ID0gJEdldFBhcmFtLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH07CiAgICB9CgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICBPcGVyYXRpb24gICAgICAgPT4gJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSwKICAgICAgICAgICAgT3BlcmF0aW9uQ29uZmlnID0+ICRPcGVyYXRpb25Db25maWcsCiAgICAgICAgICAgIE5ld09wZXJhdGlvbiAgICA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb259LAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiBtYXBwaW5nIHR5cGVzIHdlcmUgbm90IGNoYW5nZWQsIGtlZXAgdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbi4KICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CgogICAgICAgICMgTm8gbWFwcGluZyBzZXQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICBpZiAoICEkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSApIHsKICAgICAgICAgICAgZGVsZXRlICRPcGVyYXRpb25Db25maWctPnskRGlyZWN0aW9ufTsKICAgICAgICAgICAgbmV4dCBESVJFQ1RJT047CiAgICAgICAgfQoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQgb3IgY2hhbmdlZCwgaW5pdGlhbGl6ZSB3aXRoIGVtcHR5IGNvbmZpZy4KICAgICAgICBteSAkT2xkTWFwcGluZyA9ICRPcGVyYXRpb25Db25maWctPnskRGlyZWN0aW9ufS0+e1R5cGV9OwogICAgICAgIGlmICggISRPbGRNYXBwaW5nIHx8ICggJE9sZE1hcHBpbmcgJiYgJEdldFBhcmFtLT57JERpcmVjdGlvbn0gbmUgJE9sZE1hcHBpbmcgKSApIHsKICAgICAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBVcGRhdGUgb3BlcmF0aW9uIGNvbmZpZy4KICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntPcGVyYXRpb259LT57ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gfSA9ICRPcGVyYXRpb25Db25maWc7CgogICAgIyBUYWtlIGNhcmUgb2YgZXJyb3IgaGFuZGxlcnMgd2l0aCBvcGVyYXRpb24gZmlsdGVycyBpZiBvcGVyYXRpb24gd2FzIHJlbmFtZWQuCiAgICBpZiAoCiAgICAgICAgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSBuZSAkR2V0UGFyYW0tPntPcGVyYXRpb259CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntFcnJvckhhbmRsaW5nfSApCiAgICAgICAgKQogICAgewogICAgICAgIG15ICRFcnJvckhhbmRsaW5nQ29uZmlnID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e0Vycm9ySGFuZGxpbmd9OwoKICAgICAgICBFUlJPUkhBTkRMSU5HOgogICAgICAgIGZvciBteSAkRXJyb3JIYW5kbGluZyAoIHNvcnQga2V5cyAleyRFcnJvckhhbmRsaW5nQ29uZmlnfSApIHsKICAgICAgICAgICAgbmV4dCBFUlJPUkhBTkRMSU5HIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJEVycm9ySGFuZGxpbmdDb25maWctPnskRXJyb3JIYW5kbGluZ30gKTsKCiAgICAgICAgICAgIG15ICRPcGVyYXRpb25GaWx0ZXIgPSAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e09wZXJhdGlvbkZpbHRlcn07CiAgICAgICAgICAgIG5leHQgRVJST1JIQU5ETElORyBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRPcGVyYXRpb25GaWx0ZXIpOwoKICAgICAgICAgICAgbmV4dCBFUlJPUkhBTkRMSU5HIGlmICFncmVwIHsgJF8gZXEgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSB9IEB7JE9wZXJhdGlvbkZpbHRlcn07CgogICAgICAgICAgICAjIFJlbmFtZSBvcGVyYXRpb24gaW4gZXJyb3IgaGFuZGxpbmcgb3BlcmF0aW9uIGZpbHRlciB0byBrZWVwIGNvbnNpc3RlbmN5LgogICAgICAgICAgICBteSBATmV3T3BlcmF0aW9uRmlsdGVyID0gbWFwIHsgJF8gZXEgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSA/ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gOiAkXyB9IEB7JE9wZXJhdGlvbkZpbHRlcn07CiAgICAgICAgICAgICRFcnJvckhhbmRsaW5nQ29uZmlnLT57JEVycm9ySGFuZGxpbmd9LT57T3BlcmF0aW9uRmlsdGVyfSA9IFxATmV3T3BlcmF0aW9uRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e0Vycm9ySGFuZGxpbmd9ID0gJEVycm9ySGFuZGxpbmdDb25maWc7CiAgICB9CgogICAgIyBhZGRlZCBmb3IgT1RPQk9UaWNrZXRJbnZva2VyCgogICAgIyBUYWtlIGNhcmUgb2Ygb3BlcmF0aW9uIGRlcGVuZGVudCBjb25maWd1cmF0aW9uIGlmIG9wZXJhdGlvbiB3YXMgcmVuYW1lZC4KICAgIGlmICggJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSBuZSAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgewoKICAgICAgICAjIFJvdXRlIG9wZXJhdGlvbiBtYXBwaW5nLgogICAgICAgIGlmICgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e1JvdXRlT3BlcmF0aW9uTWFwcGluZ30gKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgbXkgJFJvdXRlT3BlcmF0aW9uTWFwcGluZwogICAgICAgICAgICAgICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntSb3V0ZU9wZXJhdGlvbk1hcHBpbmd9OwoKICAgICAgICAgICAgT1BFUkFUSU9OOgogICAgICAgICAgICBmb3IgbXkgJE9wZXJhdGlvbiAoIHNvcnQga2V5cyAleyRSb3V0ZU9wZXJhdGlvbk1hcHBpbmd9ICkgewogICAgICAgICAgICAgICAgbmV4dCBPUEVSQVRJT04gaWYgJE9wZXJhdGlvbiBuZSAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259OwoKICAgICAgICAgICAgICAgICRSb3V0ZU9wZXJhdGlvbk1hcHBpbmctPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9CiAgICAgICAgICAgICAgICAgICAgPSBkZWxldGUgJFJvdXRlT3BlcmF0aW9uTWFwcGluZy0+eyAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e1JvdXRlT3BlcmF0aW9uTWFwcGluZ30KICAgICAgICAgICAgICAgID0gJFJvdXRlT3BlcmF0aW9uTWFwcGluZzsKICAgICAgICB9CgogICAgICAgICMgT3V0Ym91bmQgaGVhZGVyIGNvbmZpZy4KICAgICAgICBpZiAoCiAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBteSAkT3V0Ym91bmRIZWFkZXJDb25maWcKICAgICAgICAgICAgICAgID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfTsKCiAgICAgICAgICAgIE9QRVJBVElPTjoKICAgICAgICAgICAgZm9yIG15ICRPcGVyYXRpb24gKCBzb3J0IGtleXMgJXskT3V0Ym91bmRIZWFkZXJDb25maWd9ICkgewogICAgICAgICAgICAgICAgbmV4dCBPUEVSQVRJT04gaWYgJE9wZXJhdGlvbiBuZSAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259OwoKICAgICAgICAgICAgICAgICRPdXRib3VuZEhlYWRlckNvbmZpZy0+eyAkR2V0UGFyYW0tPntPcGVyYXRpb259IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkT3V0Ym91bmRIZWFkZXJDb25maWctPnsgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntPdXRib3VuZEhlYWRlcnN9LT57U3BlY2lmaWN9CiAgICAgICAgICAgICAgICA9ICRPdXRib3VuZEhlYWRlckNvbmZpZzsKICAgICAgICB9CgogICAgfQoKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlRGF0YX0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgdXBkYXRlIHdlYiBzZXJ2aWNlJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIElmIHRoZSB1c2VyIHdvdWxkIGxpa2UgdG8gY29udGludWUgZWRpdGluZyB0aGUgb3BlcmF0aW9uIGNvbmZpZywganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4uCiAgICBteSAkUmVkaXJlY3RVUkw7CiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbnRpbnVlQWZ0ZXJTYXZlfSBlcSAxICkgewogICAgICAgICRSZWRpcmVjdFVSTCA9CiAgICAgICAgICAgICdBY3Rpb249JwogICAgICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJztPcGVyYXRpb249JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gKQogICAgICAgICAgICAuICc7JzsKICAgIH0KCiAgICAjIE90aGVyd2lzZSByZXR1cm4gdG8gb3ZlcnZpZXcuCiAgICBlbHNlIHsKICAgICAgICAkUmVkaXJlY3RVUkwgPQogICAgICAgICAgICAnQWN0aW9uPUFkbWluR2VuZXJpY0ludGVyZmFjZVdlYnNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJzsnOwogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0RlbGV0ZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09wZXJhdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fSlNPTlJlc3BvbnNlKCBTdWNjZXNzID0+IDAgKTsKICAgIH0KCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1dlYnNlcnZpY2VEYXRhfS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntPcGVyYXRpb259LT57ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIG9wZXJhdGlvbiAkR2V0UGFyYW0tPntPcGVyYXRpb259IiwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgIyBSZW1vdmUgb3BlcmF0aW9uIGZyb20gY29uZmlnLgogICAgZGVsZXRlICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX0tPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkR2V0UGFyYW0tPntPcGVyYXRpb259IH07CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXsgJFBhcmFte1dlYnNlcnZpY2VEYXRhfSB9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAkU3VjY2VzcyApOwp9CgpzdWIgX1Nob3dTY3JlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT3BlcmF0aW9uJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17T3BlcmF0aW9ufSwKICAgICk7CgogICAgbXkgJVRlbXBsYXRlRGF0YSA9ICgKICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICRQYXJhbXtPcGVyYXRpb25Db25maWd9LT57RGVzY3JpcHRpb259LAogICAgICAgIE9wZXJhdGlvblR5cGUgPT4gJFBhcmFte09wZXJhdGlvbkNvbmZpZ30tPntUeXBlfSwKICAgICAgICBPcGVyYXRpb24gICAgID0+ICRQYXJhbXtPcGVyYXRpb259LAogICAgICAgIE5ld09wZXJhdGlvbiAgPT4gJFBhcmFte05ld09wZXJhdGlvbn0gLy8gJFBhcmFte09wZXJhdGlvbn0sCiAgICApOwoKICAgICMgSGFuZGxlIG1hcHBpbmcuCiAgICBteSAkTWFwcGluZ01vZHVsZXMgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Ok1hcHBpbmc6Ok1vZHVsZScpIHx8IHt9OwogICAgbXkgQE1hcHBpbmdNb2R1bGVMaXN0ID0gc29ydCBrZXlzICV7JE1hcHBpbmdNb2R1bGVzfTsKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbXkgJE9sZE1hcHBpbmcgPSAkUGFyYW17T3BlcmF0aW9uQ29uZmlnfS0+eyREaXJlY3Rpb259LT57VHlwZX07CiAgICAgICAgbXkgJE1hcHBpbmcgICAgPSAkUGFyYW17JERpcmVjdGlvbn07CgogICAgICAgICRUZW1wbGF0ZURhdGF7ICREaXJlY3Rpb24gLiAnU3RyZycgfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFxATWFwcGluZ01vZHVsZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJERpcmVjdGlvbiwKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkTWFwcGluZywKICAgICAgICAgICAgU29ydCAgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBSZWdpc3RlckNoYW5nZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBPbmx5IHNob3cgY29uZmlndXJlIGJ1dHRvbiBpZiB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBleGlzdGluZyBtYXBwaW5nIHR5cGUuCiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRPbGRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICEkTWFwcGluZzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkTWFwcGluZyBuZSAkT2xkTWFwcGluZzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAhJE1hcHBpbmdNb2R1bGVzLT57JE1hcHBpbmd9LT57Q29uZmlnRGlhbG9nfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJERpcmVjdGlvbiAuICdDb25maWd1cmVCdXR0b24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXJlY3Rpb24gLiBDb25maWdEaWFsb2cgPT4gJE1hcHBpbmdNb2R1bGVzLT57JE1hcHBpbmd9LT57Q29uZmlnRGlhbG9nfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgISRTZWxmLT57U2V0dGluZ3N9OwogICAgICAgIG5leHQgU0VDVElPTiBpZiAhJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAkU2VjdGlvbiwKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFNldHRpbmcgKCBzb3J0IHsgJGEtPntOYW1lfSBjbXAgJGItPntOYW1lfSB9ICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZXR0aW5nSFRNTDsKICAgICAgICAgICAgaWYgKCAkU2V0dGluZy0+e1R5cGV9IGVxICdBcnJheScgKSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ0hUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+JSosCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17T3BlcmF0aW9uQ29uZmlnfS0+eyAkU2V0dGluZy0+e05hbWV9IH0gLy8gJFNldHRpbmctPntTZWxlY3RlZElEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2V0dGluZycgLiAkU2VjdGlvbiwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFNldHRpbmdOYW1lICAgICAgICA9PiAkU2V0dGluZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFNldHRpbmdMYWJlbCAgICAgICA9PiAkU2V0dGluZy0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nSFRNTCAgICAgICAgPT4gJFNldHRpbmdIVE1MLAogICAgICAgICAgICAgICAgICAgIFNldHRpbmdFeHBsYW5hdGlvbiA9PiAkU2V0dGluZy0+e0V4cGxhbmF0aW9ufSwKICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJFcnJvciAgICAgICAgPT4gJFBhcmFteyAkU2V0dGluZy0+e05hbWV9IC4gJ1NlcnZlckVycm9yJyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVGVtcGxhdGVEYXRhLAogICAgICAgICAgICBXZWJzZXJ2aWNlTmFtZSA9PiAkUGFyYW17V2Vic2VydmljZURhdGF9LT57TmFtZX0sCgogICAgICAgICAgICAjIFRPRE86IENvcGllZCBmcm9tIENJSW52b2tlciAtIG1heWJlIHVubmVjZXNzYXJ5CiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX1BhcmFtc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJUdldFBhcmFtOwogICAgREVGSU5JVElPTjoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb24tPntOYW1lfTsKCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e1R5cGV9IGVxICdTdHJpbmcnICkgewogICAgICAgICAgICAkR2V0UGFyYW17JE5hbWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5hbWUgKSAvLyAkRGVmaW5pdGlvbi0+e0RlZmF1bHR9OwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgSXNTdHJpbmdXaXRoRGF0YSggJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICEkRGVmaW5pdGlvbi0+e01hbmRhdG9yeX07CiAgICAgICAgICAgICRHZXRQYXJhbXtFcnJvcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5hbWUgKTsKICAgICAgICAgICAgcmV0dXJuIFwlR2V0UGFyYW07CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICREZWZpbml0aW9uLT57VHlwZX0gZXEgJ0FycmF5JyApIHsKICAgICAgICAgICAgJEdldFBhcmFteyROYW1lfSA9IFsgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJE5hbWUgKSBdOwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9IFRyYW5zbGF0YWJsZSggJ05lZWQgJXMnLCAoICREZWZpbml0aW9uLT57TGFiZWx9IHx8ICREZWZpbml0aW9uLT57TmFtZX0gKSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CiAgICB9CgogICAgIyBUeXBlIGNoZWNrcy4KICAgIERFRklOSVRJT046CiAgICBmb3IgbXkgJERlZmluaXRpb24gKCBAeyAkUGFyYW17RGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57Q2hlY2t9OwoKICAgICAgICBteSAkTmFtZSA9ICREZWZpbml0aW9uLT57TmFtZX07CiAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFkZWZpbmVkICRHZXRQYXJhbXskTmFtZX07CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ09wZXJhdGlvblR5cGUnICkgewogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgJFNlbGYtPl9PcGVyYXRpb25UeXBlQ2hlY2soIE9wZXJhdGlvblR5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ09wZXJhdGlvblR5cGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQnLCAkR2V0UGFyYW17JE5hbWV9ICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e0NoZWNrfSBlcSAnTWFwcGluZ1R5cGUnICkgewogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgIUlzU3RyaW5nV2l0aERhdGEoICRHZXRQYXJhbXtOYW1lfSApOwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgJFNlbGYtPl9NYXBwaW5nVHlwZUNoZWNrKCBNYXBwaW5nVHlwZSA9PiAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICAkR2V0UGFyYW17RXJyb3J9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTWFwcGluZ1R5cGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQnLCAkR2V0UGFyYW17JE5hbWV9ICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVHZXRQYXJhbTsKfQoKc3ViIF9PcGVyYXRpb25UeXBlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtPcGVyYXRpb25UeXBlfTsKCiAgICBteSAkT3BlcmF0aW9ucyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE9wZXJhdGlvbnMpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRPcGVyYXRpb25zLT57ICRQYXJhbXtPcGVyYXRpb25UeXBlfSB9ICk7CiAgICByZXR1cm4gMTsKfQoKc3ViIF9NYXBwaW5nVHlwZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17TWFwcGluZ1R5cGV9OwoKICAgIG15ICRNYXBwaW5ncyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6TWFwcGluZzo6TW9kdWxlJyk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRNYXBwaW5ncyk7CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJE1hcHBpbmdzLT57ICRQYXJhbXtNYXBwaW5nVHlwZX0gfSApOwogICAgcmV0dXJuIDE7Cn0KCnN1YiBfSlNPTlJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyByZXR1cm4gSlNPTiBvdXRwdXQuCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5KU09OUmVwbHkoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gJFBhcmFte1N1Y2Nlc3N9IC8vIDAsCiAgICAgICAgfSwKICAgICk7Cn0KCnN1YiBfRXh0cmFTZXR0aW5ncyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDbGFzc0xpc3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApOwogICAgbXkgJENsYXNzUmVzdHJpY3Rpb25zID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1VcHNlcnQ6OkNsYXNzZXMnKTsKICAgIG15IEBDbGFzc2VzOwoKICAgIGlmICggJENsYXNzUmVzdHJpY3Rpb25zICYmICRDbGFzc1Jlc3RyaWN0aW9ucy0+eyAkUGFyYW17V2Vic2VydmljZX0gfSApIHsKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgIEBDbGFzc2VzID0gbWFwIHsgJENsYXNzTG9va3VweyRffSB9ICRDbGFzc1Jlc3RyaWN0aW9ucy0+eyAkUGFyYW17V2Vic2VydmljZX0gfS0+QCo7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAQ2xhc3NlcyA9IGtleXMgJENsYXNzTGlzdC0+JSo7CiAgICB9CgogICAgJFNlbGYtPntTZXR0aW5nc317UmVxdWVzdH0gPSBbCiAgICAgICAgbWFwIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgPT4gJ0lkZW50aWZpZXIgZm9yICcgLiAkQ2xhc3NMaXN0LT57JF99LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0lkZW50aWZpZXInIC4gJF8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnQXJyYXknLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gPT4gJ1BsZWFzZSBzZWxlY3QgYW4gYXR0cmlidXRlIG9yIGEgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyB3aGljaCB1bmlxdWVseSBtYXAgdGhlIGNvbmZpZyBpdGVtcy4nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJFNlbGYtPl9Qb3NzaWJsZVZhbHVlc0dldCggQ2xhc3NJRCA9PiAkXyApLAogICAgICAgICAgICB9CiAgICAgICAgfSBAQ2xhc3NlcywKICAgIF07CgogICAgcmV0dXJuOwp9CgpzdWIgX1Bvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICBxdy9DbGFzc2VzIENvbmZpZ0l0ZW1JRCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVzLywKICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyB9IHNvcnQga2V5cyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgXTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AdminITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5JVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjcwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY2xhc3MgbGlzdCBhbmQgY2hlY2sgaXQKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgJENsYXNzTGlzdDsKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICRDbGFzc0xpc3QgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IHJvbGUgbGlzdCBhbmQgY2hlY2sgaXQsIHRoZSByb2xlIGxpc3QgbWF5IGJlIGVtcHR5CiAgICBteSAkUm9sZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICk7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuIHVubGVzcyAkUm9sZUxpc3Q7CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4gdW5sZXNzIHJlZiAkUm9sZUxpc3QgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkVXNlck9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgbXkgQEV4YW1wbGVDbGFzc2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RGlyZWN0b3J5UmVhZCgKICAgICAgICBEaXJlY3RvcnkgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAnL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzJywKICAgICAgICBGaWx0ZXIgICAgPT4gJyoueW1sJywKICAgICk7CgogICAgIyBsb2FkIHRoZSBSZWFkeTJJbXBvcnQgc2VsZWN0aW9uIGxpc3Qgd2l0aCBleGFtcGxlIGNsYXNzZXMgKGZvciBSZWFkeTJJbXBvcnQgZmVhdHVyZSkKICAgIG15ICVFeGFtcGxlQ2xhc3NEYXRhOwoKICAgIGZvciBteSAkRXhhbXBsZUNsYXNzRmlsZW5hbWUgKEBFeGFtcGxlQ2xhc3NlcykgewogICAgICAgIG15ICRLZXkgPSAkRXhhbXBsZUNsYXNzRmlsZW5hbWU7CiAgICAgICAgJEtleSA9fiBze14uKi8oW14vXSspJH17JDF9c214OwogICAgICAgIG15ICRWYWx1ZSA9ICRLZXk7CiAgICAgICAgJFZhbHVlID1+IHN7XiguKykueW1sfXskMX1zbXg7CiAgICAgICAgJFZhbHVlID1+IHN7X317IH1zbXhnOwogICAgICAgICRFeGFtcGxlQ2xhc3NEYXRheyRLZXl9ID0gJFZhbHVlOwogICAgfQoKICAgICRQYXJhbXtFeGFtcGxlQ2xhc3NMaXN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdFeGFtcGxlQ2xhc3MnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUV4YW1wbGVDbGFzc0RhdGEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgVmFsaWRhdGVfUmVxdWlyZWQnLAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNvbmZpZyBpdGVtIGNsYXNzIGltcG9ydDogbGlzdCBjbGFzc2VzIG9mIGZpbGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdGaWxlQ2xhc3NMaXN0JyApIHsKCiAgICAgICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICAgICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgICAgICBteSAkRXhhbXBsZUZpbGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXhhbXBsZUZpbGUnICk7CgogICAgICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvdmFyL2l0c20vY29uZmlnaXRlbWNsYXNzZXMvJEV4YW1wbGVGaWxlIiwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDb250ZW50ICkgewogICAgICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCByZWFkICVzIScsICRFeGFtcGxlRmlsZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAgICAgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgICAgICk7CgogICAgICAgIGlmICggcmVmICRDb250ZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgICAgIH0KCiAgICAgICAgbXkgJUltcG9ydEl0ZW1zID0gKAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEl0ZW0gKCAkQ29udGVudC0+QCogKSB7CiAgICAgICAgICAgIGlmICggJEl0ZW0tPntDbGFzc30gKSB7CiAgICAgICAgICAgICAgICAkSW1wb3J0SXRlbXN7Q2xhc3Nlc30gLy89IFtdOwogICAgICAgICAgICAgICAgcHVzaCAkSW1wb3J0SXRlbXN7Q2xhc3Nlc30tPkAqLCAkSXRlbS0+e0NsYXNzfXtOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRJdGVtLT57Um9sZU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEltcG9ydEl0ZW1ze1JvbGVzfSAvLz0gW107CiAgICAgICAgICAgICAgICBwdXNoICRJbXBvcnRJdGVtc3tSb2xlc30tPkAqLCAkSXRlbS0+e1JvbGVOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkpTT05SZXBseSgKICAgICAgICAgICAgRGF0YSA9PiBcJUltcG9ydEl0ZW1zLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjb25maWcgaXRlbSBjbGFzcyBpbXBvcnQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0ltcG9ydCcgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRDb250ZW50OwoKICAgICAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgICAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgICAgIG15ICRFeGFtcGxlQ2xhc3MgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXhhbXBsZUNsYXNzJyApOwogICAgICAgIG15ICRGaWxlV2l0aG91dEV4dGVuc2lvbjsKCiAgICAgICAgbXkgJEV4YW1wbGVDbGFzc0ZpbGVuYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0V4YW1wbGVDbGFzcycgKTsKICAgICAgICAkRXhhbXBsZUNsYXNzRmlsZW5hbWUgPX4gc3svK3xcLnsyLH19e31zbXg7ICAgICMgcmVtb3ZlIHNsYXNoZXMgYW5kIC4uCgogICAgICAgIGlmICggISRFeGFtcGxlQ2xhc3NGaWxlbmFtZSApIHsKICAgICAgICAgICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOZWVkIEV4YW1wbGVDbGFzc2VzIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBleHRyYWN0IGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvbgogICAgICAgICgkRmlsZVdpdGhvdXRFeHRlbnNpb24pID0gJEV4YW1wbGVDbGFzc0ZpbGVuYW1lID1+IG17KC4qPylcLnltbCR9c214OwoKICAgICAgICAjIHJ1biBfcHJlLnBtIGlmIGF2YWlsYWJsZQogICAgICAgIGlmICggLWUgIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzLyIgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAiX3ByZS5wbSIgKSB7CgogICAgICAgICAgICBteSAkQmFja2VuZE5hbWUgPSAndmFyOjppdHNtOjpjb25maWdpdGVtY2xhc3Nlczo6JyAuICRGaWxlV2l0aG91dEV4dGVuc2lvbiAuICdfcHJlJzsKCiAgICAgICAgICAgIG15ICRMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAgICAgICAgICRCYWNrZW5kTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkTG9hZGVkKSB7CiAgICAgICAgICAgICAgICBteSAkQmFja2VuZFByZSA9ICRLZXJuZWw6Ok9NLT5HZXQoCiAgICAgICAgICAgICAgICAgICAgJEJhY2tlbmROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAlU3RhdHVzID0gJEJhY2tlbmRQcmUtPlJ1bigpOwogICAgICAgICAgICAgICAgaWYgKCAhJFN0YXR1c3tTdWNjZXNzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSBlcnJvciBzY3JlZW4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJFN0YXR1c3tFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy8kRXhhbXBsZUNsYXNzRmlsZW5hbWUiLAogICAgICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbnRlbnQgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IHJlYWQgJXMhJywgJEV4YW1wbGVDbGFzc0ZpbGVuYW1lICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAkQ29udGVudCA9IFskQ29udGVudF07CiAgICAgICAgfQoKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJENvbnRlbnQpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVcGRhdGVFeGlzdGluZ0VudGl0aWVzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1VwZGF0ZUV4aXN0aW5nRW50aXRpZXMnICk7CgogICAgICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMgPyAnVVBEQVRFJyA6ICdFUlJPUicsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICBpZiAoICRSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICAgICAgbXkgQFBsYWNlaG9sZGVyID0gSXNBcnJheVJlZldpdGhEYXRhKCAkUmVzdWx0LT57UGxhY2Vob2xkZXJEYXRhfSApID8gJFJlc3VsdC0+e1BsYWNlaG9sZGVyRGF0YX0tPkAqIDogKCk7CiAgICAgICAgICAgICAgICAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sIEBQbGFjZWhvbGRlciApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJldHVybiBlcnJvcgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+SlNPTlJlcGx5KAogICAgICAgICAgICAgICAgRGF0YSA9PiAkUmVzdWx0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBSdW4gX3Bvc3QucG0gaWYgYXZhaWxhYmxlLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRXhhbXBsZUNsYXNzCiAgICAgICAgICAgICAgICAmJiAtZSAiJEhvbWUvdmFyL2l0c20vY29uZmlnaXRlbWNsYXNzZXMvIiAuICRGaWxlV2l0aG91dEV4dGVuc2lvbiAuICJfcG9zdC5wbSIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJEJhY2tlbmROYW1lID0gJ3Zhcjo6aXRzbTo6Y29uZmlnaXRlbWNsYXNzZXM6OicgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAnX3Bvc3QnOwoKICAgICAgICAgICAgICAgIG15ICRMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAgICAgICAgICAgICAkQmFja2VuZE5hbWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkTG9hZGVkKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRCYWNrZW5kUG9zdCA9ICRLZXJuZWw6Ok9NLT5HZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICRCYWNrZW5kTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAlU3RhdHVzID0gJEJhY2tlbmRQb3N0LT5SdW4oKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU3RhdHVze1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSBlcnJvciBzY3JlZW4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkU3RhdHVze0Vycm9yfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5KU09OUmVwbHkoCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGxpc3Qgb2YgdGhlIHZlcnNpb25zIG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgY29uZmlnIGl0ZW0gY2xhc3MKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25MaXN0JyApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgaWQKICAgICAgICBteSAkQ2xhc3NJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIHVubGVzcyAkQ2xhc3NJRDsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvbkxpc3QnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGRlZmluaXRpb24gbGlzdAogICAgICAgIG15ICREZWZpbml0aW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJERlZmluaXRpb24gKCByZXZlcnNlICREZWZpbml0aW9uTGlzdC0+QCogKSB7CgogICAgICAgICAgICAjIGdldCB1c2VyIGRhdGEKICAgICAgICAgICAgbXkgJEZ1bGxOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICREZWZpbml0aW9uLT57Q3JlYXRlQnl9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgZGVmaW5pdGlvbgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvbkxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5VXNlciA9PiAkRnVsbE5hbWUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGxpc3Qgb2YgdGhlIHZlcnNpb25zIG9mIHRoZSBkZWZpbml0aW9uIG9mIGEgY29uZmlnIGl0ZW0gcm9sZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1JvbGVEZWZpbml0aW9uTGlzdCcgKSB7CgogICAgICAgICMgZ2V0IHJvbGUgaWQKICAgICAgICBteSAkUm9sZUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JvbGVJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJFJvbGVJRDsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uTGlzdCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgbGlzdCBvZiBkZWZpbml0aW9ucyBmb3IgdGhhdCByb2xlLCBrZWVwaW5nIHRoZSBjYWxsIHRvIERlZmluaXRpb25MaXN0KCkKICAgICAgICBteSAkRGVmaW5pdGlvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25MaXN0KAogICAgICAgICAgICBSb2xlSUQgPT4gJFJvbGVJRCwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJERlZmluaXRpb24gKCByZXZlcnNlICREZWZpbml0aW9uTGlzdC0+QCogKSB7CgogICAgICAgICAgICAjIGdldCB1c2VyIGRhdGEKICAgICAgICAgICAgbXkgJEZ1bGxOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICREZWZpbml0aW9uLT57Q3JlYXRlQnl9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgZGVmaW5pdGlvbgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uTGlzdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAkRGVmaW5pdGlvbi0+JSosCiAgICAgICAgICAgICAgICAgICAgUm9sZSAgICAgICAgID0+ICRSb2xlTGlzdC0+eyRSb2xlSUR9LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5VXNlciA9PiAkRnVsbE5hbWUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNsYXNzIGRlZmluaXRpb24gdmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NsYXNzRGVmaW5pdGlvblZpZXcnICkgewoKICAgICAgICAjIGdldCBkZWZpbml0aW9uIGlkCiAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWZpbml0aW9uSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICREZWZpbml0aW9uSUQ7CgogICAgICAgICMgZ2V0IGRlZmluaXRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICBPcmlnaW5hbCAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgIENsYXNzTGlzdCAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgIENsYXNzU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgSUQgICA9PiAkRGVmaW5pdGlvbi0+e0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRGVmaW5pdGlvbi0+e0NsYXNzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2xhc3NWZXJzaW9uU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgSUQgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICAgICAgVmVyc2lvbiA9PiAkRGVmaW5pdGlvbi0+e1ZlcnNpb259LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICBteSAkVXNlck5hbWUgPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NEZWZpbml0aW9uVmlldycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgQ3JlYXRlQnlVc2VyID0+ICRVc2VyTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcm9sZSBkZWZpbml0aW9uIHZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvblZpZXcnICkgewoKICAgICAgICAjIGdldCBkZWZpbml0aW9uIGlkCiAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWZpbml0aW9uSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICREZWZpbml0aW9uSUQ7CgogICAgICAgICMgZ2V0IGRlZmluaXRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgIENsYXNzTGlzdCAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBSb2xlU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgSUQgICA9PiAkRGVmaW5pdGlvbi0+e1JvbGVJRH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Um9sZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJvbGVWZXJzaW9uU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgSUQgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICAgICAgVmVyc2lvbiA9PiAkRGVmaW5pdGlvbi0+e1ZlcnNpb259LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICBteSAkVXNlck5hbWUgPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm9sZURlZmluaXRpb25WaWV3JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRGVmaW5pdGlvbi0+JSosCiAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJFVzZXJOYW1lLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBkZWZpbml0aW9uIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NsYXNzRGVmaW5pdGlvbkNoYW5nZScgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2xhc3NJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJENsYXNzSUQ7CgogICAgICAgICMgQWRkIGNvZGUgbWlycm9yIGxhbmd1YWdlIG1vZGUuCiAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0VkaXRvckxhbmd1YWdlTW9kZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAndGV4dC94LXlhbWwnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2xhc3MgZGVmaW5pdGlvbgogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBDbGFzc1NlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmluaXRpb24tPntDbGFzc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEVkaXQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvbkNoYW5nZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXskRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICAgICAgUm93cyAgICA9PiAkRWRpdG9yUm93cywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcm9sZSBkZWZpbml0aW9uIGNoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1JvbGVEZWZpbml0aW9uQ2hhbmdlJyApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgaWQKICAgICAgICBteSAkUm9sZUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JvbGVJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJFJvbGVJRDsKCiAgICAgICAgIyBBZGQgY29kZSBtaXJyb3IgbGFuZ3VhZ2UgbW9kZS4KICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnRWRpdG9yTGFuZ3VhZ2VNb2RlJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICd0ZXh0L3gteWFtbCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjbGFzcyBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUm9sZUlELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgUm9sZVNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmluaXRpb24tPntDbGFzc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEVkaXQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uQ2hhbmdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyREZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIFJvbGVJRCA9PiAkUm9sZUlELAogICAgICAgICAgICAgICAgUm9sZSAgID0+ICRSb2xlTGlzdC0+eyRSb2xlSUR9LAogICAgICAgICAgICAgICAgUm93cyAgID0+ICRFZGl0b3JSb3dzLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBkZWZpbml0aW9uIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25TYXZlJyApIHsKCiAgICAgICAgIyBnZXQgYW5kIGNoZWNrIHBhcmFtcwogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgIGZvciBteSAkRm9ybVBhcmFtIChxdyhDbGFzc0lEIERlZmluaXRpb24pKSB7CiAgICAgICAgICAgICREZWZpbml0aW9ueyRGb3JtUGFyYW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEZvcm1QYXJhbSApIHx8ICcnOwogICAgICAgIH0KICAgICAgICBmb3IgbXkgJEZvcm1QYXJhbSAocXcoQ2xhc3NJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICBpZiAoICEkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEZvcm1QYXJhbSEiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVmFsaWRhdGUgWUFNTCBjb2RlIGJ5IGNvbnZlcnRpbmcgaXQgdG8gUGVybC4KICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuIHVubGVzcyByZWYgJERlZmluaXRpb25SZWYgZXEgJ0hBU0gnOwoKICAgICAgICAjIGFkZCB0byBkYXRhYmFzZQogICAgICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgJURlZmluaXRpb24sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkaXNwbGF5IGNoYW5nZSBzY3JlZW4gd2l0aCBlcnJvciBpZiBjaGVjayBmYWlsZWQKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRSZXN1bHQpICYmICEkUmVzdWx0LT57U3VjY2Vzc30gKSB7CgogICAgICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgICAgIE9yaWdpbmFsICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgIENsYXNzTGlzdCAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICAgICAgQ2xhc3NTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICAgICAgSUQgICA9PiAkRGVmaW5pdGlvbntDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRDbGFzc0xpc3QtPnsgJERlZmluaXRpb257Q2xhc3NJRH0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAgICAgbXkgJEVkaXRvclJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntFZGl0b3JSb3dzfSB8fCAzMDsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25DaGFuZ2UnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURlZmluaXRpb24sCiAgICAgICAgICAgICAgICAgICAgRXJyb3IgICAgICAgID0+ICRSZXN1bHQtPntFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcxICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMF0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcyICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMV0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JDbGFzc2VzID0+ICdTZXJ2ZXJFcnJvciBFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICREZWZpbml0aW9ue0NsYXNzSUR9LAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICREZWZpbml0aW9ue0NsYXNzSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgUm93cyAgICAgICAgID0+ICRFZGl0b3JSb3dzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICB9CgogICAgICAgIG15ICRDb250aW51ZUFmdGVyU2F2ZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKTsKICAgICAgICBpZiAoJENvbnRpbnVlQWZ0ZXJTYXZlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25DaGFuZ2U7Q2xhc3NJRD0kRGVmaW5pdGlvbntDbGFzc0lEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcm9sZSBkZWZpbml0aW9uIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvblNhdmUnICkgewoKICAgICAgICAjIGdldCBhbmQgY2hlY2sgcGFyYW1zCiAgICAgICAgbXkgJURlZmluaXRpb247CiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KFJvbGVJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICAkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRGb3JtUGFyYW0gKSB8fCAnJzsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KFJvbGVJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICBpZiAoICEkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEZvcm1QYXJhbSEiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVmFsaWRhdGUgWUFNTCBjb2RlIGJ5IGNvbnZlcnRpbmcgaXQgdG8gUGVybC4KICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuIHVubGVzcyByZWYgJERlZmluaXRpb25SZWYgZXEgJ0hBU0gnOwoKICAgICAgICAjIGFkZCB0byBkYXRhYmFzZQogICAgICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25BZGQoCiAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZGlzcGxheSBjaGFuZ2Ugc2NyZWVuIHdpdGggZXJyb3IgaWYgY2hlY2sgZmFpbGVkCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUmVzdWx0KSAmJiAkUmVzdWx0LT57RXJyb3J9ICkgewoKICAgICAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgICAgICBPcmlnaW5hbCAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgIENsYXNzTGlzdCAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICAgICAgUm9sZUxpc3QgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgICAgIFJvbGVTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICAgICAgSUQgICA9PiAkRGVmaW5pdGlvbntSb2xlSUR9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFJvbGVMaXN0LT57ICREZWZpbml0aW9ue1JvbGVJRH0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAgICAgbXkgJEVkaXRvclJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntFZGl0b3JSb3dzfSB8fCAzMDsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkNoYW5nZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRGVmaW5pdGlvbiwKICAgICAgICAgICAgICAgICAgICBFcnJvciAgICAgICAgPT4gJFJlc3VsdC0+e0Vycm9yfSwKICAgICAgICAgICAgICAgICAgICBFcnJvckFyZzEgICAgPT4gJFJlc3VsdC0+e0Vycm9yQXJnc30tPlswXSwKICAgICAgICAgICAgICAgICAgICBFcnJvckFyZzIgICAgPT4gJFJlc3VsdC0+e0Vycm9yQXJnc30tPlsxXSwKICAgICAgICAgICAgICAgICAgICBFcnJvckNsYXNzZXMgPT4gJ1NlcnZlckVycm9yIEVycm9yJywKICAgICAgICAgICAgICAgICAgICBSb2xlSUQgICAgICAgPT4gJERlZmluaXRpb257Um9sZUlEfSwKICAgICAgICAgICAgICAgICAgICBSb2xlICAgICAgICAgPT4gJFJvbGVMaXN0LT57ICREZWZpbml0aW9ue1JvbGVJRH0gfSwKICAgICAgICAgICAgICAgICAgICBSb3dzICAgICAgICAgPT4gJEVkaXRvclJvd3MsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgICAgIH0KCiAgICAgICAgbXkgJENvbnRpbnVlQWZ0ZXJTYXZlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbnRpbnVlQWZ0ZXJTYXZlJyApOwogICAgICAgIGlmICgkQ29udGludWVBZnRlclNhdmUpIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVJvbGVEZWZpbml0aW9uQ2hhbmdlO1JvbGVJRD0kRGVmaW5pdGlvbntSb2xlSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBleHBvcnQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0V4cG9ydCcgKSB7CgogICAgICAgIG15IEBDbGFzc0lETGlzdCA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdFeHBvcnRJRCcgKTsKCiAgICAgICAgIyBleHBvcnQgdGhlIGNsYXNzZXMgdG8gYSBZQU1MIHN0cmluZwogICAgICAgIG15ICRZQU1MQ29udGVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0V4cG9ydCggSXRlbUlETGlzdCA9PiBcQENsYXNzSURMaXN0ICk7CgogICAgICAgIGlmICggISRZQU1MQ29udGVudCApIHsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgZXJyb3Igc2NyZWVuCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ0NsYXNzIGV4cG9ydCBmYWlsZWQuJywKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkSFRNTCA9ICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWw7IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFlBTUxDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICJFeHBvcnRDbGFzcy55bWwiLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkSFRNTDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNvbmZpZyBpdGVtIGNsYXNzIG92ZXJ2aWV3IGlzIHRoZSBkZWZhdWx0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoMSkgewoKICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICBPcmlnaW5hbCAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgIENsYXNzTGlzdCAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgIFNob3dPdmVydmlld0xpbmsgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQsIGZvciByb2xlcyBhbmQgZGVmaW5pdGlvbnMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdMaXN0JywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJENsYXNzTGlzdC0+eyRhfSBjbXAgJENsYXNzTGlzdC0+eyRifSB9IGtleXMgJENsYXNzTGlzdC0+JSogKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRSb2xlSUQgKCBzb3J0IHsgJFJvbGVMaXN0LT57JGF9IGNtcCAkUm9sZUxpc3QtPnskYn0gfSBrZXlzICRSb2xlTGlzdC0+JSogKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3Um9sZUxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUm9sZUlEID0+ICRSb2xlSUQsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRSb2xlTGlzdC0+eyRSb2xlSUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17T3JpZ2luYWx9LAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9Cn0KCnN1YiBfU2hvd1NpZGViYXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRDbGFzc0RlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGdlbmVyYXRlIFJvbGVPcHRpb25TdHJnLCBDbGFzc09wdGlvblN0cmcgYW5kIENsYXNzT3B0aW9uTXVsdFN0cmcgd2hpY2ggYXJlIG5lZWRlZCBmb3IgdGhlIHNpZGVib3gKICAgIG15ICRSb2xlSUQgICAgICAgICA9ICRQYXJhbXtSb2xlU2VsZWN0ZWR9ID8gJFBhcmFte1JvbGVTZWxlY3RlZH0tPntJRH0gOiAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUm9sZUlEJyApOwogICAgbXkgJFJvbGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRQYXJhbXtSb2xlTGlzdH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdSb2xlSUQnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUm9sZUlELAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiAgICBteSAkQ2xhc3NJRCAgICAgICAgID0gJFBhcmFte0NsYXNzU2VsZWN0ZWR9ID8gJFBhcmFte0NsYXNzU2VsZWN0ZWR9LT57SUR9IDogJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CiAgICBteSAkQ2xhc3NPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRQYXJhbXtDbGFzc0xpc3R9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2xhc3NJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRDbGFzc0lELAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgQEV4cG9ydElEcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdFeHBvcnRJRCcgKTsKICAgIG15ICVDbGFzc0xpc3RGb3JNdWx0U2VsOwogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAleyAkUGFyYW17Q2xhc3NMaXN0fSB9ICkgewogICAgICAgIG15ICRIYXNDb250ZW50ID0gJXsgJENsYXNzRGVmaW5pdGlvbi0+RGVmaW5pdGlvbkdldCggQ2xhc3NJRCA9PiAkQ2xhc3NJRCApIH07CiAgICAgICAgaWYgKCRIYXNDb250ZW50KSB7CiAgICAgICAgICAgICRDbGFzc0xpc3RGb3JNdWx0U2VseyRDbGFzc0lEfSA9ICRQYXJhbXtDbGFzc0xpc3R9LT57JENsYXNzSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ2xhc3NPcHRpb25NdWx0U3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlQ2xhc3NMaXN0Rm9yTXVsdFNlbCwKICAgICAgICAgICAgJFBhcmFte1JvbGVMaXN0fS0+JSosCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgICA9PiAnRXhwb3J0SUQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+IFxARXhwb3J0SURzLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZSBWYWxpZGF0ZV9SZXF1aXJlZCcsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CgogICAgIyB0aGlzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBPdmVydmlldyBibG9jawogICAgbXkgJUJsb2NrRGF0YSA9ICgKICAgICAgICBSb2xlT3B0aW9uU3RyZyAgICAgID0+ICRSb2xlT3B0aW9uU3RyZywKICAgICAgICBDbGFzc09wdGlvblN0cmcgICAgID0+ICRDbGFzc09wdGlvblN0cmcsCiAgICAgICAgQ2xhc3NPcHRpb25NdWx0U3RyZyA9PiAkQ2xhc3NPcHRpb25NdWx0U3RyZywKICAgICAgICBFeGFtcGxlQ2xhc3NMaXN0ICAgID0+ICRQYXJhbXtPcmlnaW5hbH0tPntFeGFtcGxlQ2xhc3NMaXN0fSwKICAgICk7CgogICAgIyB0aGVyZSBtaWdodCBiZSBhZGRpdGlvbmFsIGRhdGEgZm9yIHRoZSBPdmVydmlldyBibG9jawogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKHF3KENsYXNzU2VsZWN0ZWQgQ2xhc3NWZXJzaW9uU2VsZWN0ZWQgUm9sZVNlbGVjdGVkIFJvbGVWZXJzaW9uU2VsZWN0ZWQgRWRpdCkpIHsKICAgICAgICBuZXh0IEtFWSB1bmxlc3MgZGVmaW5lZCAkUGFyYW17JEtleX07CgogICAgICAgICRCbG9ja0RhdGF7JEtleX0gPSAkUGFyYW17JEtleX07CiAgICB9CgogICAgIyB0aGUgT3ZlcnZpZXcgYmxvY2sgaXMgdGhlIGNvbXBsZXRlIHBhZ2UKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3JywKICAgICAgICBEYXRhID0+IFwlQmxvY2tEYXRhLAogICAgKTsKCiAgICBpZiAoICRQYXJhbXtTaG93T3ZlcnZpZXdMaW5rfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzU3RyaW5nV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7JVBhcmFtfSwgJFR5cGU7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBxdWV1ZSBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgIG15ICRGaWx0ZXIgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJ0FsbCc7CiAgICBteSAkQ2F0ZWdvcnlGaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnknICk7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5JywKICAgICk7CiAgICBteSAlVHJhbnNsYXRlZENhdGVnb3J5TGlzdCA9IG1hcCB7ICggJF8gPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ2F0ZWdvcnlMaXN0LT57JF99ICkgKSB9IGtleXMgJENhdGVnb3J5TGlzdC0+JSo7CiAgICBteSAlUmV2ZXJzZUNhdGVnb3J5TGlzdCAgICA9IHJldmVyc2UgJVRyYW5zbGF0ZWRDYXRlZ29yeUxpc3Q7CiAgICBteSAkRGVmYXVsdENhdGVnb3J5ICAgICAgICA9ICRDb25maWctPntEZWZhdWx0Q2F0ZWdvcnl9OwogICAgbXkgJERlZmF1bHRDYXRlZ29yeUlEOwogICAgaWYgKCAkRGVmYXVsdENhdGVnb3J5ICYmICRSZXZlcnNlQ2F0ZWdvcnlMaXN0eyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJERlZmF1bHRDYXRlZ29yeSkgfSApIHsKICAgICAgICAkRGVmYXVsdENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5TGlzdHsgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ29uZmlnLT57RGVmYXVsdENhdGVnb3J5fSApIH07CiAgICAgICAgJENhdGVnb3J5RmlsdGVyIHx8PSAkRGVmYXVsdENhdGVnb3J5SUQ7CiAgICB9CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkRmlsdGVyOwogICAgbXkgJEpTT05PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJFN0b3JlZEZpbHRlcnMgICAgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICk7CgogICAgIyBkZWxldGUgc3RvcmVkIGZpbHRlcnMgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWxldGVGaWx0ZXJzJyApICkgewogICAgICAgICRTdG9yZWRGaWx0ZXJzID0ge307CiAgICB9CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0IG9yIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICMgaWYgZmlsdGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSB3ZWIgcmVxdWVzdCwgdHJ5IHdpdGggdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJENvbHVtbk5hbWUgLiAnSURzJyB9LT5bMF0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0NvbHVtbkZpbHRlckR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgKTsKCiAgICAgICAgIyBpZiBubyBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdCwgdHJ5IGZyb20gdXNlciBwcmVmZXJlbmNlcwogICAgICAgIGlmICggIWRlZmluZWQgJEZpbHRlclZhbHVlIHx8ICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0tPntFcXVhbHN9OwogICAgICAgIH0KCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIGRlZmluZWQgJEZpbHRlclZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICBFcXVhbHMgPT4gJEZpbHRlclZhbHVlLAogICAgICAgIH07CiAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICB9CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyICYgdG8gZ2V0IHRoZSBvdXRwdXQgZmFzdGVyIQogICAgbXkgJFJlZnJlc2ggPSAnJzsKICAgIGlmICggJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9ICkgewogICAgICAgICRSZWZyZXNoID0gNjAgKiAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX07CiAgICB9CgogICAgbXkgJE91dHB1dDsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAlVHJhbnNsYXRlZENsYXNzTGlzdCA9IG1hcCB7ICggJF8gPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ2xhc3NMaXN0LT57JF99ICkgKSB9IGtleXMgJENsYXNzTGlzdC0+JSo7CgogICAgIyBnZXQgcG9zc2libGUgZGVwbG95bWVudCBzdGF0ZSBsaXN0IGZvciBjb25maWcgaXRlbXMgdG8gYmUgc2hvd24KICAgIG15ICRTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZXQgdGhlIGRlcGxveW1lbnQgc3RhdGUgSURzIHBhcmFtZXRlciBmb3IgdGhlIHNlYXJjaAogICAgbXkgJERlcGxTdGF0ZUlEczsKICAgIGZvciBteSAkRGVwbFN0YXRlS2V5ICggc29ydCBrZXlzICV7JFN0YXRlTGlzdH0gKSB7CiAgICAgICAgcHVzaCBAeyREZXBsU3RhdGVJRHN9LCAkRGVwbFN0YXRlS2V5OwogICAgfQoKICAgICMgdmlld2FibGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9IGtleXMgJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApCiAgICB9OwoKICAgICMgZ2V0IHBlcm1pc3Npb25zCiAgICBteSAkUGVybWlzc2lvbiA9ICdydyc7CiAgICBpZiAoICRDb25maWctPntWaWV3QWxsUG9zc2libGVDb25maWdJdGVtc30gKSB7CiAgICAgICAgJFBlcm1pc3Npb24gPSAncm8nOwogICAgfQoKICAgICMgc29ydCBvbiBkZWZhdWx0IGJ5IHVzaW5nIGJvdGggKFByaW9yaXR5LCBBZ2UpIGVsc2UgdXNlIG9ubHkgb25lIHNvcnQgYXJndW1lbnQKICAgIG15ICVTb3J0OwoKICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgIG15ICRQcmVTb3J0QnlQcmlvcml0eSA9ICRDb25maWctPnsnUHJlU29ydDo6QnlQcmlvcml0eSd9OwogICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+IFsgJ1ByaW9yaXR5JywgJFNvcnRCeSBdLAogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICApOwogICAgfQoKICAgICMgbXkgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgdG8gc3RvcmUgdGhlIE5hdkJhciBmaWx0ZXJzCiAgICBteSAlRmlsdGVyczsKICAgIG15ICVDYXRlZ29yeTJDbGFzc0lEOwoKICAgIENMQVNTSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJFRyYW5zbGF0ZWRDbGFzc0xpc3R7JGF9IGNtcCAkVHJhbnNsYXRlZENsYXNzTGlzdHskYn0gfSBrZXlzICVUcmFuc2xhdGVkQ2xhc3NMaXN0ICkgewoKICAgICAgICAjIHNob3cgbWVudSBsaW5rIG9ubHkgaWYgdXNlciBoYXMgYWNjZXNzIHJpZ2h0cwogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgICA9PiAkQ29uZmlnLT57UGVybWlzc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDTEFTU0lEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAjIGZldGNoIGNsYXNzIHByZWZlcmVuY2VzIHRvIHJldHJpZXZlIGNhdGVnb3JpZXMgZm9yIGNsYXNzCiAgICAgICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJENsYXNzUHJlZmVyZW5jZXN7Q2F0ZWdvcmllc30gKTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeSAoICRDbGFzc1ByZWZlcmVuY2Vze0NhdGVnb3JpZXN9LT5AKiApIHsKICAgICAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5TGlzdHsgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDYXRlZ29yeSkgfTsKICAgICAgICAgICAgcHVzaCBAeyAkQ2F0ZWdvcnkyQ2xhc3NJRHskQ2F0ZWdvcnlJRH0gfSwgJENsYXNzSUQ7CiAgICAgICAgfQogICAgfQoKICAgICMgb3JkZXIgdGhlIGNhdGVnb3J5IGZpbHRlcnMgYW5kIC0gaWYgbm90IHlldCBzZXQgLSBzZWxlY3QgdGhlIGNhdGVnb3J5IHNob3duCiAgICBteSAlQ2F0ZWdvcnlGaWx0ZXJzOwogICAgewogICAgICAgIG15IEBTb3J0ZWRDYXRlZ29yaWVzID0gc29ydCB7ICRUcmFuc2xhdGVkQ2F0ZWdvcnlMaXN0eyRhfSBjbXAgJFRyYW5zbGF0ZWRDYXRlZ29yeUxpc3R7JGJ9IH0ga2V5cyAlQ2F0ZWdvcnkyQ2xhc3NJRDsKCiAgICAgICAgbXkgJFByaW8gPSAyOwogICAgICAgICVDYXRlZ29yeUZpbHRlcnMgPSBtYXAgewogICAgICAgICAgICAkXyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICRUcmFuc2xhdGVkQ2F0ZWdvcnlMaXN0eyRffSwKICAgICAgICAgICAgICAgIFByaW8gPT4gJFByaW8rKywKICAgICAgICAgICAgfQogICAgICAgIH0gQFNvcnRlZENhdGVnb3JpZXM7CgogICAgICAgIGlmICggJERlZmF1bHRDYXRlZ29yeUlEICYmICRDYXRlZ29yeUZpbHRlcnN7JERlZmF1bHRDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgJENhdGVnb3J5RmlsdGVyc3skRGVmYXVsdENhdGVnb3J5SUR9e1ByaW99ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIGNsYXNzIGZpbHRlcnMgZm9yIHRoZSBzZWxlY3RlZCBjYXRlZ29yeQogICAgbXkgJENvdW50VG90YWwgPSAwOwogICAgbXkgQEFsbEN1cnJlbnRDbGFzc2VzOwogICAgaWYgKCRDYXRlZ29yeUZpbHRlcikgewoKICAgICAgICBteSAkUHJpbyA9IDI7CiAgICAgICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRUcmFuc2xhdGVkQ2xhc3NMaXN0eyRhfSBjbXAgJFRyYW5zbGF0ZWRDbGFzc0xpc3R7JGJ9IH0gJENhdGVnb3J5MkNsYXNzSUR7JENhdGVnb3J5RmlsdGVyfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb3VudENsYXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIFBlcm1pc3Npb24gICA9PiAkUGVybWlzc2lvbiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50VG90YWwgKz0gJENvdW50Q2xhc3M7CgogICAgICAgICAgICBwdXNoIEBBbGxDdXJyZW50Q2xhc3NlcywgJENsYXNzSUQ7CgogICAgICAgICAgICAjIGFkZCBmaWx0ZXIgd2l0aCBwYXJhbXMgZm9yIHRoZSBzZWFyY2ggbWV0aG9kCiAgICAgICAgICAgICRGaWx0ZXJzeyRDbGFzc0lEfSA9IHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkVHJhbnNsYXRlZENsYXNzTGlzdHskQ2xhc3NJRH0sCiAgICAgICAgICAgICAgICBQcmlvICAgPT4gJFByaW8rKywKICAgICAgICAgICAgICAgIENvdW50ICA9PiAkQ291bnRDbGFzcywKICAgICAgICAgICAgICAgIFNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+ICREZXBsU3RhdGVJRHMsCiAgICAgICAgICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgICAgICAgICAgICAgTGltaXQgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgICAgICBQZXJtaXNzaW9uID0+ICRQZXJtaXNzaW9uLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgImFsbCIgZmlsdGVyIGlmIHRoZXJlIGlzIG5vdCBvbmx5IG9uZSBjdXJyZW50IGZpbHRlciwgc2V0IHRoZSBmaWx0ZXIgaWYgbm90IHByb3ZpZGVkCiAgICBpZiAoIHNjYWxhciBrZXlzICVGaWx0ZXJzID09IDEgKSB7CiAgICAgICAgKCRGaWx0ZXIpID0ga2V5cyAlRmlsdGVyczsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRGaWx0ZXJze0FsbH0gPSB7CiAgICAgICAgICAgIE5hbWUgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0FsbCcpLAogICAgICAgICAgICBQcmlvICAgPT4gMSwKICAgICAgICAgICAgQ291bnQgID0+ICRDb3VudFRvdGFsLAogICAgICAgICAgICBTZWFyY2ggPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFxAQWxsQ3VycmVudENsYXNzZXMsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgICAgICVTb3J0LAogICAgICAgICAgICAgICAgTGltaXQgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJFBlcm1pc3Npb24sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwoKICAgICAgICBpZiAoICEkRmlsdGVyIHx8ICEkRmlsdGVyc3skRmlsdGVyfSApIHsKICAgICAgICAgICAgJEZpbHRlciA9ICdBbGwnOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmlldyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFZpZXcgPSAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6T3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgIyBUcnkgdG8gZmluZCBmYWxsYmFjaywgdGFrZSBmaXJzdCBjb25maWd1cmVkIHZpZXcgbW9kZS4KICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBwZXJzb25hbCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPntTZXNzaW9ufXskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwoKICAgICMgZG8gc2hvd24gY29uZmlnIGl0ZW0gbG9va3VwCiAgICBteSAkTGltaXQgPSAxXzAwMDsKCiAgICBteSAkRWxlbWVudENoYW5nZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CiAgICBteSAkSGVhZGVyQ29sdW1uICAgPSAkRWxlbWVudENoYW5nZWQ7CiAgICAkSGVhZGVyQ29sdW1uID1+IHN7XEEgQ29sdW1uRmlsdGVyIH17fW1zeGc7CgogICAgIyBnZXQgZGF0YSAodmlld2FibGUgY29uZmlnIGl0ZW1zLi4uKQogICAgIyBzZWFyY2ggYWxsIGNvbmZpZyBpdGVtcwogICAgbXkgQFZpZXdhYmxlQ29uZmlnSXRlbXM7CiAgICBteSBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zOwoKICAgIGlmICggQFZpZXdhYmxlRGVwbFN0YXRlSURzICYmIEBBbGxDdXJyZW50Q2xhc3NlcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gdmFsdWVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAhSXNTdHJpbmdXaXRoRGF0YSgkSGVhZGVyQ29sdW1uKQogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdPbmx5VmFsdWVzT25Db25maWdJdGVtJykKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW1pdCAgPT4gJExpbWl0LAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3RhcnQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMTsKCiAgICAgICAgICAgIEBWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW1pdCAgPT4gJFN0YXJ0ICsgJFBhZ2VTaG93biAtIDEsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfQoKICAgICMgVE9ETyBNYXliZSB0aGVyZSBpcyBhIG1vcmUgZWxlZ2FudCB3YXkgdG8gZG8gdGhpcz8KICAgICRTZWxmLT57RmlsdGVyfSAgICAgICAgICA9ICRGaWx0ZXI7CiAgICAkU2VsZi0+e0ZpbHRlcnN9ICAgICAgICAgPSBcJUZpbHRlcnM7CiAgICAkU2VsZi0+e0NhdGVnb3J5RmlsdGVyc30gPSBcJUNhdGVnb3J5RmlsdGVyczsKICAgICRTZWxmLT57Q2F0ZWdvcnlGaWx0ZXJ9ICA9ICRDYXRlZ29yeUZpbHRlcjsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWEZpbHRlclVwZGF0ZScgKSB7CgogICAgICAgIG15ICRGaWx0ZXJDb250ZW50ID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygKICAgICAgICAgICAgRmlsdGVyQ29udGVudE9ubHkgICAgID0+IDEsCiAgICAgICAgICAgIEhlYWRlckNvbHVtbiAgICAgICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICBFbGVtZW50Q2hhbmdlZCAgICAgICAgPT4gJEVsZW1lbnRDaGFuZ2VkLAogICAgICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICRIZWFkZXJDb2x1bW4gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWx0ZXJDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgc3RvcmUgY29sdW1uIGZpbHRlcnMKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9IFwlQ29sdW1uRmlsdGVyOwoKICAgICAgICBteSAkU3RvcmVkRmlsdGVyc0tleSA9ICdVc2VyU3RvcmVkRmlsdGVyQ29sdW1ucy0nIC4gJFNlbGYtPntBY3Rpb259IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9OwogICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTdG9yZWRGaWx0ZXJzS2V5LAogICAgICAgICAgICBWYWx1ZSAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiAkU3RvcmVkRmlsdGVycyApLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJU5hdkJhckZpbHRlciA9IG1hcCB7CiAgICAgICAgJENhdGVnb3J5RmlsdGVyc3skX317UHJpb30gPT4gewogICAgICAgICAgICBDYXRlZ29yeUZpbHRlciA9PiAkXywKICAgICAgICAgICAgJENhdGVnb3J5RmlsdGVyc3skX30tPiUqLAogICAgICAgIH0KICAgIH0ga2V5cyAlQ2F0ZWdvcnlGaWx0ZXJzOwoKICAgIG15ICVDbGFzc0ZpbHRlciA9IG1hcCB7CiAgICAgICAgJEZpbHRlcnN7JF99e1ByaW99ID0+IHsKICAgICAgICAgICAgRmlsdGVyID0+ICRfLAogICAgICAgICAgICAkRmlsdGVyc3skX30tPiUqLAogICAgICAgIH0KICAgIH0ga2V5cyAlRmlsdGVyczsKCiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewoKICAgICAgICBuZXh0IENPTFVNTk5BTUUgdW5sZXNzICRDb2x1bW5OYW1lOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSB1bmxlc3MgZGVmaW5lZCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfTsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gZXEgJyc7CgogICAgICAgICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgICAgIC49ICc7JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJ0NvbHVtbkZpbHRlcicgLiAkQ29sdW1uTmFtZSApCiAgICAgICAgICAgIC4gJz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gKTsKICAgIH0KCiAgICBteSAkQ2F0ZWdvcnlGaWx0ZXJVUkkgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0nLAogICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlGaWx0ZXIgPT4gJENhdGVnb3J5RmlsdGVyLAogICAgICAgIH0sCiAgICApOwogICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztDYXRlZ29yeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2F0ZWdvcnlGaWx0ZXJVUkkgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtTb3J0ID0gJ1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztDYXRlZ29yeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2F0ZWdvcnlGaWx0ZXJVUkkgKQogICAgICAgIC4gJztGaWx0ZXI9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAkQ29sdW1uRmlsdGVyTGluawogICAgICAgIC4gJzsnOwoKICAgIG15ICRMaW5rRmlsdGVyID0gJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJzsnOwoKICAgIG15ICRMYXN0Q29sdW1uRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhc3RDb2x1bW5GaWx0ZXInICkgfHwgJyc7CgogICAgaWYgKCAhJExhc3RDb2x1bW5GaWx0ZXIgJiYgJENvbHVtbkZpbHRlckxpbmsgKSB7CgogICAgICAgICMgaXMgcGxhbm5lZCB0byBoYXZlIGEgbGluayB0byBnbyBiYWNrIGhlcmUKICAgICAgICAkTGFzdENvbHVtbkZpbHRlciA9IDE7CiAgICB9CgogICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgIENhdGVnb3J5RmlsdGVyICAgICAgICA9PiAkQ2F0ZWdvcnlGaWx0ZXIsCiAgICAgICAgRmlsdGVycyAgICAgICAgICAgICAgID0+IFwlQ2xhc3NGaWx0ZXIsCiAgICAgICAgQ2F0ZWdvcnlGaWx0ZXJzICAgICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIENvbmZpZ0l0ZW1JRHMgICAgICAgICA9PiBcQFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIEdldENvbHVtbkZpbHRlciAgICAgICA9PiBcJUdldENvbHVtbkZpbHRlciwKICAgICAgICBMYXN0Q29sdW1uRmlsdGVyICAgICAgPT4gJExhc3RDb2x1bW5GaWx0ZXIsCiAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtJywKICAgICAgICBUb3RhbCAgICAgICAgICAgICAgICAgPT4gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgUmVxdWVzdGVkVVJMICAgICAgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgQnVsayAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgVGl0bGVOYW1lICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbScpLAogICAgICAgIFRpdGxlVmFsdWUgICAgICAgICAgICA9PiAkU2VsZi0+e0ZpbHRlcnN9eyRGaWx0ZXJ9e05hbWV9LAogICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciAgICAgICAgICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICBDb2x1bW5GaWx0ZXJGb3JtICAgICAgPT4gewogICAgICAgICAgICBGaWx0ZXIgICA9PiAkRmlsdGVyICAgICAgICAgfHwgJycsCiAgICAgICAgICAgIENhdGVnb3J5ID0+ICRDYXRlZ29yeUZpbHRlciB8fCAnJywKICAgICAgICB9LAoKICAgICAgICAjIGRvIG5vdCBwcmludCB0aGUgcmVzdWx0IGVhcmxpZXIsIGJ1dCByZXR1cm4gY29tcGxldGUgY29udGVudAogICAgICAgIE91dHB1dCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBwYWdlIGZvb3RlcgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKSBpZiAkU2VsZi0+e1N1YmFjdGlvbn0gbmUgJ0FKQVhGaWx0ZXJVcGRhdGUnOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemAdd.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7JVBhcmFtfSwgJFR5cGU7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTX0lEIGlmICRIYXNBY2Nlc3M7CgogICAgICAgICMgcmVtb3ZlIGZyb20gY2xhc3MgbGlzdCB3aGVuIGFjY2VzcyBpcyBkZW5pZWQKICAgICAgICBkZWxldGUgJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2hvdyB0aGUgbGlzdCBvZiBDSSBjbGFzc2VzIHNvcnRlZCBieSBuYW1lCiAgICBmb3IgbXkgJEl0ZW1JRCAoCiAgICAgICAgc29ydCB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJHskQ2xhc3NMaXN0fXskYX0gKSBjbXAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkeyRDbGFzc0xpc3R9eyRifSApCiAgICAgICAgfSBrZXlzICV7JENsYXNzTGlzdH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IGl0ZW0gbGlzdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0l0ZW1MaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0xpc3QtPnskSXRlbUlEfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0FkZCcpLAogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUFkZCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICk7CiAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIEdldCB0aGUgRmllbGQgY29udGVudC4KICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn07CgogICAgICAgICMgIyBCdWlsZCBiYXNlIFVSTCBmb3IgaW4tbGluZSBpbWFnZXMuCiAgICAgICAgIyBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgIyBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICMgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAjICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgIyAgICAgICAgIChBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9XGQrO0ZpbGVuYW1lPVx3KykKICAgICAgICAjICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgICMgfQoKICAgICAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGF0dGFjaG1lbnQgbGlzdCBmb3IgaGFuZGxpbmcgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICAgICAgbXkgJUF0dGFjaG1lbnRzOwogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfXtDb250ZW50SUR9ID0gJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CiAgICAgICAgfQoKICAgICAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIGJhc2UgdXJsCiAgICAgICAgbXkgJFVSTCA9ICdBY3Rpb249JyAuICggJExheW91dE9iamVjdC0+e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJyApIC4gJ0lUU01Db25maWdJdGVtQXR0YWNobWVudDtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50JwogICAgICAgICAgICAuICI7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtWZXJzaW9uSUQ9JENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9O0ZpbGVuYW1lPSI7CgogICAgICAgICMgcmVmb3JtYXQgcmljaCB0ZXh0IGRvY3VtZW50IHRvIGhhdmUgY29ycmVjdCBjaGFyc2V0IGFuZCBsaW5rcyB0bwogICAgICAgICMgaW5saW5lIGRvY3VtZW50cwogICAgICAgICVEYXRhID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudFNlcnZlKAogICAgICAgICAgICBEYXRhICAgICAgICAgICAgICAgPT4gXCVEYXRhLAogICAgICAgICAgICBVUkwgICAgICAgICAgICAgICAgPT4gJFVSTCwKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgID0+IFwlQXR0YWNobWVudHMsCiAgICAgICAgICAgIExvYWRFeHRlcm5hbEltYWdlcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkRGF0YXtDb250ZW50fTsKCiAgICAgICAgIyByZW1vdmUgYWN0aXZlIGh0bWwgY29udGVudCAoc2NyaXB0cywgYXBwbGV0cywgZXRjLi4uKQogICAgICAgIG15ICVTYWZlQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgICAgICBOb09iamVjdCAgICAgPT4gMSwKICAgICAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSW50U3JjTG9hZCA9PiAwLAogICAgICAgICAgICBOb0V4dFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9KYXZhU2NyaXB0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWtlIHRoZSBzYWZlIGNvbnRlbnQgaWYgbmVjY2Vzc2FyeQogICAgICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICAgICAkRmllbGRDb250ZW50ID0gJFNhZmVDb250ZW50e1N0cmluZ307CiAgICAgICAgfQoKICAgICAgICAjIGRldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwoKICAgICAgICAjIHNldCB0YXJnZXQ9Il9ibGFuayIgYXR0cmlidXRlIHRvIGFsbCBIVE1MIDxhPiB0YWdzCiAgICAgICAgIyB0aGUgTGlua1F1b3RlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCBhZ2FpbgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUYXJnZXRBZGQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBuZWVkZWQgSFRNTCBoZWFkZXJzCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgIFN0cmluZyAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgICAgICk7CgogICAgICAgICMgZXNjYXBlIHNpbmdsZSBxdW90ZXMKICAgICAgICAkRmllbGRDb250ZW50ID1+IHMvJy8mIzM5Oy9nOwoKICAgICAgICAjIFJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQuCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgIG15ICRGaWxlbmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlbmFtZScgKTsKCiAgICAgICAgIyBjaGVjayBwYXJhbQogICAgICAgIGlmICggISRGaWxlbmFtZSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ZpbGVuYW1lIGlzIG5lZWRlZCEnLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYW4gYXR0YWNobWVudAogICAgICAgIG15ICREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICApOwogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREYXRhKSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKS4iLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRGF0YSkgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCAkRGF0YS0+JSogKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CiAgICB9CgogICAgIyBObyAoa25vd24pIHN1YmFjdGlvbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIFN1YmFjdGlvbi4nKSwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemBulk.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtQnVsazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0J1bGsgZmVhdHVyZSBpcyBub3QgZW5hYmxlZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGludm9sdmVkIGNvbmZpZyBpdGVtcywgZmlsdGVyaW5nIGVtcHR5IENvbmZpZ0l0ZW1JRHMKICAgIG15IEBDb25maWdJdGVtSURzID0gZ3JlcCB7JF99CiAgICAgICAgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhQENvbmZpZ0l0ZW1JRHMgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnKSwKICAgICAgICApOwogICAgfQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgICMgZGVjbGFyZSB0aGUgdmFyaWFibGVzIGZvciBhbGwgdGhlIHBhcmFtZXRlcnMKICAgIG15ICVFcnJvcjsKCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGFsbCBwYXJhbWV0ZXJzIGFuZCBjaGVjayBmb3IgZXJyb3JzCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG8nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGdldCBhbGwgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkS2V5ICgKICAgICAgICAgICAgcXcoIExpbmtUb2dldGhlciBMaW5rVG9nZXRoZXJBbm90aGVyIExpbmtUeXBlIExpbmtUb2dldGhlckxpbmtUeXBlIERlcGxTdGF0ZUlECiAgICAgICAgICAgIEluY2lTdGF0ZUlEICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNoZWNrSXRlbScpLT5TdHJpbmdDbGVhbigKICAgICAgICAgICAgICAgIFN0cmluZ1JlZiA9PiBcJEdldFBhcmFteydMaW5rVG9nZXRoZXJBbm90aGVyJ30sCiAgICAgICAgICAgICAgICBUcmltTGVmdCAgPT4gMSwKICAgICAgICAgICAgICAgIFRyaW1SaWdodCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRHZXRQYXJhbXsnTGlua1RvZ2V0aGVyQW5vdGhlcid9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICAgICAgICAgJEVycm9yeydMaW5rVG9nZXRoZXJBbm90aGVySW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHByZXByb2Nlc3MgY29uZmlnIGl0ZW0KICAgIG15IEBTZWxlY3RlZENvbmZpZ0l0ZW1zOwogICAgbXkgJUNvbmZpZ0l0ZW1DbGFzc2VzOwoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsb29wIG92ZXIgY29uZmlnIGl0ZW1zIHRvIHByZWRldGVybWluZSBhY2Nlc3MgYW5kIGR5bmFtaWMgZmllbGQgaGFuZGxpbmcKICAgIENPTkZJR0lURU1fSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1fSUQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtKTsKCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQWNjZXNzICkgewoKICAgICAgICAgICAgIyBlcnJvciBzY3JlZW4sIGRvbid0IHNob3cgY29uZmlnIGl0ZW0KICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBEYXRhID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJywKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1fSUQ7CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHNlbGVjdGVkIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGlkcwogICAgICAgIHB1c2ggQFNlbGVjdGVkQ29uZmlnSXRlbXMsICRDb25maWdJdGVtOwogICAgICAgICRDb25maWdJdGVtQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSA9ICRDb25maWdJdGVtLT57Q2xhc3NJRH07CiAgICB9CgogICAgIyBjaGVjayBpZiBkeW5hbWljIGZpZWxkcyBzaG91bGQgYmUgZGlzcGxheWVkIGFuZCB3aGljaCBvbmVzCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKICAgIG15ICVEeW5hbWljRmllbGRWYWx1ZXM7CiAgICBteSAlQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkczsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGFyZSBvbmx5IGRpc3BsYXllZCBpZiBhbGwgY29uZmlnIGl0ZW1zIGFyZSBmcm9tIHRoZSBzYW1lIGNsYXNzCiAgICBpZiAoIHNjYWxhciBrZXlzICVDb25maWdJdGVtQ2xhc3NlcyA9PSAxICkgewogICAgICAgIG15ICRDbGFzcyAgICAgID0gKCBrZXlzICVDb25maWdJdGVtQ2xhc3NlcyApWzBdOwogICAgICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc2VzeyRDbGFzc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzIScsICRDbGFzcyApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntEZWZpbml0aW9ufSA9ICREZWZpbml0aW9uOwogICAgICAgICAgICAkU2VsZi0+e0NsYXNzfSAgICAgID0gJENsYXNzOwogICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCAgID0gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID8gWyB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiBdIDogW107CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZmV0Y2ggZHluYW1pYyBmaWVsZCB2YWx1ZXMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICk7CgogICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcm9jZXNzIGNvbmZpZyBpdGVtcwogICAgbXkgJEFjdGlvbkZsYWcgPSAwOwogICAgbXkgJENvdW50ZXIgICAgPSAxOwoKICAgIENPTkZJR0lURU1fSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKEBTZWxlY3RlZENvbmZpZ0l0ZW1zKSB7CgogICAgICAgICMgZG8gc29tZSBhY3Rpb25zIG9uIENJcwogICAgICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RvJyApICYmICggISVFcnJvciApICkgewoKICAgICAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGNvbmZpZ2l0ZW0gdXBkYXRlCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFZhbHVlcywKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGxpbmtzCiAgICAgICAgICAgICMgbGluayBhbGwgY29uZmlnIGl0ZW1zIHRvIGFub3RoZXIgY29uZmlnIGl0ZW0KICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgICAgIG15ICRNYWluQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzcGxpdCB0aGUgdHlwZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBteSBAVHlwZSA9IHNwbGl0IC86Oi8sICRHZXRQYXJhbXtMaW5rVHlwZX07CgogICAgICAgICAgICAgICAgaWYgKCAkVHlwZVswXSAmJiAkVHlwZVsxXSAmJiAoICRUeXBlWzFdIGVxICdTb3VyY2UnIHx8ICRUeXBlWzFdIGVxICdUYXJnZXQnICkgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgbXkgJFRhcmdldEtleSA9ICRNYWluQ29uZmlnSXRlbUlEOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzFdIGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJE1haW5Db25maWdJdGVtSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKCBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWFpbkNvbmZpZ0l0ZW1JRCBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsaW5rIHRvZ2V0aGVyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteydMaW5rVG9nZXRoZXInfSApIHsKCiAgICAgICAgICAgICAgICAjIHNwbGl0IHRoZSB0eXBlIGlkZW50aWZpZXIKICAgICAgICAgICAgICAgIG15IEBUeXBlID0gc3BsaXQgLzo6LywgJEdldFBhcmFte0xpbmtUb2dldGhlckxpbmtUeXBlfTsKCiAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzBdICYmICRUeXBlWzFdICYmICggJFR5cGVbMV0gZXEgJ1NvdXJjZScgfHwgJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKCBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbUlEUGFydG5lcjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJENvbmZpZ0l0ZW1JRFBhcnRuZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGFyZ2V0S2V5ID0gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQWN0aW9uRmxhZyA9IDE7CiAgICAgICAgfQogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyByZWRpcmVjdAogICAgaWYgKCRBY3Rpb25GbGFnKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgIFVSTCA9PiAoICRTZWxmLT57TGFzdFNjcmVlbk92ZXJ2aWV3fSB8fCAnQWN0aW9uPUFnZW50RGFzaGJvYXJkJyApLAogICAgICAgICk7CiAgICB9CgogICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgJVBhcmFtLAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGQgID0+IFwlRHluYW1pY0ZpZWxkVmFsdWVzLAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyBdLAogICAgICAgIEVycm9ycyAgICAgICAgPT4gXCVFcnJvciwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBwcmVwYXJlIGVycm9ycyEKICAgIGlmICggJFBhcmFte0Vycm9yc30gKSB7CiAgICAgICAgZm9yIG15ICRLZXlFcnJvciAoIHNvcnQga2V5cyAleyAkUGFyYW17RXJyb3JzfSB9ICkgewogICAgICAgICAgICAkUGFyYW17JEtleUVycm9yfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFBhcmFte0Vycm9yc30tPnskS2V5RXJyb3J9ICk7CiAgICAgICAgfQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0J1bGtBY3Rpb24nLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyByZW1lbWJlciBjb25maWcgaXRlbSBpZHMKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVXNlZENvbmZpZ0l0ZW1JRCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGRlcGxveW1lbnQgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57RGVwbFN0YXRlfSApIHsKICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgRGVwbFN0YXRlU3RyZwogICAgICAgICRQYXJhbXtEZXBsU3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdEZXBsU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgaW5jaWRlbnQgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57SW5jaVN0YXRlfSApIHsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ29wZXJhdGlvbmFsJywgJ2luY2lkZW50JyBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgSW5jaVN0YXRlU3RyZwogICAgICAgICRQYXJhbXtJbmNpU3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsaW5rIHR5cGVzIGxpc3QKICAgICMgZ2V0IHBvc3NpYmxlIHR5cGVzIGxpc3QKICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGRlZmluZSBibGFuayBsaW5lIGVudHJ5CiAgICBteSAlQmxhbmtMaW5lID0gKAogICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICBWYWx1ZSAgICA9PiAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScsCiAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgdGhlIHNlbGVjdGFibGUgdHlwZSBsaXN0CiAgICBteSAkQ291bnRlciA9IDA7CiAgICBteSBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKICAgIG15IEBMaW5rVG9nZXRoZXJUeXBlTGlzdDsKICAgIFBPU1NJQkxFVFlQRToKICAgIGZvciBteSAkUG9zc2libGVUeXBlICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0ICkgewoKICAgICAgICAjIGxvb2t1cCB0eXBlIGlkCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJFBvc3NpYmxlVHlwZSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0eXBlCiAgICAgICAgbXkgJVR5cGUgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB0eXBlIGxpc3QgZm9yIGxpbmsgdG9nZXRoZXIgY2FuIGNvbnRhaW4gb25seQogICAgICAgICMgbGluayB0eXBlcyB3aGljaCBhcmUgbm90IGRpcmVjdGVkIChub3QgcG9pbnRlZCkKICAgICAgICBpZiAoICEkVHlwZXtQb2ludGVkfSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgICAgICBteSAlU291cmNlTmFtZTsKICAgICAgICAgICAgJFNvdXJjZU5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlNvdXJjZSc7CiAgICAgICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICAgICAgcHVzaCBATGlua1RvZ2V0aGVyVHlwZUxpc3QsIFwlU291cmNlTmFtZTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgIG15ICVTb3VyY2VOYW1lOwogICAgICAgICRTb3VyY2VOYW1le0tleX0gICA9ICRQb3NzaWJsZVR5cGUgLiAnOjpTb3VyY2UnOwogICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICBwdXNoIEBTZWxlY3RhYmxlVHlwZXNMaXN0LCBcJVNvdXJjZU5hbWU7CgogICAgICAgIG5leHQgUE9TU0lCTEVUWVBFIGlmICEkVHlwZXtQb2ludGVkfTsKCiAgICAgICAgIyBjcmVhdGUgdGhlIHRhcmdldCBuYW1lCiAgICAgICAgbXkgJVRhcmdldE5hbWU7CiAgICAgICAgJFRhcmdldE5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlRhcmdldCc7CiAgICAgICAgJFRhcmdldE5hbWV7VmFsdWV9ID0gJFR5cGV7VGFyZ2V0TmFtZX07CgogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlVGFyZ2V0TmFtZTsKICAgIH0KICAgIGNvbnRpbnVlIHsKCiAgICAgICAgIyBhZGQgYmxhbmsgbGluZQogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlQmxhbmtMaW5lOwoKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgICMgcmVtb3ZlZCBsYXN0IChlbXB0eSkgZW50cnkKICAgIHBvcCBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKCiAgICAjIGFkZCBibGFuayBsaW5lcyBvbiB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgbGlzdCBpZiBtb3JlIHRoZW4gdHdvIGxpbmt0eXBlcwogICAgaWYgKCAkQ291bnRlciA+IDIgKSB7CiAgICAgICAgdW5zaGlmdCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICAgICAgcHVzaCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBMaW5rVHlwZVN0cmcKICAgICRQYXJhbXtMaW5rVHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcQFNlbGVjdGFibGVUeXBlc0xpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMaW5rVHlwZScsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSWRlbnRpZmllcn0gfHwgJ0FsdGVybmF0aXZlVG86OlNvdXJjZScsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICApOwogICAgJFBhcmFte0xpbmtUb2dldGhlckxpbmtUeXBlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFxATGlua1RvZ2V0aGVyVHlwZUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMaW5rVG9nZXRoZXJMaW5rVHlwZScsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSWRlbnRpZmllcn0gfHwgJ0FsdGVybmF0aXZlVG86OlNvdXJjZScsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICApOwoKICAgICRQYXJhbXtMaW5rVG9nZXRoZXJZZXNOb09wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIERhdGEgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdZZXNOb09wdGlvbnMnKSwKICAgICAgICBOYW1lICAgICAgID0+ICdMaW5rVG9nZXRoZXInLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xpbmtUb2dldGhlcn0gfHwgMCwKICAgICk7CgogICAgIyByZW5kZXIgZHluYW1pYyBmaWVsZHMKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57RGVmaW5pdGlvbn0gKSAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntEZWZpbml0aW9ufXtEZWZpbml0aW9uUmVmfSApICYmICRTZWxmLT57RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9ICkgewoKICAgICAgICAjIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gc3dpdGNoIGJldHdlZW4gcGFnZXMgZm9yIHRoZSBlZGl0IG1hc2ssIHRvby4gS2VlcGluZyB0aGUgZmllbGRzIGluIHN5bmMKICAgICAgICAjICAgICAgIHdoaWxlIGVkaXRpbmcgbmVlZHMgYSBiaXQgbW9yZSBwcmVwYXJhdGlvbiB0aG91Z2gKICAgICAgICAjIFRodXMgZm9yIG5vdyBtYWtlIHN1cmUgdG8gc2hvdyBkeW5hbWljIGZpZWxkcyBvbmx5IG9uY2UsIGV2ZW4gaWYgcHJlc2VudCBvbiBtdWx0aXBsZSBwYWdlcy9zZWN0aW9ucwogICAgICAgIG15ICRGaWVsZHNTZWVuID0ge307CgogICAgICAgIGZvciBteSAkUGFnZSAoICRTZWxmLT57RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgICAgIFNFQ1RJT046CiAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkNvbmZpZyAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkU2VsZi0+e0RlZmluaXRpb259e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb247CiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gaWYgJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJzsKCiAgICAgICAgICAgICAgICAjIHdlZWQgb3V0IG11bHRpcGxlIG9jY3VyYW5jZXMgb2YgZHluYW1pYyBmaWVsZHMgLSBzZWUgY29tbWVudCBhYm92ZQogICAgICAgICAgICAgICAgJFNlY3Rpb24tPntDb250ZW50fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZWRERnMgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgICAgICAgID0+ICRGaWVsZHNTZWVuLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9IC49ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEeW5hbWljRmllbGQ6Ok1hc2snKS0+RWRpdFNlY3Rpb25SZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgID0+ICRTZWxmLT57RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBBSkFYVXBkYXRhYmxlICAgICAgPT4gMCwKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPIGFzayBpZiB0aGlzIHNob3VsZCBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiBcJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICMgRXJyb3JzICAgICAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICMgVmlzaWJpbGl0eSAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgICAgIE9iamVjdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRTZWxmLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtQnVsaycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgpzdWIgX0Rpc2NhcmRGaWVsZHNTZWVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRlbnQ7CiAgICBteSAkUmVmID0gcmVmICRQYXJhbXtDb250ZW50fTsKCiAgICBpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICBteSBAQ2xlYW5lZEFycmF5OwoKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoICRQYXJhbXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRSZWZFbGVtZW50ID0gcmVmICRFbGVtZW50OwoKICAgICAgICAgICAgaWYgKCAkUmVmRWxlbWVudCBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUmVmRWxlbWVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkRWxlbWVudC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17Q29uZmlndXJlZERGc317ICRFbGVtZW50LT57REZ9IH0gfHwgJFBhcmFte1NlZW59eyAkRWxlbWVudC0+e0RGfSB9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRFbGVtZW50OwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcQENsZWFuZWRBcnJheTsKICAgIH0KCiAgICBlbHNpZiAoICRSZWYgZXEgJ0hBU0gnICkgewogICAgICAgIG15ICVDbGVhbmVkSGFzaDsKCiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICRQYXJhbXtDb250ZW50fS0+JSogKSB7CiAgICAgICAgICAgICRDbGVhbmVkSGFzaHskS2V5fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRQYXJhbXtDb250ZW50fXskS2V5fSwKICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcJUNsZWFuZWRIYXNoOwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRDb250ZW50ID0gJFBhcmFte0NvbnRlbnR9OwogICAgfQoKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIENvbmZpZ0l0ZW1JRAogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBlcnJvciBzY3JlZW4KICAgIGlmICggISRBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnWW91IG5lZWQgJXMgcGVybWlzc2lvbnMhJywgJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgZm91bmQKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDb25maWdJdGVtRGVsZXRlJyApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvdWxkRGVsZXRlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlQ29uZmlnSXRlbSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBjb25maWcgaXRlbSBvdmVydmlldywgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRDb25maWdJdGVtLT57VmVyc2lvbklEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICMgb3V0cHV0IGNvbnRlbnQKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICk7CgogICAgIyByZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUKICAgIG15ICRPdXRwdXRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiBcJURhdGEgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBteSBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWdpdGVtIGlkIGFuZCBjbGFzcyBpZAogICAgbXkgJENvbmZpZ0l0ZW0gID0ge307CiAgICBteSAkRHVwbGljYXRlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRHVwbGljYXRlSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q2xhc3NJRH0gICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApICAgICAgfHwgMDsKCiAgICBteSAkSGFzQWNjZXNzOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IG5lZWRlZCBkYXRhCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAmJiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKSB7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtCiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCREdXBsaWNhdGVJRCkgewoKICAgICAgICBteSAkVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAgICAgIyBUT0RPOiBDaGVjayBkdXBsaWNhdGlvbgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIHRvIGR1cGxpY2F0ZQogICAgICAgICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGFjY2VzcyBmb3IgY29uZmlnIGl0ZW0KICAgICAgICAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICAjIHNldCBjb25maWcgaXRlbSBpZCBhbmQgbnVtYmVyCiAgICAgICAgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ID0gJ05FVyc7CiAgICAgICAgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICAgICAgID0gVHJhbnNsYXRhYmxlKCdOZXcnKTsKICAgIH0KICAgIGVsc2lmICggJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSApIHsKCiAgICAgICAgIyBzZXQgY29uZmlnIGl0ZW0gaWQgYW5kIG51bWJlcgogICAgICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICdORVcnOwogICAgICAgICRDb25maWdJdGVtLT57TnVtYmVyfSAgICAgICA9IFRyYW5zbGF0YWJsZSgnTmV3Jyk7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtLT57Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgdXNlciBoYXMgbm8gYWNjZXNzIHJpZ2h0cyBzaG93IGVycm9yIHBhZ2UKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEVkaXQgdGhlIGNvbmZpZyBpdGVtIHdpdGggdGhlIG5ld2VzdCBjb25maWcgaXRlbSBkZWZpbml0aW9uIG9mIHRoZSByZWxldmFudCBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgYWJvcnQsIGlmIG5vIGRlZmluaXRpb24gaXMgZGVmaW5lZAogICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnLCAkQ29uZmlnSXRlbS0+e0NsYXNzfSApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBmb3JtIGlkCiAgICBteSAkRm9ybUNhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyk7CgogICAgJFNlbGYtPntGb3JtSUR9ID0gJEZvcm1DYWNoZU9iamVjdC0+UHJlcGFyZUZvcm1JRCgKICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgKTsKCiAgICBteSAlR2V0UGFyYW07CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwogICAgbXkgJUFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHM7CiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICAjIGdldCBpbml0aWFsIHZhbHVlcyBmb3IgdGhlIGNvbmZpZ2l0ZW0KICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA/IFsgdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogXSA6IFtdOwoKICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBlcSAnTkVXJyApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lOwoKICAgICAgICAgICAgaWYgKCREdXBsaWNhdGVJRCkgewoKICAgICAgICAgICAgICAgICMgZ2V0IERhdGEgZnJvbSBkdXBsaWNhdGUgQ0kKICAgICAgICAgICAgICAgIGZvciBteSAkUGFyYW0gKHF3KE5hbWUgVmVyc2lvblN0cmluZyBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRDb25maWdJdGVtLT57JFBhcmFtfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU5hbWUgPSAkR2V0UGFyYW17TmFtZX0gLiAnIChDb3B5KSc7CgogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZGVsZXRlICRHZXRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBnZXQgZ2VuZXJhbCBmb3JtIGRhdGEKICAgICAgICAgICAgZm9yIG15ICRQYXJhbSAocXcoTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlc2NyaXB0aW9uKSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbX0gPSAkQ29uZmlnSXRlbS0+eyRQYXJhbX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICBteSAkQWN0aXZlRmllbGRzID0gJEZvcm1DYWNoZU9iamVjdC0+R2V0Rm9ybURhdGEoCiAgICAgICAgICAgIEZvcm1JRCAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ0FjdGl2ZUR5bmFtaWNGaWVsZHMnLAogICAgICAgICkgLy8gW107CgogICAgICAgIGZvciBteSAkRmllbGROYW1lICggJEFjdGl2ZUZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggQHskRHluYW1pY0ZpZWxkTGlzdH0sICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskRmllbGROYW1lfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGdlbmVyYWwgZm9ybSBkYXRhCiAgICAgICAgZm9yIG15ICRQYXJhbSAocXcoTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlc2NyaXB0aW9uKSkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbSApOwogICAgICAgIH0KCiAgICAgICAgIyBzcGVjaWFsIGNhc2UgZm9yIGNsYXNzCiAgICAgICAgJEdldFBhcmFte0NsYXNzSUR9ID0gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntSZWFkb25seX07CgogICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgcGVyZm9ybSBBQ0xzIG9uIHZhbHVlcwogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CiAgICAgICAgICAgICAgICAkQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15IEBVcGRhdGFibGVGaWVsZHMgPSBxdyhEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbik7CiAgICBwdXNoIEBVcGRhdGFibGVGaWVsZHMsIGtleXMgJUFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHM7CgogICAgIyBjb252ZXJ0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGludG8gYSBzdHJ1Y3R1cmUgZm9yIEFDTHMKICAgIG15ICVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFZhbHVlcyApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZDsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkfTsKCiAgICAgICAgJER5bmFtaWNGaWVsZEFDTFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQgfSA9ICREeW5hbWljRmllbGRWYWx1ZXN7JER5bmFtaWNGaWVsZH07CiAgICB9CiAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSA9IFwlRHluYW1pY0ZpZWxkQUNMUGFyYW1ldGVyczsKCiAgICAjIGdldCB1cGxvYWQgY2FjaGUgb2JqZWN0CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgICMgYXR0YWNobWVudHMgb2YgZXhpc3RpbmcgY29uZmlnIGl0ZW0gbmVlZHMgdG8gYmUgbG9hZGVkIGluIHR3byBjYXNlczoKICAgICMgICAxLiBhbiBleGlzdGluZyBjb25maWcgaXRlbSBpcyBlZGl0ZWQgLSBubyBjbGFzcyBpZCBwcmVzZW50IGluIEdldFBhcmFtCiAgICAjICAgMi4gYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0gaXMgZHVwbGljYXRlZAogICAgaWYgKCAhJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICkgfHwgJER1cGxpY2F0ZUlEICkgewoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJER1cGxpY2F0ZUlEIHx8ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwoKICAgICAgICAjIGNvcHkgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzIHRvIHVwbG9hZCBjYWNoZQogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgZXhpc3RpbmcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkRHVwbGljYXRlSUQgfHwgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudERhdGEtPntDb250ZW50VHlwZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxvZyBvYmplY3QKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMnKTsKCiAgICBteSAkQXV0b3NlbGVjdCA9ICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFDTDo6QXV0b3NlbGVjdCcpIHx8IHVuZGVmOwogICAgbXkgJEFDTFByZXNlbGVjdGlvbjsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdDb25maWdJdGVtQUNMOjpBQ0xQcmVzZWxlY3Rpb24nKSApIHsKCiAgICAgICAgIyBnZXQgY2FjaGVkIHByZXNlbGVjdGlvbiBydWxlcwogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgICRBQ0xQcmVzZWxlY3Rpb24gPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbUFDTCcsCiAgICAgICAgICAgIEtleSAgPT4gJ1ByZXNlbGVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkQUNMUHJlc2VsZWN0aW9uICkgewogICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRXJyb3I7CiAgICBteSAkTmFtZUR1cGxpY2F0ZXM7CiAgICBteSAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2U7CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsaWRhdGlvblJlc3VsdDsKICAgIG15ICVEeW5hbWljRmllbGRQb3NzaWJsZVZhbHVlczsKICAgIG15ICVEeW5hbWljRmllbGRWaXNpYmlsaXR5OwoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICROYW1lTW9kdWxlID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uU3RyaW5nTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCRWZXJzaW9uU3RyaW5nTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBtb2R1bGUgZXhpc3RzCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHVwbG9hZGVkIGF0dGFjaG1lbnQKICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgUGFyYW0gID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgU291cmNlID0+ICdzdHJpbmcnLAogICAgICAgICk7CgogICAgICAgIGlmICglVXBsb2FkU3R1ZmYpIHsKCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgJVVwbG9hZFN0dWZmLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEFsbFJlcXVpcmVkID0gMTsKCiAgICAgICAgIyBnZXQgZ2VuZXJhbCBmb3JtIGRhdGEKICAgICAgICBmb3IgbXkgJFBhcmFtIChxdyhEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbikpIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPnskUGFyYW19ID0gJEdldFBhcmFteyRQYXJhbX07CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbS0+eyRQYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkR2V0UGFyYW17RGVzY3JpcHRpb259IC8vPSAnJzsKCiAgICAgICAgIyBnZXQgbmFtZSBvbmx5IGlmIGl0IGlzIG5vdCBmaWxsZWQgYnkgYSBtb2R1bGUKICAgICAgICBpZiAoICEkTmFtZU1vZHVsZSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntOYW1lfSA9ICRHZXRQYXJhbXtOYW1lfTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57TmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCB2ZXJzaW9uIHN0cmluZyBvbmx5IGlmIGl0IGlzIG5vdCBmaWxsZWQgYnkgYSBtb2R1bGUKICAgICAgICBpZiAoICEkVmVyc2lvblN0cmluZ01vZHVsZSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfSA9ICRHZXRQYXJhbXtWZXJzaW9uU3RyaW5nfTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ30gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRDb25maWdJdGVtLT57TmFtZX0gKQogICAgICAgICAgICAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJOYW1lOiAkQ29uZmlnSXRlbS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSkiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJE5hbWVEdXBsaWNhdGVzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICRBbGxSZXF1aXJlZCA9IDA7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzU3RyaW5nID0gam9pbiAnLCAnLCBAeyROYW1lRHVwbGljYXRlc307CgogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lICRDb25maWdJdGVtLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICROYW1lRHVwbGljYXRlc1N0cmluZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBjb25maWcgb3B0aW9uIGZvciB0aGUgbmFtZSByZWdleCBjaGVja3MKICAgICAgICBteSAkQ0lOYW1lUmVnZXhDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpDSU5hbWVSZWdleCIpOwoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBDSSBuYW1lIGlzIGdpdmVuIGFuZCBzaG91bGQgYmUgY2hlY2tlZCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uCiAgICAgICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgJiYgJENJTmFtZVJlZ2V4Q29uZmlnICkgewoKICAgICAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgY2xhc3MgbmFtZQogICAgICAgICAgICBteSAkQ2xhc3NOYW1lID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH0gfHwgJyc7CgogICAgICAgICAgICAjIGdldCB0aGUgcmVnZXggZm9yIHRoaXMgY2xhc3MKICAgICAgICAgICAgbXkgJENJTmFtZVJlZ2V4ID0gJENJTmFtZVJlZ2V4Q29uZmlnLT57ICRDbGFzc05hbWUgLiAnOjonIC4gJ0NJTmFtZVJlZ2V4JyB9IHx8ICcnOwoKICAgICAgICAgICAgIyBpZiBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSBDSSBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KICAgICAgICAgICAgaWYgKCAkQ0lOYW1lUmVnZXggJiYgJENvbmZpZ0l0ZW0tPntOYW1lfSAhfiBteyAkQ0lOYW1lUmVnZXggfXhtcyApIHsKCiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGlzIGNsYXNzCiAgICAgICAgICAgICAgICAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UgPSAkQ0lOYW1lUmVnZXhDb25maWctPnsgJENsYXNzTmFtZSAuICc6OicgLiAnQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UnIH0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGR5bmFtaWMgZmllbGQgZGF0YSBpbnRvIERGTmFtZSA9PiBERk5hbWUgcGFpcgogICAgICAgIG15ICVEeW5hbWljRmllbGRBY2wgPSBtYXAgeyAkXy0+e05hbWV9ID0+ICRfLT57TmFtZX0gfSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CgogICAgICAgICMgY2FsbCB0aWNrZXQgQUNMcyBmb3IgRHluYW1pY0ZpZWxkcyB0byBjaGVjayBmaWVsZCB2aXNpYmlsaXR5CiAgICAgICAgbXkgJEFDTFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdGb3JtJywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRBY2wsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCRBQ0xSZXN1bHQpIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFZpc2liaWxpdHkgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXy0+e05hbWV9ID0+IDAgfSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CiAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUFjbERhdGEgKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmlzaWJpbGl0eXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkIH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlRHluYW1pY0ZpZWxkVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfLT57TmFtZX0gPT4gMSB9ICREeW5hbWljRmllbGRMaXN0LT5AKjsKICAgICAgICB9CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoICREeW5hbWljRmllbGRMaXN0LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgaWYgKCAkQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWx0ZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgICMgcGVyZm9ybSB2YWxpZGF0aW9uCiAgICAgICAgICAgIG15ICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0hIiksCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcm9wYWdhdGUgdmFsaWRhdGlvbiBlcnJvciB0byB0aGUgRXJyb3IgdmFyaWFibGUgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlIGZyb250ZW5kCiAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICAgICAgICAgICAgICAgICAgICAgICAgPSAnIFNlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWxpZGF0aW9uUmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkQWxsUmVxdWlyZWQgPSAlRXJyb3IgPyAwIDogMTsKCiAgICAgICAgIyBzYXZlIHZlcnNpb24gdG8gZGF0YWJhc2UKICAgICAgICBpZiAoJEFsbFJlcXVpcmVkKSB7CgogICAgICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgZnJvbSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc0RhdGEoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBidWlsZCBhIGxvb2t1cCBsb29rdXAgaGFzaCBvZiB0aGUgbmV3IGF0dGFjaG1lbnRzCiAgICAgICAgICAgIG15ICVOZXdBdHRhY2htZW50OwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgICAgIG15ICRDb250ZW50SUQgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJRAogICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL2ltYWdlL2kgKQogICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElESFRNTFF1b3RlID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29udGVudElELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgd29ya2Fyb3VuZCBmb3IgbGluayBlbmNvZGUgb2YgcmljaCB0ZXh0IGVkaXRvciwgc2VlIGJ1ZyM1MDUzCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJRExpbmtFbmNvZGUgPSAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRDb250ZW50SUQpOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEZXNjcmlwdGlvbn0gPX4gcy8oQ29udGVudElEPSkkQ29udGVudElETGlua0VuY29kZS8kMSRDb250ZW50SUQvZzsKCiAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgYXR0YWNobWVudCBpZiBub3QgbGlua2VkIGluIGJvZHkKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgJEdldFBhcmFte0Rlc2NyaXB0aW9ufSAhfiAvKFxRJENvbnRlbnRJREhUTUxRdW90ZVxFfFxRJENvbnRlbnRJRFxFKS9pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdGhlIGtleSBpcyB0aGUgZmlsZW5hbWUgKyBmaWxlc2l6ZSArIGNvbnRlbnQgdHlwZQogICAgICAgICAgICAgICAgbXkgJEtleSA9ICRBdHRhY2htZW50LT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgIyBzdG9yZSBhbGwgb2YgdGhlIG5ldyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdmVyaWZ5IGh0bWwgZG9jdW1lbnQKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9yIGV4aXN0aW5nIENvbmZpZ0l0ZW1zIGNvbXBhcmUgd2l0aCB0aGUgY3VycmVudCBkYXRhCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IG5lICdORVcnICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICAgICAgICAgICAgICBGSUxFTkFNRToKICAgICAgICAgICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBleGlzdGluZyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyB0aGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlCiAgICAgICAgICAgICAgICAgICAgIyAobm8gY29udGVudCBpZCwgYXMgZXhpc3RpbmcgYXR0YWNobWVudHMgZG9uJ3QgaGF2ZSBpdCkKICAgICAgICAgICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57RmlsZXNpemV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnQgaXMgYWxyZWFkeSBleGlzdGluZywgd2UgY2FuIGRlbGV0ZSBpdCBmcm9tIHRoZSBuZXcgYXR0YWNobWVudCBoYXNoCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTmV3QXR0YWNobWVudHskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGlzdGluZyBhdHRhY2htZW50IGlzIG5vIGxvbmdlciBpbiBuZXcgYXR0YWNobWVudHMgaGFzaAogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWxldGUgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3NmdWwgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCB2ZXJzaW9uIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nVmVyc2lvbkF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgRklMRU5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChARXhpc3RpbmdWZXJzaW9uQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQgZGF0YQogICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemUgKyBjb250ZW50IHR5cGUKICAgICAgICAgICAgICAgICAgICAjIChubyBjb250ZW50IGlkLCBhcyBleGlzdGluZyBhdHRhY2htZW50cyBkb24ndCBoYXZlIGl0KQogICAgICAgICAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudERhdGEtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgICAgICMgYXR0YWNobWVudCBpcyBhbHJlYWR5IGV4aXN0aW5nLCB3ZSBjYW4gZGVsZXRlIGl0IGZyb20gdGhlIG5ldyBhdHRhY2htZW50IGhhc2gKICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld0F0dGFjaG1lbnR7JEtleX07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudAogICAgICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2Vzc2Z1bCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRPRE86IGJldHRlciBhbGlnbiB3aXRoIHRoZSBpbml0aWFsIEVkaXRGaWVsZFZhbHVlR2V0PwogICAgICAgICAgICAjIFRPRE86IFZpc2liaWxpdHkKICAgICAgICAgICAgIyBwcmVwYXJlIGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57UmVhZG9ubHl9OwoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IGVxICdORVcnICkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIHRlbXBvcmFyeSBudW1iZXIgIyBUT0RPOiBjaGVjaywgd2hldGhlciBzZXR0aW5nIG5ldyBhcyBudW1iZXIgaXMgbmVjZXNzYXJ5IGluIHRoZSBmaXJzdCBwbGFjZQogICAgICAgICAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57TnVtYmVyfTsKCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKCiAgICAgICAgICAgICAgICAgICAgIyBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LCAjIFRPRE86IHRoaXMgaXMgbm90IHVzZWQgeWV0CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZldGNoIHVwZGF0ZWQgY29uZmlnIGl0ZW0gZGF0YSB0byBzZWN1cmUgdmVyc2lvbiBpZCBiZWluZyBwcmVzZW50CiAgICAgICAgICAgIG15ICROZXdDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHdyaXRlIHRoZSBuZXcgYXR0YWNobWVudHMKICAgICAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggdmFsdWVzICVOZXdBdHRhY2htZW50ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gJiYgJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJE5ld0NvbmZpZ0l0ZW1EYXRhLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGFsc28gd3JpdGUgYXR0YWNobWVudHMgdG8gbGFzdCB2ZXJzaW9uIGlmIGl0IGRpZmZlcnMgYmVjYXVzZSB3ZSBkZWxldGVkIHRoZW0gcHJldmlvdXNseQogICAgICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9ICYmICRDb25maWdJdGVtLT57VmVyc2lvbklEfSAhPSAkTmV3Q29uZmlnSXRlbURhdGEtPntWZXJzaW9uSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlbW92ZSBhbGwgZm9ybSBkYXRhCiAgICAgICAgICAgICRGb3JtQ2FjaGVPYmplY3QtPkZvcm1JRFJlbW92ZSggRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSApOwoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byB6b29tIG1hc2sKICAgICAgICAgICAgbXkgJFNjcmVlblR5cGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2NyZWVuVHlwZScgKSB8fCAwOwogICAgICAgICAgICBpZiAoJFNjcmVlblR5cGUpIHsKCiAgICAgICAgICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IjsKCiAgICAgICAgICAgICAgICAjIHJldHVybiB0byBvdmVydmlldyBvciBzZWFyY2ggcmVzdWx0cyBpbnN0ZWFkIGlmIGNhbGxlZCBEdXBsaWNhdGUgZnJvbSByb3cgYWN0aW9uCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTZXNzaW9ufXtMYXN0U2NyZWVuVmlld30gZXEgJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtJwogICAgICAgICAgICAgICAgICAgIHx8ICRTZWxmLT57U2Vzc2lvbn17TGFzdFNjcmVlblZpZXd9ID1+IG17XEEgQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW0oPzogU2VhcmNoKT87fW1zeAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkVVJMID0gJFNlbGYtPntTZXNzaW9ufXtMYXN0U2NyZWVuVmlld307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgICAgICAgICAgVVJMID0+ICRVUkwsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhVcGRhdGUnICkgewogICAgICAgIG15ICRFbGVtZW50Q2hhbmdlZCAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CiAgICAgICAgbXkgJUNoYW5nZWRFbGVtZW50cyA9ICRFbGVtZW50Q2hhbmdlZCA/ICggJEVsZW1lbnRDaGFuZ2VkID0+IDEgKSA6ICgpOwogICAgICAgIG15ICRMb29wUHJvdGVjdGlvbiAgPSAxMDA7CgogICAgICAgICMgZ2V0IHZhbHVlcyBhbmQgdmlzaWJpbGl0eSBvZiBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5GaWVsZFN0YXRlcyA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1PYmplY3QsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LAogICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICBDaGFuZ2VkRWxlbWVudHMgICAgICAgICAgID0+IFwlQ2hhbmdlZEVsZW1lbnRzLCAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIHRvIHJlZHVjZSBBQ0wgZXZhbHVhdGlvbgogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgICAgICA9PiB7JUdldFBhcmFtfSwKICAgICAgICAgICAgQXV0b3NlbGVjdCAgICAgICAgICAgICAgICA9PiAkQXV0b3NlbGVjdCwKICAgICAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAkQUNMUHJlc2VsZWN0aW9uLAogICAgICAgICAgICBMb29wUHJvdGVjdGlvbiAgICAgICAgICAgID0+IFwkTG9vcFByb3RlY3Rpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9yZSBuZXcgdmFsdWVzCiAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gPSB7CiAgICAgICAgICAgICV7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9IH0sCiAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tOZXdWYWx1ZXN9IH0sCiAgICAgICAgfTsKCiAgICAgICAgIyB1cGRhdGUgRHluYW1pYyBGaWVsZHMgUG9zc2libGUgVmFsdWVzIHZpYSBBSkFYCiAgICAgICAgbXkgQER5bmFtaWNGaWVsZEFKQVg7CgogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICV7ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9IH0gKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiByZWYgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICQjeyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0gfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn1bJGldIC8vICcnICkKICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifVskaV0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAkTmFtZSAuICdfJyAuICRpLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9WyRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRlbXBsYXRlIHZhbHVlIGZvciBrZWVwaW5nIHRlbXBsYXRlcyBpbiBsaW5lIHdpdGggQUNMcwogICAgICAgICAgICAgICAgaWYgKCAhJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJyBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9IC8vICcnLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICA/ICggJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9IC8vICcnICkKICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRTZXRGaWVsZCAoIHZhbHVlcyAkRHluRmllbGRTdGF0ZXN7U2V0c30tPiUqICkgewogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFNldEZpZWxkLT57RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAgICAgICAgICMgdGhlIGZyb250ZW5kIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkIGluY2x1ZGluZyBpdHMgaW5kZXggb3IgdGhlICdfVGVtcGxhdGUnIHN1ZmZpeAogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRnJvbnRlbmROYW1lICgga2V5cyAkU2V0RmllbGQtPntGaWVsZFN0YXRlc30tPiUqICkgewoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gJiYgcmVmICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICQjeyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICRGcm9udGVuZE5hbWUgLiAiXyRpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfVskaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRlbXBsYXRlIHZhbHVlIGZvciBrZWVwaW5nIHRlbXBsYXRlcyBpbiBsaW5lIHdpdGggQUNMcwogICAgICAgICAgICAgICAgICAgIGlmICggISRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtOb3RBQ0xSZWR1Y2libGV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJyBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICAgICAgPyAoICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gLy8gJycgKQogICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJEZyb250ZW5kTmFtZSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9LAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSApICkgewogICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdSZXN0cmljdGlvbnNfVmlzaWJpbGl0eScsCiAgICAgICAgICAgICAgICBEYXRhID0+ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICBARHluYW1pY0ZpZWxkQUpBWCwKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBwcmUtZmlsbGluZyBjYWNoZSBmb3IgcmVmZXJlbmNlIGZpZWxkIC0gbmVjZXNzYXJ5IGZvciBBQ0wgY2FsY3VsYXRpb24gb2YgbGVucyBmaWVsZHMKICAgICAgICBEWU5BTUlDRklFTERDT05GSUc6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRJc1JlZmVyZW5jZUZpZWxkID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1JlZmVyZW5jZUZpZWxkJywKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgdW5sZXNzICRJc1JlZmVyZW5jZUZpZWxkOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyktPlNldEZvcm1EYXRhKAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgS2V5ICAgICAgICAgID0+ICdQb3NzaWJsZVZhbHVlc19EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJExvb3BQcm90ZWN0aW9uID0gMTAwOwoKICAgICAgICAjIGdldCB2YWx1ZXMgYW5kIHZpc2liaWxpdHkgb2YgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAlRHluRmllbGRTdGF0ZXMgPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkdldEZpZWxkU3RhdGVzKAogICAgICAgICAgICBDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0+ICRDb25maWdJdGVtT2JqZWN0LAogICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgICAgID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIEdldFBhcmFtICAgICAgICAgICAgICAgICAgPT4geyVHZXRQYXJhbX0sCiAgICAgICAgICAgIEF1dG9zZWxlY3QgICAgICAgICAgICAgICAgPT4gJEF1dG9zZWxlY3QsCiAgICAgICAgICAgIEFDTFByZXNlbGVjdGlvbiAgICAgICAgICAgPT4gJEFDTFByZXNlbGVjdGlvbiwKICAgICAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLAogICAgICAgICk7CgogICAgICAgICMgc3RvcmUgbmV3IHZhbHVlcwogICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9ID0gewogICAgICAgICAgICAleyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSB9LAogICAgICAgICAgICAleyAkRHluRmllbGRTdGF0ZXN7TmV3VmFsdWVzfSB9LAogICAgICAgIH07CgogICAgICAgICVEeW5hbWljRmllbGRWaXNpYmlsaXR5ICAgICA9ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fS0+JSo7CiAgICAgICAgJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzID0gbWFwIHsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JF99e1Bvc3NpYmxlVmFsdWVzfSB9IGtleXMgJER5bkZpZWxkU3RhdGVze0ZpZWxkc30tPiUqOwogICAgfQoKICAgIG15ICROYW1lRWRpdGFibGUgICA9ICROYW1lTW9kdWxlID8gMCA6IDE7CiAgICBteSAkUm93TmFtZUludmFsaWQgPSAkQ29uZmlnSXRlbS0+e05hbWV9CgogICAgICAgICMgSWYgYSBuYW1lIGV4aXN0cyB0aGVuIG1hcmsgcmVnZXggYW5kIGR1cGxpY2F0ZSBlcnJvcnMuCiAgICAgICAgPyAoICggJENJTmFtZVJlZ2V4RXJyb3JNZXNzYWdlIHx8IElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKQoKICAgICAgICAjIElmIHRoZSBuYW1lIGRvZXMgbm90IGV4aXN0IGJ1dCBzaG91bGQgZXhpc3QgdGhlbiBtYXJrIGl0LgogICAgICAgIDogKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgJiYgJE5hbWVFZGl0YWJsZSApID8gJ1NlcnZlckVycm9yJyA6IHVuZGVmICk7CgogICAgIyBvdXRwdXQgbmFtZSBibG9jawogICAgaWYgKCAkQ29uZmlnSXRlbS0+e05hbWV9IHx8ICROYW1lRWRpdGFibGUgKSB7CgogICAgICAgICMgb3V0cHV0IG5hbWUgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93TmFtZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgUm93TmFtZUludmFsaWQgPT4gJFJvd05hbWVJbnZhbGlkLAogICAgICAgICAgICAgICAgUmVhZG9ubHkgICAgICAgPT4gISROYW1lRWRpdGFibGUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgc3BlY2lmaWMgZXJyb3JzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAjIGJ1aWxkIGFycmF5IHdpdGggQ0ktTnVtYmVycwogICAgICAgIG15IEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXI7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyROYW1lRHVwbGljYXRlc30gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgQ0kgbnVtYmVyCiAgICAgICAgICAgIG15ICRDSU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXIsICRDSU51bWJlcjsKICAgICAgICB9CgogICAgICAgIG15ICREdXBsaWNhdGVTdHJpbmcgPSBqb2luICcsICcsIEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXI7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJSZW5kZXJpbmcgYmxvY2sgZm9yIGR1cGxpY2F0ZXMgKENJLU51bWJlcnM6ICREdXBsaWNhdGVTdHJpbmcpIGVycm9yIG1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd05hbWVFcnJvckR1cGxpY2F0ZXMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIER1cGxpY2F0ZXMgPT4gJER1cGxpY2F0ZVN0cmluZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCRDSU5hbWVSZWdleEVycm9yTWVzc2FnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dOYW1lRXJyb3JSZWdFeCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUmVnRXhFcnJvck1lc3NhZ2UgPT4gJENJTmFtZVJlZ2V4RXJyb3JNZXNzYWdlLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoJFJvd05hbWVJbnZhbGlkKSB7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT57RGVidWd9ID4gMCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJSZW5kZXJpbmcgZGVmYXVsdCBlcnJvciBibG9jayIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93TmFtZUVycm9yRGVmYXVsdCcsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmVyc2lvblN0cmluZ0VkaXRhYmxlICAgPSAkVmVyc2lvblN0cmluZ01vZHVsZSA/IDAgOiAxOwogICAgbXkgJFZlcnNpb25TdHJpbmdEdXBsaWNhdGVzID0gW107CiAgICBteSAkUm93VmVyc2lvblN0cmluZ0ludmFsaWQgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9CgogICAgICAgICMgSWYgYSB2ZXJzaW9uIHN0cmluZyBleGlzdHMgdGhlbiBtYXJrIGR1cGxpY2F0ZSBlcnJvcnMuCiAgICAgICAgPyAoIElzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXMpID8gJ1NlcnZlckVycm9yJyA6IHVuZGVmICkKCiAgICAgICAgIyBJZiB0aGUgdmVyc2lvbiBzdHJpbmcgZG9lcyBub3QgZXhpc3QgYnV0IHNob3VsZCBleGlzdCB0aGVuIG1hcmsgaXQuCiAgICAgICAgOiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyAmJiAkVmVyc2lvblN0cmluZ0VkaXRhYmxlICkgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKTsKCiAgICAjIG91dHB1dCB2ZXJzaW9uIHN0cmluZyBibG9jawogICAgaWYgKCRWZXJzaW9uU3RyaW5nRWRpdGFibGUpIHsKCiAgICAgICAgIyBvdXRwdXQgdmVyc2lvbiBzdHJpbmcgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93VmVyc2lvblN0cmluZycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgUm93VmVyc2lvblN0cmluZ0ludmFsaWQgPT4gJFJvd1ZlcnNpb25TdHJpbmdJbnZhbGlkLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHNwZWNpZmljIGVycm9ycwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFZlcnNpb25TdHJpbmdEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgIyBidWlsZCBhcnJheSB3aXRoIENJLU51bWJlcnMKICAgICAgICBteSBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXN9ICkgewoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIENJIG51bWJlcgogICAgICAgICAgICBteSAkQ0lOdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyLCAkQ0lOdW1iZXI7CiAgICAgICAgfQoKICAgICAgICBteSAkRHVwbGljYXRlU3RyaW5nID0gam9pbiAnLCAnLCBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyOwoKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiUmVuZGVyaW5nIGJsb2NrIGZvciBkdXBsaWNhdGVzIChDSS1OdW1iZXJzOiAkRHVwbGljYXRlU3RyaW5nKSBlcnJvciBtZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dWZXJzaW9uU3RyaW5nRXJyb3JEdXBsaWNhdGVzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEdXBsaWNhdGVzID0+ICREdXBsaWNhdGVTdHJpbmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICgkUm93VmVyc2lvblN0cmluZ0ludmFsaWQpIHsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJlbmRlcmluZyBkZWZhdWx0IGVycm9yIGJsb2NrIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dWZXJzaW9uU3RyaW5nRXJyb3JEZWZhdWx0JywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIG91dHB1dCBkZXBsb3ltZW50IHN0YXRlIGludmFsaWQgYmxvY2sKICAgIG15ICRSb3dEZXBsU3RhdGVJbnZhbGlkID0gJyc7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUlEfSAmJiAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewogICAgICAgICRSb3dEZXBsU3RhdGVJbnZhbGlkID0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBEZXBsU3RhdGVPcHRpb25TdHJnCiAgICBteSAkRGVwbFN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0Zvcm1VcGRhdGUgVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplJyAuICRSb3dEZXBsU3RhdGVJbnZhbGlkLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17RGVwbFN0YXRlSUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBkZXBsb3ltZW50IHN0YXRlIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdSb3dEZXBsU3RhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBEZXBsU3RhdGVPcHRpb25TdHJnID0+ICREZXBsU3RhdGVPcHRpb25TdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ29wZXJhdGlvbmFsJywgJ2luY2lkZW50JyBdLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlIGludmFsaWQgYmxvY2sKICAgIG15ICRSb3dJbmNpU3RhdGVJbnZhbGlkID0gJyc7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZUlEfSAmJiAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewogICAgICAgICRSb3dJbmNpU3RhdGVJbnZhbGlkID0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBJbmNpU3RhdGVPcHRpb25TdHJnCiAgICBteSAkSW5jaVN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0luY2lTdGF0ZUlEJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0Zvcm1VcGRhdGUgVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplJyAuICRSb3dJbmNpU3RhdGVJbnZhbGlkLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17SW5jaVN0YXRlSUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBpbmNpZGVudCBzdGF0ZSBibG9jawogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUm93SW5jaVN0YXRlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSW5jaVN0YXRlT3B0aW9uU3RyZyA9PiAkSW5jaVN0YXRlT3B0aW9uU3RyZywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlIGJhc2UgdXJsCiAgICBteSAkVVJMID0gIkFjdGlvbj1QaWN0dXJlVXBsb2FkO0Zvcm1JRD0kU2VsZi0+e0Zvcm1JRH07Q29udGVudElEPSI7CgogICAgIyByZXBsYWNlIGxpbmtzIHRvIGlubGluZSBpbWFnZXMgaW4gaHRtbCBjb250ZW50CiAgICBteSBASW5saW5lQXR0YWNobWVudExpc3Q7CiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAnTkVXJyApIHsKICAgICAgICBASW5saW5lQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHN0b3JlIGluIGhhc2ggZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgbXkgJUlubGluZUF0dGFjaG1lbnRzOwogICAgRklMRU5BTUU6CiAgICBmb3IgbXkgJEZpbGVuYW1lIChASW5saW5lQXR0YWNobWVudExpc3QpIHsKICAgICAgICBteSAkRmlsZURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgJElubGluZUF0dGFjaG1lbnRzeyAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfSB9ID0gJEZpbGVEYXRhOwogICAgICAgICRJbmxpbmVBdHRhY2htZW50c3sgJEZpbGVEYXRhLT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH0gfS0+e0NvbnRlbnRJRH0gPSAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfTsKCiAgICAgICAgIyBhZGQgdXBsb2FkZWQgZmlsZSB0byB1cGxvYWQgY2FjaGUKICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVEYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsZURhdGEtPntDb250ZW50fSwKICAgICAgICAgICAgQ29udGVudElEICAgPT4gJEZpbGVEYXRhLT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRGaWxlRGF0YS0+e0NvbnRlbnRUeXBlfSwKCiAgICAgICAgICAgICMgY3VycmVudGx5LCBvbmx5IGlubGluZSBpbWFnZXMgZm9yIGRlc2NyaXB0aW9uIGFyZSBzdG9yZWQgYXQgdGhlIGNvbmZpZ2l0ZW0gdmVyc2lvbgogICAgICAgICAgICAjICAgc28gd2UgY2FuIHJlbHkgdXBvbiBkZWFsaW5nIHdpdGggaW5saW5lIGltYWdlcyBoZXJlCiAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBuZWVkZWQgdG8gcHJvdmlkZSBuZWNlc3NhcnkgcGFyYW1zIGZvciBSaWNoVGV4dERvY3VtZW50U2VydmUKICAgIG15ICRGaWVsZENvbnRlbnQgPSAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufTsKICAgIG15ICVEYXRhICAgICAgICAgPSAoCiAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCAvLyAnJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgKTsKCiAgICAjIHJlZm9ybWF0IHJpY2ggdGV4dCBkb2N1bWVudCB0byBoYXZlIGNvcnJlY3QgY2hhcnNldCBhbmQgbGlua3MgdG8KICAgICMgaW5saW5lIGRvY3VtZW50cwogICAgJURhdGEgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50U2VydmUoCiAgICAgICAgRGF0YSAgICAgICAgICAgICAgID0+IFwlRGF0YSwKICAgICAgICBVUkwgICAgICAgICAgICAgICAgPT4gJFVSTCwKICAgICAgICBBdHRhY2htZW50cyAgICAgICAgPT4gXCVJbmxpbmVBdHRhY2htZW50cywKICAgICAgICBMb2FkRXh0ZXJuYWxJbWFnZXMgPT4gMSwKICAgICk7CgogICAgJEZpZWxkQ29udGVudCA9ICREYXRhe0NvbnRlbnR9OwoKICAgICMgcmVtb3ZlIGFjdGl2ZSBodG1sIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CiAgICBteSAlU2FmZUNvbnRlbnQgICAgID0gJEhUTUxVdGlsc09iamVjdC0+U2FmZXR5KAogICAgICAgIFN0cmluZyAgICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgIE5vSW50U3JjTG9hZCA9PiAwLAogICAgICAgIE5vRXh0U3JjTG9hZCA9PiAwLAogICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgKTsKCiAgICAjIHRha2UgdGhlIHNhZmUgY29udGVudCBpZiBuZWNlc3NhcnkKICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2FmZUNvbnRlbnR7U3RyaW5nfTsKICAgIH0KCiAgICAjIGRldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcKICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICApOwoKICAgICMgc2V0IHRhcmdldD0iX2JsYW5rIiBhdHRyaWJ1dGUgdG8gYWxsIEhUTUwgPGE+IHRhZ3MKICAgICMgdGhlIExpbmtRdW90ZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYWdhaW4KICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgVGFyZ2V0QWRkID0+IDEsCiAgICApOwoKICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgIFN0cmluZyAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICApOwoKICAgICMgZXNjYXBlIHNpbmdsZSBxdW90ZXMKICAgICRGaWVsZENvbnRlbnQgPX4gcy8nLyYjMzk7L2c7CgogICAgIyByZW5kZXIgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRIVE1MOwogICAgbXkgJUdyb3VwTG9va3VwOwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSApICYmICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9ICkgewoKICAgICAgICAjIFRPRE86IGxvb2sgd2hhdCB0aGlzIHdhcy9pcyBhYm91dAogICAgICAgICMgICAgICAgICRTZWxmLT57Q3VzdG9tZXJTZWFyY2hJdGVtSURzfSA9IFtdOwoKICAgICAgICAjIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gc3dpdGNoIGJldHdlZW4gcGFnZXMgZm9yIHRoZSBlZGl0IG1hc2ssIHRvby4gS2VlcGluZyB0aGUgZmllbGRzIGluIHN5bmMKICAgICAgICAjICAgICAgIHdoaWxlIGVkaXRpbmcgbmVlZHMgYSBiaXQgbW9yZSBwcmVwYXJhdGlvbiB0aG91Z2gKICAgICAgICAjIFRodXMgZm9yIG5vdyBtYWtlIHN1cmUgdG8gc2hvdyBkeW5hbWljIGZpZWxkcyBvbmx5IG9uY2UsIGV2ZW4gaWYgcHJlc2VudCBvbiBtdWx0aXBsZSBwYWdlcy9zZWN0aW9ucwogICAgICAgIG15ICRGaWVsZHNTZWVuID0ge307CiAgICAgICAgbXkgJFNob3dEZXNjcmlwdGlvbjsKICAgICAgICBteSBAUGFnZUhUTUw7CiAgICAgICAgbXkgJFNlY3Rpb25IZWFkZXJUZW1wbGF0ZSA9ICc8ZGl2IGNsYXNzPSJSb3cgUm93X1NlY3Rpb25IZWFkZXIiPjxoMz5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2gzPjwvZGl2Pic7CgogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkUGFnZUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICBTRUNUSU9OOgogICAgICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2hvd0Rlc2NyaXB0aW9uID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHdlZWQgb3V0IG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIGR5bmFtaWMgZmllbGRzIC0gc2VlIGNvbW1lbnQgYWJvdmUKICAgICAgICAgICAgICAgICRTZWN0aW9uLT57Q29udGVudH0gPSAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFNlY3Rpb24tPntDb250ZW50fSwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgID0+ICRGaWVsZHNTZWVuLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgbXkgJEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RHluYW1pY0ZpZWxkOjpNYXNrJyktPkVkaXRTZWN0aW9uUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgICAgID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LAogICAgICAgICAgICAgICAgICAgIFVwZGF0YWJsZUZpZWxkcyAgICAgID0+IFxAVXBkYXRhYmxlRmllbGRzLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyAgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+IFwlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JzICAgICAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0LAogICAgICAgICAgICAgICAgICAgIFZpc2liaWxpdHkgICAgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRDb25maWdJdGVtLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkSFRNTCA9fiAvXHcvOwoKICAgICAgICAgICAgICAgIG15ICgkU2VjdGlvbkhlYWRlcikgPSBncmVwIHsgJF8tPntIZWFkZXJ9IH0gJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CiAgICAgICAgICAgICAgICBpZiAoJFNlY3Rpb25IZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAkUGFnZUR5bmFtaWNGaWVsZEhUTUwgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkU2VjdGlvbkhlYWRlclRlbXBsYXRlLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRTZWN0aW9uSGVhZGVyLT57SGVhZGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRQYWdlRHluYW1pY0ZpZWxkSFRNTCAuPSAkSFRNTDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyAkUGFnZUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICBwdXNoIEBQYWdlSFRNTCwgewogICAgICAgICAgICAgICAgSFRNTCA9PiAkUGFnZUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSBAQWN0aXZlRHluYW1pY0ZpZWxkcyA9ICgga2V5cyAkRmllbGRzU2Vlbi0+JSogKTsKCiAgICAgICAgIyBzdG9yZSB0aGUgYWN0aXZlIGR5bmFtaWMgZmllbGRzLCB0byBvbmx5IHZhbGlkYXRlIHRob3NlCiAgICAgICAgJEZvcm1DYWNoZU9iamVjdC0+U2V0Rm9ybURhdGEoCiAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ0FjdGl2ZUR5bmFtaWNGaWVsZHMnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgPT4gXEBBY3RpdmVEeW5hbWljRmllbGRzLAogICAgICAgICk7CgogICAgICAgIGlmICggc2NhbGFyIEBQYWdlSFRNTCA+IDEgKSB7CiAgICAgICAgICAgIG15ICRIZWFkZXJUZW1wbGF0ZSA9CiAgICAgICAgICAgICAgICAnPHN1bW1hcnk+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X1BhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDxoci8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9zdW1tYXJ5Pic7CgogICAgICAgICAgICBmb3IgbXkgJFBhZ2UgKEBQYWdlSFRNTCkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzxkZXRhaWxzIGNsYXNzPSJQYWdlQ29udGVudCI+JzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkSGVhZGVyVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAkUGFnZS0+e0hUTUx9OwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzwvZGV0YWlscz4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFNob3dEZXNjcmlwdGlvbikgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzxkZXRhaWxzIGNsYXNzPSJQYWdlQ29udGVudCI+JzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkSGVhZGVyVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKEBQYWdlSFRNTCkgewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAkUGFnZUhUTUxbMF17SFRNTH07CiAgICAgICAgfQoKICAgICAgICBpZiAoJFNob3dEZXNjcmlwdGlvbikgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRGaWVsZENvbnRlbnQgLy8gJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICBteSBAQWxsQXR0YWNobWVudHNMaXN0ID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICk7CgogICAgIyBleGNsdWRlIGlubGluZSBhdHRhY2htZW50cyBhcyB0aGV5IGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkKICAgICRQYXJhbXtBdHRhY2htZW50TGlzdH0gPSBbIGdyZXAgeyAkXy0+e0Rpc3Bvc2l0aW9ufSBuZSAnaW5saW5lJyB9IEBBbGxBdHRhY2htZW50c0xpc3QgXTsKCiAgICAjIFRPRE8gbWF5YmUgcmVzdHJpY3QgdGhpcyB0byBvbmx5IGlmIGRmIHJpY2h0ZXh0IGFyZSB0byBiZSBkaXNwbGF5ZWQKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkU2VsZi0+e0NvbmZpZ317UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRTZWxmLT57Q29uZmlnfXtSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAmJiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKSB8fCAkRHVwbGljYXRlSUQgKSB7CgogICAgICAgICMgb3V0cHV0IGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0U21hbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0VuZFNtYWxsJyApOwoKICAgICAgICAjIG91dHB1dCBoZWFkZXIKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFZGl0JyksCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnU21hbGwnLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gJER5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlSUQgICAgICA9PiAkRHVwbGljYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgTmVjZXNzYXJ5IHN0dWZmIGZvciBBZGQgTmV3CiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGRlbGV0ZSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IGlmICEkSGFzQWNjZXNzOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBDbGFzc09wdGlvblN0cmcKICAgICAgICBteSAkQ2xhc3NPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVzEwMHBjJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBFbmQgTmVjZXNzYXJ5IHN0dWZmIGZvciBBZGQgTmV3CgogICAgICAgICMgb3V0cHV0IGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0Tm9ybWFsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc09wdGlvblN0cmcgPT4gJENsYXNzT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdFbmROb3JtYWwnICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0VkaXQnKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtRWRpdCcsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+ICREeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZUlEICAgICAgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQp9CgpzdWIgX0Rpc2NhcmRGaWVsZHNTZWVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRlbnQ7CiAgICBteSAkUmVmID0gcmVmICRQYXJhbXtDb250ZW50fTsKCiAgICBpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICBteSBAQ2xlYW5lZEFycmF5OwoKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoICRQYXJhbXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRSZWZFbGVtZW50ID0gcmVmICRFbGVtZW50OwoKICAgICAgICAgICAgaWYgKCAkUmVmRWxlbWVudCBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUmVmRWxlbWVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkRWxlbWVudC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTZWVufXsgJEVsZW1lbnQtPntERn0gfSsrICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkRWxlbWVudDsKICAgICAgICB9CgogICAgICAgICRDb250ZW50ID0gXEBDbGVhbmVkQXJyYXk7CiAgICB9CgogICAgZWxzaWYgKCAkUmVmIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlQ2xlYW5lZEhhc2g7CgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAkUGFyYW17Q29udGVudH0tPiUqICkgewogICAgICAgICAgICAkQ2xlYW5lZEhhc2h7JEtleX0gPSAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkUGFyYW17Q29udGVudH17JEtleX0sCiAgICAgICAgICAgICAgICBTZWVuICAgID0+ICRQYXJhbXtTZWVufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRDb250ZW50ID0gXCVDbGVhbmVkSGFzaDsKICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkQ29udGVudCA9ICRQYXJhbXtDb250ZW50fTsKICAgIH0KCiAgICByZXR1cm4gJENvbnRlbnQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemHistory.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBhbmQgY2hlY2sgY29uZmlnIGl0ZW0gSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICkgdW5sZXNzICRDb25maWdJdGVtSUQ7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJyksCiAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgKSB1bmxlc3MgJEhhc0FjY2VzczsKCiAgICAjIERlZmluZSB0cmFuc2xhdGFibGUgaGlzdG9yeSBzdHJpbmdzLgogICAgbXkgJUhpc3RvcnlTdHJpbmdzID0gKAogICAgICAgICdDSUhpc3Rvcnk6OkNvbmZpZ0l0ZW1DcmVhdGUnICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6VmVyc2lvbkNyZWF0ZScgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05ldyB2ZXJzaW9uIChJRD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpEZXBsb3ltZW50U3RhdGVVcGRhdGUnID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpJbmNpZGVudFN0YXRlVXBkYXRlJyAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6Q29uZmlnSXRlbURlbGV0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6TGlua0FkZCcgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6TGlua0RlbGV0ZScgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnKSwKICAgICAgICAnQ0lIaXN0b3J5OjpEZWZpbml0aW9uVXBkYXRlJyAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6Ok5hbWVVcGRhdGUnICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6OlZhbHVlVXBkYXRlJyAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIicpLAogICAgICAgICdDSUhpc3Rvcnk6OlZlcnNpb25EZWxldGUnICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdWZXJzaW9uICVzIGRlbGV0ZWQnKSwKICAgICAgICAnQ0lIaXN0b3J5OjpBdHRhY2htZW50QWRkJyAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRmlsZSAiJXMiIHVwbG9hZGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6QXR0YWNobWVudERlbGV0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0ZpbGUgIiVzIiByZW1vdmVkJyksCiAgICApOwoKICAgICMgZ2V0IGFsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwogICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwoKICAgICMgZ2V0IGFsbCBlbnRyaWVzIGluIHRoZSBoaXN0b3J5IGZvciB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSAkTGluZXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBnZXQgc2hvd24gdXNlciBpbmZvCiAgICBteSBATmV3TGluZXMgPSBAeyRMaW5lc307CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXInKSBlcSAncmV2ZXJzZScgKSB7CiAgICAgICAgQE5ld0xpbmVzID0gcmV2ZXJzZSBAeyRMaW5lc307CiAgICB9CgogICAgbXkgJFZlcnNpb24gPSAwOwogICAgZm9yIG15ICREYXRhVG1wIChATmV3TGluZXMpIHsKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgJXskRGF0YVRtcH0sCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbiwKICAgICAgICApOwoKICAgICAgICAjIHRyaW0gdGhlIGNvbW1lbnQgdG8gb25seSBzaG93IHZlcnNpb24gbnVtYmVyCiAgICAgICAgaWYgKCAkRGF0YXtIaXN0b3J5VHlwZX0gZXEgJ1ZlcnNpb25DcmVhdGUnICkgewogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1xELy9nOwogICAgICAgICAgICAkRGF0YXtWZXJzaW9uSUR9ID0gJERhdGF7Q29tbWVudH07CiAgICAgICAgICAgICRWZXJzaW9uID0gJERhdGF7Q29tbWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdEZXBsb3ltZW50U3RhdGVVcGRhdGUnICkgewoKICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IG5hbWVzLCBmaXJzdCBzcGxpdCB0aGUgcmVhc3NlbWJsZQogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9CiAgICAgICAgICAgICAgICBqb2luICclJScsCiAgICAgICAgICAgICAgICBtYXAgeyAkRGVwbFN0YXRlTGlzdC0+eyRffSB8fCAnJyB9CiAgICAgICAgICAgICAgICBzcGxpdCBtLyUlLywgJERhdGF7Q29tbWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdJbmNpZGVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgbmFtZXMsIGZpcnN0IHNwbGl0IHRoZSByZWFzc2VtYmxlCiAgICAgICAgICAgICREYXRhe0NvbW1lbnR9ID0KICAgICAgICAgICAgICAgIGpvaW4gJyUlJywKICAgICAgICAgICAgICAgIG1hcCB7ICRJbmNpU3RhdGVMaXN0LT57JF99IHx8ICcnIH0KICAgICAgICAgICAgICAgIHNwbGl0IG0vJSUvLCAkRGF0YXtDb21tZW50fTsKICAgICAgICB9CgogICAgICAgICMgcmVwbGFjZSB0ZXh0CiAgICAgICAgaWYgKCAkRGF0YXtDb21tZW50fSApIHsKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPX4gc3sgXEEgJSUgfXt9eG1zZzsKICAgICAgICAgICAgbXkgQFZhbHVlcyA9IHNwbGl0IC8lJS8sICREYXRhe0NvbW1lbnR9OwoKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkSGlzdG9yeVN0cmluZ3N7ICdDSUhpc3Rvcnk6OicgLiAkRGF0YXtIaXN0b3J5VHlwZX0gfSwKICAgICAgICAgICAgICAgIEBWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlbW92ZSBub3QgbmVlZGVkIHBsYWNlIGhvbGRlcgogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1wlcy8vZzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3cnLAogICAgICAgICAgICBEYXRhID0+IHslRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIHBhZ2UKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICBUeXBlICA9PiAnU21hbGwnCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICksCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemPrint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICk7CiAgICBteSAkVmVyc2lvbklEICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEIHx8ICEkVmVyc2lvbklEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICBpZiAoICEkSGFzQWNjZXNzICkgewoKICAgICAgICAjIGVycm9yIHBhZ2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwogICAgaWYgKCAhJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGxhc3QgdmVyc2lvbgogICAgbXkgJExhc3RWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwogICAgJENvbmZpZ0l0ZW0tPntDdXJyZW50TmFtZX0gPSAkTGFzdFZlcnNpb24tPntOYW1lfTsKCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25OdW1iZXIgPSAxOwogICAgTElTVFZFUlNJT05JRDoKICAgIGZvciBteSAkTGlzdFZlcnNpb25JRCAoIEB7JFZlcnNpb25MaXN0fSApIHsKCiAgICAgICAgbGFzdCBMSVNUVkVSU0lPTklEIGlmICRWZXJzaW9uSUQgZXEgJExpc3RWZXJzaW9uSUQ7CiAgICAgICAgJFZlcnNpb25OdW1iZXIrKzsKICAgIH0KCiAgICAjIGdldCB1c2VyIG9iamVjdAogICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgZ2V0IGNyZWF0ZSAmIGNoYW5nZSB1c2VyIGRhdGEKICAgIGZvciBteSAkS2V5IChxdyhDcmVhdGUgQ2hhbmdlKSkgewogICAgICAgICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnlOYW1lJyB9ID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW0tPnsgJEtleSAuICdCeScgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVzZXIgZGF0YSBvZiB2ZXJzaW9uIChjcmVhdGUgYnkpCiAgICAkQ29uZmlnSXRlbS0+e0NyZWF0ZUJ5TmFtZX0gPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57Q3JlYXRlQnl9LAogICAgKTsKCiAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgbGluayB0eXBlIGxpc3QKICAgIG15ICVMaW5rVHlwZUxpc3QgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGxpbmsgZGF0YQogICAgbXkgJUxpbmtEYXRhOwogICAgaWYgKCAkTGlua0xpc3RXaXRoRGF0YSAmJiByZWYgJExpbmtMaXN0V2l0aERhdGEgZXEgJ0hBU0gnICYmICV7JExpbmtMaXN0V2l0aERhdGF9ICkgewogICAgICAgICVMaW5rRGF0YSA9ICRMYXlvdXRPYmplY3QtPkxpbmtPYmplY3RUYWJsZUNyZWF0ZSgKICAgICAgICAgICAgTGlua0xpc3RXaXRoRGF0YSA9PiAkTGlua0xpc3RXaXRoRGF0YSwKICAgICAgICAgICAgVmlld01vZGUgICAgICAgICA9PiAnU2ltcGxlUmF3JywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGF0dGFjaG1lbnRzCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgZ2VuZXJhdGUgcGRmIG91dHB1dAogICAgbXkgJVBhZ2U7CgogICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICRQYWdle01heFBhZ2VzfSA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAxMDA7CiAgICB9CgogICAgbXkgJFRpdGxlID0gJENvbmZpZ0l0ZW0tPntDdXJyZW50TmFtZX07CgogICAgJFBhZ2V7TWFyZ2luVG9wfSAgICA9IDMwOwogICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICA9IDQwOwogICAgJFBhZ2V7TWFyZ2luQm90dG9tfSA9IDQwOwogICAgJFBhZ2V7TWFyZ2luTGVmdH0gICA9IDQwOwogICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlnSXRlbScpIC4gJyMnCiAgICAgICAgLiAkQ29uZmlnSXRlbS0+e051bWJlcn07CiAgICAkUGFnZXtIZWFkbGluZUxlZnR9ID0gJENvbmZpZ0l0ZW0tPntOYW1lfTsKICAgICRQYWdle1BhZ2VUZXh0fSAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1BhZ2UnKTsKICAgICRQYWdle1BhZ2VDb3VudH0gICAgPSAxOwoKICAgICMgY3JlYXRlIG5ldyBwZGYgZG9jdW1lbnQKICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6JyAuICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRW5jb2RlID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICApOwoKICAgICMgY3JlYXRlIGZpcnN0IHBkZiBwYWdlCiAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICVQYWdlLAogICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICApOwogICAgJFBhZ2V7UGFnZUNvdW50fSsrOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0IHRpdGxlCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRUaXRsZSwKICAgICAgICBGb250U2l6ZSA9PiAxMywKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgInByaW50ZWQgYnkiCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAncHJpbnRlZCBieSAlcyBhdCAlcycsCiAgICAgICAgICAgICRTZWxmLT57VXNlckZ1bGxuYW1lfSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+e1RpbWV9LAogICAgICAgICksCiAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTQsCiAgICApOwoKICAgICMgb3V0cHV0IGdlbmVyYWwgaW5mb3JtYXRpb24KICAgICRTZWxmLT5fUERGT3V0cHV0R2VuZXJhbEluZm9zKAogICAgICAgIFBhZ2UgICAgICAgPT4gXCVQYWdlLAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICApOwoKICAgIG15ICVTZWN0aW9ucyA9ICRTZWxmLT5fR2V0Q0lTZWN0aW9ucygKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgKTsKCiAgICAjIG91dHB1dCB2ZXJzaW9uIGluZm9zCiAgICAkU2VsZi0+X1BERk91dHB1dFZlcnNpb25JbmZvcygKICAgICAgICBQYWdlICAgICAgICAgID0+IFwlUGFnZSwKICAgICAgICBWZXJzaW9uICAgICAgID0+ICRDb25maWdJdGVtLAogICAgICAgIFZlcnNpb25OdW1iZXIgPT4gJFZlcnNpb25OdW1iZXIsCiAgICAgICAgREZTZWN0aW9ucyAgICA9PiAkU2VjdGlvbnN7REZTZWN0aW9uc30sCiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkU2VjdGlvbnN7RGVzY3JpcHRpb259LAogICAgKTsKCiAgICAjIG91dHB1dCBhdHRhY2htZW50cwogICAgaWYgKEBBdHRhY2htZW50cykgewogICAgICAgICRTZWxmLT5fUERGT3V0cHV0QXR0YWNobWVudHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICAgID0+IFwlUGFnZSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQXR0YWNobWVudERhdGEgPT4gXEBBdHRhY2htZW50cywKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGludGVybmFsIGJhY2sgbGlua3MKICAgICRTZWxmLT5fUERGT3V0cHV0QmFja2xpbmtzKAogICAgICAgIFBhZ2UgICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDb25maWdJdGVtLAogICAgICAgIExpbmtTZWN0aW9ucyA9PiAkU2VjdGlvbnN7TGlua1NlY3Rpb25zfSwKICAgICk7CgogICAgIyBvdXRwdXQgbGlua2VkIG9iamVjdHMKICAgIGlmICglTGlua0RhdGEpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dExpbmtlZE9iamVjdHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIExpbmtEYXRhICAgICA9PiBcJUxpbmtEYXRhLAogICAgICAgICAgICBMaW5rVHlwZUxpc3QgPT4gXCVMaW5rVHlwZUxpc3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEdldCBjdXJyZW50IHN5c3RlbSBkYXRldGltZSBvYmplY3QuCiAgICBteSAkQ3VycmVudFN5c3RlbURUT2JqID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgIyBjcmVhdGUgZmlsZSBuYW1lCiAgICBteSAkRmlsZW5hbWUgPSBzcHJpbnRmKAogICAgICAgICdjb25maWdpdGVtXyVzXyVzLnBkZicsCiAgICAgICAgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICRDdXJyZW50U3lzdGVtRFRPYmotPkZvcm1hdCggRm9ybWF0ID0+ICclRl8lSC0lTScgKSwKICAgICk7CiAgICBteSAkQ2xlYW5lZEZpbGVuYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZW5hbWVDbGVhblVwKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBUeXBlICAgICA9PiAnQXR0YWNobWVudCcsCiAgICApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEZpbGVuYW1lICAgID0+ICRDbGVhbmVkRmlsZW5hbWUsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL3BkZicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKSwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICk7Cn0KCnN1YiBfUERGT3V0cHV0R2VuZXJhbEluZm9zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFBhZ2UgQ29uZmlnSXRlbSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY3JlYXRlIGxlZnQgdGFibGUKICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NsYXNzJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtDb25maWdJdGVtfS0+e0NsYXNzfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtDb25maWdJdGVtfS0+e0N1cnJlbnROYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW19LT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDcmVhdGVkJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJXsgJFBhcmFte0NvbmZpZ0l0ZW19IH0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDcmVhdGVCeU5hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDaGFuZ2VCeU5hbWV9LAogICAgICAgIH0sCiAgICBdOwoKICAgIG15ICRSb3dzID0gQHskVGFibGVMZWZ0fTsKICAgIGlmICggQHskVGFibGVSaWdodH0gPiAkUm93cyApIHsKICAgICAgICAkUm93cyA9IEB7JFRhYmxlUmlnaHR9OwogICAgfQoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgZm9yIG15ICRSb3cgKCAxIC4uICRSb3dzICkgewogICAgICAgICRSb3ctLTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntWYWx1ZX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0NvbnRlbnR9ICAgICAgICAgPSAnICc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0JhY2tncm91bmRDb2xvcn0gPSAnI0ZGRkZGRic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bNF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntWYWx1ZX07CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSAxNzAuNTsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzJde1dpZHRofSA9IDQ7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVszXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzRde1dpZHRofSA9IDE3MC41OwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ICA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgID0gMzsKCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBsYXN0IFBBR0UgaWYgJFRhYmxlUGFyYW17U3RhdGV9OwoKICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhcmFte1BhZ2V9LT57UGFnZVRleHR9IC4gJyAnIC4gJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRMaW5rZWRPYmplY3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBMaW5rRGF0YSBMaW5rVHlwZUxpc3QpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQYWdlICAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUeXBlTGlzdCA9ICV7ICRQYXJhbXtMaW5rVHlwZUxpc3R9IH07CiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgICMgbXkgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBmb3IgbXkgJExpbmtUeXBlTGlua0RpcmVjdGlvbiAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7ICRQYXJhbXtMaW5rRGF0YX0gfSApIHsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBsaW5rIHR5cGUgbmFtZQogICAgICAgIG15IEBMaW5rRGF0YSAgICAgPSBzcGxpdCAvOjovLCAkTGlua1R5cGVMaW5rRGlyZWN0aW9uOwogICAgICAgIG15ICRMaW5rVHlwZU5hbWUgPSAkVHlwZUxpc3R7ICRMaW5rRGF0YVswXSB9LT57ICRMaW5rRGF0YVsxXSAuICdOYW1lJyB9OwogICAgICAgICRMaW5rVHlwZU5hbWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExpbmtUeXBlTmFtZSk7CgogICAgICAgICMgZGVmaW5lIGhlYWRsaW5lCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJExpbmtUeXBlTmFtZSAuICc6JzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJyc7CgogICAgICAgICMgZXh0cmFjdCBvYmplY3QgbGlzdAogICAgICAgIG15ICRPYmplY3RMaXN0ID0gJFBhcmFte0xpbmtEYXRhfS0+eyRMaW5rVHlwZUxpbmtEaXJlY3Rpb259OwoKICAgICAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7JE9iamVjdExpc3R9ICkgewoKICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJE9iamVjdExpc3QtPnskT2JqZWN0fSB9ICkgewoKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSB8fD0gJyc7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkSXRlbS0+e1RpdGxlfSB8fCAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICAgICAkUm93Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MzE7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xpbmtlZCBPYmplY3RzJyksCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRBdHRhY2htZW50cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQYWdlRGF0YSBDb25maWdJdGVtSUQgQXR0YWNobWVudERhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyRBcmd1bWVudH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJVBhZ2UgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgICMgYXR0YWNobWVudHMgYXJlIHJlbmRlcmVkIGludG8gYSBzZXBhcmF0ZSByb3cKICAgIEFUVEFDSE1FTlQ6CiAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCBAeyAkUGFyYW17QXR0YWNobWVudERhdGF9IH0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgY3VycmVudCBhdHRhY2htZW50CiAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudCwKICAgICAgICApOwoKICAgICAgICAjIGRlZmluZSBhdHRhY2htZW50IGxpbmUKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0gLiAnICAoJyAuICRBdHRhY2htZW50RGF0YS0+e0ZpbGVzaXplfSAuICcpJzsKCiAgICAgICAgJFJvdysrOwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgZ2V0IHBkZiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0F0dGFjaG1lbnRzJyksCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyB0YWJsZSBwYXJhbXMKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9HZXRDSVNlY3Rpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIGlmICEkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgIG15ICREZXNjcmlwdGlvbjsKICAgIG15IEBMaW5rU2VjdGlvbnM7CiAgICBteSBAREZTZWN0aW9uczsKICAgIG15ICVTZWN0aW9uc1NlZW47CiAgICBteSAlR3JvdXBMb29rdXA7CgogICAgUEFHRToKICAgIGZvciBteSAkUGFnZSAoICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgaWYgKCAkUGFnZS0+e0ludGVyZmFjZXN9ICkgewogICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRfIGVxICdBZ2VudCcgfSAkUGFnZS0+e0ludGVyZmFjZXN9LT5AKjsKICAgICAgICB9CgogICAgICAgIGlmICggJFBhZ2UtPntHcm91cHN9ICkgewogICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgIH0KCiAgICAgICAgU0VDVElPTjoKICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgbmV4dCBTRUNUSU9OIGlmICRTZWN0aW9uc1NlZW57ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfSsrOwogICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwoKICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICYmICRTZWN0aW9uLT57VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9IGVxICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgJERlc2NyaXB0aW9uID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNlY3Rpb24tPntUeXBlfSBlcSAnQ29uZmlnSXRlbUxpbmtzJyApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBMaW5rU2VjdGlvbnMsICRTZWN0aW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAREZTZWN0aW9ucywgJFNlY3Rpb247CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICgKICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJERlc2NyaXB0aW9uLAogICAgICAgIERGU2VjdGlvbnMgICA9PiBcQERGU2VjdGlvbnMsCiAgICAgICAgTGlua1NlY3Rpb25zID0+IFxATGlua1NlY3Rpb25zLAogICAgKTsKfQoKc3ViIF9QREZPdXRwdXRWZXJzaW9uSW5mb3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZSBWZXJzaW9uIFZlcnNpb25OdW1iZXIpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZlcnNpb24nKSAuICcgJwogICAgICAgICAgICAuICRQYXJhbXtWZXJzaW9uTnVtYmVyfSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIGNyZWF0ZSB0YWJsZQogICAgbXkgJFRhYmxlID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDcmVhdGVkJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJXsgJFBhcmFte1ZlcnNpb259IH0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17VmVyc2lvbn0tPntDcmVhdGVCeU5hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgIFZhbHVlID0+ICcgJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOYW1lJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtWZXJzaW9ufS0+e05hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmVyc2lvbn0tPntEZXBsU3RhdGV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17RGVzY3JpcHRpb259ICYmICRQYXJhbXtWZXJzaW9ufXtEZXNjcmlwdGlvbn0gKSB7CiAgICAgICAgbXkgJFBsYWluRGVzY3JpcHRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoIFN0cmluZyA9PiAkUGFyYW17VmVyc2lvbn17RGVzY3JpcHRpb259ICk7CiAgICAgICAgJFBsYWluRGVzY3JpcHRpb24gPX4gcy9eW1xuXHJdKy8vOwogICAgICAgICRQbGFpbkRlc2NyaXB0aW9uID1+IHMvW1xuXHJdKyQvLzsKCiAgICAgICAgcHVzaCAkVGFibGUtPkAqLCAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICcgJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICcgJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXNjcmlwdGlvbicpIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBsYWluRGVzY3JpcHRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkIGRhdGEgdG8gdGFibGUKICAgICRTZWxmLT5fUERGT3V0cHV0REZPdXRwdXQoCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICAgICAgREZTZWN0aW9ucyA9PiAkUGFyYW17REZTZWN0aW9uc30sCiAgICAgICAgVGFibGVEYXRhICA9PiAkVGFibGUsCiAgICApOwoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgbXkgJFJvd3MgPSBAeyRUYWJsZX07CgogICAgZm9yIG15ICRSb3cgKCAxIC4uICRSb3dzICkgewogICAgICAgICRSb3ctLTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkVGFibGUtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRUYWJsZS0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDEwMDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQxMTsKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ICAgICAgPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9IC4uICRQYXJhbXtQYWdlfS0+e01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSglVGFibGVQYXJhbSk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGxhc3QgUEFHRSBpZiAkVGFibGVQYXJhbXtTdGF0ZX07CgogICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICV7ICRQYXJhbXtQYWdlfSB9LAogICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFyYW17UGFnZX0tPntQYWdlVGV4dH0gLiAnICcgLiAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9LAogICAgICAgICk7CiAgICAgICAgJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSsrOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dERGT3V0cHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIGlmICEkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgIG15IEBERk9yZGVyZWQ7CiAgICBteSAlREZTZWVuOwogICAgbXkgJEdyZXBERjsKICAgICRHcmVwREYgPSBzdWIgewogICAgICAgIEVOVFJZOgogICAgICAgIGZvciBteSAkRW50cnkgKEBfKSB7CiAgICAgICAgICAgIGlmICggJEVudHJ5LT57REZ9ICkgewogICAgICAgICAgICAgICAgbmV4dCBFTlRSWSBpZiAkREZTZWVueyAkRW50cnktPntERn0gfSsrOwoKICAgICAgICAgICAgICAgIHB1c2ggQERGT3JkZXJlZCwgJEVudHJ5LT57REZ9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEVudHJ5LT57R3JpZH0gJiYgJEVudHJ5LT57R3JpZH17Um93c30gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRFbnRyeS0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAkR3JlcERGLT4oICRSb3ctPkAqICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb24gKCBAeyAkUGFyYW17REZTZWN0aW9uc30gLy8gW10gfSApIHsKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgISRTZWN0aW9uLT57Q29udGVudH07CgogICAgICAgICRHcmVwREYtPiggJFNlY3Rpb24tPntDb250ZW50fS0+QCogKTsKICAgIH0KCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIERGTkFNRToKICAgIGZvciBteSAkREZOYW1lIChAREZPcmRlcmVkKSB7CiAgICAgICAgbmV4dCBERk5BTUUgdW5sZXNzICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJERGTmFtZSB9OwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9OwoKICAgICAgICBteSAkRGlzcGxheVZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUgfSwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFZhbHVlID0gJERpc3BsYXlWYWx1ZS0+e1ZhbHVlfTsKCiAgICAgICAgIyByZXBsYWNlIG5ld2xpbmVzIHdpdGggPGJyLz4gKGZpeCBmb3IgYnVnIyA1OTI4KQogICAgICAgICRWYWx1ZSA9fiBzeyBcbiB9ezxici8+fWd4bXM7CgogICAgICAgICMgY29udmVydCB2YWx1ZSB0byBhc2NpaQogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSggU3RyaW5nID0+ICRWYWx1ZSApOwoKICAgICAgICAjIG5ldyByb3cKICAgICAgICBteSAkTmV3Um93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgIH07CgogICAgICAgICMgYWRkIHJvdyBkYXRhCiAgICAgICAgcHVzaCBAeyAkUGFyYW17VGFibGVEYXRhfSB9LCAkTmV3Um93OwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dEJhY2tsaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQYWdlIENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIERlZmluaXRpb25JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17RGVmaW5pdGlvbklEfSwKICAgICk7CgogICAgbXkgQEJhY2tsaW5rU2VjdGlvbnMgPSBAeyAkUGFyYW17TGlua1NlY3Rpb25zfSAvLyBbXSB9OwoKICAgIHJldHVybiAgIGlmICEkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwogICAgcmV0dXJuIDEgaWYgIUBCYWNrbGlua1NlY3Rpb25zOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkUERGT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICREZWZhdWx0SGVhZGVyID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdSZWZlcmVuY2VkIGJ5Jyk7CgogICAgU0VDVElPTjoKICAgIGZvciBteSAkU2VjdGlvbiAoQEJhY2tsaW5rU2VjdGlvbnMpIHsKCiAgICAgICAgbXkgJERpcmVjdGlvbiA9ICRTZWN0aW9uLT57TGlua2VkQXN9IHx8ICdTb3VyY2UnOwogICAgICAgIG15ICRUeXBlcyAgICAgPSBJc0FycmF5UmVmV2l0aERhdGEoICRTZWN0aW9uLT57TGlua1R5cGVzfSApID8gJFNlY3Rpb24tPntMaW5rVHlwZXN9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmOwogICAgICAgIG15ICRIZWFkZXIgICAgPSAkU2VjdGlvbi0+e0hlYWRlcn0gICAgICAgICAgICAgICAgICAgICAgICAgID8gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkU2VjdGlvbi0+e0hlYWRlcn0gKSA6ICREZWZhdWx0SGVhZGVyOwoKICAgICAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgICAgIFR5cGVzICAgICAgICA9PiAkVHlwZXMsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIG5leHQgU0VDVElPTiBpZiAhQHsgJExpbmtlZENvbmZpZ0l0ZW1zIC8vIFtdIH07CgogICAgICAgIG15ICVMaW5rZWRDbGFzc2VzOwoKICAgICAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMaW5rLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQHsgJExpbmtlZENsYXNzZXN7ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gfSwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRIZWFkZXIsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGFibGUKICAgICAgICBteSAkVGFibGUgPSBbXTsKCiAgICAgICAgZm9yIG15ICRDbGFzcyAoIGtleXMgJUxpbmtlZENsYXNzZXMgKSB7CiAgICAgICAgICAgIHB1c2ggJFRhYmxlLT5AKiwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDbGFzcyksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkTGlua2VkQ2xhc3Nlc3skQ2xhc3N9WzBde05hbWV9LAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICRpICggMSAuLiAkI3sgJExpbmtlZENsYXNzZXN7JENsYXNzfSB9ICkgewogICAgICAgICAgICAgICAgcHVzaCAkVGFibGUtPkAqLCB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJyAnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMaW5rZWRDbGFzc2VzeyRDbGFzc31bJGlde05hbWV9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CiAgICAgICAgbXkgJFJvd3MgPSBAeyRUYWJsZX07CgogICAgICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAgICAgJFJvdy0tOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkVGFibGUtPlskUm93XS0+e0tleX07CiAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntWYWx1ZX07CiAgICAgICAgfQoKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSAxMDA7CiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDExOwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ICAgICAgPSAnI0RERERERCc7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgICA9IDM7CgogICAgICAgICMgb3V0cHV0IHRhYmxlCiAgICAgICAgUEFHRToKICAgICAgICBmb3IgKCAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9IC4uICRQYXJhbXtQYWdlfS0+e01heFBhZ2VzfSApIHsKCiAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgICAgICBsYXN0IFBBR0UgaWYgJFRhYmxlUGFyYW17U3RhdGV9OwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICV7ICRQYXJhbXtQYWdlfSB9LAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhcmFte1BhZ2V9LT57UGFnZVRleHR9IC4gJyAnIC4gJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZWFyY2hQcm9maWxlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgdXNlIGNvbHVtbiBjb25maWdzIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbScpLT57Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfTsKICAgICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fSAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0nKS0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDEwMDAwOwogICAgJFNlbGYtPntTb3J0Qnl9ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ051bWJlcic7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgIHx8ICcnOwogICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzIG9uIHRoZSBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gaWYgISRIYXNBY2Nlc3M7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgaWQKICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgIyBjaGVjayBpZiBjbGFzcyBpZCBpcyB2YWxpZAogICAgaWYgKCAkQ2xhc3NJRCAmJiAhJENsYXNzTGlzdC0+eyRDbGFzc0lEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIENsYXNzSUQhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIG15ICREZWZpbml0aW9uOwoKICAgIGlmICgkQ2xhc3NJRCkgewoKICAgICAgICAjIHNldCBmaWx0ZXIgcGFyYW1zIGZvciBzaG93aW5nIGNvcnJlY3QgY29sdW1ucwogICAgICAgICRTZWxmLT57RmlsdGVyfSA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgJFNlbGYtPntGaWx0ZXJzfS0+JSogPSBtYXAgewogICAgICAgICAgICAkXyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICRfLAogICAgICAgICAgICB9CiAgICAgICAgfSB2YWx1ZXMgJENsYXNzTGlzdC0+JSo7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZGVmaW5pdGlvbgogICAgICAgICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENsYXNzSUQgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTZXRJbm5lckZpZWxkczsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCc7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICAgICAjIGl0ZXJhdGUgdGhlIGVudGlyZSBJbmNsdWRlIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlcnNpb25lZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3MKICAgICAgICAgICAgSU5DTFVERUVMRU1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZUVsZW1lbnQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkSW5jbHVkZUVsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gKTsKICAgICAgICAgICAgICAgICAgICAkU2V0SW5uZXJGaWVsZHN7ICRJbmNsdWRlRWxlbWVudC0+e0RGfSB9ID0gJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICkgewoKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVFTEVNRU5UIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJEluY2x1ZGVFbGVtZW50LT57R3JpZH0gKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVFTEVNRU5UIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9e1Jvd3N9ICk7CgogICAgICAgICAgICAgICAgICAgIFJPVzoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgUk9XIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFJvdyk7CgogICAgICAgICAgICAgICAgICAgICAgICBST1dFTEVNRU5UOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvd0VsZW1lbnQgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFJvd0VsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkUm93RWxlbWVudC0+e0RGfSB9ID0gJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID0gewogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgICAgICAgICAlU2V0SW5uZXJGaWVsZHMsCiAgICAgICAgfTsKCiAgICAgICAgIyBsb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMKICAgICAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFNlbGYtPntQcm9maWxlfSApIHx8ICRTZWxmLT57VGFrZUxhc3RTZWFyY2h9ICkgewogICAgICAgICAgICAlR2V0UGFyYW0gPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY29udmVydCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IGpvaW4gJzsnLCBAeyAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBkZWZhdWx0IHBhcmFtcyBvZiBkZWZhdWx0IGF0dHJpYnV0ZXMKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9ICkgewogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICEkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eKENvbmZpZ0l0ZW0pKENyZWF0ZXxDaGFuZ2UpLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQEl0ZW1zID0gc3BsaXQgLzsvLCAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gc3BsaXQgLz0vLCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSB8fD0gJFZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhOdW1iZXIgTmFtZSBSZXN1bHRGb3JtIFNob3duQXR0cmlidXRlcykpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkS2V5ICk7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgd2hpdGUgc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID1+IHMvXlxzKy8vZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgYXJyYXkgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhEZXBsU3RhdGVJRHMgSW5jaVN0YXRlSURzKSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBhcnJheSBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJEtleSApOwogICAgICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSA9IFxAQXJyYXk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IER5bmFtaWMgZmllbGRzIGZyb20gcGFyYW0gb2JqZWN0CiAgICAgICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2ggcHJvZmlsZQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlbGV0ZSBzZWFyY2ggcHJvZmlsZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUHJvZmlsZURlbGV0ZScgKSB7CgogICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgKTsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAxLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgaW5pdCBzZWFyY2ggZGlhbG9nIChzZWxlY3QgY2xhc3MpCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWCcgKSB7CgogICAgICAgIG15ICRFbXB0eVNlYXJjaCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbXB0eVNlYXJjaCcgKTsKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9ICkgewogICAgICAgICAgICAkRW1wdHlTZWFyY2ggPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9ICkgewoKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICBpZiAoICRLZXkgPX4gL14oQ29uZmlnSXRlbSkoQ3JlYXRlfENoYW5nZSkvICkgewogICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSBzcGxpdCAvPS8sICRJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSBjbGFzcwogICAgICAgICMgYXV0b21hdGljYWxseSBzaG93IHNlYXJjaCBtYXNrIGFmdGVyIHNlbGVjdGluZyBhIGNsYXNzIHZpYSBBSkFYCiAgICAgICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZWFyY2hDbGFzc0lEJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkQ2xhc3NJRCB8fCAnJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEFKQVgnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBFbXB0eVNlYXJjaCAgICAgPT4gJEVtcHR5U2VhcmNoLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzZXQgc2VhcmNoIGZpZWxkcyBmb3Igc2VsZWN0ZWQgY2xhc3MKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYVXBkYXRlJyB8fCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyApIHsKCiAgICAgICAgIyBDbGFzc0lEIGlzIHJlcXVpcmVkIGZvciB0aGUgc2VhcmNoIG1hc2sgYW5kIGZvciBhY3R1YWwgc2VhcmNoaW5nCiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDbGFzc0lEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gc2VhcmNoIGNsYXNzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4KICAgICAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zIG9mIGRlZmF1bHQgYXR0cmlidXRlcwogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSApIHsKCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eKENvbmZpZ0l0ZW0pKENyZWF0ZXxDaGFuZ2UpLyApIHsKICAgICAgICAgICAgICAgICAgICBteSBASXRlbXMgPSBzcGxpdCAvOy8sICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gc3BsaXQgLz0vLCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY29udmVydCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IGpvaW4gJzsnLCBAeyAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFRPRE8gbWF5YmUgbmljZXIgdG8gaGF2ZSB0aGlzIGFsc28gaW4gYSBzeXNjb25maWcgc2V0dGluZwogICAgICAgICMgaW5pdGlhbGl6aW5nIHdpdGggY29tbW9uIGF0dHJpYnV0ZXMKICAgICAgICBteSBAQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB3YWxrIHRocm91Z2ggZGVmaW5pdGlvbiB0byBjaGVjayBwZXJtaXNzaW9ucyBvbiBwYWdlcyB3aGljaCBjb250YWluIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAlUGVybWl0dGVkRHluYW1pY0ZpZWxkczsKICAgICAgICBteSAlR3JvdXBMb29rdXA7CgogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBTRUNUSU9OOgogICAgICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBuZSAnRHluYW1pY0ZpZWxkcycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcHJvY2VlZCBpZiBjb250ZW50IGlzIGVtcHR5CiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uLT57Q29udGVudH0tPkAqOwoKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uREZzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VjdGlvbkRGcykgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRERk5hbWUgKCAkU2VjdGlvbkRGcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyRERk5hbWV9ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWxzbyBpbmNsdWRlIFNldC1pbm5lciBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JERGTmFtZX17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTZXRJbm5lckZpZWxkcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RNYXNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9e0NvbmZpZ317SW5jbHVkZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRTZXRJbm5lckZpZWxkcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckRGICggJFNldElubmVyRmllbGRzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7JElubmVyREZ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkU2VwYXJhdG9yID0gMTsKCiAgICAgICAgIyBjcmVhdGUgZHluYW1pYyBmaWVsZHMgc2VhcmNoIG9wdGlvbnMgZm9yIGF0dHJpYnV0ZSBzZWxlY3QKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIGRlZmluaXRpb24KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBzb3J0IHsgJGEtPntMYWJlbH0gY21wICRiLT57TGFiZWx9IH0gdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRTZWxmLT57Q29uZmlnfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgICMgY3JlYXRlIGEgc2VwYXJhdG9yIGZvciBkeW5hbWljIGZpZWxkcyBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICgkRHluYW1pY0ZpZWxkU2VwYXJhdG9yKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlcGFyYXRvciA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBkeW5hbWljIGZpZWxkIGxhYmVsCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkRHluYW1pY0ZpZWxkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIHN1ZmZpeAogICAgICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRTdWZmaXggPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgJFByZWZlcmVuY2UtPntMYWJlbFN1ZmZpeH0sCiAgICAgICAgICAgICAgICApIHx8ICcnOwoKICAgICAgICAgICAgICAgIGlmICgkVHJhbnNsYXRlZFN1ZmZpeCkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkU3VmZml4ID0gJyAoJyAuICRUcmFuc2xhdGVkU3VmZml4IC4gJyknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSA9PiAnU2VhcmNoX0R5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVHJhbnNsYXRlZER5bmFtaWNGaWVsZExhYmVsIC4gJFRyYW5zbGF0ZWRTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIEhUTUwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRTZWxmLT57Q29uZmlnfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgaGlzdG9yaWNhbCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQogICAgICAgICAgICAgICAgICAgIG15ICRIaXN0b3JpY2FsVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPkhpc3RvcmljYWxWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREYXRhID0gJFBvc3NpYmxlVmFsdWVzOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBoaXN0b3JpYyB2YWx1ZXMgdG8gY3VycmVudCB2YWx1ZXMgKGlmIHRoZXkgZG9uJ3QgZXhpc3QgYW55bW9yZSkKICAgICAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRIaXN0b3JpY2FsVmFsdWVzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskSGlzdG9yaWNhbFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGF0YS0+eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRhLT57JEtleX0gPSAkSGlzdG9yaWNhbFZhbHVlcy0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJXskRGF0YX07CiAgICAgICAgICAgICAgICAgICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcyBmaWx0ZXIgZnJvbSBBQ0xzCiAgICAgICAgICAgICAgICAgICAgbXkgJEFDTCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IEZpbGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzRmlsdGVyfSA9IG1hcCB7ICRfID0+ICREYXRhLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGF0dHJpYnV0ZXMgc3RyaW5nIGZvciBhdHRyaWJ1dGVzIGxpc3QKICAgICAgICAkUGFyYW17QXR0cmlidXRlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0F0dHJpYnV0ZScsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBhdHRyaWJ1dGVzIHN0cmluZyBmb3IgcmVjb3Zlcnkgb24gYWRkIG9yIHN1YnRyYWN0IHNlYXJjaCBmaWVsZHMKICAgICAgICAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxAQXR0cmlidXRlcywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdBdHRyaWJ1dGVPcmlnJywKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICBteSAlUHJvZmlsZXMgPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwoKICAgICAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQcm9maWxlcywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICAgICAgSUQgICAgICAgICAgID0+ICdTZWFyY2hQcm9maWxlJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgIG15ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERlcGxTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0RlcGxTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBpbmNpZGVudCBzdGF0ZXMKICAgICAgICBteSAkQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdJbmNpU3RhdGVJRHMnLAogICAgICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9IHx8IFtdLAogICAgICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIG91dHB1dCBmb3JtYXQgc3RyaW5nCiAgICAgICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5vcm1hbCA9PiBUcmFuc2xhdGFibGUoJ05vcm1hbCcpLAogICAgICAgICAgICAgICAgUHJpbnQgID0+IFRyYW5zbGF0YWJsZSgnUHJpbnQnKSwKICAgICAgICAgICAgICAgIENTViAgICA9PiBUcmFuc2xhdGFibGUoJ0NTVicpLAogICAgICAgICAgICAgICAgRXhjZWwgID0+IFRyYW5zbGF0YWJsZSgnRXhjZWwnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUmVzdWx0Rm9ybScsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte1Jlc3VsdEZvcm19IHx8ICdOb3JtYWwnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBSkFYQ29udGVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPT4gJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgQXR0cmlidXRlc1N0cmcgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc1N0cmd9LAogICAgICAgICAgICAgICAgQXR0cmlidXRlc09yaWdTdHJnICAgICA9PiAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSwKICAgICAgICAgICAgICAgIFJlc3VsdEZvcm1TdHJnICAgICAgICAgPT4gJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSwKICAgICAgICAgICAgICAgIFByb2ZpbGVzU3RyZyAgICAgICAgICAgPT4gJFBhcmFte1Byb2ZpbGVzU3RyZ30sCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtOdW1iZXJ9IHx8ICcnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0gICB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIHNraXAgZmllbGRzIHRoYXQgSFRNTCBjb3VsZCBub3QgYmUgcmV0cmlldmVkCiAgICAgICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0UgaWYgIUlzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhdHRyaWJ1dGVzIGZvciBzZWFyY2gKICAgICAgICBteSBAU2VhcmNoQXR0cmlidXRlczsKCiAgICAgICAgbXkgJUdldFBhcmFtQmFja3VwID0gJUdldFBhcmFtOwoKICAgICAgICAjIHNob3cgYXR0cmlidXRlcwogICAgICAgIG15IEBTaG93bkF0dHJpYnV0ZXM7CiAgICAgICAgaWYgKCAkR2V0UGFyYW1CYWNrdXB7U2hvd25BdHRyaWJ1dGVzfSApIHsKICAgICAgICAgICAgQFNob3duQXR0cmlidXRlcyA9IHNwbGl0IC87LywgJEdldFBhcmFtQmFja3Vwe1Nob3duQXR0cmlidXRlc307CiAgICAgICAgfQogICAgICAgIG15ICVBbHJlYWR5U2hvd247CgogICAgICAgIGlmICgkQ2xhc3NJRCkgewogICAgICAgICAgICBJVEVNOgogICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBBdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICAgICBteSAkS2V5ID0gJEl0ZW0tPntLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICEkS2V5OwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgc2hvd24KICAgICAgICAgICAgICAgIGlmIChAU2hvd25BdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFNob3cgPSAwOwogICAgICAgICAgICAgICAgICAgIFNIT1dOX0FUVFJJQlVURToKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFNob3duQXR0cmlidXRlIChAU2hvd25BdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJ0xhYmVsJyAuICRLZXkgZXEgJFNob3duQXR0cmlidXRlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNob3cgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBTSE9XTl9BVFRSSUJVVEU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICEkU2hvdzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICMgU2tpcCB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICBuZXh0IElURU0gaWYgIWRlZmluZWQgJEdldFBhcmFtQmFja3VweyRLZXl9OwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgc3RyaW5ncwogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAkR2V0UGFyYW1CYWNrdXB7JEtleX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgICMgU2tpcCBlbXB0eSBhcnJheXMKICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkR2V0UGFyYW1CYWNrdXB7JEtleX0gZXEgJ0FSUkFZJyAmJiAhQHsgJEdldFBhcmFtQmFja3VweyRLZXl9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzaG93IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKCiAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hBdHRyaWJ1dGVzLCAkS2V5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE5vIHByb2ZpbGUsIHNob3cgZGVmYXVsdCBzY3JlZW4KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgTWVyZ2UgcmVndWxhciBzaG93L2hpZGUgc2V0dGluZ3MgYW5kIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIG15ICVEZWZhdWx0cyA9ICV7ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30gfHwge30gfTsKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRzICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29uZmlnfXtEeW5hbWljRmllbGR9IHx8IHt9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfXtEeW5hbWljRmllbGR9LT57JER5bmFtaWNGaWVsZHN9ID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgJERlZmF1bHRzeyJTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRzIn0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSBAT3JkZXJlZERlZmF1bHRzOwogICAgICAgICAgICBpZiAoJURlZmF1bHRzKSB7CgogICAgICAgICAgICAgICAgIyBvcmRlcmluZyBhdHRyaWJ1dGVzIG9uIHRoZSBzYW1lIG9yZGVyIGxpa2UgaW4gQXR0cmlidXRlcwogICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgICAgIG15ICRLZXlBdHIgPSAkSXRlbS0+e0tleX07CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJURlZmF1bHRzICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRLZXkgZXEgJEtleUF0ciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQE9yZGVyZWREZWZhdWx0cywgJEtleTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBLRVk6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoQE9yZGVyZWREZWZhdWx0cykgewogICAgICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7ICAgICMgSWdub3JlIGVudHJ5IGZvciBERiBjb25maWcKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAkQWxyZWFkeVNob3dueyRLZXl9OwogICAgICAgICAgICAgICAgICAgICRBbHJlYWR5U2hvd257JEtleX0gPSAxOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hBdHRyaWJ1dGVzLCAkS2V5OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIElmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBmdWxsdGV4dCBzZWFyY2guCiAgICAgICAgICAgIGlmICggIWtleXMgJUFscmVhZHlTaG93biApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEF0dHJpYnV0ZXMsICdGdWxsdGV4dCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15IEBQcm9maWxlQXR0cmlidXRlczsKCiAgICAgICAgIyBzaG93IGF0dHJpYnV0ZXMKICAgICAgICBteSAkQXR0cmlidXRlSXNVc2VkID0gMDsKICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICBuZXh0IEtFWSBpZiAhJEtleTsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgIWRlZmluZWQgJEdldFBhcmFteyRLZXl9OwogICAgICAgICAgICBuZXh0IEtFWSBpZiAkR2V0UGFyYW17JEtleX0gZXEgJyc7CiAgICAgICAgICAgIG5leHQgS0VZIGlmIHJlZiAkR2V0UGFyYW17JEtleX0gZXEgJ0FSUkFZJyAmJiAhJEdldFBhcmFteyRLZXl9LT5AKjsKCiAgICAgICAgICAgICRBdHRyaWJ1dGVJc1VzZWQgPSAxOwoKICAgICAgICAgICAgcHVzaCBAUHJvZmlsZUF0dHJpYnV0ZXMsICRLZXk7CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBjb25maWdpdGVtIG51bWJlcgogICAgICAgIGlmICggISRTZWxmLT57UHJvZmlsZX0gKSB7CgogICAgICAgICAgICAjIG1lcmdlIHNlYXJjaCBhbmQgcHJvZmlsZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmIChAU2VhcmNoQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgQFByb2ZpbGVBdHRyaWJ1dGVzID0gdW5pcSggQFByb2ZpbGVBdHRyaWJ1dGVzLCBAU2VhcmNoQXR0cmlidXRlcyApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFByb2ZpbGVBdHRyaWJ1dGVzID0gdW5pcSggQFByb2ZpbGVBdHRyaWJ1dGVzLCAnTnVtYmVyJyApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMnLAogICAgICAgICAgICBWYWx1ZSA9PiBcQFByb2ZpbGVBdHRyaWJ1dGVzLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgQUpBWCAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcGVyZm9ybSBzZWFyY2gKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICkgewoKICAgICAgICBteSAkU2VhcmNoRGlhbG9nID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaERpYWxvZycgKTsKCiAgICAgICAgIyBmaWxsIHVwIHByb2ZpbGUgbmFtZSAoZS5nLiB3aXRoIGxhc3Qtc2VhcmNoKQogICAgICAgIGlmICggISRTZWxmLT57UHJvZmlsZX0gfHwgISRTZWxmLT57U2F2ZVByb2ZpbGV9ICkgewogICAgICAgICAgICAkU2VsZi0+e1Byb2ZpbGV9ID0gJ2xhc3Qtc2VhcmNoJzsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4KICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoO1Byb2ZpbGU9JFNlbGYtPntQcm9maWxlfTsiCiAgICAgICAgICAgIC4gIlRha2VMYXN0U2VhcmNoPTE7U3RhcnRIaXQ9JFNlbGYtPntTdGFydEhpdH07U3ViYWN0aW9uPVNlYXJjaDsiCiAgICAgICAgICAgIC4gIk9yZGVyQnk9JFNlbGYtPntPcmRlckJ5fTtTb3J0Qnk9JFNlbGYtPntTb3J0Qnl9IjsKCiAgICAgICAgaWYgKCRDbGFzc0lEKSB7CiAgICAgICAgICAgICRVUkwgLj0gIjtDbGFzc0lEPSRDbGFzc0lEIjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICAgICAgbXkgJFNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKCiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIENsYXNzSUQgaXMgcmVxdWlyZWQgZm9yIHRoZSBzZWFyY2ggbWFzayBhbmQgZm9yIGFjdHVhbCBzZWFyY2hpbmcKICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENsYXNzSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHVzZXIgaXMgYWxsb3dlZCB0byBzZWFyY2ggY2xhc3MKICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIHNjcmVlbgogICAgICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY3VycmVudCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICAjIGFib3J0LCBpZiBubyBkZWZpbml0aW9uIGlzIGRlZmluZWQKICAgICAgICBpZiAoICEkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnLCAkQ2xhc3NJRCApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAlU2V0SW5uZXJGaWVsZHM7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfSApOwoKICAgICAgICAgICAgIyBpdGVyYXRlIHRoZSBlbnRpcmUgSW5jbHVkZSBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZXJzaW9uZWQgZHluYW1pYyBmaWVsZCBjb25maWdzCiAgICAgICAgICAgIElOQ0xVREVFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVFbGVtZW50ICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewoKICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSApIC4gJzo6JwogICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkSW5jbHVkZUVsZW1lbnQtPntERn0gfSA9ICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfSApIHsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTkNMVURFRUxFTUVOVCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfSApOwoKICAgICAgICAgICAgICAgICAgICBST1c6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfXtSb3dzfS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRSb3cpOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3dFbGVtZW50ICggJFJvdy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRSb3dFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUm93RWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXRJbm5lckZpZWxkc3sgJFJvd0VsZW1lbnQtPntERn0gfSA9ICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA9IHsKICAgICAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiwKICAgICAgICAgICAgJVNldElubmVyRmllbGRzLAogICAgICAgIH07CgogICAgICAgICMgd2FsayB0aHJvdWdoIGRlZmluaXRpb24gdG8gY2hlY2sgcGVybWlzc2lvbnMgb24gcGFnZXMgd2hpY2ggY29udGFpbiBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVQZXJtaXR0ZWREeW5hbWljRmllbGRzOwogICAgICAgIG15ICVHcm91cExvb2t1cDsKCiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CgogICAgICAgICAgICAjIEludGVyZmFjZXMgaXMgb3B0aW9uYWwsIGVmZmVjdGl2ZWx5IGRlZmF1bHQgdG8gWyAnQWdlbnQnIF0KICAgICAgICAgICAgaWYgKCAkUGFnZS0+e0ludGVyZmFjZXN9ICkgewogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQWdlbnQnIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntHcm91cHN9ICkgewogICAgICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgICAgICVHcm91cExvb2t1cCA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25Vc2VyR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ3JhbnQgYWNjZXNzIHRvIHRoZSBwYWdlIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJEdyb3VwTG9va3VweyRffSB9ICRQYWdlLT57R3JvdXBzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFNFQ1RJT046CiAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkNvbmZpZyAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb247CiAgICAgICAgICAgICAgICBpZiAoICRTZWN0aW9uLT57VHlwZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb25ERnMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0TWFzaygKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRTZWN0aW9uREZzKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJERGTmFtZSAoICRTZWN0aW9uREZzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7JERGTmFtZX0gPSAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhbHNvIGluY2x1ZGUgU2V0LWlubmVyIGZpZWxkcwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfXtGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFNldElubmVyRmllbGRzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JERGTmFtZX17Q29uZmlnfXtJbmNsdWRlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNldElubmVyRmllbGRzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyREYgKCAkU2V0SW5uZXJGaWVsZHMtPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3skSW5uZXJERn0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjb252ZXJ0IGF0dHJpYnV0ZXMKICAgICAgICBpZiAoICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9ICYmIHJlZiAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSBlcSAnJyApIHsKICAgICAgICAgICAgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gPSBbIHNwbGl0IC87LywgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gXTsKICAgICAgICB9CgogICAgICAgICMgc2F2ZSBzZWFyY2ggcHJvZmlsZSAodW5kZXIgbGFzdC1zZWFyY2ggb3IgcmVhbCBwcm9maWxlIG5hbWUpCiAgICAgICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gPSAxOwoKICAgICAgICAjIHJlbWVtYmVyIGxhc3Qgc2VhcmNoIHZhbHVlcyBvbmx5IGlmIHNlYXJjaCBpcyBjYWxsZWQgZnJvbSBhIHNlYXJjaCBkaWFsb2cKICAgICAgICAjIG5vdCBmcm9tIHJlc3VsdHMgcGFnZQogICAgICAgIGlmICggJFNlbGYtPntTYXZlUHJvZmlsZX0gJiYgJFNlbGYtPntQcm9maWxlfSAmJiAkU2VhcmNoRGlhbG9nICkgewoKICAgICAgICAgICAgIyByZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnIC4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgcHJvZmlsZSBwYXJhbXMKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gJiYgJEtleSBuZSAnV2hhdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVBdHRyaWJ1dGVMb29rdXA7CgogICAgICAgICMgY3JlYXRlIGF0dHJpYnV0ZSBsb29rdXAgdGFibGUKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7ICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IHx8IFtdIH0gKSB7CiAgICAgICAgICAgICRBdHRyaWJ1dGVMb29rdXB7JEF0dHJpYnV0ZX0gPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcyBzZWFyY2ggcGFyYW1ldGVycyBmb3IgdGlja2V0IHNlYXJjaAogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgISRBdHRyaWJ1dGVMb29rdXB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMYWJlbFNlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFByZWZlcmVuY2UtPntUeXBlfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSBAU2VhcmNoUmVzdWx0TGlzdDsKCiAgICAgICAgIyBzdGFydCBzZWFyY2ggaWYgY2FsbGVkIGZyb20gYSBzZWFyY2ggZGlhbG9nIG9yIGZyb20gYSByZXN1bHRzIHBhZ2UKICAgICAgICBpZiAoICRTZWFyY2hEaWFsb2cgfHwgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gKSB7CgogICAgICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgICAgICBAU2VhcmNoUmVzdWx0TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICBPcmRlckJ5ICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgICAgIFNvcnRCeSAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIENsYXNzSURzID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBpdGVtIGR5bmFtaWMgZmllbGRzIGZvciBDU1YgZGlzcGxheQogICAgICAgIG15ICRDU1ZEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgIE9iamVjdFR5cGUgID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4gJFNlbGYtPntDb25maWd9e1NlYXJjaENTVkR5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKAogICAgICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicKICAgICAgICAgICAgfHwKICAgICAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdFeGNlbCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgIyBjcmVhdGUgaGVhZCAoYWN0dWFsIGhlYWQgYW5kIGhlYWQgZm9yIGRhdGEgZmlsbCkKICAgICAgICAgICAgbXkgQFRtcENTVkhlYWQgPSBAeyAkU2VsZi0+e0NvbmZpZ317U2VhcmNoQ1NWRGF0YX0gfTsKICAgICAgICAgICAgbXkgQENTVkhlYWQgICAgPSBAeyAkU2VsZi0+e0NvbmZpZ317U2VhcmNoQ1NWRGF0YX0gfTsKCiAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgc2VsZWN0ZWQgZHluYW1pYyBmaWVsZHMgaW4gQ1ZTIHJlc3VsdHMKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15IEBDU1ZEYXRhOwoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQFNlYXJjaFJlc3VsdExpc3QpIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICAgICAgICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRIYXNBY2Nlc3M7CgogICAgICAgICAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICAgICAgICAgbXkgJExhc3RWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9LT57U2VhcmNoQ1NWRGF0YX0gfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHN0b3JlIGRhdGEKICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBUbXBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAjIGJhY2tlbmQKICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgPX4gbXtcQSBEeW5hbWljRmllbGRfICggW2EtekEtWlxkXC1dKyApIFx6fXhtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbG9vcCBvdmVyIHRoZSBkeW5hbWljIGZpZWxkcyBjb25maWd1cmVkIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgYWxsIGZpZWxkcyB0aGF0IGRvZXMgbm90IG1hdGNoIHdpdGggY3VycmVudCBmaWVsZCBuYW1lICgkMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCBvdXQgdGhlICdEeW5hbWljRmllbGRfJyBwcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBuZSAkMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgdmFsdWUgYXMgZm9yIHByaW50ICh0byBjb3JyZWN0bHkgZGlzcGxheSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkTGFzdFZlcnNpb24tPnskSGVhZGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkVmFsdWVTdHJnLT57VmFsdWV9OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGVybWluYXRlIHRoZSBEWU5BTUlDRklFTEQgbG9vcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIHJldHJpZXZlIGRhdGEgZnJvbSBhcnRpY2xlCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQERhdGEsICRMYXN0VmVyc2lvbi0+eyRIZWFkZXJ9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjc3YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQENTVkhlYWQgPSBAeyAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hDU1ZEYXRhfSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBDb25maWdJdGVtTnVtYmVyIGhlYWRlciB3aXRoIHRoZSBjdXJyZW50IENvbmZpZ0l0ZW1OdW1iZXIgaG9vayBmcm9tIHN5c2NvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdDb25maWdJdGVtTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6SG9vaycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBHZXQgU2VwYXJhdG9yIGZyb20gbGFuZ3VhZ2UgZmlsZS4KICAgICAgICAgICAgbXkgJFVzZXJDU1ZTZXBhcmF0b3IgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT57U2VwYXJhdG9yfTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpLT57Q1NWU2VwYXJhdG9yfS0+e0FjdGl2ZX0gKSB7CiAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggJFVzZXJEYXRhe1VzZXJDU1ZTZXBhcmF0b3J9ICkgewogICAgICAgICAgICAgICAgICAgICRVc2VyQ1NWU2VwYXJhdG9yID0gJFVzZXJEYXRhe1VzZXJDU1ZTZXBhcmF0b3J9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ1NWT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q1NWJyk7CiAgICAgICAgICAgIG15ICRDdXJTeXNEVE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJyApIHsKCiAgICAgICAgICAgICAgICAjIEFzc2VtYmxlIENTViBkYXRhLgogICAgICAgICAgICAgICAgbXkgJENTViA9ICRDU1ZPYmplY3QtPkFycmF5MkNTVigKICAgICAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICAgICAgU2VwYXJhdG9yID0+ICRVc2VyQ1NWU2VwYXJhdG9yLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFJldHVybiBDU1YgdG8gZG93bmxvYWQuCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAnY2hhbmdlX3NlYXJjaF8lcy5jc3YnLAogICAgICAgICAgICAgICAgICAgICAgICAkQ3VyU3lzRFRPYmplY3QtPkZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdCA9PiAnJUZfJUgtJU0nLAogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDU1YsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdFeGNlbCcgKSB7CgogICAgICAgICAgICAgICAgIyBBc3NlbWJsZSBFeGNlbCBkYXRhLgogICAgICAgICAgICAgICAgbXkgJEV4Y2VsID0gJENTVk9iamVjdC0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgICAgIEhlYWQgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJ0V4Y2VsJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gRXhjZWwgdG8gZG93bmxvYWQuCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAnY2hhbmdlX3NlYXJjaF8lcy54bHN4JywKICAgICAgICAgICAgICAgICAgICAgICAgJEN1clN5c0RUT2JqZWN0LT5Gb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJyVGXyVILSVNJywKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCIsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEV4Y2VsLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmludCBQREYgb3V0cHV0CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgIG15IEBQREZEYXRhOwoKICAgICAgICAgICAgIyBnZXQgcGRmIG9iamVjdAogICAgICAgICAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQFNlYXJjaFJlc3VsdExpc3QpIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICAgICAgICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRIYXNBY2Nlc3M7CgogICAgICAgICAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICAgICAgICAgbXkgJExhc3RWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHBkZiByb3dzCiAgICAgICAgICAgICAgICBteSBAUERGUm93OwogICAgICAgICAgICAgICAgZm9yIG15ICRTdG9yZURhdGEgKHF3KENsYXNzIEluY2lTdGF0ZSBOYW1lIE51bWJlciBEZXBsU3RhdGUgVmVyc2lvbklEIENyZWF0ZVRpbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkTGFzdFZlcnNpb24tPnskU3RvcmVEYXRhfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQFBERkRhdGEsIFxAUERGUm93OwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQREYgT3V0cHV0CiAgICAgICAgICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlndXJhdGlvbiBJdGVtJykgLiAnICcKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTZWFyY2gnKTsKICAgICAgICAgICAgbXkgJFByaW50ZWRCeSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgncHJpbnRlZCBieScpOwogICAgICAgICAgICBteSAkUGFnZSAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAgICAgICAgIG15ICRUaW1lICAgICAgPSAkTGF5b3V0T2JqZWN0LT57VGltZX07CgogICAgICAgICAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgICAgICAgICBteSAkTWF4UGFnZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgICAgICAgICAgaWYgKCAhJE1heFBhZ2VzIHx8ICRNYXhQYWdlcyA8IDEgfHwgJE1heFBhZ2VzID4gMTAwMCApIHsKICAgICAgICAgICAgICAgICRNYXhQYWdlcyA9IDEwMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGhlYWRlcgogICAgICAgICAgICBteSAkQ2VsbERhdGE7CgogICAgICAgICAgICAjIG91dHB1dCAnTm8gUmVzdWx0JywgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4KICAgICAgICAgICAgaWYgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NsYXNzJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05hbWUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTnVtYmVyJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzRdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNF0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNV0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVmVyc2lvbicpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls1XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls2XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDcmVhdGUgVGltZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls2XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIHRoZSBjb250ZW50IGFycmF5CiAgICAgICAgICAgICAgICBteSAkQ291bnRlclJvdyA9IDE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoQFBERkRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ291bnRlckNvbHVtbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb250ZW50ICggQHskUm93fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bJENvdW50ZXJSb3ddLT5bJENvdW50ZXJDb2x1bW5dLT57Q29udGVudH0gPSAkQ29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJDb2x1bW4rKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJSb3crKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTm8gUmVzdWx0IScpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHBhZ2UgcGFyYW1zCiAgICAgICAgICAgIG15ICVQYWdlUGFyYW07CiAgICAgICAgICAgICRQYWdlUGFyYW17UGFnZU9yaWVudGF0aW9ufSA9ICdsYW5kc2NhcGUnOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblRvcH0gICAgICAgPSAzMDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5SaWdodH0gICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luQm90dG9tfSAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkxlZnR9ICAgICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtIZWFkZXJSaWdodH0gICAgID0gJFRpdGxlOwoKICAgICAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAgICAgbXkgJVRhYmxlUGFyYW07CiAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfSAgICAgICAgICAgID0gJENlbGxEYXRhOwogICAgICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICA9IDY7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgID0gMTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgPSAzOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgICAgICAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAgICAgICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgICAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdGFydCB0YWJsZSBvdXRwdXQKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlUGFyYW0sCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgMScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IHRpdGxlCiAgICAgICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgICAgICBUZXh0ICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiAxMywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgInByaW50ZWQgYnkiCiAgICAgICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgICAgICBUZXh0ID0+ICRQcmludGVkQnkgLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckZ1bGxuYW1lfSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFRpbWUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTE0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUEFHRToKICAgICAgICAgICAgZm9yIG15ICRDb3VudCAoIDIgLi4gJE1heFBhZ2VzICkgewoKICAgICAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSglVGFibGVQYXJhbSk7CgogICAgICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBhbm90aGVyIHBhZ2UKICAgICAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICVQYWdlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdlIC4gJyAnIC4gJENvdW50LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIHRoZSBwZGYgZG9jdW1lbnQKICAgICAgICAgICAgbXkgJEN1cnJlbnRTeXN0ZW1EVE9iaiA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICAgICBteSAkUERGU3RyaW5nICAgICAgICAgID0gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICdjb25maWdpdGVtX3NlYXJjaF8lc18lcy5wZGYnLAogICAgICAgICAgICAgICAgICAgICRDdXJyZW50U3lzdGVtRFRPYmotPkZvcm1hdCggRm9ybWF0ID0+ICclRl8lSC0lTScgKSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbm9ybWFsIEhUTUwgb3V0cHV0CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHN0YXJ0IGh0bWwgcGFnZQogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAgICAgIyB1c2UgY2xhc3NuYW1lIGFzIGZpbHRlcgogICAgICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9ICAgICAgICAgICAgICAgICAgICB8fCAnQWxsJzsKICAgICAgICAgICAgJFNlbGYtPntWaWV3fSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1ZpZXd9ICkKICAgICAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTb3J0Qnl9ICkKICAgICAgICAgICAgICAgIC4gJztPcmRlckJ5PScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e09yZGVyQnl9ICkKICAgICAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkU2VsZi0+e1Byb2ZpbGV9IC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7Q2xhc3NJRD0nIC4gJENsYXNzSUQKICAgICAgICAgICAgICAgIC4gJzsnOwogICAgICAgICAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JyAuICRDbGFzc0lECiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtGaWx0ZXIgPSAnVGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDbGFzc0lEICkKICAgICAgICAgICAgICAgIC4gJzsnOwogICAgICAgICAgICBteSAkTGlua0JhY2sgPSAnU3ViYWN0aW9uPUxvYWRQcm9maWxlO1Byb2ZpbGU9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57UHJvZmlsZX0gKQogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDbGFzc0lEICkKICAgICAgICAgICAgICAgIC4gJztUYWtlTGFzdFNlYXJjaD0xOyc7CgogICAgICAgICAgICBteSAkQ2xhc3NOYW1lID0gJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgICAgICAgICAgbXkgJFRpdGxlICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnKQogICAgICAgICAgICAgICAgLiAnICcKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpCiAgICAgICAgICAgICAgICAuICcgJwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENsYXNzTmFtZSk7CgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFxAU2VhcmNoUmVzdWx0TGlzdCwKICAgICAgICAgICAgICAgIFRvdGFsICAgICAgICAgPT4gc2NhbGFyIEBTZWFyY2hSZXN1bHRMaXN0LAogICAgICAgICAgICAgICAgVmlldyAgICAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LAogICAgICAgICAgICAgICAgRmlsdGVyICAgICAgICA9PiAkQ2xhc3NOYW1lLAogICAgICAgICAgICAgICAgRW52ICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgICAgIExpbmtQYWdlICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICAgICAgTGlua1NvcnQgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgICAgICBMaW5rRmlsdGVyICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgICAgICAgICAgTGlua0JhY2sgICAgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBUaXRsZU5hbWUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgPT4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1NvcnRCeX0gKSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgPT4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e09yZGVyQnl9ICksCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgUmVxdWVzdFVSTCAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgICAgICAgICBCdWxrICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjYWxsIHNlYXJjaCBkaWFsb2cgZnJvbSBzZWFyY2ggZW1wdHkgc2NyZWVuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBzaG93IGRlZmF1bHQgc2VhcmNoIHNjcmVlbgogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEFjdGlvbiAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGZvb3RlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemTreeView.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IG5lZWRlZCBwYXJhbWV0ZXJzLAogICAgIyBvbmx5IHRoZSBWZXJzaW9uSUQgaXMgbmVlZGVkIGFzIHRoZSBWZXJzaW9uSUQgZGV0ZXJtaW5lcyB0aGUgQ29uZmlnSXRlbUlECiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbklEKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSAvLz0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISRHZXRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5lZWRlZCApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmVyc2lvbklEICAgID0gJEdldFBhcmFte1ZlcnNpb25JRH07CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25Db25maWdJdGVtSURHZXQoIFZlcnNpb25JRCA9PiAkVmVyc2lvbklEICk7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEZyb250ZW5kQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwogICAgbXkgJEFjY2VzcyAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgID0+ICRGcm9udGVuZENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGVycm9yIHNjcmVlbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICBNZXNzYWdlICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRGcm9udGVuZENvbmZpZy0+e1Blcm1pc3Npb259ICksCiAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICkgdW5sZXNzICRBY2Nlc3M7CgogICAgbXkgJERlcHRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0RlcHRoJyApCiAgICAgICAgfHwKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkNNREJUcmVlVmlldzo6RGVmYXVsdERlcHRoIikKICAgICAgICB8fAogICAgICAgIDE7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRUcmVlVmlldycgKSB7CgogICAgICAgICMgdGhlIEhUTUwgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIGZvciBkcmF3aW5nIHRoZSBncmFwaAogICAgICAgIG15ICRDYW52YXNIVE1MID0gJExheW91dE9iamVjdC0+R2VuZXJhdGVIaWVyYXJjaHlHcmFwaCgKICAgICAgICAgICAgRGVwdGggICAgICAgID0+ICREZXB0aCwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBTZXNzaW9uSUQgICAgPT4gJFNlbGYtPntTZXNzaW9uSUR9CiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ2FudmFzSFRNTCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuYW1lIGFuZCBudW1iZXIgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgQ2FjaGUgICAgICAgID0+IDEsCiAgICApOwoKICAgICMgVGhlIGFjdHVhbCB0cmVlIHdpbGwgYmUgd3JpdHRlbiBsYXRlciBpbnRvIHRoZSBkaXYgd2l0aCB0aGUgSUQgJ0NhbnZhcycuCiAgICAjIFRoZSBpbmZvcm1hdGlvbiBmb3IgZHJhd2luZyB0aGUgZ3JhcGggd2lsbCBiZSBmZXRjaGVkIHdpdGggJ0xvYWRUcmVlVmlldycuCiAgICAjIFNlZSB2YXIvaHR0cGQvaHRkb2NzL2pzL0NvcmUuQWdlbnQuVHJlZVZpZXcuanMgZm9yIHRoZSBmdW5jdGlvbiBVcGRhdGVUcmVlKCkuCiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU5hbWUgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBEZXB0aCAgICAgICAgICAgID0+ICREZXB0aCwKICAgICAgICAgICAgICAgIFNlc3Npb25JRCAgICAgICAgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICAgICAgU2hvd0xpbmtMYWJlbHMgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkNNREJUcmVlVmlldzo6U2hvd0xpbmtMYWJlbHMiKSB8fCAnWWVzJywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkQ29uZmlnSXRlbUlEICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJEdldFBhcmFtVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbnRlbnQKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJEdldFBhcmFtVmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0gbm90IGZvdW5kIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvbkxpc3QpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyB2ZXJzaW9ucyBmb3VuZCEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBUT0RPOiBDb21wYXJlIHdpdGggbGVnYWN5IGNvZGUgdG8gY2hlY2sgd2hldGhlciB0aGlzIGlzIGEgZ29vZCBwbGFjZS4gTGluZSAyNTYgdGhyb3dzIGFuIGVycm9yIGlmIG5vdCBzZXQsIGVsc2UKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH07CgogICAgIyBydW4gY29uZmlnIGl0ZW0gbWVudSBtb2R1bGVzCiAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlTWVudXMgICA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkTWVudXN7JE1lbnV9LT57TW9kdWxlfSApICkgewoKICAgICAgICAgICAgICAgIG15ICRPYmplY3QgPSAkTWVudXN7JE1lbnV9LT57TW9kdWxlfS0+bmV3KAogICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2VsZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNsYXNzZXMKICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ1BvcFVwJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e01lbnVDbGFzc30gPSAnQXNQb3B1cCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57TWVudUNsYXNzfSA9ICdIaXN0b3J5QmFjayc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgIENvdW50ZXIgICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgIE1lbnVJRCAgICAgPT4gJE1lbnUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBpbmNpZGVudCBzaWduYWwKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHRvIHN0b3JlIHRoZSBjb2xvciBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgKCRDb2xvcikgPSAkUHJlZmVyZW5jZXN7Q29sb3J9LT5AKjsKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvdmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIGJ1aWxkIHZlcnNpb24gc2VsZWN0aW9uCiAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGUgPT4gJ1slIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTsnCiAgICAgICAgICAgIC4gIkNvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07IgogICAgKTsKCiAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gKCAkQmFzZUxpbmsgLiAiVmVyc2lvbklEPSRfLT57VmVyc2lvbklEfSIgKSwKICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgIlZlcnNpb24gIiAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICApLAogICAgICAgIH0KICAgIH0gJFZlcnNpb25MaXN0LT5AKjsKCiAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcQFZlcnNpb25TZWxlY3Rpb25EYXRhLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnVmVyc2lvblNlbGVjdGlvbicsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWxlY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uU2VsZWN0aW9uID0+ICRWZXJzaW9uU2VsZWN0aW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlciggVmFsdWUgPT4gIkNJIyRDb25maWdJdGVtLT57TnVtYmVyfSIgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgaWYgYSB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzIChUT0RPOiBXaGVuIGRvZXMgaXQgbm90PykKICAgIGlmICggJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKCiAgICAgICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgbmFtZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiAgPT4gMTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57RGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBJZGVudGF0aW9uID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RhdGEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nKSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIG15ICVHcm91cExvb2t1cDsKICAgICAgICBteSBAUGFnZXM7CiAgICAgICAgbXkgJFBhZ2VTaG93bjsKICAgICAgICBteSAkUGFnZVJlcXVlc3RlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQYWdlJyApOwogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBQYWdlcywgJFBhZ2U7CgogICAgICAgICAgICBpZiAoICRQYWdlUmVxdWVzdGVkICYmICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VSZXF1ZXN0ZWQgKSB7CiAgICAgICAgICAgICAgICAkUGFnZVNob3duID0gJFBhZ2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VOYW1lJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lID0+ICRQYWdlc1swXXtOYW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJFBhZ2UgKEBQYWdlcykgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgICAgID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkR2V0UGFyYW1WZXJzaW9uSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkICAgICA9PiAkUGFnZS0+e05hbWV9IGVxICRQYWdlU2hvd24tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKEBQYWdlcykgewogICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0R5bmFtaWNGaWVsZEhUTUx9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQnKS0+UGFnZVJlbmRlcigKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgICAgICAgICAgUGFnZVJlZiAgICA9PiAkUGFnZVNob3duIC8vICRQYWdlc1swXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfQoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgY3JlYXRlICYgY2hhbmdlIHVzZXIgZGF0YQogICAgZm9yIG15ICRLZXkgKHF3KENyZWF0ZSBDaGFuZ2UpKSB7CiAgICAgICAgJENvbmZpZ0l0ZW0tPnsgJEtleSAuICdCeVVzZXJGdWxsTmFtZScgfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnknIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBtZXRhIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdGFibGUgdmlldyBtb2RlCiAgICBteSAkTGlua1RhYmxlVmlld01vZGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJyk7CgogICAgIyBjcmVhdGUgdGhlIGxpbmsgdGFibGUKICAgIG15ICRMaW5rVGFibGVTdHJnID0gJExheW91dE9iamVjdC0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgVmlld01vZGUgICAgICAgICA9PiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgT2JqZWN0ICAgICAgICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBvdXRwdXQgdGhlIGxpbmsgdGFibGUKICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMaW5rVGFibGUnIC4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtUYWJsZVN0cmcgPT4gJExpbmtUYWJsZVN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBteSBATm9uSW5saW5lQXR0YWNobWVudHM7CgogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgY3VycmVudCBhdHRhY2htZW50CiAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICAgICAgcHVzaCBATm9uSW5saW5lQXR0YWNobWVudHMsICRBdHRhY2htZW50RGF0YTsKICAgIH0KCiAgICBpZiAoQE5vbklubGluZUF0dGFjaG1lbnRzKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnREYXRhIChATm9uSW5saW5lQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHQnLAogICAgICAgIFZhbHVlID0+ICRTZWxmLT57U2Vzc2lvbn17VXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHR9LAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJE91dHB1dCwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyAgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXN0b21lclBlcm1pc3Npb24oCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBIVE1MVmlldyBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0hUTUxWaWV3JyApIHsKCiAgICAgICAgIyBHZXQgdGhlIEZpZWxkIGNvbnRlbnQuCiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRDb25maWdJdGVtLT57RGVzY3JpcHRpb259OwoKICAgICAgICAjICMgQnVpbGQgYmFzZSBVUkwgZm9yIGluLWxpbmUgaW1hZ2VzLgogICAgICAgICMgbXkgJFNlc3Npb25JRCA9ICcnOwogICAgICAgICMgaWYgKCAkU2VsZi0+e1Nlc3Npb25JRH0gJiYgISRTZWxmLT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAjICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgIyAgICAgJEZpZWxkQ29udGVudCA9fiBzewogICAgICAgICMgICAgICAgICAoQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7Q29uZmlnSXRlbUlEPVxkKztGaWxlbmFtZT1cdyspCiAgICAgICAgIyAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICAjIH0KCiAgICAgICAgIyBmZXRjaCBjb25maWcgaXRlbSBhdHRhY2htZW50IGxpc3QgZm9yIGhhbmRsaW5nIGlubGluZSBhdHRhY2htZW50cwogICAgICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHN0b3JlIGluIGhhc2ggZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVBdHRhY2htZW50czsKICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudExpc3QpIHsKICAgICAgICAgICAgJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX0gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17Q29udGVudElEfSA9ICRBdHRhY2htZW50c3skRmlsZW5hbWV9e1ByZWZlcmVuY2VzfXtDb250ZW50SUR9OwogICAgICAgIH0KCiAgICAgICAgIyBuZWVkZWQgdG8gcHJvdmlkZSBuZWNlc3NhcnkgcGFyYW1zIGZvciBSaWNoVGV4dERvY3VtZW50U2VydmUKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbDsgY2hhcnNldD0idXRmLTgiJywKICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBiYXNlIHVybAogICAgICAgIG15ICRVUkwgPSAnQWN0aW9uPScgLiAoICRMYXlvdXRPYmplY3QtPntVc2VyVHlwZX0gZXEgJ1VzZXInID8gJ0FnZW50JyA6ICdDdXN0b21lcicgKSAuICdJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudCcKICAgICAgICAgICAgLiAiO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07VmVyc2lvbklEPSRDb25maWdJdGVtLT57VmVyc2lvbklEfTtGaWxlbmFtZT0iOwoKICAgICAgICAjIHJlZm9ybWF0IHJpY2ggdGV4dCBkb2N1bWVudCB0byBoYXZlIGNvcnJlY3QgY2hhcnNldCBhbmQgbGlua3MgdG8KICAgICAgICAjIGlubGluZSBkb2N1bWVudHMKICAgICAgICAlRGF0YSA9ICRMYXlvdXRPYmplY3QtPlJpY2hUZXh0RG9jdW1lbnRTZXJ2ZSgKICAgICAgICAgICAgRGF0YSAgICAgICAgICAgICAgID0+IFwlRGF0YSwKICAgICAgICAgICAgVVJMICAgICAgICAgICAgICAgID0+ICRVUkwsCiAgICAgICAgICAgIEF0dGFjaG1lbnRzICAgICAgICA9PiBcJUF0dGFjaG1lbnRzLAogICAgICAgICAgICBMb2FkRXh0ZXJuYWxJbWFnZXMgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkRmllbGRDb250ZW50ID0gJERhdGF7Q29udGVudH07CgogICAgICAgICMgcmVtb3ZlIGFjdGl2ZSBodG1sIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgICAgICBteSAlU2FmZUNvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5TYWZldHkoCiAgICAgICAgICAgIFN0cmluZyAgICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Nlc3NhcnkKICAgICAgICBpZiAoICRTYWZlQ29udGVudHtSZXBsYWNlfSApIHsKICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgICAgIH0KCiAgICAgICAgIyBkZXRlY3QgYWxsIHBsYWluIHRleHQgbGlua3MgYW5kIHB1dCB0aGVtIGludG8gYW4gSFRNTCA8YT4gdGFnCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncwogICAgICAgICMgdGhlIExpbmtRdW90ZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYWdhaW4KICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVGFyZ2V0QWRkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIGVzY2FwZSBzaW5nbGUgcXVvdGVzCiAgICAgICAgJEZpZWxkQ29udGVudCA9fiBzLycvJiMzOTsvZzsKCiAgICAgICAgIyBSZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50LgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICBteSAkRmlsZW5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZW5hbWUnICk7CgogICAgICAgICMgY2hlY2sgcGFyYW0KICAgICAgICBpZiAoICEkRmlsZW5hbWUgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdGaWxlbmFtZSBpcyBuZWVkZWQhJywKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGFuIGF0dGFjaG1lbnQKICAgICAgICBteSAkRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRGF0YSkgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkuIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJERhdGEpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCggJERhdGEtPiUqICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkhIE1heSBiZSBhbiBhdHRhY2shISEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgTm8gKGtub3duKSBzdWJhY3Rpb24KICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnSW52YWxpZCBTdWJhY3Rpb24uJyksCiAgICApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBxdWV1ZSBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAjIGdldCBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkRmlsdGVyOwogICAgbXkgJEpTT05PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJFN0b3JlZEZpbHRlcnMgICAgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICk7CgogICAgIyBkZWxldGUgc3RvcmVkIGZpbHRlcnMgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWxldGVGaWx0ZXJzJyApICkgewogICAgICAgICRTdG9yZWRGaWx0ZXJzID0ge307CiAgICB9CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0IG9yIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICMgaWYgZmlsdGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSB3ZWIgcmVxdWVzdCwgdHJ5IHdpdGggdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJENvbHVtbk5hbWUgLiAnSURzJyB9LT5bMF0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICApOwoKICAgICAgICAjIGlmIG5vIGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0LCB0cnkgZnJvbSB1c2VyIHByZWZlcmVuY2VzCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkRmlsdGVyVmFsdWUgfHwgJEZpbHRlclZhbHVlIGVxICcnICkgewogICAgICAgICAgICAkRmlsdGVyVmFsdWUgPSAkU3RvcmVkRmlsdGVycy0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfS0+e0VxdWFsc307CiAgICAgICAgfQoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpbHRlclZhbHVlIGVxICcnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgJENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSB7CiAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVyVmFsdWUsCiAgICAgICAgfTsKICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRGaWx0ZXJWYWx1ZTsKICAgIH0KCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQ7CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBuZSAnQUpBWEZpbHRlclVwZGF0ZScgKSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgICAgICk7CiAgICB9CgogICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgbXkgJVNvcnQ7CgogICAgIyBnZXQgaWYgc2VhcmNoIHJlc3VsdCBzaG91bGQgYmUgcHJlLXNvcnRlZCBieSBwcmlvcml0eQogICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBteSBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBkZWZpbmUgcG9zaXRpb24gb2YgdGhlIGZpbHRlciBpbiB0aGUgZnJvbnRlbmQKICAgIG15ICRQcmlvQ291bnRlciA9IDEwMDA7CgogICAgIyB0byBzdG9yZSB0aGUgTmF2QmFyIGZpbHRlcnMKICAgIG15ICVGaWx0ZXJzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEczsKICAgIG15IEBWaWV3YWJsZUNsYXNzSURzOwoKICAgICMgZmV0Y2ggZmlsdGVycyBmcm9tIGNvbmZpZwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZykgKSB7CiAgICAgICAgUEVSTUNPTkY6CiAgICAgICAgZm9yIG15ICRDb25maWdJZGVudGlmaWVyICggc29ydCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+JSogKSB7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBncm91cCBwZXJtaXNzaW9uCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30gKSApIHsKCiAgICAgICAgICAgICAgICAjIHByZXBhcmUgZ3JvdXAgbG9va3VwIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgICAgICVHcm91cExvb2t1cCA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9IDA7CiAgICAgICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgICAgIGZvciBteSAkR3JvdXBOYW1lICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEdST1VQIGlmICEkR3JvdXBMb29rdXB7JEdyb3VwTmFtZX07CgogICAgICAgICAgICAgICAgICAgICRBY2Nlc3NPayA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbmV4dCBQRVJNQ09ORiB1bmxlc3MgJEFjY2Vzc09rOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBhcyBzZWxlY3RlZCBmaWx0ZXIgaWYgbm90IHByZXNlbnQKICAgICAgICAgICAgJEZpbHRlciB8fD0gJENvbmZpZ0lkZW50aWZpZXI7CgogICAgICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IGVxICcnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJVBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXM7CiAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgJFBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0ifSA9IHsKICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAkUGVybWlzc2lvbkNvbmRpdGlvblNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSJ9ID0gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAlRmlsdGVyU2VhcmNoID0gKAogICAgICAgICAgICAgICAgQ2xhc3NlcyAgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LAogICAgICAgICAgICAgICAgJURGU2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgJVBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXMsCiAgICAgICAgICAgICAgICAlU29ydCwKICAgICAgICAgICAgICAgIExpbWl0ID0+ICRTZWxmLT57U2VhcmNoTGltaXR9IC8vICcxMDAwJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYXBwbHkgZmlsdGVyIHJlc3RyaWN0aW9ucyB0byBzZWFyY2ggZm9yCiAgICAgICAgICAgIGlmICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJENsYXNzTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSB9IGVxICRfIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSApOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0NsYXNzZXN9ID0gWyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVDbGFzc0lEcyA9ICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0NsYXNzZXN9ID0gWyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gc29ydCBrZXlzICRDbGFzc0xpc3QtPiUqOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IGVxICRfIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9ICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7RGVwbFN0YXRlc30gPSBbICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0RlcGxTdGF0ZXN9ID0gWyAkRGVwbFN0YXRlTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gc29ydCBrZXlzICREZXBsU3RhdGVMaXN0LT4lKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICAgICAgaWYgKCBAVmlld2FibGVDbGFzc0lEcyAmJiBAVmlld2FibGVEZXBsU3RhdGVJRHMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICAgICAlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdDT1VOVCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmlsdGVyc3skQ29uZmlnSWRlbnRpZmllcn0gPSB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpb0NvdW50ZXIsCiAgICAgICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICAgICAgU2VhcmNoID0+IFwlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICB9OwogICAgICAgICAgICAkUHJpb0NvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBvbmx5IG9uZSBmaWx0ZXIgZXhpc3RzCiAgICBpZiAoIHNjYWxhciBrZXlzICVGaWx0ZXJzID09IDEgKSB7CgogICAgICAgICMgZ2V0IHRoZSBuYW1lIG9mIHRoZSBvbmx5IGZpbHRlcgogICAgICAgIG15ICgkRmlsdGVyTmFtZSkgPSBrZXlzICVGaWx0ZXJzOwoKICAgICAgICAjIGFjdGl2YXRlIHRoaXMgZmlsdGVyCiAgICAgICAgJEZpbHRlciA9ICRGaWx0ZXJOYW1lOwogICAgfQoKICAgICMgY2hlY2sgaWYgZmlsdGVyIGlzIHZhbGlkCiAgICBpZiAoICRGaWx0ZXIgJiYgIWV4aXN0cyAkRmlsdGVyc3skRmlsdGVyfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludmFsaWQgRmlsdGVyOiAlcyEnLCAkRmlsdGVyICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgaGVhZGVyIGZpbHRlcgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUZpbHRlcnMgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWx0ZXJIZWFkZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRLZXl9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJEtleSwKICAgICAgICAgICAgICAgIENsYXNzQSA9PiAkS2V5IGVxICRGaWx0ZXIgPyAnU2VsZWN0ZWQnIDogJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgZmlsdGVyIGRlbGV0ZSBpZiBuZWVkZWQKICAgIGlmICglR2V0Q29sdW1uRmlsdGVyKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckRlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRGaWx0ZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmlldyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFZpZXcgPSAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGN1c3RvbWVyIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd24gPSAkQmFja2VuZHMtPnskVmlld30gPyAkQmFja2VuZHMtPnskVmlld30tPntQYWdlU2hvd259IDogMTA7CiAgICBteSAlUGFnZU5hdjsKCiAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgbXkgJExpbWl0ID0gMV8wMDA7CgogICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApIHx8ICcnOwogICAgbXkgJEhlYWRlckNvbHVtbiAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgJEhlYWRlckNvbHVtbiA9fiBze1xBIENvbHVtbkZpbHRlciB9e31tc3hnOwoKICAgICMgZ2V0IGRhdGEgKHZpZXdhYmxlIGNvbmZpZyBpdGVtcy4uLikKICAgICMgc2VhcmNoIGFsbCBjb25maWcgaXRlbXMKICAgIG15IEBWaWV3YWJsZUNvbmZpZ0l0ZW1zOwogICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICAjIGJ1aWxkIGxpbmtzCiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICFkZWZpbmVkICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9OwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSBlcSAnJzsKICAgICAgICAkQ29sdW1uRmlsdGVyTGluawogICAgICAgICAgICAuPSAnOycgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICdDb2x1bW5GaWx0ZXInIC4gJENvbHVtbk5hbWUgKQogICAgICAgICAgICAuICc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtTb3J0ID0gJ1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztGaWx0ZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtGaWx0ZXIgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExhc3RDb2x1bW5GaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFzdENvbHVtbkZpbHRlcicgKSB8fCAnJzsKCiAgICBpZiAoICEkTGFzdENvbHVtbkZpbHRlciAmJiAkQ29sdW1uRmlsdGVyTGluayApIHsKCiAgICAgICAgIyBpcyBwbGFubmVkIHRvIGhhdmUgYSBsaW5rIHRvIGdvIGJhY2sgaGVyZQogICAgICAgICRMYXN0Q29sdW1uRmlsdGVyID0gMTsKICAgIH0KCiAgICBpZiAoIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyAmJiBAVmlld2FibGVDbGFzc0lEcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gdmFsdWVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAhSXNTdHJpbmdXaXRoRGF0YSgkSGVhZGVyQ29sdW1uKQogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdPbmx5VmFsdWVzT25Db25maWdJdGVtJykKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW1pdCAgPT4gJExpbWl0LAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3RhcnRIaXQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMTsKCiAgICAgICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgICAgIExpbWl0ICAgICA9PiAxMDAwMCwKICAgICAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgICAgIEFsbEhpdHMgICA9PiBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIElEUHJlZml4ICA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlcn0tPntTZWFyY2h9IH0sCiAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgTGltaXQgID0+ICRTdGFydEhpdCArICRQYWdlU2hvd24gLSAxLAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KCiAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gPSBcJUZpbHRlcnM7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhGaWx0ZXJVcGRhdGUnICkgewoKICAgICAgICBteSAkRmlsdGVyQ29udGVudCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgIEZpbHRlckNvbnRlbnRPbmx5ICAgICA9PiAxLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gICAgICAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgRWxlbWVudENoYW5nZWQgICAgICAgID0+ICRFbGVtZW50Q2hhbmdlZCwKICAgICAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICAgICAgRW5hYmxlQ29sdW1uRmlsdGVycyAgID0+IDEsCiAgICAgICAgICAgIEZyb250ZW5kICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgPT4gJEZpbHRlciwKICAgICAgICAgICAgRmlsdGVycyAgICAgICAgICAgICAgID0+IFwlRmlsdGVycywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICRIZWFkZXJDb2x1bW4gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWx0ZXJDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgc3RvcmUgY29sdW1uIGZpbHRlcnMKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9IFwlQ29sdW1uRmlsdGVyOwoKICAgICAgICBteSAkU3RvcmVkRmlsdGVyc0tleSA9ICdVc2VyU3RvcmVkRmlsdGVyQ29sdW1ucy0nIC4gJFNlbGYtPntBY3Rpb259IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9OwoKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU3RvcmVkRmlsdGVyc0tleSwKICAgICAgICAgICAgVmFsdWUgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gJFN0b3JlZEZpbHRlcnMgKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb3VudFRvdGFsID0gMDsKICAgIG15ICVOYXZCYXJGaWx0ZXI7CiAgICBmb3IgbXkgJEZpbHRlckNvbHVtbiAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGlmIChAVmlld2FibGVEZXBsU3RhdGVJRHMpIHsKICAgICAgICAgICAgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKSB8fCAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmlsdGVyQ29sdW1uIGVxICRGaWx0ZXIgKSB7CiAgICAgICAgICAgICRDb3VudFRvdGFsID0gJENvdW50OwogICAgICAgIH0KCiAgICAgICAgJE5hdkJhckZpbHRlcnsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0tPntQcmlvfSB9ID0gewogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlckNvbHVtbiwKICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0gfSwKICAgICAgICB9OwogICAgfQoKICAgICMgc2hvdyBjb25maWcgaXRlbXMKICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgIEZpbHRlcnMgICAgICAgICAgICAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gXCVHZXRDb2x1bW5GaWx0ZXIsCiAgICAgICAgTGFzdENvbHVtbkZpbHRlciAgICAgID0+ICRMYXN0Q29sdW1uRmlsdGVyLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVG90YWwgICAgICAgICAgICAgICAgID0+ICRDb3VudFRvdGFsLAogICAgICAgIFJlcXVlc3RlZFVSTCAgICAgICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgIFRpdGxlTmFtZSAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nKSwKICAgICAgICBUaXRsZVZhbHVlICAgICAgICAgICAgPT4gJFNlbGYtPntGaWx0ZXJzfXskRmlsdGVyfS0+e05hbWV9LAogICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciAgICAgICAgICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICBDb2x1bW5GaWx0ZXJGb3JtICAgICAgPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlciB8fCAnJywKICAgICAgICB9LAogICAgICAgIEZyb250ZW5kID0+ICdDdXN0b21lcicsCgogICAgICAgICMgZG8gbm90IHByaW50IHRoZSByZXN1bHQgZWFybGllciwgYnV0IHJldHVybiBjb21wbGV0ZSBjb250ZW50CiAgICAgICAgT3V0cHV0ID0+IDEsCiAgICApOwoKICAgIGlmICggZGVmaW5lZCAkQ29uZmlnT2JqZWN0LT5HZXQoIkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSIpLT57IkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gifSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQm94JywKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBnZXQgcGFnZSBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZXNzaW9uT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LAogICAgKTsKCiAgICBteSBAU2V0SW5uZXJGaWVsZHM7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICMgZmV0Y2ggdGhlIGxpc3Qgb2YgaW5jbHVkZWQgZHluYW1pYyBmaWVsZCBuYW1lcyB0byBnZXQgdGhlIGNvbmZpZ3MKICAgICAgICBteSAkU2V0SW5uZXJGaWVsZE5hbWVzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgIENvbnRlbnQgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNldElubmVyRmllbGROYW1lcykgKSB7CiAgICAgICAgICAgIG15ICRJbm5lckZpZWxkQ29uZmlncyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4geyBtYXAgeyAoICRfID0+IDEgKSB9ICRTZXRJbm5lckZpZWxkTmFtZXMtPkAqIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkSW5uZXJGaWVsZENvbmZpZ3MpICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckZpZWxkQ29uZmlnUmVmICggJElubmVyRmllbGRDb25maWdzLT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBuZWNlc3NhcnkgdG8gbm90IG92ZXJ3cml0ZSBjYWNoZWQgZGF0YSBvZiBmaWVsZCBjb25maWcgYnkgYWx0ZXJpbmcgdGhlIHJlZmVyZW5jZQogICAgICAgICAgICAgICAgICAgIG15ICVJbm5lckZpZWxkQ29uZmlnID0gJElubmVyRmllbGRDb25maWdSZWYtPiUqOwoKICAgICAgICAgICAgICAgICAgICAkSW5uZXJGaWVsZENvbmZpZ3tMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRJbm5lckZpZWxkQ29uZmlne0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNldElubmVyRmllbGRzLCBcJUlubmVyRmllbGRDb25maWc7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1c2ggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0sIEBTZXRJbm5lckZpZWxkczsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nICkgfHwgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKCiAgICAjIGZldGNoIGZpbHRlcnMgZnJvbSBjb25maWcKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncyA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+eyBzcHJpbnRmKCAiJTAyZCIsICRGaWx0ZXIgKSB9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcpICkgewoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ZpbHRlciBpbnZhbGlkIScpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIGdyb3VwIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30gKSApIHsKICAgICAgICBteSAkQWNjZXNzT2sgPSAwOwoKICAgICAgICAjIGZldGNoIGdyb3VwcyBvZiBjdXN0b21lciB1c2VyCiAgICAgICAgbXkgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkUGVybWlzc2lvbkdyb3VwICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgaWYgKCAkR3JvdXBMb29rdXB7JFBlcm1pc3Npb25Hcm91cH0gKSB7CiAgICAgICAgICAgICAgICAkQWNjZXNzT2sgPSAxOwogICAgICAgICAgICAgICAgbGFzdCBHUk9VUDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJEFjY2Vzc09rICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZU5hdjsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2hBY3Rpb24nICkgewoKICAgICAgICBteSAkU29ydEJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgICAgIHx8ICdBZ2UnOwoKICAgICAgICBpZiAoICRTb3J0QnkgZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgICAgICB9CgogICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IG9yZGVyaW5nIHRvIGJlIHVzZWQuCiAgICAgICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgICAgIHx8ICdVcCc7CgogICAgICAgICMgU2V0IHRoZSBzb3J0IG9yZGVyIGZyb20gdGhlIHJlcXVlc3QgcGFyYW1ldGVycywgb3IgdGFrZSB0aGUgZGVmYXVsdC4KICAgICAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgICAgIHx8ICREZWZhdWx0T3JkZXJCeTsKCiAgICAgICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgICAgIG15ICVTb3J0OwoKICAgICAgICAjIGdldCBpZiBzZWFyY2ggcmVzdWx0IHNob3VsZCBiZSBwcmUtc29ydGVkIGJ5IHByaW9yaXR5CiAgICAgICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICAgICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICAgICAlU29ydCA9ICgKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlU29ydCA9ICgKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgICAgIGlmICggISRWaWV3ICYmICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgdXNlIFByZXZpZXcgYXMgZGVmYXVsdCBhcyBpbiBMYXlvdXRDb25maWdJdGVtCiAgICAgICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgICAgIC4gJztTdWJhY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTdWJhY3Rpb259ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApOwoKICAgICAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57U3ViYWN0aW9ufSApCiAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBwYXJhbXMgZnJvbSB3ZWIgcmVxdWVzdAogICAgICAgIG15ICVHZXRQYXJhbTsKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtIChxdyhOdW1iZXIgTmFtZSkpIHsKCiAgICAgICAgICAgICMgZmV0Y2ggc2luZ2xlIHZhbHVlIHBhcmFtcwogICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRTZWFyY2hQYXJhbSApOwogICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjskU2VhcmNoUGFyYW09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gKTsKICAgICAgICAgICAgJExpbmtTb3J0IC49ICI7JFNlYXJjaFBhcmFtPSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICBteSBAQXJyYXlTZWFyY2hQYXJhbXMgPSBxdyhDbGFzc0lEcyk7CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CiAgICAgICAgICAgIHB1c2ggQEFycmF5U2VhcmNoUGFyYW1zLCAnRGVwbFN0YXRlSURzJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0luY2lTdGF0ZUlEcyc7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtQXJyYXkgKEBBcnJheVNlYXJjaFBhcmFtcykgewoKICAgICAgICAgICAgIyBmZXRjaCBtdWx0aSB2YWx1ZSBwYXJhbXMKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtQXJyYXkgKTsKICAgICAgICAgICAgaWYgKCBhbnkgeyRffSBAQXJyYXkgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtQXJyYXl9ID0gXEBBcnJheTsKICAgICAgICAgICAgICAgICRMaW5rUGFnZSAuPSBqb2luKCAnJywgbWFwIHsgIjskU2VhcmNoUGFyYW1BcnJheT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gQEFycmF5ICk7CiAgICAgICAgICAgICAgICAkTGlua1NvcnQgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU2VhcmNoQ29uZmlnOwogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgc2VhcmNoCiAgICAgICAgICAgICAgICAjIHByb2ZpbGUKICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICAgICAlR2V0UGFyYW0gPSAoICVHZXRQYXJhbSwgJXskRHluYW1pY0ZpZWxkVmFsdWV9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHByb2ZpbGUKICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXIgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRTZWFyY2hQYXJhbWV0ZXIgKSB7CgogICAgICAgICAgICAgICAgICAgICMgYXBwZW5kIHNlYXJjaCBwYXJhbXMgdG8gbGlua3MKICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rUGFnZSAuPSBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgeyAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1NvcnQgLj0gam9pbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIHsgIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfS0+QCoKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rUGFnZSAuPSAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30gKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtTb3J0IC49ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkTGlua1BhZ2UgLj0gJzsnOwogICAgICAgICRMaW5rU29ydCAuPSAnOyc7CgogICAgICAgICVTZWFyY2hDb25maWcgPSAoCiAgICAgICAgICAgICVTZWFyY2hDb25maWcsCiAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICAlU29ydCwKICAgICAgICApOwoKICAgICAgICAjIG1lcmdlIGZpbHRlcmVkIGNsYXNzZXMgd2l0aCBwZXJtaXNzaW9uIGNvbmRpdGlvbiBjbGFzc2VzCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDbGFzc0lEc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlYXJjaENsYXNzZXM7CiAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRHZXRQYXJhbXtDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQ2xhc3NlcywgJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VhcmNoQ29uZmlne0NsYXNzZXN9ID0gXEBTZWFyY2hDbGFzc2VzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tDbGFzc2VzfSA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc307CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VhcmNoQ29uZmlne0NsYXNzZXN9LT5AKiApIHsKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgbWVyZ2UgZmlsdGVyZWQgZGVwbG95bWVudCBzdGF0ZXMgd2l0aCBwZXJtaXNzaW9uIGNvbmRpdGlvbiBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17RGVwbFN0YXRlSURzfSApICkgewogICAgICAgICAgICBteSBAU2VhcmNoRGVwbFN0YXRlczsKICAgICAgICAgICAgZm9yIG15ICREZXBsU3RhdGVJRCAoICRHZXRQYXJhbXtEZXBsU3RhdGVJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbFN0YXRlTGlzdC0+eyREZXBsU3RhdGVJRH0gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRGVwbFN0YXRlcywgJERlcGxTdGF0ZUxpc3QtPnskRGVwbFN0YXRlSUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaERlcGxTdGF0ZXMsICREZXBsU3RhdGVMaXN0LT57JERlcGxTdGF0ZUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhQFNlYXJjaERlcGxTdGF0ZXMgKSB7CiAgICAgICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tEZXBsU3RhdGVzfSA9IFxAU2VhcmNoRGVwbFN0YXRlczsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30gKSApIHsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tEZXBsU3RhdGVzfSA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc307CiAgICAgICAgfQoKICAgICAgICAjIG1hcCBmaWx0ZXJlZCBpbmNpZGVudCBzdGF0ZSBpZHMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0luY2lTdGF0ZUlEc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlYXJjaEluY2lTdGF0ZXMgPSBtYXAgeyAkSW5jaVN0YXRlTGlzdC0+eyRffSB9ICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9LT5AKjsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tJbmNpU3RhdGVzfSA9IFxAU2VhcmNoSW5jaVN0YXRlczsKICAgICAgICB9CgogICAgICAgICRTZWFyY2hDb25maWd7TnVtYmVyfSA9ICRHZXRQYXJhbXtOdW1iZXJ9ID8gJEdldFBhcmFte051bWJlcn0gOiB1bmRlZjsKICAgICAgICAkU2VhcmNoQ29uZmlne05hbWV9ICAgPSAkR2V0UGFyYW17TmFtZX0gICA/ICRHZXRQYXJhbXtOYW1lfSAgIDogdW5kZWY7CgogICAgICAgICMgY29sbGVjdCBkeW5hbWljIGZpZWxkIHNlYXJjaCBwYXJhbXMKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc30gKSApIHsKCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRW1wdHkgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlc3RyaWN0IHNlYXJjaCBieSBwZXJtaXNzaW9uIGNvbmRpdGlvbiBjdXN0b21lciBjb21wYW55IGFuZCBjdXN0b21lciB1c2VyCiAgICAgICAgIyBOT1RFIHRoaXMgb3ZlcndyaXRlcyBwcmV2aW91c2x5IHNldCBzZWFyY2ggcGFyYW1zIGZvciB0aGUgY29uZmlndXJlZCBkeW5hbWljIGZpZWxkcwogICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAkU2VhcmNoQ29uZmlneyJEeW5hbWljRmllbGRfJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9In0gPSB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0ifSA9IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAlRmlsdGVycyA9ICgKICAgICAgICAgICAgJEZpbHRlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAxMDAwLAogICAgICAgICAgICAgICAgU2VhcmNoID0+IFwlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVTZWFyY2hDb25maWcgKSB7CiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIHNlbGVjdGVkIHZpZXcgaXMgYXZhaWxhYmxlLgogICAgICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lck92ZXJ2aWV3Jyk7CiAgICAgICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAgICAgIyBUcnkgdG8gZmluZCBmYWxsYmFjaywgdGFrZSBmaXJzdCBjb25maWd1cmVkIHZpZXcgbW9kZS4KICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgICAgICBsYXN0IEtFWTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY3VzdG9tZXIgcGFnZSBzaG93biBjb3VudAogICAgICAgIG15ICRQYWdlU2hvd24gPSAkQmFja2VuZHMtPnskVmlld30gPyAkQmFja2VuZHMtPnskVmlld30tPntQYWdlU2hvd259IDogMTA7CgogICAgICAgICMgZG8gc2hvd24gY29uZmlnIGl0ZW0gbG9va3VwCiAgICAgICAgbXkgJExpbWl0ID0gMV8wMDA7CgogICAgICAgICMgZ2V0IGRhdGEgKHZpZXdhYmxlIGNvbmZpZyBpdGVtcy4uLikKICAgICAgICAjIHNlYXJjaCBhbGwgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICBMaW1pdCAgPT4gJExpbWl0LAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICApOwoKICAgICAgICBteSAkVG90YWwgPSBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICAgICAgbXkgJFN0YXJ0SGl0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDE7CgogICAgICAgIG15IEBWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICVTZWFyY2hDb25maWcsCiAgICAgICAgICAgIExpbWl0ICA9PiAkU3RhcnRIaXQgKyAkUGFnZVNob3duIC0gMSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgICAgICBMaW1pdCAgICAgPT4gMTAwMDAsCiAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgICAgICBBbGxIaXRzICAgPT4gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBMaW5rICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBJRFByZWZpeCAgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICk7CgogICAgICAgICMgVE9ETyBNYXliZSB0aGVyZSBpcyBhIG1vcmUgZWxlZ2FudCB3YXkgdG8gZG8gdGhpcz8KICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICAgICAkU2VsZi0+e0ZpbHRlcnN9ID0gXCVGaWx0ZXJzOwoKICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1MaXN0SFRNTCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIExpbmtQYWdlICAgICAgICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlciAgICA9PiAwLAogICAgICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiAkVG90YWwsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgID0+ICRTb3J0QnksCiAgICAgICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgRnJvbnRlbmQgICAgICAgICAgICAgID0+ICdDdXN0b21lcicsCgogICAgICAgICAgICAjIGRvIG5vdCBwcmludCB0aGUgcmVzdWx0IGVhcmxpZXIsIGJ1dCByZXR1cm4gY29tcGxldGUgY29udGVudAogICAgICAgICAgICBPdXRwdXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoUmVzdWx0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUxpc3RIVE1MID0+ICRDb25maWdJdGVtTGlzdEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdPYmplY3QtPkdldCgiQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIiktPnsiQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCJ9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEJveCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICAjIHN0b3JlIGRyb3Bkb3duIHJlc3RyaWN0aW9ucyBmcm9tIHBlcm1pc3Npb24gY29uZGl0aW9uCiAgICAgICAgbXkgJVNlYXJjaGFibGVQYXJhbXMgPSAoCiAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICApOwoKICAgICAgICAjIHNldCBzZWFyY2hhYmxlIHBhcmFtcwogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgJFNlYXJjaGFibGVQYXJhbXN7Q2xhc3N9ID0gewogICAgICAgICAgICBtYXAgewogICAgICAgICAgICAgICAgJENsYXNzTG9va3VweyRffQogICAgICAgICAgICAgICAgICAgID8gKCAkQ2xhc3NMb29rdXB7JF99ID0+ICRfICkKICAgICAgICAgICAgICAgICAgICA6ICgpCiAgICAgICAgICAgIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCoKICAgICAgICB9OwoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSApICkgewogICAgICAgICAgICBteSAlRGVwbFN0YXRlTG9va3VwID0gcmV2ZXJzZSAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICAgICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0gPSB7CiAgICAgICAgICAgICAgICBtYXAgewogICAgICAgICAgICAgICAgICAgICREZXBsU3RhdGVMb29rdXB7JF99CiAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkRGVwbFN0YXRlTG9va3VweyRffSA9PiAkXyApCiAgICAgICAgICAgICAgICAgICAgICAgIDogKCkKICAgICAgICAgICAgICAgIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCoKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0gPSAkRGVwbFN0YXRlTGlzdDsKICAgICAgICB9CgogICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncyA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncykgKSB7CiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEZvcm0nLAogICAgICAgICk7CgogICAgICAgIG15ICVEZWZhdWx0czsKICAgICAgICBpZiAoICRDb25maWctPntEZWZhdWx0c30gKSB7CiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJENvbmZpZy0+e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRDb25maWctPntEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eQ29uZmlnSXRlbShDcmVhdGV8Q2hhbmdlKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQEl0ZW1zID0gc3BsaXQgLzsvLCAkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtIChASXRlbXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJEl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICREZWZhdWx0c3skS2V5fSA9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkRGVmYXVsdHN7JEtleX0gPSAkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgcGVybWlzc2lvbiBjb25kaXRpb24KICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbkRhdGEgPSBtYXAgeyBpbnQoJF8pID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+eyRffS0+e05hbWV9IH0ga2V5cyAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPiUqOwogICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJVBlcm1pc3Npb25Db25kaXRpb25EYXRhLAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAnUGVybWlzc2lvbkNvbmRpdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRGaWx0ZXIgfHwgJycsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQZXJtaXNzaW9uQ29uZGl0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBQZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvblN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0tPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXNGaWx0ZXI7CgogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJc0FDTFJlZHVjaWJsZSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICBteSAkUG9zc2libGVWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+UG9zc2libGVWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaGFzIFBvc3NpYmxlVmFsdWVzIHByb3BlcnR5IGluIGl0cyBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQb3NzaWJsZVZhbHVlcykgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IGhpc3RvcmljYWwgdmFsdWVzIGZyb20gZGF0YWJhc2UKICAgICAgICAgICAgICAgICAgICBteSAkSGlzdG9yaWNhbFZhbHVlcyA9ICRCYWNrZW5kT2JqZWN0LT5IaXN0b3JpY2FsVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRGF0YSA9ICRQb3NzaWJsZVZhbHVlczsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgaGlzdG9yaWMgdmFsdWVzIHRvIGN1cnJlbnQgdmFsdWVzIChpZiB0aGV5IGRvbid0IGV4aXN0IGFueW1vcmUpCiAgICAgICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkSGlzdG9yaWNhbFZhbHVlcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEhpc3RvcmljYWxWYWx1ZXN9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJERhdGEtPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YS0+eyRLZXl9ID0gJEhpc3RvcmljYWxWYWx1ZXMtPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JERhdGF9OwogICAgICAgICAgICAgICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgICAgICAgICAgICAgIG15ICRBQ0wgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbCgKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IEZpbGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzRmlsdGVyfSA9IG1hcCB7ICRfID0+ICREYXRhLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZy0+e0RlZmF1bHRzfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTnVtYmVyJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENsYXNzU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7Q2xhc3N9LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSURzJywKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0NsYXNzSURzfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDbGFzcycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NTdHJnID0+ICRDbGFzc1N0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkQ29uZmlnLT57RGVwbG95bWVudFN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGRlcGxveW1lbnQgc3RhdGVzCiAgICAgICAgICAgIG15ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7RGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnRGVwbFN0YXRlSURzJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRGVmYXVsdHN7RGVwbG95bWVudFN0YXRlSURzfSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPT4gJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW5jaWRlbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBpbmNpZGVudCBzdGF0ZXMKICAgICAgICAgICAgbXkgJEN1ckluY2lTdGF0ZU9wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkU2VhcmNoYWJsZVBhcmFtc3tJbmNpU3RhdGV9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdJbmNpU3RhdGVJRHMnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICREZWZhdWx0c3tJbmNpZGVudFN0YXRlSURzfSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZU9wdGlvblN0cmcgPT4gJEN1ckluY2lTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbiEnKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBnZXQgcGFnZSBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb207Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScpIC8vIHt9OwoKICAgIGlmICggISRDb25maWctPntWZXJzaW9uc0VuYWJsZWR9ICkgewogICAgICAgICRWZXJzaW9uSUQgPSB1bmRlZjsKICAgIH0KCiAgICAjIGdldCBjb250ZW50CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKCiAgICAgICAgIyBhZGRpdGlvbmFsIHNhbmV0eSBjaGVjayAtIEN1c3RvbWVyUGVybWlzc2lvbiBzaG91bGQgaGFuZGxlIHRoaXMgY2FzZSB1c3VhbGx5CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtIG5vdCBmb3VuZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIGNvbG9yIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJFByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY292ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICdDb2xvcicgLiAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkNvbG9yJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoIFZhbHVlID0+ICRDb25maWdJdGVtLT57TnVtYmVyfSApOwoKICAgIGlmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfSApIHsKICAgICAgICBpZiAoICRDb25maWctPntHZW5lcmFsSW5mb317TnVtYmVyfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGdWxsU3ViJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgID0+ICRDb25maWctPntHZW5lcmFsSW5mb317Q2xhc3N9ID8gJENvbmZpZ0l0ZW0tPntDbGFzc30gOiAnQ29uZmlnSXRlbScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtDbGFzc30gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NTdWInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVDb2xvckNsYXNzfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH07CiAgICAgICAgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVDb2xvckNsYXNzfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSB9OwoKICAgICAgICBJTkZPOgogICAgICAgIGZvciBteSAkSW5mbyAocXcvRGVwbG95bWVudFN0YXRlIEluY2lkZW50U3RhdGUgQ3JlYXRlZFRpbWUgTGFzdENoYW5nZWRUaW1lLykgewogICAgICAgICAgICBuZXh0IElORk8gaWYgISRDb25maWctPntHZW5lcmFsSW5mb317JEluZm99OwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRJbmZvLAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBhIHZlcnNpb24gYWxyZWFkeSBleGlzdHMgKFRPRE86IFdoZW4gZG9lcyBpdCBub3Q/KQogICAgaWYgKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgewogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUdyb3VwTG9va3VwOwogICAgICAgIG15IEBQYWdlczsKICAgICAgICBteSAkUGFnZVNob3duOwogICAgICAgIG15ICRQYWdlUmVxdWVzdGVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1BhZ2UnICk7CiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgJFBhZ2UtPntJbnRlcmZhY2VzfTsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQ3VzdG9tZXInIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CgogICAgICAgICAgICAjIHJlc3RyaWN0aW9uIGJ5IEdyb3VwcyBpcyBvcHRpb25hbAogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKCiAgICAgICAgICAgICAgICAjIGZldGNoIHRoZSBncm91cHMgd2hlcmUgdGhlIHVzZXIgaGFzIHJlYWQgYWNjZXNzCiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAUGFnZXMsICRQYWdlOwoKICAgICAgICAgICAgaWYgKCAkUGFnZVJlcXVlc3RlZCAmJiAkUGFnZS0+e05hbWV9IGVxICRQYWdlUmVxdWVzdGVkICkgewogICAgICAgICAgICAgICAgJFBhZ2VTaG93biA9ICRQYWdlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnZU5hbWUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgPT4gJFBhZ2VzWzBde05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkUGFnZSAoQFBhZ2VzKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdlTGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lICAgICA9PiAkUGFnZS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWQgICAgID0+ICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VTaG93bi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQFBhZ2VzKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtLT57RHluYW1pY0ZpZWxkSFRNTH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCcpLT5QYWdlUmVuZGVyKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICBQYWdlUmVmICAgID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdmVyc2lvbiBsaXN0CiAgICAgICAgaWYgKCAkQ29uZmlnLT57VmVyc2lvbnNFbmFibGVkfSAmJiAkQ29uZmlnLT57VmVyc2lvbnNTZWxlY3RhYmxlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tOycKICAgICAgICAgICAgICAgICAgICAuICJDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9O1BhZ2U9WyUgRGF0YS5OYW1lIHwgdXJpICVdOyIsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlU2hvd24gPyAkUGFnZVNob3duLT57TmFtZX0gOiAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICggJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kXy0+e1ZlcnNpb25JRH0iICksCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgICAgICAgICAiJF8tPntOYW1lfSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiICgkXy0+e0NyZWF0ZVRpbWV9KSIKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICRWZXJzaW9uTGlzdC0+QCo7CgogICAgICAgICAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxAVmVyc2lvblNlbGVjdGlvbkRhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZlcnNpb25TZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgQWxpZ25Ecm9wZG93blJpZ2h0JywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZlcnNpb25zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25TZWxlY3Rpb24gPT4gJFZlcnNpb25TZWxlY3Rpb24sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgbGluayB0YWJsZSB2aWV3IG1vZGUKICAgIG15ICRMaW5rVGFibGVWaWV3TW9kZSA9ICRDb25maWdPYmplY3QtPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAjIGNyZWF0ZSB0aGUgbGluayB0YWJsZQogICAgbXkgJExpbmtUYWJsZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgTGlua0xpc3RXaXRoRGF0YSA9PiAkTGlua0xpc3RXaXRoRGF0YSwKICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICBPYmplY3QgICAgICAgICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIG91dHB1dCB0aGUgbGluayB0YWJsZQogICAgaWYgKCRMaW5rVGFibGVTdHJnKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUYWJsZScgLiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGlua1RhYmxlU3RyZyA9PiAkTGlua1RhYmxlU3RyZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRzJywKICAgICAgICApOwoKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbWV0YWRhdGEgb2YgdGhlIGN1cnJlbnQgYXR0YWNobWVudAogICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRPdXRwdXQsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT4lKiwKICAgICAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU2lnbmFsID0+ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0sCiAgICAgICAgICAgICAgICBTdHlsZUNsYXNzZXMgID0+ICRTdHlsZUNsYXNzZXMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIsCiAgICAgICAgJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/PublicITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwoKICAgICMgY2xlYXIgYW55IGFjdGl2ZSBsb2dpbiB0byBlbmZvcmNlIHNlY3VyaXR5CiAgICBkZWxldGUgJFNlbGYtPntVc2VySUR9OwoKICAgICRTZWxmLT57Q2FjaGVUeXBlfSA9ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntDYWNoZVRUTH0gID0gNjAgKiA2MCAqIDI0ICogMjA7CgogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IGRlYnVnCiAgICAkU2VsZi0+e0RlYnVnfSA9IDA7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRTb3J0QnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdBZ2UnOwoKICAgIGlmICggJFNvcnRCeSBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICRTb3J0QnkgPSAnQ2hhbmdlZCc7CiAgICB9CgogICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3JkZXJpbmcgdG8gYmUgdXNlZC4KICAgIG15ICREZWZhdWx0T3JkZXJCeSA9ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdVcCc7CgogICAgIyBTZXQgdGhlIHNvcnQgb3JkZXIgZnJvbSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBvciB0YWtlIHRoZSBkZWZhdWx0LgogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICREZWZhdWx0T3JkZXJCeTsKCiAgICAjIGdldCBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICBteSAlQ29sdW1uRmlsdGVyOwogICAgbXkgJUdldENvbHVtbkZpbHRlcjsKICAgIENPTFVNTk5BTUU6CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKAogICAgICAgIHF3KERlcGxTdGF0ZSBDdXJEZXBsU3RhdGUgSW5jaVN0YXRlIEN1ckluY2lTdGF0ZSBDbGFzcykKICAgICAgICApCiAgICB7CiAgICAgICAgIyBnZXQgY29sdW1uIGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbHVtbkZpbHRlcicgLiAkQ29sdW1uTmFtZSApCiAgICAgICAgICAgIHx8ICcnOwoKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgJEZpbHRlclZhbHVlIGVxICcnOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnsgJENvbHVtbk5hbWUgLiAnSURzJyB9IH0sICRGaWx0ZXJWYWx1ZTsKICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSA9ICRGaWx0ZXJWYWx1ZTsKICAgIH0KCiAgICAjIGdldCBhbGwgZHluYW1pYyBmaWVsZHMKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICApOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0NvbHVtbkZpbHRlckR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIWRlZmluZWQgJEZpbHRlclZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICBFcXVhbHMgPT4gJEZpbHRlclZhbHVlLAogICAgICAgIH07CiAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICB9CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyICYgdG8gZ2V0IHRoZSBvdXRwdXQgZmFzdGVyIQogICAgbXkgJFJlZnJlc2ggPSAnJzsKICAgIGlmICggJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9ICkgewogICAgICAgICRSZWZyZXNoID0gNjAgKiAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX07CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkT3V0cHV0OwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gbmUgJ0FKQVhGaWx0ZXJVcGRhdGUnICkgewogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICAgICApOwogICAgfQoKICAgICMgc29ydCBvbiBkZWZhdWx0IGJ5IHVzaW5nIGJvdGggKFByaW9yaXR5LCBBZ2UpIGVsc2UgdXNlIG9ubHkgb25lIHNvcnQgYXJndW1lbnQKICAgIG15ICVTb3J0OwoKICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgIG15ICRQcmVTb3J0QnlQcmlvcml0eSA9ICRDb25maWctPnsnUHJlU29ydDo6QnlQcmlvcml0eSd9OwogICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+IFsgJ1ByaW9yaXR5JywgJFNvcnRCeSBdLAogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICApOwogICAgfQoKICAgICMgbXkgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZGVmaW5lIHBvc2l0aW9uIG9mIHRoZSBmaWx0ZXIgaW4gdGhlIGZyb250ZW5kCiAgICBteSAkUHJpb0NvdW50ZXIgPSAxMDAwOwoKICAgICMgdG8gc3RvcmUgdGhlIE5hdkJhciBmaWx0ZXJzCiAgICBteSAlRmlsdGVyczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICBteSBAVmlld2FibGVEZXBsU3RhdGVJRHM7CiAgICBteSBAVmlld2FibGVDbGFzc0lEczsKCiAgICAjIGZldGNoIGZpbHRlcnMgZnJvbSBjb25maWcKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwoKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnKSApIHsKICAgICAgICBQRVJNQ09ORjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0lkZW50aWZpZXIgKCBzb3J0IGtleXMgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT4lKiApIHsKICAgICAgICAgICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcgPSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb25maWctPnskQ29uZmlnSWRlbnRpZmllcn07CiAgICAgICAgICAgIG5leHQgUEVSTUNPTkYgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnKTsKCiAgICAgICAgICAgICMgc2V0IGFzIHNlbGVjdGVkIGZpbHRlciBpZiBub3QgcHJlc2VudAogICAgICAgICAgICAkRmlsdGVyIHx8PSAkQ29uZmlnSWRlbnRpZmllcjsKCiAgICAgICAgICAgICMgY29sbGVjdCBkeW5hbWljIGZpZWxkIHNlYXJjaCBwYXJhbXMKICAgICAgICAgICAgbXkgJURGU2VhcmNoUGFyYW1zOwogICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc30gKSApIHsKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIGtleXMgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9LT4lKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAlRmlsdGVyU2VhcmNoID0gKAogICAgICAgICAgICAgICAgQ2xhc3NlcyAgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LAogICAgICAgICAgICAgICAgJURGU2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSAvLyAnMTAwMCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFwcGx5IGZpbHRlciByZXN0cmljdGlvbnMgdG8gc2VhcmNoIGZvcgogICAgICAgICAgICBpZiAoICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRDbGFzc0xpc3QtPnsgJEdldENvbHVtbkZpbHRlcntDbGFzc30gfSBlcSAkXyB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVDbGFzc0lEcyA9ICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEZpbHRlclNlYXJjaHtDbGFzc2VzfSA9IFsgJENsYXNzTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSB9IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlQ2xhc3NJRHMgPSAoICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9ICk7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclNlYXJjaHtDbGFzc2VzfSA9IFsgJENsYXNzTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSB9IF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAVmlld2FibGVDbGFzc0lEcyA9IHNvcnQga2V5cyAkQ2xhc3NMaXN0LT4lKjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkRGVwbFN0YXRlTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gfSBlcSAkXyB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVEZXBsU3RhdGVJRHMgPSAoICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSApOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0RlcGxTdGF0ZXN9ID0gWyAkRGVwbFN0YXRlTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gfSBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9ICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICk7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclNlYXJjaHtEZXBsU3RhdGVzfSA9IFsgJERlcGxTdGF0ZUxpc3QtPnsgJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9IH0gXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9IHNvcnQga2V5cyAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgICAgIGlmICggQFZpZXdhYmxlQ2xhc3NJRHMgJiYgQFZpZXdhYmxlRGVwbFN0YXRlSURzICkgewogICAgICAgICAgICAgICAgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAgICAgJUZpbHRlclNlYXJjaCwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRGaWx0ZXJzeyRDb25maWdJZGVudGlmaWVyfSA9IHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgUHJpbyAgID0+ICRQcmlvQ291bnRlciwKICAgICAgICAgICAgICAgIENvdW50ICA9PiAkQ291bnQsCiAgICAgICAgICAgICAgICBTZWFyY2ggPT4gXCVGaWx0ZXJTZWFyY2gsCiAgICAgICAgICAgIH07CiAgICAgICAgICAgICRQcmlvQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIG9ubHkgb25lIGZpbHRlciBleGlzdHMKICAgIGlmICggc2NhbGFyIGtleXMgJUZpbHRlcnMgPT0gMSApIHsKCiAgICAgICAgIyBnZXQgdGhlIG5hbWUgb2YgdGhlIG9ubHkgZmlsdGVyCiAgICAgICAgbXkgKCRGaWx0ZXJOYW1lKSA9IGtleXMgJUZpbHRlcnM7CgogICAgICAgICMgYWN0aXZhdGUgdGhpcyBmaWx0ZXIKICAgICAgICAkRmlsdGVyID0gJEZpbHRlck5hbWU7CiAgICB9CgogICAgIyBjaGVjayBpZiBmaWx0ZXIgaXMgdmFsaWQKICAgIGlmICggJEZpbHRlciAmJiAhZXhpc3RzICRGaWx0ZXJzeyRGaWx0ZXJ9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnSW52YWxpZCBGaWx0ZXI6ICVzIScsICRGaWx0ZXIgKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBoZWFkZXIgZmlsdGVyCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckhlYWRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEtleX0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkS2V5LAogICAgICAgICAgICAgICAgQ2xhc3NBID0+ICRLZXkgZXEgJEZpbHRlciA/ICdTZWxlY3RlZCcgOiAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBmaWx0ZXIgZGVsZXRlIGlmIG5lZWRlZAogICAgaWYgKCVHZXRDb2x1bW5GaWx0ZXIpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVyRGVsZXRlJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkVmlldyAmJiAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgb3RoZXJ3aXNlIHVzZSBQcmV2aWV3IGFzIGRlZmF1bHQgYXMgaW4gTGF5b3V0Q29uZmlnSXRlbQogICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgIyBDaGVjayBpZiBzZWxlY3RlZCB2aWV3IGlzIGF2YWlsYWJsZS4KICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd24gPSAkQ29uZmlnLT57UGFnZVNob3dufTsKICAgIG15ICVQYWdlTmF2OwoKICAgICMgZG8gc2hvd24gY29uZmlnIGl0ZW0gbG9va3VwCiAgICBteSAkTGltaXQgPSAxMDAwOwoKICAgIG15ICRFbGVtZW50Q2hhbmdlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKICAgIG15ICRIZWFkZXJDb2x1bW4gICA9ICRFbGVtZW50Q2hhbmdlZDsKICAgICRIZWFkZXJDb2x1bW4gPX4gc3tcQSBDb2x1bW5GaWx0ZXIgfXt9bXN4ZzsKCiAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAjIHNlYXJjaCBhbGwgY29uZmlnIGl0ZW1zCiAgICBteSBAVmlld2FibGVDb25maWdJdGVtczsKICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgIyBidWlsZCBsaW5rcwogICAgbXkgJENvbHVtbkZpbHRlckxpbmsgPSAnJzsKICAgIENPTFVNTk5BTUU6CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBzb3J0IGtleXMgJUdldENvbHVtbkZpbHRlciApIHsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRDb2x1bW5OYW1lOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhZGVmaW5lZCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfTsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gZXEgJyc7CiAgICAgICAgJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAgICAgLj0gJzsnIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgLiAnPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSApOwogICAgfQoKICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnO1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAkQ29sdW1uRmlsdGVyTGluawogICAgICAgIC4gJzsnOwoKICAgIG15ICRMaW5rU29ydCA9ICdWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7RmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAkQ29sdW1uRmlsdGVyTGluawogICAgICAgIC4gJzsnOwoKICAgIG15ICRMaW5rRmlsdGVyID0gJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJzsnOwoKICAgIG15ICRMYXN0Q29sdW1uRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhc3RDb2x1bW5GaWx0ZXInICkgfHwgJyc7CgogICAgaWYgKCAhJExhc3RDb2x1bW5GaWx0ZXIgJiYgJENvbHVtbkZpbHRlckxpbmsgKSB7CgogICAgICAgICMgaXMgcGxhbm5lZCB0byBoYXZlIGEgbGluayB0byBnbyBiYWNrIGhlcmUKICAgICAgICAkTGFzdENvbHVtbkZpbHRlciA9IDE7CiAgICB9CgogICAgaWYgKCBAVmlld2FibGVEZXBsU3RhdGVJRHMgJiYgQFZpZXdhYmxlQ2xhc3NJRHMgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIHZhbHVlcwogICAgICAgIGlmICgKICAgICAgICAgICAgIUlzU3RyaW5nV2l0aERhdGEoJEhlYWRlckNvbHVtbikKICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSgkSGVhZGVyQ29sdW1uKQogICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdPYmplY3QtPkdldCgnT25seVZhbHVlc09uQ29uZmlnSXRlbScpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgTGltaXQgID0+ICRMaW1pdCwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJFN0YXJ0SGl0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDE7CgogICAgICAgICAgICAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgPT4gMTAwMDAsCiAgICAgICAgICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgICAgICBBbGxIaXRzICAgPT4gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBMaW5rICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICAgICAgSURQcmVmaXggID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlcn0tPntTZWFyY2h9IH0sCiAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgTGltaXQgID0+ICRTdGFydEhpdCArICRQYWdlU2hvd24gLSAxLAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KCiAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gPSBcJUZpbHRlcnM7CgogICAgbXkgJENvdW50VG90YWwgPSAwOwogICAgbXkgJU5hdkJhckZpbHRlcjsKICAgIGZvciBteSAkRmlsdGVyQ29sdW1uICggc29ydCBrZXlzICVGaWx0ZXJzICkgewogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgaWYgKEBWaWV3YWJsZURlcGxTdGF0ZUlEcykgewogICAgICAgICAgICAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJDb2x1bW59LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQ09VTlQnLAogICAgICAgICAgICApIHx8IDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRGaWx0ZXJDb2x1bW4gZXEgJEZpbHRlciApIHsKICAgICAgICAgICAgJENvdW50VG90YWwgPSAkQ291bnQ7CiAgICAgICAgfQoKICAgICAgICAkTmF2QmFyRmlsdGVyeyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufS0+e1ByaW99IH0gPSB7CiAgICAgICAgICAgIENvdW50ICA9PiAkQ291bnQsCiAgICAgICAgICAgIEZpbHRlciA9PiAkRmlsdGVyQ29sdW1uLAogICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufSB9LAogICAgICAgIH07CiAgICB9CgogICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgbXkgJENvbmZpZ0l0ZW1MaXN0SFRNTCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgRmlsdGVyICAgICAgICAgICAgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgRmlsdGVycyAgICAgICAgICAgICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIENvbmZpZ0l0ZW1JRHMgICAgICAgICA9PiBcQFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIEdldENvbHVtbkZpbHRlciAgICAgICA9PiBcJUdldENvbHVtbkZpbHRlciwKICAgICAgICBMYXN0Q29sdW1uRmlsdGVyICAgICAgPT4gJExhc3RDb2x1bW5GaWx0ZXIsCiAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVG90YWwgICAgICAgICAgICAgICAgID0+ICRDb3VudFRvdGFsLAogICAgICAgIFJlcXVlc3RlZFVSTCAgICAgICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgIFRpdGxlTmFtZSAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nKSwKICAgICAgICBUaXRsZVZhbHVlICAgICAgICAgICAgPT4gJFNlbGYtPntGaWx0ZXJzfXskRmlsdGVyfS0+e05hbWV9LAogICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciAgICAgICAgICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICBDb2x1bW5GaWx0ZXJGb3JtICAgICAgPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlciB8fCAnJywKICAgICAgICB9LAogICAgICAgIEZyb250ZW5kID0+ICdQdWJsaWMnLAoKICAgICAgICAjIGRvIG5vdCBwcmludCB0aGUgcmVzdWx0IGVhcmxpZXIsIGJ1dCByZXR1cm4gY29tcGxldGUgY29udGVudAogICAgICAgIE91dHB1dCA9PiAxLAogICAgKTsKCiAgICBteSAlUHVibGljQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpIC8vIHt9IH07CiAgICBpZiAoICRQdWJsaWNBY3Rpb25ze1B1YmxpY0lUU01Db25maWdJdGVtU2VhcmNofSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQm94JywKICAgICAgICApOwogICAgfQoKICAgIG15ICRIZWFkZXJUaXRsZSA9ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbSIpLT57VGl0bGV9IHx8ICJDb25maWdJdGVtcyI7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0lUU01Db25maWdJdGVtJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgID0+ICRIZWFkZXJUaXRsZSwKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIyBnZXQgcGFnZSBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKICAgICMKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKCiAgICAjIGNsZWFyIGFueSBhY3RpdmUgbG9naW4gdG8gZW5mb3JjZSBzZWN1cml0eQogICAgZGVsZXRlICRTZWxmLT57VXNlcklEfTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJEJhY2tlbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBjb25maWd1cmVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LAogICAgKTsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggZmlsdGVycyBmcm9tIGNvbmZpZwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5QdWJsaWNFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3Qgb3IgdXNlIGZpcnN0IHZhbGlkIHBlcm1pc3Npb24gY29uZGl0aW9uCiAgICBteSAkRmlsdGVyID0KICAgICAgICAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUGVybWlzc2lvbkNvbmRpdGlvbicgKSB8fAogICAgICAgICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgICAgICAgICAgICAgIHx8CiAgICAgICAgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPiUqIClbMF07CgogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcgPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPnsgc3ByaW50ZiggIiUwMmQiLCAkRmlsdGVyICkgfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnKSApIHsKCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Vycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnRmlsdGVyIGludmFsaWQhJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgIG15ICVQYWdlTmF2OwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaEFjdGlvbicgKSB7CgogICAgICAgIG15ICRTb3J0QnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICAgICAgfHwgJ0FnZSc7CgogICAgICAgIGlmICggJFNvcnRCeSBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAkU29ydEJ5ID0gJ0NoYW5nZWQnOwogICAgICAgIH0KCiAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3JkZXJpbmcgdG8gYmUgdXNlZC4KICAgICAgICBteSAkRGVmYXVsdE9yZGVyQnkgPSAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICAgICAgfHwgJ1VwJzsKCiAgICAgICAgIyBTZXQgdGhlIHNvcnQgb3JkZXIgZnJvbSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBvciB0YWtlIHRoZSBkZWZhdWx0LgogICAgICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICAgICAjIHNvcnQgb24gZGVmYXVsdCBieSB1c2luZyBib3RoIChQcmlvcml0eSwgQWdlKSBlbHNlIHVzZSBvbmx5IG9uZSBzb3J0IGFyZ3VtZW50CiAgICAgICAgbXkgJVNvcnQ7CgogICAgICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgICAgICBteSAkUHJlU29ydEJ5UHJpb3JpdHkgPSAkQ29uZmlnLT57J1ByZVNvcnQ6OkJ5UHJpb3JpdHknfTsKICAgICAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICAgICAgU29ydEJ5ICA9PiAkU29ydEJ5LAogICAgICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICAgICAgU29ydEJ5ICA9PiBbICdQcmlvcml0eScsICRTb3J0QnkgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFZpZXcgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmlldycgKSB8fCAnJzsKCiAgICAgICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICAgICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH07CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICAgICAkVmlldyB8fD0gJ1NtYWxsJzsKCiAgICAgICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1N1YmFjdGlvbn0gKQogICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICk7CgogICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgICAgIC4gJztTdWJhY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTdWJhY3Rpb259ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKTsKCiAgICAgICAgIyBnZXQgc2VhcmNoIHBhcmFtcyBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJUdldFBhcmFtOwogICAgICAgIFBBUkFNOgogICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW0gKHF3KE51bWJlciBOYW1lKSkgewogICAgICAgICAgICBuZXh0IFBBUkFNIGlmICEkQ29uZmlnLT57JFNlYXJjaFBhcmFtfTsKCiAgICAgICAgICAgICMgZmV0Y2ggc2luZ2xlIHZhbHVlIHBhcmFtcwogICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRTZWFyY2hQYXJhbSApOwoKICAgICAgICAgICAgIyBzdXBwcmVzcyBmdXp6eSBsb2dpYyBvcGVyYXRvcnMKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U3VwcHJlc3NGdXp6eUxvZ2ljfSApIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ID1+IHMvW1wqJV9dLy9nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMaW5rUGFnZSAuPSAiOyRTZWFyY2hQYXJhbT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSApOwogICAgICAgICAgICAkTGlua1NvcnQgLj0gIjskU2VhcmNoUGFyYW09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gKTsKICAgICAgICB9CgogICAgICAgIG15IEBBcnJheVNlYXJjaFBhcmFtczsKCiAgICAgICAgaWYgKCAkQ29uZmlnLT57Q2xhc3N9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0NsYXNzSURzJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CiAgICAgICAgICAgIHB1c2ggQEFycmF5U2VhcmNoUGFyYW1zLCAnRGVwbFN0YXRlSURzJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0luY2lTdGF0ZUlEcyc7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtQXJyYXkgKEBBcnJheVNlYXJjaFBhcmFtcykgewoKICAgICAgICAgICAgIyBmZXRjaCBtdWx0aSB2YWx1ZSBwYXJhbXMKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtQXJyYXkgKTsKCiAgICAgICAgICAgIGlmICggYW55IHskX30gQEFycmF5ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbUFycmF5fSA9IFxAQXJyYXk7CiAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oICcnLCBtYXAgeyAiOyRTZWFyY2hQYXJhbUFycmF5PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSBAQXJyYXkgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJVNlYXJjaENvbmZpZzsKICAgICAgICBteSAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gR2V0UGFyYW0gdG8gc3RvcmUgaXQgbGF0ZXIgaW4gdGhlIHNlYXJjaAogICAgICAgICAgICAgICAgIyBwcm9maWxlCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewoKICAgICAgICAgICAgICAgICAgICAjIGFwcGVuZCBzZWFyY2ggcGFyYW1zIHRvIGxpbmtzCiAgICAgICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtQYWdlIC49IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCB7ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rU29ydCAuPSBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgeyAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtQYWdlIC49ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfSApOwogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1NvcnQgLj0gIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9ICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRMaW5rUGFnZSAuPSAnOyc7CiAgICAgICAgJExpbmtTb3J0IC49ICc7JzsKCiAgICAgICAgJVNlYXJjaENvbmZpZyA9ICgKICAgICAgICAgICAgJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICVTb3J0LAogICAgICAgICk7CgogICAgICAgICMgbWVyZ2UgZmlsdGVyZWQgY2xhc3NlcyB3aXRoIHBlcm1pc3Npb24gY29uZGl0aW9uIGNsYXNzZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0NsYXNzSURzfSApICkgewogICAgICAgICAgICBteSBAU2VhcmNoQ2xhc3NlczsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc0lEICggJEdldFBhcmFte0NsYXNzSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hDbGFzc2VzLCAkQ2xhc3NMaXN0LT57JENsYXNzSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7Q2xhc3Nlc30gPSBcQFNlYXJjaENsYXNzZXM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoQ29uZmlne0NsYXNzZXN9ID0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfTsKICAgICAgICB9CgogICAgICAgIGlmICggISRTZWFyY2hDb25maWd7Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgbWVyZ2UgZmlsdGVyZWQgZGVwbG95bWVudCBzdGF0ZXMgd2l0aCBwZXJtaXNzaW9uIGNvbmRpdGlvbiBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17RGVwbFN0YXRlSURzfSApICkgewogICAgICAgICAgICBteSBAU2VhcmNoRGVwbFN0YXRlczsKICAgICAgICAgICAgZm9yIG15ICREZXBsU3RhdGVJRCAoICRHZXRQYXJhbXtEZXBsU3RhdGVJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbFN0YXRlTGlzdC0+eyREZXBsU3RhdGVJRH0gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoRGVwbFN0YXRlcywgJERlcGxTdGF0ZUxpc3QtPnskRGVwbFN0YXRlSUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaERlcGxTdGF0ZXMsICREZXBsU3RhdGVMaXN0LT57JERlcGxTdGF0ZUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhQFNlYXJjaERlcGxTdGF0ZXMgKSB7CiAgICAgICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSBcQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9OwogICAgICAgIH0KCiAgICAgICAgIyBtYXAgZmlsdGVyZWQgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hJbmNpU3RhdGVzID0gbWFwIHsgJEluY2lTdGF0ZUxpc3QtPnskX30gfSAkR2V0UGFyYW17SW5jaVN0YXRlSURzfS0+QCo7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7SW5jaVN0YXRlc30gPSBcQFNlYXJjaEluY2lTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VhcmNoQ29uZmlne051bWJlcn0gPSAkR2V0UGFyYW17TnVtYmVyfSA/ICRHZXRQYXJhbXtOdW1iZXJ9IDogdW5kZWY7CiAgICAgICAgJFNlYXJjaENvbmZpZ3tOYW1lfSAgID0gJEdldFBhcmFte05hbWV9ICAgPyAkR2V0UGFyYW17TmFtZX0gICA6IHVuZGVmOwoKICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVGaWx0ZXJzID0gKAogICAgICAgICAgICAkRmlsdGVyID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgUHJpbyAgID0+IDEwMDAsCiAgICAgICAgICAgICAgICBTZWFyY2ggPT4gXCVTZWFyY2hDb25maWcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJVNlYXJjaENvbmZpZyApIHsKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Vycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIHNlbGVjdGVkIHZpZXcgaXMgYXZhaWxhYmxlLgoKICAgICAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljT3ZlcnZpZXcnKTsKICAgICAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CgogICAgICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgICAgICBLRVk6CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKICAgICAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgICAgIG15ICRQYWdlU2hvd24gICAgICAgICAgICAgICA9ICRTZWxmLT57JFBhZ2VTaG93blByZWZlcmVuY2VzS2V5fSB8fCAxMDsKCiAgICAgICAgIyBkbyBzaG93biBjb25maWcgaXRlbSBsb29rdXAKICAgICAgICBteSAkTGltaXQgPSAxXzAwMDsKCiAgICAgICAgIyBnZXQgZGF0YSAodmlld2FibGUgY29uZmlnIGl0ZW1zLi4uKQogICAgICAgICMgc2VhcmNoIGFsbCBjb25maWcgaXRlbXMKICAgICAgICBteSBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICVTZWFyY2hDb25maWcsCiAgICAgICAgICAgIExpbWl0ICA9PiAkTGltaXQsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICk7CgogICAgICAgIGlmICggc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPT0gMSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXNbMF0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFRvdGFsID0gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgICAgIG15ICRTdGFydEhpdCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICBteSBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICBMaW1pdCAgPT4gJFN0YXJ0SGl0ICsgJFBhZ2VTaG93biAtIDEsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICk7CgogICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+IDEwMDAwLAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgQWxsSGl0cyAgID0+IHNjYWxhciBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIExpbmsgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgIElEUHJlZml4ICA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICk7CgogICAgICAgICMgVE9ETyBNYXliZSB0aGVyZSBpcyBhIG1vcmUgZWxlZ2FudCB3YXkgdG8gZG8gdGhpcz8KICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICAgICAkU2VsZi0+e0ZpbHRlcnN9ID0gXCVGaWx0ZXJzOwoKICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1MaXN0SFRNTCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIExpbmtQYWdlICAgICAgICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlciAgICA9PiAwLAogICAgICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiAkVG90YWwsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgID0+ICRTb3J0QnksCiAgICAgICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgRnJvbnRlbmQgICAgICAgICAgICAgID0+ICdQdWJsaWMnLAoKICAgICAgICAgICAgIyBkbyBub3QgcHJpbnQgdGhlIHJlc3VsdCBlYXJsaWVyLCBidXQgcmV0dXJuIGNvbXBsZXRlIGNvbnRlbnQKICAgICAgICAgICAgT3V0cHV0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEJveCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVB1YmxpY0FjdGlvbnMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0Zyb250ZW5kOjpNb2R1bGUnKSAvLyB7fSB9OwogICAgICAgIGlmICggJFB1YmxpY0FjdGlvbnN7UHVibGljSVRTTUNvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGluaycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoUmVzdWx0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUxpc3RIVE1MID0+ICRDb25maWdJdGVtTGlzdEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBzdG9yZSBkcm9wZG93biByZXN0cmljdGlvbnMgZnJvbSBwZXJtaXNzaW9uIGNvbmRpdGlvbgogICAgICAgIG15ICVTZWFyY2hhYmxlUGFyYW1zID0gKAogICAgICAgICAgICBJbmNpU3RhdGUgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgc2VhcmNoYWJsZSBwYXJhbXMKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSA9IHsKICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICRDbGFzc0xvb2t1cHskX30KICAgICAgICAgICAgICAgICAgICA/ICggJENsYXNzTG9va3VweyRffSA9PiAkXyApCiAgICAgICAgICAgICAgICAgICAgOiAoKQogICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqCiAgICAgICAgfTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30gKSApIHsKICAgICAgICAgICAgbXkgJURlcGxTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJERlcGxTdGF0ZUxpc3QtPiUqOwogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gewogICAgICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTG9va3VweyRffQogICAgICAgICAgICAgICAgICAgICAgICA/ICggJERlcGxTdGF0ZUxvb2t1cHskX30gPT4gJF8gKQogICAgICAgICAgICAgICAgICAgICAgICA6ICgpCiAgICAgICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gJERlcGxTdGF0ZUxpc3Q7CiAgICAgICAgfQoKICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMnKTsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzKSApIHsKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlB1YmxpY0Vycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgbXkgJVB1YmxpY0FjdGlvbnMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0Zyb250ZW5kOjpNb2R1bGUnKSAvLyB7fSB9OwogICAgICAgIGlmICggJFB1YmxpY0FjdGlvbnN7UHVibGljSVRTTUNvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGluaycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoRm9ybScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJURlZmF1bHRzOwogICAgICAgIGlmICggJENvbmZpZy0+e0RlZmF1bHRzfSApIHsKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkQ29uZmlnLT57RGVmYXVsdHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICBpZiAoICRLZXkgPX4gL15Db25maWdJdGVtKENyZWF0ZXxDaGFuZ2UpLyApIHsKICAgICAgICAgICAgICAgICAgICBteSBASXRlbXMgPSBzcGxpdCAvOy8sICRDb25maWctPntEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gc3BsaXQgLz0vLCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgJERlZmF1bHRzeyRLZXl9ID0gJFZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREZWZhdWx0c3skS2V5fSA9ICRDb25maWctPntEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSBwZXJtaXNzaW9uIGNvbmRpdGlvbgogICAgICAgIG15ICVQZXJtaXNzaW9uQ29uZGl0aW9uRGF0YSA9IG1hcCB7IGludCgkXykgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzLT57JF99LT57TmFtZX0gfSBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+JSo7CiAgICAgICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgID0+IFwlUGVybWlzc2lvbkNvbmRpdGlvbkRhdGEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdQZXJtaXNzaW9uQ29uZGl0aW9uJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEZpbHRlciB8fCAnJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFBlcm1pc3Npb25Db25kaXRpb25TdHJnID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uU3RyZywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgaGlzdG9yaWNhbCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQogICAgICAgICAgICAgICAgICAgIG15ICRIaXN0b3JpY2FsVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPkhpc3RvcmljYWxWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREYXRhID0gJFBvc3NpYmxlVmFsdWVzOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBoaXN0b3JpYyB2YWx1ZXMgdG8gY3VycmVudCB2YWx1ZXMgKGlmIHRoZXkgZG9uJ3QgZXhpc3QgYW55bW9yZSkKICAgICAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRIaXN0b3JpY2FsVmFsdWVzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskSGlzdG9yaWNhbFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGF0YS0+eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRhLT57JEtleX0gPSAkSGlzdG9yaWNhbFZhbHVlcy0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJXskRGF0YX07CiAgICAgICAgICAgICAgICAgICAgQEFjbERhdGF7IGtleXMgJUFjbERhdGEgfSA9IGtleXMgJUFjbERhdGE7CgogICAgICAgICAgICAgICAgICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcyBmaWx0ZXIgZnJvbSBBQ0xzCiAgICAgICAgICAgICAgICAgICAgbXkgJEFDTCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgRmlsZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJERhdGEtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+ICRQb3NzaWJsZVZhbHVlc0ZpbHRlciwKICAgICAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAgICAgICAgICAgICBEZWZhdWx0VmFsdWUgICAgICAgICA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnLT57RGVmYXVsdHN9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e051bWJlcn0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e05hbWV9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57Q2xhc3N9ICkgewogICAgICAgICAgICBteSAkQ2xhc3NTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7Q2xhc3N9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0NsYXNzSURzfSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENsYXNzU3RyZyA9PiAkQ2xhc3NTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgICAgICBteSAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0RlcGxveW1lbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0+ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSB3YW50ZWQgaW5jaWRlbnQgc3RhdGVzCiAgICAgICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7SW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRGVmYXVsdHN7SW5jaWRlbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+UHVibGljRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uIScpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBteSAkSGVhZGVyVGl0bGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2giKS0+e1RpdGxlfSB8fCAiQ29uZmlnSXRlbSBTZWFyY2giOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgPT4gJEhlYWRlclRpdGxlLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBwYWdlIGZvb3RlcgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CgogICAgIyBjbGVhciBhbnkgYWN0aXZlIGxvZ2luIHRvIGVuZm9yY2Ugc2VjdXJpdHkKICAgIGRlbGV0ZSAkU2VsZi0+e1VzZXJJRH07CgogICAgJFNlbGYtPntDYWNoZVR5cGV9ID0gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKCiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRMb2dPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QdWJsaWNQZXJtaXNzaW9uKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICApOwogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIEdldCB0aGUgRmllbGQgY29udGVudC4KICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn07CgogICAgICAgICMgIyBCdWlsZCBiYXNlIFVSTCBmb3IgaW4tbGluZSBpbWFnZXMuCiAgICAgICAgIyBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgIyBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICMgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKCiAgICAjIGNsZWFyIGFueSBhY3RpdmUgbG9naW4gdG8gZW5mb3JjZSBzZWN1cml0eQogICAgZGVsZXRlICRTZWxmLT57VXNlcklEfTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UHVibGljRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UHVibGljUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtWm9vbScpIC8vIHt9OwoKICAgIGlmICggISRDb25maWctPntWZXJzaW9uc0VuYWJsZWR9ICkgewogICAgICAgICRWZXJzaW9uSUQgPSB1bmRlZjsKICAgIH0KCiAgICAjIGdldCBjb250ZW50CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKCiAgICAgICAgIyBhZGRpdGlvbmFsIHNhbml0eSBjaGVjayAtIFB1YmxpY1Blcm1pc3Npb24gc2hvdWxkIGhhbmRsZSB0aGlzIGNhc2UgdXN1YWxseQogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5QdWJsaWNFcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0gbm90IGZvdW5kIScpLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgaW5jaWRlbnQgc2lnbmFsCiAgICBteSAlSW5jaVNpZ25hbHMgPSAoCiAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCd3YXJuaW5nJykgICAgID0+ICd5ZWxsb3dsZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnaW5jaWRlbnQnKSAgICA9PiAncmVkbGVkJywKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgY29sb3IgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJFByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBzdG9yZSB0aGUgb3JpZ2luYWwgZGVwbG95bWVudCBzdGF0ZSBhcyBrZXkKICAgICAgICAjIGFuZCB0aGUgc3Mgc2FmZSBjb3ZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlCiAgICAgICAgJERlcGxTaWduYWxzeyAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfSB9ID0gJ0NvbG9yJyAuICREZXBsU3RhdGU7CgogICAgICAgICMgY292ZXJ0IHRvIGxvd2VyIGNhc2UKICAgICAgICBteSAkRGVwbFN0YXRlQ29sb3IgPSBsYygkQ29sb3IpID1+IHMvW14wLTlhLWZdLy9tc2dyOwoKICAgICAgICAjIGFkZCB0byBzdHlsZSBjbGFzc2VzIHN0cmluZwogICAgICAgICRTdHlsZUNsYXNzZXMgLj0gIgogICAgICAgICAgICAuQ29sb3IkRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlciggVmFsdWUgPT4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICk7CgogICAgaWYgKCAkQ29uZmlnLT57R2VuZXJhbEluZm99ICkgewogICAgICAgIGlmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtOdW1iZXJ9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0Z1bGxTdWInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgPT4gJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtDbGFzc30gPyAkQ29uZmlnSXRlbS0+e0NsYXNzfSA6ICdDb25maWdJdGVtJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkQ29uZmlnLT57R2VuZXJhbEluZm99e0NsYXNzfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDbGFzc1N1YicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUNvbG9yQ2xhc3N9ID0gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZUNvbG9yQ2xhc3N9ID0gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgIElORk86CiAgICAgICAgZm9yIG15ICRJbmZvIChxdy9EZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSBDcmVhdGVkVGltZSBMYXN0Q2hhbmdlZFRpbWUvKSB7CiAgICAgICAgICAgIG5leHQgSU5GTyBpZiAhJENvbmZpZy0+e0dlbmVyYWxJbmZvfXskSW5mb307CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEluZm8sCiAgICAgICAgICAgICAgICBEYXRhID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUHVibGljQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljRnJvbnRlbmQ6Ok1vZHVsZScpIC8vIHt9IH07CiAgICBpZiAoICRQdWJsaWNBY3Rpb25ze1B1YmxpY0lUU01Db25maWdJdGVtfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdMaW5rJywKICAgICAgICApOwogICAgfQoKICAgICMgaWYgYSB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzIChUT0RPOiBXaGVuIGRvZXMgaXQgbm90PykKICAgIGlmICggJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBQYWdlczsKICAgICAgICBteSAkUGFnZVNob3duOwogICAgICAgIG15ICRQYWdlUmVxdWVzdGVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1BhZ2UnICk7CiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgJFBhZ2UtPntJbnRlcmZhY2VzfTsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnUHVibGljJyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwoKICAgICAgICAgICAgcHVzaCBAUGFnZXMsICRQYWdlOwoKICAgICAgICAgICAgaWYgKCAkUGFnZVJlcXVlc3RlZCAmJiAkUGFnZS0+e05hbWV9IGVxICRQYWdlUmVxdWVzdGVkICkgewogICAgICAgICAgICAgICAgJFBhZ2VTaG93biA9ICRQYWdlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnZU5hbWUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgPT4gJFBhZ2VzWzBde05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkUGFnZSAoQFBhZ2VzKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdlTGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lICAgICA9PiAkUGFnZS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWQgICAgID0+ICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VTaG93bi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQFBhZ2VzKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtLT57RHluYW1pY0ZpZWxkSFRNTH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCcpLT5QYWdlUmVuZGVyKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICBQYWdlUmVmICAgID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdmVyc2lvbiBsaXN0CiAgICAgICAgaWYgKCAkQ29uZmlnLT57VmVyc2lvbnNFbmFibGVkfSAmJiAkQ29uZmlnLT57VmVyc2lvbnNTZWxlY3RhYmxlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtWm9vbTsnCiAgICAgICAgICAgICAgICAgICAgLiAiQ29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtQYWdlPVslIERhdGEuTmFtZSB8IHVyaSAlXTsiLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkUGFnZVNob3duID8gJFBhZ2VTaG93bi0+e05hbWV9IDogJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQFZlcnNpb25TZWxlY3Rpb25EYXRhID0gbWFwIHsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAoICRCYXNlTGluayAuICJWZXJzaW9uSUQ9JF8tPntWZXJzaW9uSUR9IiApLAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICgKICAgICAgICAgICAgICAgICAgICAgICAgIiRfLT57TmFtZX0gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoICRfLT57VmVyc2lvblN0cmluZ30gfHwgJF8tPntWZXJzaW9uSUR9ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIiAoJF8tPntDcmVhdGVUaW1lfSkiCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAkVmVyc2lvbkxpc3QtPkAqOwoKICAgICAgICAgICAgbXkgJFZlcnNpb25TZWxlY3Rpb24gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQFZlcnNpb25TZWxlY3Rpb25EYXRhLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdWZXJzaW9uU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplIEFsaWduRHJvcGRvd25SaWdodCcsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFZlcnNpb25JRCA/ICRCYXNlTGluayAuICJWZXJzaW9uSUQ9JFZlcnNpb25JRCIgOiB1bmRlZiwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdWZXJzaW9ucycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uU2VsZWN0aW9uID0+ICRWZXJzaW9uU2VsZWN0aW9uLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBpZiAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyBnZXQgdGhlIG1ldGFkYXRhIG9mIHRoZSBjdXJyZW50IGF0dGFjaG1lbnQKICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVuYW1lfSwKICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZXNpemV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgRG93bmxvYWRBdHRhY2htZW50CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgICAgIG15ICRGaWxlbmFtZSAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlbmFtZScgKTsKICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICk7CgogICAgICAgICMgcmV0dXJuIGVycm9yIGlmIGZpbGUgZG9lcyBub3QgZXhpc3QKICAgICAgICBpZiAoICEkQXR0YWNobWVudERhdGEgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKSEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgJXskQXR0YWNobWVudERhdGF9LAogICAgICAgICAgICBUeXBlID0+ICdhdHRhY2htZW50JywKICAgICAgICApOwogICAgfQoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkT3V0cHV0LAogICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyAgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/Dashboard/ITSMConfigItemGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IFwlUGFyYW07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbmVlZGVkIHBhcmFtZXRlcnMKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWcgTmFtZSBVc2VySUQpKSB7CiAgICAgICAgZGllICJHb3Qgbm8gJE5lZWRlZCEiIGlmICggISRTZWxmLT57JE5lZWRlZH0gKTsKICAgIH0KCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAkUmVtb3ZlRmlsdGVycyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSZW1vdmVGaWx0ZXJzJyApIHx8ICRQYXJhbXtSZW1vdmVGaWx0ZXJzfSB8fCAwOwoKICAgICMgZ2V0IHNvcnRpbmcgcGFyYW1zCiAgICBmb3IgbXkgJEl0ZW0gKHF3KFNvcnRCeSBPcmRlckJ5KSkgewogICAgICAgICRTZWxmLT57JEl0ZW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEl0ZW0gKSB8fCAkUGFyYW17JEl0ZW19OwogICAgfQoKICAgICMgR2V0IGFkZCBmaWx0ZXJzIHBhcmFtLgogICAgJFNlbGYtPntBZGRGaWx0ZXJzfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdBZGRGaWx0ZXJzJyApIHx8ICRQYXJhbXtBZGRGaWx0ZXJzfSB8fCAwOwogICAgJFNlbGYtPntUYWJBY3Rpb259ICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWJBY3Rpb24nICkgIHx8ICRQYXJhbXtUYWJBY3Rpb259ICB8fCAwOwoKICAgICMgR2V0IHByZXZpb3VzIHNvcnRpbmcgY29sdW1uLgogICAgJFNlbGYtPntTb3J0aW5nQ29sdW1ufSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0aW5nQ29sdW1uJyApIHx8ICRQYXJhbXtTb3J0aW5nQ29sdW1ufTsKCiAgICAjIHNldCBmaWx0ZXIgc2V0dGluZ3MKICAgIGZvciBteSAkSXRlbSAocXcoQ29sdW1uRmlsdGVyIEdldENvbHVtbkZpbHRlciBHZXRDb2x1bW5GaWx0ZXJTZWxlY3QpKSB7CiAgICAgICAgJFNlbGYtPnskSXRlbX0gPSAkUGFyYW17JEl0ZW19OwogICAgfQoKICAgICMgc2F2ZSBjb2x1bW4gZmlsdGVycwogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gICAgICAgICA9ICdVc2VyRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRmlsdGVycycgLiAkU2VsZi0+e05hbWV9OwogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSA9ICdVc2VyRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRmlsdGVyc1JlYWxLZXlzJyAuICRTZWxmLT57TmFtZX07CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRKU09OT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkVXNlck9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICBpZiAoJFJlbW92ZUZpbHRlcnMpIHsKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSwKICAgICAgICAgICAgVmFsdWUgID0+ICcnLAogICAgICAgICk7CiAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSwKICAgICAgICAgICAgVmFsdWUgID0+ICcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBqdXN0IGluIGNhc2UgbmV3IGZpbHRlciB2YWx1ZXMgYXJyaXZlCiAgICBlbHNpZiAoCiAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSApCiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSApCiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uRmlsdGVyfSApCiAgICAgICAgKQogICAgewoKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJlbmNlcyBmb3IgdGhpcyB3aWRnZXQKICAgICAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJENvbHVtblByZWZWYWx1ZXM7CiAgICAgICAgICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9ICkgewogICAgICAgICAgICAgICAgJENvbHVtblByZWZWYWx1ZXMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgUFJFRlZBTFVFUzoKICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJXsgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRDb2x1bW59IGVxICdEZWxldGVGaWx0ZXInICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ29sdW1uUHJlZlZhbHVlcy0+eyRDb2x1bW59OwogICAgICAgICAgICAgICAgICAgIG5leHQgUFJFRlZBTFVFUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmVmFsdWVzLT57JENvbHVtbn0gPSAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskQ29sdW1ufTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+ICRDb2x1bW5QcmVmVmFsdWVzICksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNhdmUgcmVhbCBrZXkncyBuYW1lCiAgICAgICAgICAgIG15ICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXM7CiAgICAgICAgICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9IH0gKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uUHJlZlJlYWxLZXlzVmFsdWVzID0gJEpTT05PYmplY3QtPkRlY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBSRUFMS0VZVkFMVUVTOgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbHVtbkZpbHRlcn0gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUkVBTEtFWVZBTFVFUyBpZiAhJENvbHVtbjsKCiAgICAgICAgICAgICAgICBteSAkRGVsZXRlRmlsdGVyID0gMDsKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJ0RlbGV0ZUZpbHRlcicgfSBAeyAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkRGVsZXRlRmlsdGVyID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSApICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGFueSB7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59LT57JF99IGVxICdEZWxldGVGaWx0ZXInIH0KICAgICAgICAgICAgICAgICAgICAgICAga2V5cyAleyAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICREZWxldGVGaWx0ZXIgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJERlbGV0ZUZpbHRlcikgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ29sdW1uUHJlZlJlYWxLZXlzVmFsdWVzLT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59OwogICAgICAgICAgICAgICAgICAgIG5leHQgUkVBTEtFWVZBTFVFUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMtPnskQ29sdW1ufSA9ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+ICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJlbmNlcyBmb3IgdGhpcyB3aWRnZXQKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBjb2x1bW4gbmFtZXMgZnJvbSBQcmVmZXJlbmNlcwogICAgbXkgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyczsKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9ICkgewogICAgICAgICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc30gfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzKSB7CiAgICAgICAgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyczsKICAgICAgICBteSBAQ29sdW1uRmlsdGVycyA9IGtleXMgJXskUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzfTsKICAgICAgICBmb3IgbXkgJEZpZWxkIChAQ29sdW1uRmlsdGVycykgewogICAgICAgICAgICAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0tPnsgJEZpZWxkIC4gJFNlbGYtPntOYW1lfSB9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVycy0+eyRGaWVsZH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbHVtbiByZWFsIG5hbWVzIGZyb20gUHJlZmVyZW5jZXMKICAgIG15ICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5czsKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9IH0gKSB7CiAgICAgICAgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzID0gJEpTT05PYmplY3QtPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzUmVhbEtleXMpIHsKICAgICAgICBteSBAQ29sdW1uRmlsdGVyc1JlYWwgPSBrZXlzICV7JFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzfTsKICAgICAgICBmb3IgbXkgJEZpZWxkIChAQ29sdW1uRmlsdGVyc1JlYWwpIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JEZpZWxkfSA9ICRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5cy0+eyRGaWVsZH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGN1cnJlbnQgZmlsdGVyCiAgICBteSAkTmFtZSAgICAgICAgICAgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICkgfHwgJyc7CiAgICBteSAkUHJlZmVyZW5jZXNLZXkgICAgICAgICAgID0gJ1VzZXJEYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWNGaWx0ZXInIC4gJFNlbGYtPntOYW1lfTsKICAgIG15ICRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXkgPSAnVXNlckRhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpY0FkZGl0aW9uYWxGaWx0ZXInIC4gJFNlbGYtPntOYW1lfTsKICAgIGlmICggJFNlbGYtPntOYW1lfSBlcSAkTmFtZSApIHsKICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSAgICAgICAgICAgfHwgJyc7CiAgICAgICAgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdBZGRpdGlvbmFsRmlsdGVyJyApIHx8ICcnOwogICAgfQoKICAgICMgUmVtZW1iZXIgdGhlIHNlbGVjdGVkIGZpbHRlciBpbiB0aGUgc2Vzc2lvbi4KICAgIGlmICggJFNlbGYtPntGaWx0ZXJ9ICkgewoKICAgICAgICAjIHVwZGF0ZSBzZXNzaW9uCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICRQcmVmZXJlbmNlc0tleSwKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlc0tleSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJFNlbGYtPnskUHJlZmVyZW5jZXNLZXl9IHx8ICRTZWxmLT57Q29uZmlnfS0+e0ZpbHRlcn0gfHwgJ0Fzc2lnbmVkVG9FbnRpdHknOwogICAgfQoKICAgICMgUmVtZW1iZXIgdGhlIHNlbGVjdGVkIGZpbHRlciBpbiB0aGUgc2Vzc2lvbi4KICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSApIHsKCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkQWRkaXRpb25hbFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ID0gJFNlbGYtPnskQWRkaXRpb25hbFByZWZlcmVuY2VzS2V5fSB8fCAkU2VsZi0+e0NvbmZpZ30tPntBZGRpdGlvbmFsRmlsdGVyfSB8fCAnQXNzaWduZWRUb0VudGl0eSc7CiAgICB9CgogICAgJFNlbGYtPntQcmVmS2V5U2hvd259ICAgPSAnVXNlckRhc2hib2FyZFByZWYnIC4gJFNlbGYtPntOYW1lfSAuICctU2hvd24nOwogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gPSAnVXNlckRhc2hib2FyZFByZWYnIC4gJFNlbGYtPntOYW1lfSAuICctQ29sdW1ucyc7CiAgICAkU2VsZi0+e1BhZ2VTaG93bn0gICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+eyAkU2VsZi0+e1ByZWZLZXlTaG93bn0gfQogICAgICAgIHx8ICRTZWxmLT57Q29uZmlnfS0+e0xpbWl0fTsKICAgICRTZWxmLT57U3RhcnRIaXR9ID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwoKICAgICMgaGFzaCB3aXRoIGFsbCB2YWxpZCBzb3J0YWJsZSBjb2x1bW5zICh0YWtlbiBmcm9tIElUU01Db25maWdJdGVtU2VhcmNoKQogICAgIyBTb3J0QnkgID0+ICdBZ2UnLCAgICMgQ3JlYXRlZHxOdW1iZXJ8Q2hhbmdlZHxOYW1lfERlcGxTdGF0ZXxDdXJEZXBsU3RhdGUKICAgICMgfEluY2lTdGF0ZXxDdXJJbmNpU3RhdGUKICAgICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9ID0gewogICAgICAgICdBZ2UnICAgICAgICAgID0+IDEsCiAgICAgICAgJ051bWJlcicgICAgICAgPT4gMSwKICAgICAgICAnTmFtZScgICAgICAgICA9PiAxLAogICAgICAgICdDcmVhdGVkJyAgICAgID0+IDEsCiAgICAgICAgJ0xhc3RDaGFuZ2VkJyAgPT4gMSwKICAgICAgICAnRGVwbFN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJEZXBsU3RhdGUnID0+IDEsCiAgICAgICAgJ0luY2lTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VySW5jaVN0YXRlJyA9PiAxLAogICAgfTsKCiAgICAjIGRlZmluZSBmaWx0ZXJhYmxlIGNvbHVtbnMKICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIGlmICggJFNlbGYtPntDb25maWd9e0NvbmZpZ0l0ZW1LZXl9ICkgewogICAgICAgICRTZWxmLT57Q29uZmlnSXRlbUtleX0gPSAkU2VsZi0+e0NvbmZpZ317Q29uZmlnSXRlbUtleX07CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNvbmZpZ3VyZSBjb2x1bW5zCiAgICBteSBAQ29sdW1uc0VuYWJsZWQ7CiAgICBteSBAQ29sdW1uc0F2YWlsYWJsZTsKICAgIG15IEBDb2x1bW5zQXZhaWxhYmxlTm90RW5hYmxlZDsKCiAgICAjIGNoZWNrIGZvciBkZWZhdWx0IHNldHRpbmdzCiAgICBpZiAoCiAgICAgICAgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSApCiAgICAgICAgKQogICAgewogICAgICAgIEBDb2x1bW5zQXZhaWxhYmxlID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSB9CiAgICAgICAgICAgIGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSBlcSAnMicgfQogICAgICAgICAgICBzb3J0IHsgJFNlbGYtPl9EZWZhdWx0Q29sdW1uU29ydCgpIH0ga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSB1c2VyIGhhcyBmaWx0ZXIgcHJlZmVyZW5jZXMgZm9yIHRoaXMgd2lkZ2V0CiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBKU09OIG9iamVjdAogICAgbXkgJEpTT05PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwoKICAgICMgaWYgcHJlZmVyZW5jZSBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCB0YWtlIHRoZW0KICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+eyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9LAogICAgICAgICk7CgogICAgICAgIEBDb2x1bW5zRW5hYmxlZCA9IGdyZXAgeyAkQ29sdW1uc0VuYWJsZWQtPntDb2x1bW5zfS0+eyRffSA9PSAxIH0KICAgICAgICAgICAga2V5cyAleyAkQ29sdW1uc0VuYWJsZWQtPntDb2x1bW5zfSB9OwoKICAgICAgICBpZiAoICRDb2x1bW5zRW5hYmxlZC0+e09yZGVyfSAmJiBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfSApIHsKICAgICAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQHsgJENvbHVtbnNFbmFibGVkLT57T3JkZXJ9IH07CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSBkdXBsaWNhdGUgY29sdW1ucwogICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgIG15IEBDb2x1bW5zRW5hYmxlZEF1eDsKCiAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBDb2x1bW5zRW5hYmxlZCkgewogICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNFbmFibGVkQXV4LCAkQ29sdW1uOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGZpbHRlcmVkIGNvbHVtbiBsaXN0CiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQENvbHVtbnNFbmFibGVkQXV4OwogICAgfQoKICAgIG15ICVDb2x1bW5zOwogICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCB7ICRhIGNtcCAkYiB9IEBDb2x1bW5zQXZhaWxhYmxlICkgewogICAgICAgICRDb2x1bW5ze0NvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gKCBncmVwIHsgJENvbHVtbk5hbWUgZXEgJF8gfSBAQ29sdW1uc0VuYWJsZWQgKSA/IDEgOiAwOwogICAgICAgIGlmICggbm9uZSB7ICRfIGVxICRDb2x1bW5OYW1lIH0gQENvbHVtbnNFbmFibGVkICkgewogICAgICAgICAgICBwdXNoIEBDb2x1bW5zQXZhaWxhYmxlTm90RW5hYmxlZCwgJENvbHVtbk5hbWU7CiAgICAgICAgfQogICAgfQoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBEZXNjICA9PiBUcmFuc2xhdGFibGUoJ1Nob3duIGNvbmZpZyBpdGVtcycpLAogICAgICAgICAgICBOYW1lICA9PiAkU2VsZi0+e1ByZWZLZXlTaG93bn0sCiAgICAgICAgICAgIEJsb2NrID0+ICdPcHRpb24nLAogICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICA1ICA9PiAnIDUnLAogICAgICAgICAgICAgICAgMTAgPT4gJzEwJywKICAgICAgICAgICAgICAgIDE1ID0+ICcxNScsCiAgICAgICAgICAgICAgICAyMCA9PiAnMjAnLAogICAgICAgICAgICAgICAgMjUgPT4gJzI1JywKICAgICAgICAgICAgICAgIDUwID0+ICc1MCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZWxmLT57UGFnZVNob3dufSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgRGVzYyAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1Nob3duIENvbHVtbnMnKSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSwKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnQWxsb2NhdGlvbkxpc3QnLAogICAgICAgICAgICBDb2x1bW5zICAgICAgICAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXCVDb2x1bW5zICksCiAgICAgICAgICAgIENvbHVtbnNFbmFibGVkICAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNFbmFibGVkICksCiAgICAgICAgICAgIENvbHVtbnNBdmFpbGFibGUgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNBdmFpbGFibGVOb3RFbmFibGVkICksCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gQFBhcmFtczsKfQoKc3ViIENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgaWYgZnJvbnRlbmQgbW9kdWxlIG9mIGxpbmsgaXMgdXNlZAogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntMaW5rfSAmJiAkU2VsZi0+e0NvbmZpZ30tPntMaW5rfSA9fiAvQWN0aW9uPSguKz8pKFsmO10uKz98KSQvICkgewogICAgICAgIG15ICRBY3Rpb24gPSAkMTsKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259ICkgewogICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntMaW5rfSA9ICcnOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gKAogICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAoKICAgICAgICAjIERvbid0IGNhY2hlIHRoaXMgZ2xvYmFsbHkgYXMgaXQgY29udGFpbnMgSlMgdGhhdCBpcyBub3QgaW5zaWRlIG9mIHRoZSBIVE1MLgogICAgICAgIENhY2hlVFRMID0+IHVuZGVmLAogICAgICAgIENhY2hlS2V5ID0+IHVuZGVmLAogICAgKTsKfQoKc3ViIEZpbHRlckNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtGaWx0ZXJDb2x1bW59OwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17RmlsdGVyQ29sdW1ufTsKICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgaWYgKAogICAgICAgICMgVE9ETyBjaGVjawogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnT25seVZhbHVlc09uQ29uZmlnSXRlbScpCiAgICAgICAgKQogICAgewogICAgICAgIG15ICVTZWFyY2hQYXJhbXMgICAgICAgICAgICA9ICRTZWxmLT5fU2VhcmNoUGFyYW1zR2V0KCVQYXJhbSk7CiAgICAgICAgbXkgJUNvbmZpZ0l0ZW1TZWFyY2ggICAgICAgID0gJXsgJFNlYXJjaFBhcmFtc3tDb25maWdJdGVtU2VhcmNofSB9OwogICAgICAgIG15ICVDb25maWdJdGVtU2VhcmNoU3VtbWFyeSA9ICV7ICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbVNlYXJjaFN1bW1hcnl9IH07CgogICAgICAgICMgQWRkIHRoZSBhZGRpdGlvbmFsIGZpbHRlciB0byB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHBhcmFtLgogICAgICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSApIHsKICAgICAgICAgICAgJUNvbmZpZ0l0ZW1TZWFyY2ggPSAoCiAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICAgICAgICAgICV7ICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiA9fiBtL15EeW5hbWljRmllbGRfLyAmJiAhZGVmaW5lZCAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb2x1bW4gdmFsdWVzIGZvciB0byBidWlsZCB0aGUgZmlsdGVycyBsYXRlcgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBIZWFkZXJDb2x1bW4gICAgICAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICk7CgogICAgIyBtYWtlIHN1cmUgdGhhdCBldmVuIGEgdmFsdWUgb2YgMCBpcyBwYXNzZWQgYXMgYSBTZWxlY3RlZCB2YWx1ZSwgZS5nLiBVbmNoZWNrZWQgdmFsdWUgb2YgYQogICAgIyBjaGVjay1ib3ggZHluYW1pYyBmaWVsZC4KICAgIG15ICRTZWxlY3RlZFZhbHVlID0gZGVmaW5lZCAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0tPnsgJEhlYWRlckNvbHVtbiAuICRTZWxmLT57TmFtZX0gfQogICAgICAgID8gJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJ9LT57ICRIZWFkZXJDb2x1bW4gLiAkU2VsZi0+e05hbWV9IH0KICAgICAgICA6ICcnOwoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgIG15ICRDb2x1bW5GaWx0ZXJKU09OID0gJFNlbGYtPl9Db2x1bW5GaWx0ZXJKU09OKAogICAgICAgIENvbHVtbk5hbWUgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbENvbHVtbiwKICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufSwKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFZhbHVlLAogICAgICAgIERhc2hib2FyZE5hbWUgPT4gJFNlbGYtPntOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDb2x1bW5GaWx0ZXJKU09OOwoKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTZWFyY2hQYXJhbXMgICAgICAgICAgICA9ICRTZWxmLT5fU2VhcmNoUGFyYW1zR2V0KCVQYXJhbSk7CiAgICBteSBAQ29sdW1ucyAgICAgICAgICAgICAgICAgPSBAeyAkU2VhcmNoUGFyYW1ze0NvbHVtbnN9IH07CiAgICBteSAlQ29uZmlnSXRlbVNlYXJjaCAgICAgICAgPSAleyAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1TZWFyY2h9IH07CiAgICBteSAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAleyAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5fSB9OwoKICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHN0b3JlIGRlcGxveW1lbnQgc2lnbmFscwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJUdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfTsKCiAgICAgICAgbXkgKCRDb2xvcikgPSAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwoKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvbnZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlCiAgICAgICAgJERlcGxTaWduYWxzeyAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfSB9ID0gJERlcGxTdGF0ZTsKCiAgICAgICAgIyBjb252ZXJ0IHRvIGxvd2VyIGNhc2UKICAgICAgICBteSAkRGVwbFN0YXRlQ29sb3IgPSBsYyAkQ29sb3IgPX4gcy9bXjAtOWEtZl0vL21zZ3I7CgogICAgICAgICMgYWRkIHRvIHN0eWxlIGNsYXNzZXMgc3RyaW5nCiAgICAgICAgJFN0eWxlQ2xhc3NlcyAuPSAiCiAgICAgICAgICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgbXkgJENhY2hlS2V5ICAgICA9IGpvaW4gJy0nLCAkU2VsZi0+e05hbWV9LCAkU2VsZi0+e0FjdGlvbn0sICRTZWxmLT57UGFnZVNob3dufSwgJFNlbGYtPntTdGFydEhpdH0sICRTZWxmLT57VXNlcklEfTsKICAgIG15ICRDYWNoZUNvbHVtbnMgPSBqb2luKAogICAgICAgICcsJywKICAgICAgICBtYXAgeyAkXyAuICc9PicgLiAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskX30gfSBzb3J0IGtleXMgJXsgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9IH0KICAgICk7CiAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJENhY2hlQ29sdW1ucyBpZiAkQ2FjaGVDb2x1bW5zOwoKICAgICMgSWYgU29ydEJ5IHBhcmFtZXRlciBpcyBub3QgZGVmaW5lZCwgc2V0IHRvIHZhbHVlIGZyb20gJUNvbmZpZ0l0ZW1TZWFyY2gsIG90aGVyd2lzZSBzZXQgdG8gZGVmYXVsdCB2YWx1ZSAnQWdlJy4KICAgIGlmICggIWRlZmluZWQgJFNlbGYtPntTb3J0Qnl9ICkgewogICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9ICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gfSApIHsKICAgICAgICAgICAgJFNlbGYtPntTb3J0Qnl9ID0gJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57U29ydEJ5fSA9ICdBZ2UnOwogICAgICAgIH0KICAgIH0KCiAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFNlbGYtPntTb3J0Qnl9IGlmIGRlZmluZWQgJFNlbGYtPntTb3J0Qnl9OwoKICAgICMgU2V0IE9yZGVyQnkgcGFyYW1ldGVyIHRvIHRoZSBzZWFyY2guCiAgICBteSAkSXNDYWNoZUZvclVzZSA9IDA7CiAgICBpZiAoICRTZWxmLT57T3JkZXJCeX0gKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+e0FkZEZpbHRlcnN9CiAgICAgICAgICAgIHx8ICRTZWxmLT57VGFiQWN0aW9ufQogICAgICAgICAgICB8fCAhZGVmaW5lZCAkU2VsZi0+e1NvcnRpbmdDb2x1bW59CiAgICAgICAgICAgIHx8ICRTZWxmLT57U29ydGluZ0NvbHVtbn0gbmUgJFNlbGYtPntTb3J0Qnl9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9ID0gJFNlbGYtPntPcmRlckJ5fTsKICAgICAgICAgICAgJElzQ2FjaGVGb3JVc2UgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gPSAkU2VsZi0+e09yZGVyQnl9IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwogICAgICAgIH0KICAgIH0KCiAgICAjIFNldCBvcmRlciBmb3IgYmxvY2tzLgogICAgJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gPSAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSB8fCAnRG93bic7CgogICAgIyBTZXQgcHJldmlvdXMgc29ydGluZyBjb2x1bW4gcGFyYW1ldGVyIGZvciBhbGwgY29sdW1ucy4KICAgICRQYXJhbXtTb3J0aW5nQ29sdW1ufSA9ICRTZWxmLT57U29ydEJ5fTsKCiAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gaWYgZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fTsKCiAgICAjIEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIgc2hvd3MgZGF0YSBwZXIgQ3VzdG9tZXJJRAogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICctJyAuICRQYXJhbXtDdXN0b21lcklEfTsKICAgIH0KCiAgICAjIEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyIHNob3dzIGRhdGEgcGVyIEN1c3RvbWVyVXNlcklECiAgICBpZiAoICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICctJyAuICRQYXJhbXtDdXN0b21lclVzZXJJRH07CiAgICB9CgogICAgIyBBZGQgdGhlIGFkZGl0aW9uYWwgZmlsdGVyIGFsd2F5cyB0byB0aGUgY2FjaGUga2V5LCBpZiBhIGFkZGl0aW9uYWwgZmlsdGVyIGV4aXN0cy4KICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfTsKICAgIH0KCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDb25maWdJdGVtSURzID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRGFzaGJvYXJkJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSAuICctJyAuICRTZWxmLT57RmlsdGVyfSAuICctTGlzdCcsCiAgICApOwoKICAgICMgZmluZCBhbmQgc2hvdyBjb25maWcgaXRlbSBsaXN0CiAgICBteSAkQ2FjaGVVc2VkID0gMTsKCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIGlmICggISRDb25maWdJdGVtSURzICkgewoKICAgICAgICAjIGFkZCBzb3J0IGJ5IHBhcmFtZXRlciB0byB0aGUgc2VhcmNoCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9IHx8ICEkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9IH0gKSB7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntTb3J0Qnl9ICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRTZWxmLT57U29ydEJ5fSB9ICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fSA9ICRTZWxmLT57U29ydEJ5fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gPSAnQWdlJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENhY2hlVXNlZCA9ICRJc0NhY2hlRm9yVXNlID8gMSA6IDA7CgogICAgICAgIG15IEBDb25maWdJdGVtSURzQXJyYXk7CgogICAgICAgICMgVE9ETyB1bmRlcnN0YW5kCiAgICAgICAgaWYgKCAhJFNlbGYtPntDb25maWd9LT57SXNQcm9jZXNzV2lkZ2V0fSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57UHJvY2Vzc0xpc3R9ICkgKSB7CgogICAgICAgICAgICAjIENvcHkgb3JpZ2luYWwgY29sdW1uIGZpbHRlci4KICAgICAgICAgICAgbXkgJUNvbHVtbkZpbHRlciA9ICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB8fCB7fSB9OwoKICAgICAgICAgICAgIyBFeGVjdXRlIHNlYXJjaC4KICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfSApICkgewoKICAgICAgICAgICAgICAgICMgaWYgY2xhc3NlcyBhcmUgZmlsdGVyZWQsIGFkanVzdCBzZWFyY2ggY29uZmlnIGFjY29yZGluZ2x5CiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW5GaWx0ZXJ7Q2xhc3NJRHN9ICkgewogICAgICAgICAgICAgICAgICAgIG15IEBGaWx0ZXJlZENsYXNzSURzOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9LT57Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyA9PSAkQ2xhc3NJRCB9ICRDb2x1bW5GaWx0ZXJ7Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkQ2xhc3NJRHMsICRDbGFzc0lEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9LT57Q2xhc3NJRHN9ID0gXEBGaWx0ZXJlZENsYXNzSURzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICVDb21iaW5lZFNlYXJjaFBhcmFtcyA9ICgKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfS0+JSosCiAgICAgICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgICAgICBMaW1pdCA9PiAkU2VsZi0+e1BhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSAtIDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAkQ29tYmluZWRTZWFyY2hQYXJhbXN7U29ydEJ5fSBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRDb21iaW5lZFNlYXJjaFBhcmFtc3tTb3J0Qnl9ID0gJ0NoYW5nZWQnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQENvbmZpZ0l0ZW1JRHNBcnJheSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgICVDb21iaW5lZFNlYXJjaFBhcmFtcywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJENvbmZpZ0l0ZW1JRHMgPSBcQENvbmZpZ0l0ZW1JRHNBcnJheTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkU3VtbWFyeSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAnLVN1bW1hcnknLAogICAgKSAvLyB7fTsKCiAgICAjIElmIG5vIGNhY2hlIG9yIG5ldyBsaXN0IHJlc3VsdCwgZG8gY291bnQgbG9va3VwLgogICAgaWYgKCAhJFN1bW1hcnktPiUqIHx8ICEkQ2FjaGVVc2VkICkgewoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgKSB7CgogICAgICAgICAgICBuZXh0IFRZUEUgaWYgISRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXskVHlwZX07CgogICAgICAgICAgICAjIENvcHkgb3JpZ2luYWwgY29sdW1uIGZpbHRlci4KICAgICAgICAgICAgbXkgJUNvbHVtbkZpbHRlciA9ICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB8fCB7fSB9OwoKICAgICAgICAgICAgIyBMb29wIHRocm91Z2ggYWxsIGNvbHVtbiBmaWx0ZXIgZWxlbWVudHMuCiAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAlQ29sdW1uRmlsdGVyICkgewoKICAgICAgICAgICAgICAgICMgVmVyaWZ5IGlmIGN1cnJlbnQgY29sdW1uIGZpbHRlciBlbGVtZW50IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoCiAgICAgICAgICAgICAgICAjICAgc3VtbWFyeSwgdG8gZGVsZXRlIGl0IGZyb20gdGhlIGNvbHVtbiBmaWx0ZXIgaGFzaC4KICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSAmJiAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5GaWx0ZXJ7JEVsZW1lbnR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkU3VtbWFyeS0+eyRUeXBlfSA9IDA7CgogICAgICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRnZXR9IHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntQcm9jZXNzTGlzdH0gKSApIHsKCiAgICAgICAgICAgICAgICAjIEV4ZWN1dGUgc2VhcmNoLgogICAgICAgICAgICAgICAgbXkgJUNvbWJpbmVkU2VhcmNoUGFyYW1zID0gKAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQ09VTlQnLAogICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9LT4lKiwKICAgICAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggJENvbWJpbmVkU2VhcmNoUGFyYW1ze1NvcnRCeX0gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQ29tYmluZWRTZWFyY2hQYXJhbXN7U29ydEJ5fSA9ICdDaGFuZ2VkJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRTdW1tYXJ5LT57JFR5cGV9ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAgICAgJUNvbWJpbmVkU2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgKSB8fCAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGNhY2hlCiAgICBpZiAoICEkQ2FjaGVVc2VkICYmICRTZWxmLT57Q29uZmlnfS0+e0NhY2hlVFRMTG9jYWx9ICkgewogICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAnRGFzaGJvYXJkJywKICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5IC4gJy1TdW1tYXJ5JywKICAgICAgICAgICAgVmFsdWUgPT4gJFN1bW1hcnksCiAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q29uZmlnfS0+e0NhY2hlVFRMTG9jYWx9ICogNjAsCiAgICAgICAgKTsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSAuICctJyAuICRTZWxmLT57RmlsdGVyfSAuICctTGlzdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSAqIDYwLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZXQgdGhlIGNzcyBjbGFzcyBmb3IgdGhlIHNlbGVjdGVkIGZpbHRlciBhbmQgYWRkaXRpb25hbCBmaWx0ZXIuCiAgICAkU3VtbWFyeS0+eyAkU2VsZi0+e0ZpbHRlcn0gLiAnOjpTZWxlY3RlZCcgfSA9ICdTZWxlY3RlZCc7CiAgICBpZiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gKSB7CiAgICAgICAgJFN1bW1hcnktPnsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSAuICc6OlNlbGVjdGVkJyB9ID0gJ1NlbGVjdGVkJzsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYWRkIHBhZ2UgbmF2IGJhciAtIG9ubHkgcGFnaW5hdGlvbiBpcyBuZWVkZWQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRmlsdGVyJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAleyRTdW1tYXJ5fSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkVG90YWwgICAgICAgICAgICA9ICRTdW1tYXJ5LT57ICRTZWxmLT57RmlsdGVyfSB9IHx8IDA7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyICA9ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSA/ICV7ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfSB9IDogKCk7CiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfTsKICAgICAgICAkQ29sdW1uRmlsdGVyTGluawogICAgICAgICAgICAuPSAnOycgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICdDb2x1bW5GaWx0ZXInIC4gJENvbHVtbk5hbWUgKQogICAgICAgICAgICAuICc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtQYWdlID0KICAgICAgICAnU3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT0nIC4gJFNlbGYtPntOYW1lfQogICAgICAgIC4gJztGaWx0ZXI9JyAuICRTZWxmLT57RmlsdGVyfQogICAgICAgIC4gJztBZGRpdGlvbmFsRmlsdGVyPScgLiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gIHx8ICcnICkKICAgICAgICAuICc7U29ydEJ5PScgLiAgICAgICAgICAgKCAkU2VsZi0+e1NvcnRCeX0gICAgICAgICAgICB8fCAnJyApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICAgICAgICAgICggJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gfHwgJycgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBpZiAoICRQYXJhbXtDdXN0b21lcklEfSApIHsKICAgICAgICAkTGlua1BhZ2UgLj0gIkN1c3RvbWVySUQ9JFBhcmFte0N1c3RvbWVySUR9OyI7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJExpbmtQYWdlIC49ICJDdXN0b21lclVzZXJJRD0kUGFyYW17Q3VzdG9tZXJVc2VySUR9OyI7CiAgICB9CgogICAgbXkgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgIFN0YXJ0SGl0ICAgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgIFBhZ2VTaG93biAgID0+ICRTZWxmLT57UGFnZVNob3dufSwKICAgICAgICBBbGxIaXRzICAgICA9PiAkVG90YWwgfHwgMSwKICAgICAgICBBY3Rpb24gICAgICA9PiAnQWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgQUpBWFJlcGxhY2UgPT4gJ0Rhc2hib2FyZCcgLiAkU2VsZi0+e05hbWV9LAogICAgICAgIElEUHJlZml4ICAgID0+ICdEYXNoYm9hcmQnIC4gJFNlbGYtPntOYW1lfSwKICAgICAgICBBSkFYICAgICAgICA9PiAkUGFyYW17QUpBWH0sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNGaWx0ZXJOYXZCYXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAleyAkU2VsZi0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNob3cgdGFibGUgaGVhZGVyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlcicsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgIyByZW1vdmUgKC0pIGZyb20gbmFtZSBmb3IgSlMgY29uZmlnCiAgICBteSAkV2lkZ2V0TmFtZSA9ICRTZWxmLT57TmFtZX07CiAgICAkV2lkZ2V0TmFtZSA9fiBzey19e31nOwoKICAgICMgc2hvdyBub24tbGFiZWxlZCB0YWJsZSBoZWFkZXJzCiAgICBteSAkQ1NTID0gJyc7CgogICAgIyBTZW5kIGRhdGEgdG8gSlMgZm9yIGluaXQgY29udGFpbmVyLgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdJbml0Q29udGFpbmVyRGFzaGJvYXJkJyAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICBTb3J0QnkgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgT3JkZXJCeSA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdIZWFkZXJDb2x1bW4nIC4gJFdpZGdldE5hbWUsCiAgICAgICAgVmFsdWUgPT4gXEBDb2x1bW5zCiAgICApOwoKICAgICMgc2hvdyBhbGwgbmVlZGVkIGhlYWRlcnMKICAgIEhFQURFUkNPTFVNTjoKICAgIGZvciBteSAkSGVhZGVyQ29sdW1uIChAQ29sdW1ucykgewoKICAgICAgICBpZiAoICRIZWFkZXJDb2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICRDU1MgPSAnJzsKICAgICAgICAgICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXJDb2x1bW4pOwoKICAgICAgICAgICAgIyBTZXQgdGl0bGUgZGVzY3JpcHRpb24uCiAgICAgICAgICAgIGlmICggJFNlbGYtPntTb3J0Qnl9ICYmICRTZWxmLT57U29ydEJ5fSBlcSAkSGVhZGVyQ29sdW1uICkgewogICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYyA9ICcnOwogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJEZXBsU3RhdGUnIHx8ICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0luY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnIHx8ICRIZWFkZXJDb2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0xhc3QgY2hhbmdlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXJDb2x1bW4pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBzdXJyb3VuZGluZyBjb250YWluZXIKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9LT57JEhlYWRlckNvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICRIZWFkZXJDb2x1bW4gICB8fCAnJywKICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0KICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBteSAkQ3NzOwoKICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgQ3NzICAgICAgICA9PiAkQ3NzLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5GaWx0ZXJTb3J0JyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgICA9PiAkUGFyYW17U29ydGluZ0NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBmaWx0ZXJhYmxlCiAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgbXkgJENzczsKCiAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIENzcyAgICAgICAgPT4gJENzcywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3Qgc29ydGFibGUKICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtblNvcnRhYmxlJyAuICRIZWFkZXJDb2x1bW4gLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICBTb3J0aW5nQ29sdW1uICAgID0+ICRQYXJhbXtTb3J0aW5nQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRHluYW1pYyBmaWVsZHMKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dCBIRUFERVJDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICA9ICcnOwogICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJExhYmVsOwogICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICBpZiAoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSAmJiBkZWZpbmVkICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKICAgICAgICAgICAgICAgICRDU1MgLj0gJ0ZpbHRlckFjdGl2ZSAnOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICMgZ2V0IGZpZWxkIHNvcnRhYmxlIGNvbmRpdGlvbgogICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aXRsZQogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGFiZWw7CgogICAgICAgICAgICAjIGFkZCBzdXJyb3VuZGluZyBjb250YWluZXIKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJc1NvcnRhYmxlKSB7CiAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTb3J0Qnl9CiAgICAgICAgICAgICAgICAgICAgJiYgKCAkU2VsZi0+e1NvcnRCeX0gZXEgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGR5bmFtaWMgZmllbGQgaXMgc29ydGFibGUgYW5kIGZpbHRlcmFibGUgKHNvcnRhYmxlIGNoZWNrIHdhcyBtYWRlIGJlZm9yZSkKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkZpbHRlclNvcnQnIC4gJER5bmFtaWNGaWVsZE5hbWUgLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRpbmdDb2x1bW4gICAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IHNvcnRhYmxlIGFuZCBmaWx0ZXJhYmxlIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZExhYmVsIHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSB0aGUgZHluYW1pYyBmaWVsZCBpcyBvbmx5IHNvcnRhYmxlIChzb3J0YWJsZSBjaGVjayB3YXMgbWFkZSBiZWZvcmUpCiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5Tb3J0YWJsZScgLiAkRHluYW1pY0ZpZWxkTmFtZSAuICRXaWRnZXROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgICA9PiAkUGFyYW17U29ydGluZ0NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgc29ydGFibGUgZHluYW1pYyBmaWVsZAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCB3YXMgbm90IHNvcnRhYmxlIChjaGVjayB3YXMgbWFkZSBhbmQgZmFpbCBiZWZvcmUpCiAgICAgICAgICAgICMgaXQgbWlnaHQgYmUgZmlsdGVyYWJsZQogICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJER5bmFtaWNGaWVsZE5hbWUgLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgZmlsdGVyYWJsZSAobm90IHNvcnRhYmxlKSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGZpZWxkIGlzIG5vdCBmaWx0ZXJhYmxlIGFuZCBub3Qgc29ydGFibGUKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgb3V0cHV0IHBsYWluIGR5bmFtaWMgZmllbGQgaGVhZGVyIChub3QgZmlsdGVyYWJsZSwgbm90IHNvcnRhYmxlKQogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRMYWJlbCB8fCAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdGlja2V0cwogICAgbXkgJENvdW50ID0gMDsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgJENvdW50Kys7CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRDb3VudCA8ICRTZWxmLT57U3RhcnRIaXR9OwoKICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICApOwogICAgICAgIG15ICVDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1SZWYtPiUqOwoKICAgICAgICAjIHNldCBkZXBsb3ltZW50IGFuZCBpbmNpZGVudCBzaWduYWxzCiAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU2lnbmFsfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VySW5jaVN0YXRlVHlwZX0gfTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISVDb25maWdJdGVtOwoKICAgICAgICAjIHNldCBhIGRlZmF1bHQgdGl0bGUgaWYgY29uZmlnIGl0ZW0gaGFzIG5vIHRpdGxlCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW17VGl0bGV9ICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbXtUaXRsZX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAnVGhpcyB0aWNrZXQgaGFzIG5vIHRpdGxlIG9yIHN1YmplY3QnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNSb3cnLAogICAgICAgICAgICBEYXRhID0+IFwlQ29uZmlnSXRlbSwKICAgICAgICApOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIHNob3cgYWxsIG5lZWRlZCBjb2x1bW5zCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbHVtbnMpIHsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1Db2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdSb3cnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29uZmlnSXRlbUNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJEJsb2NrVHlwZSA9ICcnOwogICAgICAgICAgICAgICAgbXkgJENTU0NsYXNzICA9ICcnOwoKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ051bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29uZmlnSXRlbU51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkQ29uZmlnSXRlbXtOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdBZ2UnICkgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckFnZSgKICAgICAgICAgICAgICAgICAgICAgICAgQWdlICAgPT4gJENvbmZpZ0l0ZW17QWdlfSwKICAgICAgICAgICAgICAgICAgICAgICAgU3BhY2UgPT4gJyAnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnQ3VyRGVwbCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnQ3VySW5jaSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdDcmVhdGVkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXtDaGFuZ2VUaW1lfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnVGl0bGUnICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJDb250ZW50TGFyZ2VDb25maWdJdGVtVGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgPT4gIiREYXRhVmFsdWUgIiB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdob2xlVGl0bGUgPT4gIkR1bWIgdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAkQ1NTQ2xhc3MgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiQ29udGVudExhcmdlQ29uZmlnSXRlbVNpZ25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgID0+ICRDb25maWdJdGVteyAkQmxvY2tUeXBlIC4gJ1N0YXRlJyB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmFsID0+ICRDb25maWdJdGVteyAkQmxvY2tUeXBlIC4gJ1NpZ25hbCcgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICA9PiAkQ1NTQ2xhc3MgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljVmFsdWUgPT4gJERhdGFWYWx1ZSB8fCAnLScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH0KCiAgICAjIHNob3cgIm5vbmUiIGlmIG5vIGNvbmZpZyBpdGVtIGlzIGF2YWlsYWJsZQogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRHMgfHwgIUB7JENvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY05vbmUnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgcmVmcmVzaCB0aW1lCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKCiAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdXaWRnZXRSZWZyZXNoJyAuICRXaWRnZXROYW1lLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgTmFtZUhUTUwgICAgICAgPT4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICBSZWZyZXNoVGltZSAgICA9PiAkUmVmcmVzaCwKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBhY3RpdmUgZmlsdGVycyBhbmQgYWRkIGEgJ3JlbW92ZSBmaWx0ZXJzJyBidXR0b24gdG8gdGhlIHdpZGdldCBoZWFkZXIKICAgIG15ICRGaWx0ZXJBY3RpdmUgPSAwOwogICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSApICkgewogICAgICAgICRGaWx0ZXJBY3RpdmUgPSAxOwogICAgfQoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1dpZGdldENvbnRhaW5lcicgLiAkV2lkZ2V0TmFtZSwKICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgRmlsdGVyQWN0aXZlICAgPT4gJEZpbHRlckFjdGl2ZSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICBOYW1lID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICV7JFN1bW1hcnl9LAogICAgICAgICAgICBGaWx0ZXJWYWx1ZSAgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICAgICAgQWRkaXRpb25hbEZpbHRlciA9PiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9LAogICAgICAgICAgICBDdXN0b21lcklEICAgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICAgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0sCiAgICAgICAgfSwKICAgICAgICBBSkFYID0+ICRQYXJhbXtBSkFYfSwKICAgICk7CgogICAgcmV0dXJuICRDb250ZW50Owp9CgpzdWIgX0luaXRpYWxDb2x1bW5GaWx0ZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb2x1bW5OYW1lfTsKICAgIHJldHVybiBpZiAhJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfSB8fCAkUGFyYW17Q29sdW1uTmFtZX07CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJycsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdDb2x1bW5GaWx0ZXInOwogICAgaWYgKCAkUGFyYW17Q3NzfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyAnIC4gJFBhcmFte0Nzc307CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwoKICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInKS0+JEZ1bmN0aW9uTmFtZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiAkQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgSGVhZGVyQ29sdW1uICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpZWxkTmFtZSBuZSAkSGVhZGVyQ29sdW1uOwoKICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgICAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgIG15ICRJc0ZpbHRyYWJsZSA9ICRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzRmlsdHJhYmxlOwoKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0gPSAkSXNGaWx0cmFibGU7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRDb25maWdJdGVtSURzKSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgaGlzdG9yaWNhbCB2YWx1ZXMgZm9yIHRoZSBmaWVsZAogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICRCYWNrZW5kT2JqZWN0LT5Db2x1bW5GaWx0ZXJWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzICAgICAgPT4gJENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ29sdW1uRmlsdGVyVmFsdWVzOwp9CgojID1oZWFkMiBfQ29sdW1uRmlsdGVySlNPTigpCgojICAgICBjcmVhdGVzIGEgSlNPTiBzZWxlY3QgZmlsdGVyIGZvciBjb2x1bW4gaGVhZGVyCgojICAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxPYmplY3QtPl9Db2x1bW5GaWx0ZXJKU09OKAojICAgICAgICAgQ29sdW1uTmFtZSA9PiAnUXVldWUnLAojICAgICAgICAgTGFiZWwgICAgICA9PiAnUXVldWUnLAojICAgICAgICAgQ29sdW1uVmFsdWVzID0+IHsKIyAgICAgICAgICAgICAxID0+ICdQb3N0TWFzdGVyJywKIyAgICAgICAgICAgICAyID0+ICdKdW5rJywKIyAgICAgICAgIH0sCiMgICAgICAgICBTZWxlY3RlZFZhbHVlICcxJywKIyAgICAgKTsKCiMgPWN1dAoKc3ViIF9Db2x1bW5GaWx0ZXJKU09OIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH07CiAgICAkTGFiZWwgPX4gc3sgXEEgRHluYW1pY0ZpZWxkXyB9e31neG1zOwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWxldGVGaWx0ZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0NvbHVtblZhbHVlc30gJiYgcmVmICRQYXJhbXtDb2x1bW5WYWx1ZXN9IGVxICdIQVNIJyApIHsKCiAgICAgICAgbXkgJVZhbHVlcyA9ICV7ICRQYXJhbXtDb2x1bW5WYWx1ZXN9IH07CgogICAgICAgICMgU2V0IHBvc3NpYmxlIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFZhbHVlS2V5ICggc29ydCB7IGxjICRWYWx1ZXN7JGF9IGNtcCBsYyAkVmFsdWVzeyRifSB9IGtleXMgJVZhbHVlcyApIHsKICAgICAgICAgICAgcHVzaCBAeyREYXRhfSwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFZhbHVlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlc3skVmFsdWVLZXl9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9IC4gJFBhcmFte0Rhc2hib2FyZE5hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICREYXRhLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNLZXknLAogICAgICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1NlbGVjdGVkVmFsdWV9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZSA9PiAnb2ZmJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gJEpTT047Cn0KCnN1YiBfU2VhcmNoUGFyYW1zR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIHNlYXJjaCBiYXNlIGF0dHJpYnV0ZXMKICAgIG15ICVDb25maWdJdGVtU2VhcmNoOwogICAgbXkgJUR5bmFtaWNGaWVsZHNQYXJhbWV0ZXJzOwogICAgbXkgQFBhcmFtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9LT57QXR0cmlidXRlc307CgogICAgIyByZWFkIHVzZXIgcHJlZmVyZW5jZXMgYW5kIGNvbmZpZyB0byBnZXQgY29sdW1ucyB0aGF0CiAgICAjIHNob3VsZCBiZSBzaG93biBpbiB0aGUgZGFzaGJvYXJkIHdpZGdldCAodGhlIHByZWZlcmVuY2VzCiAgICAjIGhhdmUgcHJlY2VkZW5jZSkKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbHVtbiBuYW1lcyBmcm9tIFByZWZlcmVuY2VzCiAgICBteSAkUHJlZmVyZW5jZXNDb2x1bW4gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0sCiAgICApOwoKICAgICMgY2hlY2sgZm9yIGRlZmF1bHQgc2V0dGluZ3MKICAgIG15IEBDb2x1bW5zOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSApICkgewogICAgICAgIEBDb2x1bW5zID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSBlcSAnMicgfQogICAgICAgICAgICBzb3J0IHsgJFNlbGYtPl9EZWZhdWx0Q29sdW1uU29ydCgpIH0ga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgIH0KICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW4pIHsKICAgICAgICBpZiAoICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9ICYmICV7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9IH0gKSB7CiAgICAgICAgICAgIEBDb2x1bW5zID0gZ3JlcCB7CiAgICAgICAgICAgICAgICBkZWZpbmVkICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9LT57JF99CiAgICAgICAgICAgICAgICAgICAgJiYgJFByZWZlcmVuY2VzQ29sdW1uLT57Q29sdW1uc30tPnskX30gZXEgJzEnCiAgICAgICAgICAgIH0gc29ydCB7ICRTZWxmLT5fRGVmYXVsdENvbHVtblNvcnQoKSB9IGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CiAgICAgICAgfQogICAgICAgIGlmICggJFByZWZlcmVuY2VzQ29sdW1uLT57T3JkZXJ9ICYmIEB7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e09yZGVyfSB9ICkgewogICAgICAgICAgICBAQ29sdW1ucyA9IEB7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e09yZGVyfSB9OwogICAgICAgIH0KCiAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICBteSAlVW5pcXVlQ29sdW1uczsKICAgICAgICBteSBAQ29sdW1uc0VuYWJsZWRBdXg7CgogICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1ucykgewogICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNFbmFibGVkQXV4LCAkQ29sdW1uOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGZpbHRlcmVkIGNvbHVtbiBsaXN0CiAgICAgICAgQENvbHVtbnMgPSBAQ29sdW1uc0VuYWJsZWRBdXg7CiAgICB9CgogICAgewoKICAgICAgICAjIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGR5bmFtaWMgZmllbGRzIHRvIGdldCB0aGUgb25lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIERZTkFNSUNGSUVMRE5BTUU6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lIChAQ29sdW1ucykgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEROQU1FIGlmICREeW5hbWljRmllbGROYW1lICF+IG17IER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgICMgcmVtb3ZlIGR5bmFtaWMgZmllbGQgcHJlZml4CiAgICAgICAgICAgIG15ICRGaWVsZE5hbWUgPSAkRHluYW1pY0ZpZWxkTmFtZTsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9fiBzL0R5bmFtaWNGaWVsZF8vL2dpOwogICAgICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0tPnskRmllbGROYW1lfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0gfHwge30sCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IGZpbHRlcmFibGUgRHluYW1pYyBmaWVsZHMKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzRmlsdHJhYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCBpcyBmaWx0ZXJhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRGaWx0cmFibGVDb2x1bW5zIGhhc2gKICAgICAgICBpZiAoJElzRmlsdHJhYmxlKSB7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHNvcnRhYmxlIER5bmFtaWMgZmllbGRzCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRJc1NvcnRhYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICApOwoKICAgICAgICAjIGlmIHRoZSBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRTb3J0YWJsZUNvbHVtbnMgaGFzaAogICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIFNUUklORzoKICAgIGZvciBteSAkU3RyaW5nIChAUGFyYW1zKSB7CiAgICAgICAgbmV4dCBTVFJJTkcgaWYgISRTdHJpbmc7CiAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJFN0cmluZzsKCiAgICAgICAgIyBwdXNoIEFSUkFZUkVGIGF0dHJpYnV0ZXMgZGlyZWN0bHkgaW4gYW4gQVJSQVlSRUYKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXkKICAgICAgICAgICAgPX4gL14oU3RhdGVUeXBlfFN0YXRlVHlwZUlEc3xTdGF0ZXN8U3RhdGVJRHN8QXJjaGl2ZUZsYWdzfENyZWF0ZWRVc2VySURzfENyZWF0ZWRTdGF0ZXN8Q3JlYXRlZFN0YXRlSURzKSQvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIGlmICggJFZhbHVlID1+IG17LH1zbXggKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9IH0sIHNwbGl0KCAvLC8sICRWYWx1ZSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSB9LCAkVmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgcGFyYW1ldGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgY2FwdHVyZSBkeW5hbWljIGZpZWxkIG5hbWUgKHdpdGggRHluYW1pY0ZpZWxkXykKICAgICAgICAjIGluICQxIGFuZCB0aGUgT3BlcmF0b3IgaW4gJDIKICAgICAgICAjIHBvc3NpYmxlIER5bmFtaWMgRmllbGRzIG9wdGlvbnMgaW5jbHVkZToKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0VxdWFscz0xMjM7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9MaWtlPXZhbHVlKjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0dyZWF0ZXJUaGFuPTIwMDEtMDEtMDEgMDE6MDE6MDE7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9HcmVhdGVyVGhhbkVxdWFscz0yMDAxLTAxLTAxIDAxOjAxOjAxOwogICAgICAgICMgICBEeW5hbWljRmllbGRfTmFtZVhfU21hbGxlclRoYW49MjAwMi0wMi0wMiAwMjowMjowMjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX1NtYWxsZXJUaGFuRXF1YWxzPTIwMDItMDItMDIgMDI6MDI6MDI7CiAgICAgICAgZWxzaWYgKCAkS2V5ID1+IG17XEEgKER5bmFtaWNGaWVsZF8uKz8pIF8gKC4rPykgXHp9c3htICkgewogICAgICAgICAgICBwdXNoIEB7ICREeW5hbWljRmllbGRzUGFyYW1ldGVyc3skMX0tPnskMn0gfSwgJFZhbHVlOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSApIHsKCiAgICAgICAgICAgICMgY2hhbmdlIHNvcnQgYnksIGlmIG5lZWRlZAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkS2V5IGVxICdTb3J0QnknCiAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1NvcnRCeX0KICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRTZWxmLT57U29ydEJ5fSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICRTZWxmLT57U29ydEJ5fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRLZXkgZXEgJ1NvcnRCeScgJiYgISRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICdBZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoeyRLZXl9ID0gJFZhbHVlOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICFyZWYgJENvbmZpZ0l0ZW1TZWFyY2h7JEtleX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZVRtcCA9ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9OwogICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSA9IFskVmFsdWVUbXBdOwogICAgICAgICAgICBwdXNoIEB7ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9IH0sICRWYWx1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQHsgJENvbmZpZ0l0ZW1TZWFyY2h7JEtleX0gfSwgJFZhbHVlOwogICAgICAgIH0KICAgIH0KICAgICVDb25maWdJdGVtU2VhcmNoID0gKAogICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICVEeW5hbWljRmllbGRzUGFyYW1ldGVycywKCiAgICAgICAgIyBUT0RPIGNoZWNrIGlmIHBlcm1pc3Npb24gaXMgbmVlZGVkCiAgICAgICAgUGVybWlzc2lvbiA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSB8fCAncm8nLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnk7CiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXl9ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAoCiAgICAgICAgICAgICAgICBBc3NpZ25lZFRvRW50aXR5ID0+IHsKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyRTZWxmLT57Q29uZmlnSXRlbUtleX0iID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0gLy8gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXl9ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAoCiAgICAgICAgICAgICAgICBBc3NpZ25lZFRvRW50aXR5ID0+IHsKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyRTZWxmLT57Q29uZmlnSXRlbUtleX0iID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQYXJhbXtDdXN0b21lcklEfSAvLyB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfXtTaG93bkNsYXNzZXN9ICkgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CiAgICAgICAgbXkgJVJldmVydGVkQ2xhc3NMaXN0ID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgbXkgQENsYXNzSURzOwogICAgICAgIGZvciBteSAkQ2xhc3NOYW1lICggJFNlbGYtPntDb25maWd9e1Nob3duQ2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICBpZiAoICRSZXZlcnRlZENsYXNzTGlzdHskQ2xhc3NOYW1lfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENsYXNzSURzLCAkUmV2ZXJ0ZWRDbGFzc0xpc3R7JENsYXNzTmFtZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXtBc3NpZ25lZFRvRW50aXR5fXtDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgQ29sdW1ucyAgICAgICAgICAgICAgICAgPT4gXEBDb2x1bW5zLAogICAgICAgIENvbmZpZ0l0ZW1TZWFyY2ggICAgICAgID0+IFwlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICBDb25maWdJdGVtU2VhcmNoU3VtbWFyeSA9PiBcJUNvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5LAogICAgKTsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMTEwLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMTExLAogICAgICAgIENsYXNzICAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICAgPT4gMTEzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gMTE0LAogICAgICAgIEN1ckRlcGxTdGF0ZSAgPT4gMTE1LAogICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gMTE2LAogICAgICAgIExhc3RDaGFuZ2VkICAgPT4gMTE3LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Elasticsearch/ElasticsearchConfigItemGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpFbGFzdGljc2VhcmNoOjpFbGFzdGljc2VhcmNoQ29uZmlnSXRlbUdlbmVyaWM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RWxhc3RpY3NlYXJjaDo6RWxhc3RpY3NlYXJjaEdlbmVyaWMpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJFNlYXJjaE9iamVjdHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OlF1aWNrU2VhcmNoU2hvdycpOwogICAgbXkgJExheW91dE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJEVTU2VhcmNoUXVlcnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRnVsbHRleHRFUycgKSB8fCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQWRkaXRpb25hbEZpbHRlcicgKTsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPl9FbGFzdGljU2VhcmNoQ29uZmlnSXRlbXMoCiAgICAgICAgUXVlcnkgPT4gJEVTU2VhcmNoUXVlcnksCiAgICApOwoKICAgIGlmICggJFJlc3VsdC0+e1RvdGFsQ29uZmlnSXRlbUNvdW50fSA9PSAwICkgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KCiAgICBteSBAQ29sdW1ucyA9ICRTZWFyY2hPYmplY3RzLT57Q29uZmlnSXRlbX0tPntBdHRyaWJ1dGVzfS0+QCo7CgogICAgJFNlbGYtPlNob3dQYWdpbmF0aW9uKAogICAgICAgIEVTU2VhcmNoUXVlcnkgPT4gJEVTU2VhcmNoUXVlcnksCiAgICAgICAgSXRlbXNQZXJQYWdlICA9PiAkU2VsZi0+e1BhZ2VTaG93bn0gfHwgJFNlYXJjaE9iamVjdHMtPntDb25maWdJdGVtfXtDb3VudH0sCiAgICAgICAgVG90YWxSZXN1bHRzICA9PiAkUmVzdWx0LT57VG90YWxDb25maWdJdGVtQ291bnR9LAogICAgICAgIEFKQVggICAgICAgICAgPT4gJFBhcmFte0FKQVh9LAogICAgKTsKCiAgICAkU2VsZi0+U2hvd0hlYWRlcnMoCiAgICAgICAgQ29sdW1ucyAgICAgICAgID0+IFxAQ29sdW1ucywKICAgICAgICBBdHRyaWJ1dGVIZWFkZXIgPT4gJFNlYXJjaE9iamVjdHMtPntDb25maWdJdGVtfS0+e0F0dHJpYnV0ZUhlYWRlcn0sCiAgICAgICAgU29ydENvbHVtbiAgICAgID0+ICcnLAogICAgKTsKCiAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICBteSAkQ291bnQgPSAwOwoKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKCAkUmVzdWx0LT57Q29uZmlnSXRlbXN9LT5AKiApIHsKCiAgICAgICAgJENvdW50Kys7CgogICAgICAgIG15ICggJENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1QYXJhbSApID0gKCAleyRDb25maWdJdGVtfSApOwoKICAgICAgICAjIHNob3cgY29uZmlnIGl0ZW0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRWxhc3RpY1NlYXJjaFJlc3VsdEdlbmVyaWNSb3cnLAogICAgICAgICAgICBEYXRhID0+ICRDb25maWdJdGVtUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGNvbHVtbiBjb250ZW50CiAgICAgICAgbXkgJERhdGFWYWx1ZTsKCiAgICAgICAgIyBzaG93IGFsbCBuZWVkZWQgY29sdW1ucwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbHVtbnMpIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdFbGFzdGljU2VhcmNoUmVzdWx0R2VuZXJpY1RpY2tldENvbHVtbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEJsb2NrVHlwZSA9ICJFbGFzdGljU2VhcmNoUmVzdWx0R2VuZXJpY0NvbmZpZ0l0ZW0iOwoKICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVtUGFyYW0tPnskQ29sdW1ufTsKCiAgICAgICAgICAgICRCbG9ja1R5cGUgPSAiRWxhc3RpY1NlYXJjaFJlc3VsdEdlbmVyaWNDb25maWdJdGVtIjsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkQmxvY2tUeXBlLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnRWxhc3RpY3NlYXJjaFJlc3VsdEdlbmVyaWMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgQWRkaXRpb25hbEZpbHRlclZhbHVlID0+ICRFU1NlYXJjaFF1ZXJ5LAogICAgICAgIH0sCiAgICAgICAgQUpBWCA9PiAkUGFyYW17QUpBWH0sCiAgICApOwoKICAgIHJldHVybiAkQ29udGVudDsKfQoKc3ViIF9FbGFzdGljU2VhcmNoQ29uZmlnSXRlbXMgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFF1ZXJ5ID0gJFBhcmFte1F1ZXJ5fTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkRVNPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbGFzdGljc2VhcmNoJyk7CiAgICBteSAkU2VhcmNoT2JqZWN0cyA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6UXVpY2tTZWFyY2hTaG93Jyk7CgogICAgIyBnZXQgb2JqZWN0cwogICAgbXkgJVJlc3VsdCA9ICgKICAgICAgICBDb25maWdJdGVtcyAgICAgICAgICA9PiBbXSwKICAgICAgICBUb3RhbENvbmZpZ0l0ZW1Db3VudCA9PiAwLAogICAgKTsKCiAgICBpZiAoICEkUXVlcnkgKSB7CiAgICAgICAgcmV0dXJuIFwlUmVzdWx0OwogICAgfQoKICAgIGlmICggJFNlYXJjaE9iamVjdHMtPntDb25maWdJdGVtfSAmJiAkU2VhcmNoT2JqZWN0cy0+e0NvbmZpZ0l0ZW19e0NvdW50fSApIHsKCiAgICAgICAgbXkgJFNlYXJjaFJlc3VsdCA9ICRFU09iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgRnVsbHRleHQgPT4gJFF1ZXJ5LAogICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIExpbWl0ICAgID0+ICRTZWxmLT57UGFnZVNob3dufSB8fCAkU2VhcmNoT2JqZWN0cy0+e0NvbmZpZ0l0ZW19e0NvdW50fSwKICAgICAgICAgICAgRnJvbSAgICAgPT4gJFNlbGYtPntTdGFydEhpdH0gLSAxLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnRlVMTCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1zID0gJFNlYXJjaFJlc3VsdC0+e0RhdGF9LT5AKjsKICAgICAgICAkUmVzdWx0e0NvbmZpZ0l0ZW1zfSAgICAgICAgICA9IFxAQ29uZmlnSXRlbXM7CiAgICAgICAgJFJlc3VsdHtUb3RhbENvbmZpZ0l0ZW1Db3VudH0gPSAkU2VhcmNoUmVzdWx0LT57VG90YWx9IC8vIDA7CiAgICB9CgogICAgcmV0dXJuIFwlUmVzdWx0Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/DynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIFRPRE86IE1heWJlIHJlbmFtZSB0byBBZ2VudFpvb20gb3Igc2ltaWxhcgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55IGZpcnN0KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzSGFzaFJlZldpdGhEYXRhIElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCAtIGNvbmZpZ2l0ZW0gc3BlY2lmaWMgZHluYW1pYyBmaWVsZCBvdXRwdXQKCj1oZWFkMSBERVNDUklQVElPTgoKRnVuY3Rpb25zIHRvIGdlbmVyYXRlIER5bmFtaWNGaWVsZCBIVE1MIGZvciBDb25maWdJdGVtcwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGEgRHluYW1pY0ZpZWxkT3V0cHV0IG9iamVjdC4gRG8gbm90IHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCB1c2U6CgogICAgbXkgJER5bmFtaWNGaWVsZE91dHB1dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGJsZXNzIHt9LCAkVHlwZTsKfQoKPWhlYWQyIFBhZ2VSZW5kZXIoKQoKUmV0dXJucyB0aGUgSFRNTCBmb3IgYSBwYWdlIG9mIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCgogICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkT3V0cHV0T2JqZWN0KAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICBQYWdlUmVmICAgID0+ICRQYWdlLCAgICAgICAgIyBlaXRoZXIgUGFnZVJlZiBvciBQYWdlIGlzIHJlcXVpcmVkCiAgICAgICAgUGFnZSAgICAgICA9PiAnTmFtZScsCiAgICApOwoKPWN1dAoKc3ViIFBhZ2VSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIENoZWNrIG5lZWRlZCBzdHVmZi4KICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtIERlZmluaXRpb24pKSB7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJFBhcmFte0RlZmluaXRpb259e0RlZmluaXRpb25SZWZ9OwogICAgbXkgJFBhZ2UgICAgICAgICAgPSAkUGFyYW17UGFnZVJlZn0gLy8gZmlyc3QgeyAkXy0+e05hbWV9IGVxICRQYXJhbXtQYWdlfSB9ICREZWZpbml0aW9uUmVmLT57UGFnZXN9LT5AKjsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRQYWdlKSB8fCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFnZS0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9IGRlZmluZWQgJFBhcmFte1BhZ2VSZWZ9CiAgICAgICAgICAgID8gJ1BhZ2VSZWYgbm90IHZhbGlkLicKICAgICAgICAgICAgOiAkUGFyYW17UGFnZX0gPyAiUGFnZSAkUGFyYW17UGFnZX0gbm90IHZhbGlkIGZvciBEZWZpbml0aW9uSUQgJFBhcmFte0RlZmluaXRpb259e0RlZmluaXRpb25JRH0gb2YgY2xhc3MgJFBhcmFte0RlZmluaXRpb259e0NsYXNzfS4iCiAgICAgICAgICAgIDogICAgICAgICAgICAgICAgJ05lZWQgUGFnZSBvciBQYWdlUmVmISc7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkRXJyb3JNZXNzYWdlLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlTGF5b3V0OwogICAgaWYgKCAkUGFnZS0+e0xheW91dH0gKSB7CiAgICAgICAgJExheW91dHtDb2x1bW5zfSA9ICRQYWdlLT57TGF5b3V0fXtDb2x1bW5zfSA/IGludCggJFBhZ2UtPntMYXlvdXR9e0NvbHVtbnN9ICkgOiAxOwoKICAgICAgICAjIGJhc2ljIGNvcnJlY3Rpb25zIGZvciBncmlkLXRlbXBsYXRlLXJvd3MKICAgICAgICBteSBAV2lkdGhzID0gJFBhZ2UtPntMYXlvdXR9e0NvbHVtbldpZHRofSA/ICggJFBhZ2UtPntMYXlvdXR9e0NvbHVtbldpZHRofSA9fiAvKFtcZFwuXSpcdyspL2cgKSA6ICgpOwoKICAgICAgICBpZiAoIEBXaWR0aHMgPCAkTGF5b3V0e0NvbHVtbnN9ICkgewogICAgICAgICAgICBwdXNoIEBXaWR0aHMsICgnMWZyJykgeCAoICRMYXlvdXR7Q29sdW1uc30gLSBAV2lkdGhzICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0e1dpZHRoc30gPSBqb2luKCAnICcsIEBXaWR0aHNbIDAgLi4gJExheW91dHtDb2x1bW5zfSAtIDEgXSApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJUxheW91dCA9ICgKICAgICAgICAgICAgQ29sdW1ucyA9PiAxLAogICAgICAgICAgICBXaWR0aHMgID0+ICcxZnInLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICB7CiAgICAgICAgbXkgJFNlY3Rpb25zID0gJERlZmluaXRpb25SZWYtPntTZWN0aW9uc30gLy8ge307CiAgICAgICAgbXkgJUtleVRvQ3NzID0gcXcvUm93IHJvdyBDb2x1bW4gY29sdW1uLzsKCiAgICAgICAgQ09OVEVOVEJMT0NLOgogICAgICAgIGZvciBteSAkQ29udGVudEJsb2NrICggJFBhZ2UtPntDb250ZW50fS0+QCogKSB7CgogICAgICAgICAgICAjIFRoZSByb2xlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIG5hbWUKICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkU2VjdGlvbnMtPnsgJENvbnRlbnRCbG9jay0+e1NlY3Rpb259IH07CgogICAgICAgICAgICBuZXh0IENPTlRFTlRCTE9DSyB1bmxlc3MgJFNlY3Rpb247CgogICAgICAgICAgICBteSAkR3JpZEFyZWE7CiAgICAgICAgICAgIGZvciBteSAkS2V5IChxdy9Sb3cgQ29sdW1uLykgewogICAgICAgICAgICAgICAgaWYgKCAkQ29udGVudEJsb2NrLT57ICRLZXkgLiAnU3RhcnQnIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdyaWRBcmVhIC49ICdncmlkLScgLiAkS2V5VG9Dc3N7JEtleX0gLiAnLXN0YXJ0OicgLiBpbnQoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTdGFydCcgfSApIC4gJzsnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQ29udGVudEJsb2NrLT57ICRLZXkgLiAnU3BhbicgfSApIHsKICAgICAgICAgICAgICAgICAgICAkR3JpZEFyZWEgLj0gJ2dyaWQtJyAuICRLZXlUb0Nzc3skS2V5fSAuICctZW5kOnNwYW4gJyAuIGludCggJENvbnRlbnRCbG9jay0+eyAkS2V5IC4gJ1NwYW4nIH0gKSAuICc7JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50Q2VsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBHcmlkQXJlYSA9PiAkR3JpZEFyZWEsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgPT4gJFNlY3Rpb24tPntUeXBlfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5fU2VjdGlvblJlbmRlcigKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgID0+ICRTZWN0aW9uLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnSVRTTUNvbmZpZ0l0ZW1EZXRhaWxzJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVMYXlvdXQsCiAgICApOwp9CgpzdWIgX1NlY3Rpb25SZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBlcSAnQ29uZmlnSXRlbUxpbmtzJyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fUmVuZGVyQ0lMaW5rcyglUGFyYW0pOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBlcSAnUmVmZXJlbmNlZFNlY3Rpb24nICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9SZW5kZXJSZWZlcmVuY2VkU2VjdGlvbiglUGFyYW0pOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBlcSAnRGVzY3JpcHRpb24nICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9SZW5kZXJEZXNjcmlwdGlvblNlY3Rpb24oJVBhcmFtKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17U2VjdGlvbn17VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBzZWN0aW9uIHR5cGUgJyRQYXJhbXtTZWN0aW9ufXtUeXBlfSchIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBHZXQgSFRNTCBmcm9tIGFkZGl0aW9uYWwgbW9kdWxlcwogICAgZWxzaWYgKCAkUGFyYW17U2VjdGlvbn17TW9kdWxlfSApIHsKICAgICAgICBteSAkTW9kdWxlID0gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6U2VjdGlvbjo6JyAuICRQYXJhbXtTZWN0aW9ufXtNb2R1bGV9OwoKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBzZWN0aW9uIG1vZHVsZSAnJE1vZHVsZSciLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgbXkgJE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJE1vZHVsZSk7CiAgICAgICAgbXkgJEhUTUwgICA9ICRPYmplY3QtPlJ1biglUGFyYW0pOwogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJpY0hUTUwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEhUTUwgPT4gJEhUTUwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgbXkgJFJvd0hhc1ZhbHVlID0gc3ViIHsKICAgICAgICByZXR1cm4gMSBpZiBhbnkgeyBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8tPntERn0gfSB9ICRfWzBdLT5AKjsKICAgICAgICByZXR1cm4gMDsKICAgIH07CiAgICBteSAkR3JpZEhhc1ZhbHVlID0gc3ViIHsKICAgICAgICBmb3IgbXkgJFJvdyAoICRfWzBdLT5AKiApIHsKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFJvd0hhc1ZhbHVlLT4oJFJvdyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoICRQYXJhbXtTZWN0aW9ufXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgaWYgKCAkUm93LT57SGVhZGVyfSApIHsKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyUm93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkUm93LT57SGVhZGVyfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gMDsKICAgICAgICB9CgogICAgICAgIGVsc2lmICggJFJvdy0+e0RGfSApIHsKICAgICAgICAgICAgbmV4dCBST1cgaWYgIWRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUm93LT57REZ9IH07CgogICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkTGlzdCApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3QgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRSb3ctPntERn0gfTsKCiAgICAgICAgICAgIG5leHQgUk9XIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRSb3ctPntERn0gfSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlMaW5rICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsICAgID0+ICRSb3ctPntMYWJlbH0gfHwgJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAnTGFiZWwnLAogICAgICAgICAgICAgICAgICAgIENTU0NsYXNzID0+ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnID8gJ0R5bmFtaWNGaWVsZFNldExhYmVsJyA6IHVuZGVmLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgfHwgJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1JpY2hUZXh0JyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0Z1bGxSb3cnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJERpc3BsYXlWYWx1ZS0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICREaXNwbGF5VmFsdWUtPntMaW5rfSApICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAwIC4uICQjeyAkRGlzcGxheVZhbHVlLT57TGlua30gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVmFsdWVJdGVtTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TmFtZX0gPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX1bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICA9PiAkRGlzcGxheVZhbHVlLT57VmFsdWV9WyRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgPT4gJERpc3BsYXlWYWx1ZS0+e0xpbmt9WyRJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1ByZXZpZXcgPT4gJERpc3BsYXlWYWx1ZS0+e0xpbmtQcmV2aWV3fVskSW5kZXhdLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluY2x1ZGUgdW5pcXVlIHBhcmFtZXRlciB3aXRoIGR5bmFtaWMgZmllbGQgbmFtZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3aXRoIG90aGVycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkLT57TmFtZX0iID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX1bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmRleCAhPSAkI3sgJERpc3BsYXlWYWx1ZS0+e0xpbmt9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTXVsdGl2YWx1ZVNlcGFyYXRvckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnVmFsdWVJdGVtTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGxlYXNlIHNlZSBidWcjMTMzNjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGQtPntOYW1lfSIgPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ0F0dGFjaG1lbnQnICkgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVSYXcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWUnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICRSb3ctPntHcmlkfSApIHsKICAgICAgICAgICAgbmV4dCBST1cgaWYgISRHcmlkSGFzVmFsdWUtPiggJFJvdy0+e0dyaWR9e1Jvd3N9ICk7CgogICAgICAgICAgICBteSAkQ29sdW1ucyA9IGludCggJFJvdy0+e0dyaWR9e0NvbHVtbnN9ICk7CgogICAgICAgICAgICAjIGJhc2ljIGNvcnJlY3Rpb25zIGZvciBncmlkLXRlbXBsYXRlLXJvd3MKICAgICAgICAgICAgbXkgQFdpZHRocyA9ICRSb3ctPntHcmlkfXtDb2x1bW5XaWR0aH0gPyAoICRSb3ctPntHcmlkfXtDb2x1bW5XaWR0aH0gPX4gLyhbXGRcLl0qXHcrKS9nICkgOiAoKTsKCiAgICAgICAgICAgIGlmICggQFdpZHRocyA8ICRDb2x1bW5zICkgewogICAgICAgICAgICAgICAgcHVzaCBAV2lkdGhzLCAoJzFmcicpIHggKCAkQ29sdW1ucyAtIEBXaWR0aHMgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFdpZHRocyA9PiBqb2luKCAnICcsIEBXaWR0aHNbIDAgLi4gJENvbHVtbnMgLSAxIF0gKSwKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBHUklEUk9XOgogICAgICAgICAgICBmb3IgbXkgJEdyaWRSb3cgKCAkUm93LT57R3JpZH17Um93c30tPkAqICkgewogICAgICAgICAgICAgICAgbmV4dCBHUklEUk9XIGlmICEkUm93SGFzVmFsdWUtPigkR3JpZFJvdyk7CgogICAgICAgICAgICAgICAgbXkgJENvbHVtbkluZGV4ID0gMDsKICAgICAgICAgICAgICAgIG15IEBEaXNwbGF5VmFsdWVzOwogICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggJEdyaWRSb3ctPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZC0+e0RGfTsKCiAgICAgICAgICAgICAgICAgICAgJENvbHVtbkluZGV4Kys7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfXsgJEZpZWxkLT57REZ9IH07CgogICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWVzWyRDb2x1bW5JbmRleF0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkLT57REZ9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBncmlkIGNvbHVtbiBmcm9tIGRlZmluaXRpb24KICAgICAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEZpZWxkLT57TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmlkQ29sdW1uID0+ICJncmlkLWNvbHVtbi1zdGFydDogJENvbHVtbkluZGV4OyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgID0+ICdMYWJlbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICRDb2x1bW5JbmRleCApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWVzWyRJbmRleF0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZENvbHVtbiA9PiAiZ3JpZC1jb2x1bW4tc3RhcnQ6ICRJbmRleDsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAnVmFsdWUnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVuZGVyQ0lMaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJERpcmVjdGlvbiA9ICRQYXJhbXtTZWN0aW9ufXtMaW5rZWRBc30gfHwgJ1NvdXJjZSc7CiAgICBteSAkVHlwZXMgICAgID0gSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn17TGlua1R5cGVzfSApID8gJFBhcmFte1NlY3Rpb259e0xpbmtUeXBlc30gOiB1bmRlZjsKCiAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCgogICAgICAgICMgVE9ETzogV2hhdCBhYm91dCB2ZXJzaW9ucwogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEaXJlY3Rpb24gICAgPT4gJERpcmVjdGlvbiwKICAgICAgICBUeXBlcyAgICAgICAgPT4gJFR5cGVzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRMaW5rZWRDb25maWdJdGVtczsKCiAgICBteSAlTGlua2VkQ2xhc3NlczsKCiAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTGluay0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBUaGluayBhYm91dCBzb3J0aW5nCiAgICAgICAgcHVzaCBAeyAkTGlua2VkQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSB9LCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgIH07CiAgICB9CgogICAgIyBUT0RPOiBBY2Nlc3MgcmlnaHRzOyBjbGFzc2VzIGZvciBhZ2VudHM7IGZvciBjdXN0b21lcnM/CiAgICAjIFRPRE86IENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRpbGU7IGNsYXNzIHJlc3RyaWN0aW9ucywgZGYgcmVzdHJpY3Rpb25zLCA/CgogICAgaWYgKCAkUGFyYW17U2VjdGlvbn17SGVhZGVyfSApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlclJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSGVhZGVyID0+ICRQYXJhbXtTZWN0aW9ufXtIZWFkZXJ9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQWN0aW9uOwogICAgaWYgKCAkUGFyYW17TGF5b3V0T2JqZWN0fXtVc2VyVHlwZX0gKSB7CiAgICAgICAgJEFjdGlvbiA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnQ3VzdG9tZXInID8gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJyA6ICdBZ2VudElUU01Db25maWdJdGVtWm9vbSc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQWN0aW9uID0gJ1B1YmxpY0lUU01Db25maWdJdGVtWm9vbSc7CiAgICB9CgogICAgZm9yIG15ICRDbGFzcyAoIHNvcnQga2V5cyAlTGlua2VkQ2xhc3NlcyApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgV2lkdGhzID0+ICcxZnIgMWZyJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGFiZWwgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ0xhYmVsJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJENJICggc29ydCB7ICRhLT57TmFtZX0gY21wICRiLT57TmFtZX0gfSAkTGlua2VkQ2xhc3Nlc3skQ2xhc3N9LT5AKiApIHsKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgID0+ICRDSS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgPT4gJENJLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPSRBY3Rpb247Q29uZmlnSXRlbUlEPSRDSS0+e0NvbmZpZ0l0ZW1JRH0iLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJ1ZhbHVlTGluaycsCiAgICAgICAgICAgICAgICAgICAgR3JpZENvbHVtbiA9PiAnZ3JpZC1jb2x1bW4tc3RhcnQ6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9SZW5kZXJEZXNjcmlwdGlvblNlY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSGVhZGVyUm93JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSGVhZGVyID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZW5kZXIgZGVzY3JpcHRpb24gcmljaHRleHQgZWRpdG9yCiAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgV2lkdGhzID0+ICcxZnInLAogICAgICAgIH0sCiAgICApOwogICAgbXkgJEZyb250ZW5kOwogICAgaWYgKCAkUGFyYW17TGF5b3V0T2JqZWN0fXtVc2VyVHlwZX0gKSB7CiAgICAgICAgJEZyb250ZW5kID0gJFBhcmFte0xheW91dE9iamVjdH17VXNlclR5cGV9IGVxICdVc2VyJyA/ICdBZ2VudCcgOiAnQ3VzdG9tZXInOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZyb250ZW5kID0gJ1B1YmxpYyc7CiAgICB9CiAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtWZXJzaW9uSUR9LAogICAgICAgICAgICBGcm9udGVuZCAgICAgPT4gJEZyb250ZW5kLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0lmcmFtZScsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVuZGVyUmVmZXJlbmNlZFNlY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtMYXlvdXRPYmplY3R9OwoKICAgIG15ICRSZWZlcmVuY2VkQ29uZmlnSXRlbSA9ICRTZWxmLT5fUmVmZXJlbmNlZENvbmZpZ0l0ZW1HZXQoCiAgICAgICAgU2VjdGlvbiAgICA9PiAkUGFyYW17U2VjdGlvbn0sCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkUGFyYW17Q29uZmlnSXRlbX0sCiAgICApOwogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUmVmZXJlbmNlZENvbmZpZ0l0ZW0pOwoKICAgICMgZ2V0IGRlZmluaXRpb24gb2YgcmVmZXJlbmNlZCBjb25maWcgaXRlbSBhbmQgcGFzcyBpdCBvbiB0byBfU2VjdGlvblJlbmRlcgogICAgbXkgJFJlZmVyZW5jZWRDSURlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFJlZmVyZW5jZWRDb25maWdJdGVtLT57RGVmaW5pdGlvbklEfSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkUmVmZXJlbmNlZENJRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH07CgogICAgaWYgKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UHJlfSAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQcmV9ICkgKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRERkVudHJ5ICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFByZX0tPkAqICkgewogICAgICAgICAgICAkU2VsZi0+X1JlbmRlckRGKAogICAgICAgICAgICAgICAgUm93ICAgICAgICAgICAgICAgICAgICAgICA9PiAkREZFbnRyeSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gICAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgICAgICAgICAgICAgICA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPl9TZWN0aW9uUmVuZGVyKAogICAgICAgIENvbmZpZ0l0ZW0gICA9PiAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0sCiAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRSZWZlcmVuY2VkQ0lEZWZpbml0aW9uLAogICAgICAgIFNlY3Rpb24gICAgICA9PiAkUmVmZXJlbmNlZENJRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFBhcmFte1NlY3Rpb259e1NlY3Rpb25OYW1lfSB9LAogICAgICAgIExheW91dE9iamVjdCA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICk7CgogICAgaWYgKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UG9zdH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UG9zdH0gKSApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFdpZHRocyA9PiAnMWZyIDFmcicsCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJERGRW50cnkgKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UG9zdH0tPkAqICkgewogICAgICAgICAgICAkU2VsZi0+X1JlbmRlckRGKAogICAgICAgICAgICAgICAgUm93ICAgICAgICAgICAgICAgICAgICAgICA9PiAkREZFbnRyeSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gICAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgICAgICAgICAgICAgICA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVmZXJlbmNlZENvbmZpZ0l0ZW1HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbXMKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtfSApOwogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259ICk7CgogICAgIyBmZXRjaCBjb25maWcgb2YgcmVmZXJlbmNlZCBmaWVsZAogICAgbXkgJFJlZmVyZW5jZWRGaWVsZENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJFBhcmFte1NlY3Rpb259e1JlZmVyZW5jZUZpZWxkfSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUmVmZXJlbmNlZEZpZWxkQ29uZmlnKTsKCiAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGRlcGVuZGluZyBvbiBmaWVsZCB0eXBlCiAgICBteSAlQ29uZmlnSXRlbUdldFBhcmFtcyA9ICgKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwogICAgaWYgKCAkUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbScgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1HZXRQYXJhbXN7Q29uZmlnSXRlbUlEfSA9ICRQYXJhbXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRSZWZlcmVuY2VkRmllbGRDb25maWctPntOYW1lfSJ9WzBdOwogICAgfQogICAgZWxzaWYgKCAkUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbVZlcnNpb24nICkgewogICAgICAgICRDb25maWdJdGVtR2V0UGFyYW1ze1ZlcnNpb25JRH0gPSAkUGFyYW17Q29uZmlnSXRlbX17IkR5bmFtaWNGaWVsZF8kUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57TmFtZX0ifVswXTsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzICggJENvbmZpZ0l0ZW1HZXRQYXJhbXN7Q29uZmlnSXRlbUlEfSB8fCAkQ29uZmlnSXRlbUdldFBhcmFtc3tWZXJzaW9uSUR9ICk7CgogICAgIyByZXR1cm4gcmVmZXJlbmNlZCBjb25maWcgaXRlbQogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICVDb25maWdJdGVtR2V0UGFyYW1zLAogICAgKTsKfQoKc3ViIF9SZW5kZXJERiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte1Jvd317REZ9OwogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte1Jvd317REZ9IH07CgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRQYXJhbXtEZWZpbml0aW9ufXtEeW5hbWljRmllbGRSZWZ9eyAkUGFyYW17Um93fXtERn0gfTsKCiAgICByZXR1cm4gaWYgISREeW5hbWljRmllbGQ7CgogICAgbXkgJERpc3BsYXlWYWx1ZSA9ICRQYXJhbXtEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0fS0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtSb3d9e0RGfSB9LAogICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMSwKICAgICAgICBNdWx0aUxpbmsgICAgICAgICAgPT4gMSwKICAgICk7CgogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBMYWJlbCA9PiAkUGFyYW17Um93fXtMYWJlbH0gfHwgJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgVHlwZSAgPT4gJ0xhYmVsJywKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnIHx8ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdSaWNoVGV4dCcgKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0Z1bGxSb3cnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICREaXNwbGF5VmFsdWUtPntMaW5rfSApIHsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERpc3BsYXlWYWx1ZS0+e0xpbmt9ICkgKSB7CiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAwIC4uICQjeyAkRGlzcGxheVZhbHVlLT57TGlua30gfSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdWYWx1ZUl0ZW1MaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX1bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJERpc3BsYXlWYWx1ZS0+e1ZhbHVlfVskSW5kZXhdLAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICA9PiAkRGlzcGxheVZhbHVlLT57TGlua31bJEluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgTGlua1ByZXZpZXcgPT4gJERpc3BsYXlWYWx1ZS0+e0xpbmtQcmV2aWV3fVskSW5kZXhdLAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkLT57TmFtZX0iID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkSW5kZXggIT0gJCN7ICREaXNwbGF5VmFsdWUtPntMaW5rfSB9ICkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnTXVsdGl2YWx1ZVNlcGFyYXRvckxpbmsnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZhbHVlSXRlbUxpbmsnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW19LT4lKiwKICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKCiAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgIyAgIFBsZWFzZSBzZWUgYnVnIzEzMzYyIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZC0+e05hbWV9IiA9PiAkRGlzcGxheVZhbHVlLT57VGl0bGV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdBdHRhY2htZW50JyApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVSYXcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWUnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomer.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEN1c3RvbWVyIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGN1c3RvbWVyIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lci0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0gfHwgJycsCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRhIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBzZWxlY3RlZCBjdXN0b21lciB1c2VyCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIGNoZWNrIHNlYXJjaCBidXR0b24KICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWFyY2gnICkgKSB7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIHNlbGVjdCBidXR0b24KICAgIGVsc2lmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWxlY3QnICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VsZWN0JyApOwogICAgfQoKICAgICMgY2hlY2sgY2xlYXIgYnV0dG9uCiAgICBlbHNpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgcmVzZXQgdmFsdWUgaWYgc2VhcmNoIGZpZWxkIGlzIGVtcHR5CiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpTZWFyY2gnICkKICAgICAgICAgICAgJiYgZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgb3B0aW9uCiAgICAgICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICAgICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KICAgIG15ICRDbGFzcyAgICA9ICdXNTBwYyBJVFNNQ3VzdG9tZXJTZWFyY2gnOwogICAgbXkgJFNlYXJjaCAgID0gJyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9IHx8ICcnOwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9ICB8fCAnJzsKICAgIG15ICRJdGVtSWQgICA9ICRQYXJhbXtJdGVtSWR9ICAgfHwgJyc7CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBjcmVhdGUgY3VzdG9tZXIgc3RyaW5nCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGN1c3RvbWVyIGRhdGEKICAgICAgICBteSAlQ3VzdG9tZXJTZWFyY2hMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lclNlYXJjaCgKICAgICAgICAgICAgU2VhcmNoID0+ICRWYWx1ZSwKICAgICAgICApOwoKICAgICAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAgICAgJFNlYXJjaCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEN1c3RvbWVyU2VhcmNoTGlzdHskVmFsdWV9IHx8ICcnLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBjcmVhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFZhbHVlCiAgICAgICAgLiAnIiBpZD0iJwogICAgICAgIC4gJEl0ZW1JZCAuICdTZWxlY3RlZCcKICAgICAgICAuICciLz4nCiAgICAgICAgLiAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnOjpTZWFyY2giIGNsYXNzPSInCiAgICAgICAgLiAkQ2xhc3MKICAgICAgICAuICciIGlkPSInCiAgICAgICAgLiAkSXRlbUlkCiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFNlYXJjaCAuICciLz4nOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBoYXNoIHdpdGggdmFsdWVzIGZvciB0aGUgaW5wdXQgZmllbGQKICAgIG15ICVGb3JtRGF0YTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgIG15ICRJbnB1dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURhdGEsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW0gICA9PiAkUGFyYW17SXRlbX0sCiAgICAgICAgSXRlbUlkID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICByZXR1cm4gJElucHV0U3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomerCompany.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lckNvbXBhbnkgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgY3VzdG9tZXIgY29tcGFueSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkU2VsZWN0ZWRJRCA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJzsKCiAgICBteSAkQ1NTQ2xhc3MgPSAnTW9kZXJuaXplJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENTU0NsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAlQ29tcGFueUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55JyktPkN1c3RvbWVyQ29tcGFueUxpc3QoCiAgICAgICAgTGltaXQgPT4gMCwgICAgIyBEaXNwbGF5IGFsbCBDdXN0b21lciBDb21wYW5pZXMKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUNvbXBhbnlMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJRCAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGVjdGVkSUQsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDU1NDbGFzcywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZXMgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICAjIGdldCBjb21wYW55IGRhdGEKICAgIG15ICVDb21wYW55TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckNvbXBhbnknKS0+Q3VzdG9tZXJDb21wYW55TGlzdCgKICAgICAgICBMaW1pdCA9PiAwLAogICAgKTsKCiAgICAjIGdlbmVyYXRlIHN0cmluZwogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVDb21wYW55TGlzdCwKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREYXRlIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGUgb2JqZWN0cy4KCj1jdXQKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREYXRlLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMS0wMScsICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgICRQYXJhbXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5EYXRlIHwgTG9jYWxpemUoIkRhdGUiKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnIDAwOjAwOjAwJywKICAgICAgICB9LAogICAgKTsKICAgICRQYXJhbXtWYWx1ZX0gPX4gcy8wMDowMDowMC8vOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9IHx8ICcnOwp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkRGF5ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkRheScgKTsKICAgIG15ICRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlllYXInICk7CgogICAgaWYgKCAkRGF5ICYmICRNb250aCAmJiAkWWVhciApIHsKICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkWWVhciwgJE1vbnRoLCAkRGF5OwogICAgfQoKICAgICMgc2V0IGludmFsaWQgcGFyYW0KICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIFNhbml0eSBjaGVjayBvZiB0aGUgYXNzZW1ibGVkIHRpbWVzdGFtcAogICAgaWYgKCAkRm9ybURhdGF7VmFsdWV9ICkgewoKICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRm9ybURhdGF7VmFsdWV9IC4gJyAwMDowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERhdGVUaW1lT2JqZWN0ICkgewogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAzLTI2JywgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkkL2kgKSB7CiAgICAgICAgICAgICRWYWx1ZXN7ICRQYXJhbXtLZXl9IC4gJzo6WWVhcicgfSAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSA9ICQyOwogICAgICAgICAgICAkVmFsdWVzeyAkUGFyYW17S2V5fSAuICc6OkRheScgfSAgID0gJDM7CgogICAgICAgICAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAgICAgICAgICRDbGFzcyA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJFBhcmFte0tleX0gLiAnOjonLAogICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIE92ZXJyaWRlVGltZVpvbmUgICAgICAgICAgICAgPT4gJFBhcmFte092ZXJyaWRlVGltZVpvbmV9LAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJFVzZWQ7CiAgICBteSAkU3RhcnREYXk7CiAgICBteSAkU3RhcnRNb250aDsKICAgIG15ICRTdGFydFllYXI7CiAgICBteSAkU3RvcERheTsKICAgIG15ICRTdG9wTW9udGg7CiAgICBteSAkU3RvcFllYXI7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gfTsKICAgICAgICAkU3RhcnREYXkgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgfTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6WWVhcicgfTsKICAgICAgICAkU3RvcERheSAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNb250aCcgfTsKICAgICAgICAkU3RvcFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6WWVhcicgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRVc2VkICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnREYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpEYXknICk7CiAgICAgICAgJFN0YXJ0TW9udGggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TW9udGgnICk7CiAgICAgICAgJFN0YXJ0WWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6WWVhcicgKTsKICAgICAgICAkU3RvcERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6Ok1vbnRoJyApOwogICAgICAgICRTdG9wWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6WWVhcicgKTsKICAgIH0KICAgIGlmICgKICAgICAgICAkVXNlZAogICAgICAgICYmICRTdGFydERheSAmJiAkU3RhcnRNb250aCAmJiAkU3RhcnRZZWFyCiAgICAgICAgJiYgJFN0b3BEYXkgICYmICRTdG9wTW9udGggICYmICRTdG9wWWVhcgogICAgICAgICkKICAgIHsKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkU3RhcnRZZWFyLCAkU3RhcnRNb250aCwgJFN0YXJ0RGF5OwogICAgICAgIG15ICRTdG9wRGF0ZSAgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCcsICRTdG9wWWVhciwgICRTdG9wTW9udGgsICAkU3RvcERheTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgIyBOb3RlIHRoYXQgc2VhcmNoaW5nIGlzIGJ5IGRhdGUsIHdoaWxlIGlucHV0IGlzIGJ5IHRpbWUgYXMgd2VsbAogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gMTAsCiAgICAgICAgWWVhclBlcmlvZEZ1dHVyZSA9PiAxMCwKICAgICAgICAlR2V0UGFyYW0sCiAgICApOwogICAgbXkgJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIE9wdGlvbmFsICAgICAgICAgPT4gMCwKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdG9wLAogICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+IDEwLAogICAgICAgICVHZXRQYXJhbSwKICAgICk7CgogICAgbXkgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJEtleSIgdmFsdWU9IjEiLz59OwogICAgaWYgKCAkUGFyYW17T3B0aW9uYWx9ICkgewogICAgICAgICRDaGVja2JveCA9IHFxezxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iJEtleSIgdmFsdWU9IjEiLz59OwogICAgfQoKICAgIG15ICRCZXR3ZWVuID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdCZXR3ZWVuJyk7CiAgICBteSAkQW5kICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnYW5kJyk7CgogICAgcmV0dXJuICI8ZGl2PiAkQ2hlY2tib3ggJEJldHdlZW4gJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA8L2Rpdj4iCiAgICAgICAgLiAiPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMjdweDtcIj4kQW5kPC9zcGFuPiAkVGltZVN0b3BTZWxlY3Rpb25TdHJpbmciOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDateTime.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dERhdGVUaW1lIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGV0aW1lIG9iamVjdHMuCgo9Y3V0Cgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWUtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAxLTAxIDEyOjAwJywgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgJFBhcmFte1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkRhdGUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnOjAwJywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSB8fCAnJzsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6RGF5JyApOwogICAgbXkgJE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpZZWFyJyApOwogICAgbXkgJEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6SG91cicgKSAgIHx8IDA7CiAgICBteSAkTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpNaW51dGUnICkgfHwgMDsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgWWVhciAgICAgPT4gJFllYXIsCiAgICAgICAgICAgIE1vbnRoICAgID0+ICRNb250aCwKICAgICAgICAgICAgRGF5ICAgICAgPT4gJERheSwKICAgICAgICAgICAgSG91ciAgICAgPT4gJEhvdXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1pZG5pZ2h0CiAgICAgICAgICAgIE1pbnV0ZSAgID0+ICRNaW51dGUsCiAgICAgICAgICAgIFRpbWVab25lID0+ICRQcmVmZXJlbmNlc3tVc2VyVGltZVpvbmV9IHx8ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Vc2VyRGVmYXVsdFRpbWVab25lR2V0KCksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBDb252ZXJ0IHN0YXJ0IHRpbWUgdG8gbG9jYWwgc3lzdGVtIHRpbWUgem9uZS4KICAgICREYXRlVGltZU9iamVjdC0+VG9PVE9CT1RpbWVab25lKCk7CiAgICBteSAkRGF0ZVRpbWVTZXR0aW5ncyA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRGF0ZVRpbWVTZXR0aW5ncykgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9IHNwcmludGYgJyUwMmQtJTAyZC0lMDJkICUwMmQ6JTAyZCcsICREYXRlVGltZVNldHRpbmdzLT57WWVhcn0sICREYXRlVGltZVNldHRpbmdzLT57TW9udGh9LCAkRGF0ZVRpbWVTZXR0aW5ncy0+e0RheX0sCiAgICAgICAgICAgICREYXRlVGltZVNldHRpbmdzLT57SG91cn0sICREYXRlVGltZVNldHRpbmdzLT57TWludXRlfTsKICAgIH0KCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgIyBTYW5pdHkgY2hlY2sgb2YgdGhlIGFzc2VtYmxlZCB0aW1lc3RhbXAKICAgIGlmICggJEZvcm1EYXRhe1ZhbHVlfSApIHsKCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZvcm1EYXRhe1ZhbHVlfSAuICc6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggISREYXRlVGltZU9iamVjdCApIHsKICAgICAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMy0yNiAxMjowMCcsICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKSQvaSApIHsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpZZWFyJyB9ICAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSAgPSAkMjsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpEYXknIH0gICAgPSAkMzsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpIb3VyJyB9ICAgPSAkNDsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNaW51dGUnIH0gPSAkNTsKCiAgICAgICAgICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICAgICAgICAgJENsYXNzID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUGFyYW17S2V5fSAuICc6OicsCiAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVc2VkOwogICAgbXkgJFN0YXJ0TWludXRlOwogICAgbXkgJFN0YXJ0SG91cjsKICAgIG15ICRTdGFydERheTsKICAgIG15ICRTdGFydE1vbnRoOwogICAgbXkgJFN0YXJ0WWVhcjsKICAgIG15ICRTdG9wTWludXRlOwogICAgbXkgJFN0b3BIb3VyOwogICAgbXkgJFN0b3BEYXk7CiAgICBteSAkU3RvcE1vbnRoOwogICAgbXkgJFN0b3BZZWFyOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IH07CiAgICAgICAgJFN0YXJ0TWludXRlID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyB9OwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkhvdXInIH07CiAgICAgICAgJFN0YXJ0RGF5ICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6RGF5JyB9OwogICAgICAgICRTdGFydE1vbnRoICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OlllYXInIH07CiAgICAgICAgJFN0b3BNaW51dGUgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNaW51dGUnIH07CiAgICAgICAgJFN0b3BIb3VyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpIb3VyJyB9OwogICAgICAgICRTdG9wRGF5ICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnIH07CiAgICAgICAgJFN0b3BZZWFyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpZZWFyJyB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFVzZWQgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnRNaW51dGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyApIHx8IDAwOwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpIb3VyJyApCiAgICAgICAgICAgIHx8IDAwOwogICAgICAgICRTdGFydERheSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgKTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgKTsKICAgICAgICAkU3RhcnRZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpZZWFyJyApOwogICAgICAgICRTdG9wTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TWludXRlJyApCiAgICAgICAgICAgIHx8IDU5OwogICAgICAgICRTdG9wSG91ciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkhvdXInICkKICAgICAgICAgICAgfHwgMjM7CiAgICAgICAgJFN0b3BEYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnICk7CiAgICAgICAgJFN0b3BZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OlllYXInICk7CiAgICB9CgogICAgaWYgKAogICAgICAgICRVc2VkCiAgICAgICAgJiYgJFN0YXJ0TWludXRlICYmICRTdGFydEhvdXIgJiYgJFN0YXJ0RGF5ICYmICRTdGFydE1vbnRoICYmICRTdGFydFllYXIKICAgICAgICAmJiAkU3RvcE1pbnV0ZSAgJiYgJFN0b3BIb3VyICAmJiAkU3RvcERheSAgJiYgJFN0b3BNb250aCAgJiYgJFN0b3BZZWFyCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGFkZCBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzLAogICAgICAgICMgc28gdGhhdCB0aGF0IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgZGF5IGlzIHNlbGVjdGVkIGFzIHdlbGwKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQgJTAyZDolMDJkOjAwJwogICAgICAgICAgICAsICRTdGFydFllYXIsICRTdGFydE1vbnRoLCAkU3RhcnREYXksICRTdGFydEhvdXIsICRTdGFydE1pbnV0ZTsKICAgICAgICBteSAkU3RvcERhdGUgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6NTknCiAgICAgICAgICAgICwgJFN0b3BZZWFyLCAkU3RvcE1vbnRoLCAkU3RvcERheSwgJFN0b3BIb3VyLCAkU3RvcE1pbnV0ZTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKICAgIG15ICRUaW1lU3RvcFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBPcHRpb25hbCAgICAgICAgID0+IDAsCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUHJlZml4U3RvcCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKCiAgICBteSAkQ2hlY2tib3ggPSBxcXs8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICBpZiAoICRQYXJhbXtPcHRpb25hbH0gKSB7CiAgICAgICAgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICB9CgogICAgbXkgJEJldHdlZW4gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0JldHdlZW4nKTsKICAgIG15ICRBbmQgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdhbmQnKTsKCiAgICByZXR1cm4gIjxkaXY+ICRDaGVja2JveCAkQmV0d2VlbiAkVGltZVN0YXJ0U2VsZWN0aW9uU3RyaW5nIDwvZGl2PiIKICAgICAgICAuICI8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyN3B4O1wiPiAkQW5kIDwvc3Bhbj4gJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nIjsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDummy.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OkNvbmZpZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREdW1teSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBkdW1teSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXktPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgpOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDogMS4zZW07XCI+IjsKICAgICRTdHJpbmcKICAgICAgICAuPSAiPGlucHV0IHN0eWxlPVwiZGlzcGxheTpub25lO1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiA8L3NwYW4+JzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KCk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgcmV0dXJuIFtdOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgpOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIHJldHVybiAnJm5ic3A7JzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutGeneralCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0R2VuZXJhbENhdGFsb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRHZW5lcmFsQ2F0YWxvZyAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEdlbmVyYWxDYXRhbG9nLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRQYXJhbXtWYWx1ZX0gLy89ICcnOwoKICAgICMgdHJhbnNsYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ1NTQ2xhc3MgPSAnTW9kZXJuaXplJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENTU0NsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIHRyYW5zbGF0aW9uIG9uIG9yIG9mZgogICAgbXkgJFRyYW5zbGF0aW9uID0gMDsKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRUcmFuc2xhdGlvbiA9IDE7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDbGFzc30gfHwgJycsCiAgICApOwoKICAgICMgcmV2ZXJzZSB0aGUgY2xhc3MgbGlzdAogICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICV7JENsYXNzTGlzdH07CgogICAgbXkgJFNlbGVjdGVkSUQ7CgogICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRTZWxlY3RlZElEID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KCiAgICAjIGdldCB0aGUgZGVmYXVsdCBpZCBieSBkZWZhdWx0IHZhbHVlCiAgICBlbHNlIHsKICAgICAgICAkU2VsZWN0ZWRJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnIH0gfHwgJyc7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJRCAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkU2VsZWN0ZWRJRCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgICMgdHJhbnNsYXRpb24gb24gb3Igb2ZmCiAgICBteSAkVHJhbnNsYXRpb24gPSAwOwogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFRyYW5zbGF0aW9uID0gMTsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NsYXNzfSB8fCAnJywKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutInteger.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0SW50ZWdlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRJbnRlZ2VyIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGludGVnZXIgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEludGVnZXItPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAnJzsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBtaW4sIG1heCBhbmQgZGVmYXVsdAogICAgbXkgJFZhbHVlTWluID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNaW59IC8vIDE7CiAgICBteSAkVmFsdWVNYXggPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZU1heH0gLy8gMTsKICAgIGlmICggJFZhbHVlTWluID4gJFZhbHVlTWF4ICkgewogICAgICAgICRWYWx1ZU1pbiA9ICRWYWx1ZU1heDsKICAgIH0KICAgIGlmICgKICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9CiAgICAgICAgJiYgKAogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IDwgJFZhbHVlTWluCiAgICAgICAgICAgIHx8ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gPiAkVmFsdWVNYXgKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gPSAnJzsKICAgIH0KCiAgICAjIGNyZWF0ZSBkYXRhIGFycmF5CiAgICBteSAkSW50ZWdlckxpc3QgPSBbXTsKICAgIGZvciBteSAkQ291bnRlciAoICRWYWx1ZU1pbiAuLiAkVmFsdWVNYXggKSB7CiAgICAgICAgcHVzaCBAeyRJbnRlZ2VyTGlzdH0sICRDb3VudGVyOwogICAgfQoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJEludGVnZXJMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgbWluLCBtYXgKICAgIG15ICRWYWx1ZU1pbiA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlTWlufSAvLyAxOwogICAgbXkgJFZhbHVlTWF4ID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNYXh9IC8vIDE7CiAgICBpZiAoICRWYWx1ZU1pbiA+ICRWYWx1ZU1heCApIHsKICAgICAgICAkVmFsdWVNaW4gPSAkVmFsdWVNYXg7CiAgICB9CgogICAgIyBzZXQgcHJlc2VsZWN0ZWQgdmFsdWUsIGVpdGhlciBmcm9tIHByZXZpb3VzIHNlbGVjdGlvbiBvciB0aGUgZGVmYXVsdAogICAgbXkgJFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgICMgY2hlY2sgd2hldGhlciB0aGUgcHJlc2VsZWN0ZWQgdmFsdWUgaXMgd2l0aGluIHRoZSB2YWxpZCByYW5nZQogICAgbXkgQEZpbHRlcmVkVmFsdWVzOwogICAgVkFMVUU6CiAgICBmb3IgbXkgJFZhbHVlICggQHskVmFsdWVzfSApIHsKICAgICAgICBuZXh0IFZBTFVFIGlmICFkZWZpbmVkICRWYWx1ZTsKICAgICAgICBuZXh0IFZBTFVFIGlmICEkVmFsdWU7CiAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPCAkVmFsdWVNaW47CiAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPiAkVmFsdWVNYXg7CgogICAgICAgIHB1c2ggQEZpbHRlcmVkVmFsdWVzLCAkVmFsdWU7CiAgICB9CgogICAgIyBjcmVhdGUgZGF0YSBhcnJheQogICAgbXkgQEludGVnZXJMaXN0ID0gKCAkVmFsdWVNaW4gLi4gJFZhbHVlTWF4ICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFxASW50ZWdlckxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgID0+IFxARmlsdGVyZWRWYWx1ZXMsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutText.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dCAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiB0ZXh0IG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBmb3JtLCBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXgKICAgIGlmICgKICAgICAgICAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9CiAgICAgICAgJiYgJEZvcm1EYXRhe1ZhbHVlfSAhfiBteyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeH0gfXhtcwogICAgICAgICkKICAgIHsKCiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1JlZ0V4RXJyb3JNZXNzYWdlfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiAnOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKICAgIGlmICggIWRlZmluZWQgJFZhbHVlICkgewogICAgICAgICRWYWx1ZSA9ICcnOwogICAgfQoKICAgIG15ICRTdHJpbmcgPSBxcXs8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iJFBhcmFte0tleX0iIHZhbHVlPSIkVmFsdWUiIGNsYXNzPSJXNTBwYyIgPn07CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutTextArea.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dEFyZWE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFRleHRBcmVhIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIHRleHRhcmVhIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0QXJlYS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICcnOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICBteSAkTGlua0ZlYXR1cmUgICAgPSAxOwogICAgbXkgJEhUTUxSZXN1bHRNb2RlID0gMTsKCiAgICAjIGRvIG5vdCB0cmFuc2Zvcm0gbGlua3MgaW4gcHJpbnQgdmlldwogICAgaWYgKCAkUGFyYW17UHJpbnR9ICkgewogICAgICAgICRMaW5rRmVhdHVyZSAgICA9IDA7CiAgICAgICAgJEhUTUxSZXN1bHRNb2RlID0gMDsKICAgIH0KCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+ICRIVE1MUmVzdWx0TW9kZSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBmb3JtLCBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXgKICAgIGlmICgKICAgICAgICAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9CiAgICAgICAgJiYgJEZvcm1EYXRhe1ZhbHVlfSAhfiBteyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeH0gfXhtcwogICAgICAgICkKICAgIHsKCiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1JlZ0V4RXJyb3JNZXNzYWdlfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHMgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDb2xzfSB8fCA1ODsKICAgIG15ICRSb3dzID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Um93c30gfHwgMTA7CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICdXNTBwYyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRWYWx1ZSk7CiAgICB9CiAgICBteSAkU3RyaW5nID0gIjx0ZXh0YXJlYSBuYW1lPVwiJFBhcmFte0tleX1cIiBpZD1cIiRJdGVtSWRcIiBjb2xzPVwiJENvbHNcIiByb3dzPVwiJFJvd3NcIiBjbGFzcz1cIiRDbGFzc1wiPiRWYWx1ZTwvdGV4dGFyZWE+IjsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwogICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgJFZhbHVlID0gJyc7CiAgICB9CgogICAgbXkgJFN0cmluZyA9IHFxezxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSIkUGFyYW17S2V5fSIgdmFsdWU9IiRWYWx1ZSIgY2xhc3M9Ilc1MHBjIj59OwoKICAgIHJldHVybiAkU3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/MenuGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpCYXNlJyk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKKTsKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ3JhbnQgYWNjZXNzIGJ5IGRlZmF1bHQKICAgIG15ICRBY2Nlc3MgPSAxOwoKICAgICMgZ2V0IGFjdGlvbgogICAgbXkgJEFjdGlvbiA9ICRQYXJhbXtDb25maWd9LT57QWN0aW9ufTsKICAgIGlmICggJEFjdGlvbiBlcSAnQWdlbnRMaW5rT2JqZWN0JyApIHsKCiAgICAgICAgIyBUaGUgTGluay1saW5rIGlzIGEgc3BlY2lhbCBjYXNlLCBhcyBpdCBpcyBub3Qgc3BlY2lmaWMgdG8gSVRTTUNvbmZpZ0l0ZW0uCiAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgaGFyZGNvZGUgdGhhdCBBZ2VudExpbmtPYmplY3QgaXMgdHJlYXRlZCBsaWtlIEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudElUU01Db25maWdJdGVtRWRpdCc7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZ3JvdXBzCiAgICBteSAkR3JvdXBzUm8gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXBSb30gfHwgW107CiAgICBteSAkR3JvdXBzUncgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXB9ICAgfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRSb0dyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJ3R3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdNZW51JyApOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWVudUl0ZW0nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBkaWFsb2cgaGFzIHRvIGJlIHNob3duCiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57RGlhbG9nVGl0bGV9ICkgewogICAgICAgIG15ICRDb25maWdPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAgICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICAgICAjIFJlcGxhY2UgdGhlIHRlbXBsYXRlIHRvb2xraXQgZXhwcmVzc2lvbnMgd2l0aCB0aGUgZmluYWwgdmFsdWUuCiAgICAgICAgbXkgJUpTRGF0YSA9ICgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnSXRlbX0gfSwKICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICApOwoKICAgICAgICBkZWxldGUgJEpTRGF0YXtDb25maWd9OwogICAgICAgIGRlbGV0ZSAkSlNEYXRhe0NvbmZpZ0l0ZW19OwoKICAgICAgICAkSlNEYXRhe0VsZW1lbnRTZWxlY3Rvcn0gICAgICAgICAgICA9fiBzL1xbJVxzKkRhdGFcLk1lbnVJRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe01lbnVJRH0vaTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZ30gICA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKICAgICAgICAkSlNEYXRhe0NvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nfSA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKCiAgICAgICAgJEpTRGF0YXtEaWFsb2dUaXRsZX0gPX4gcy9cWyVccypUcmFuc2xhdGVcKCIoLiopIlwpXHMqXHxccypodG1sXHMqJVxdLyRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkNvbmZpZ1woIiguKikiXClccyolXF0vJENvbmZpZ09iamVjdC0+R2V0KCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkRhdGEuTnVtYmVyXHMqXHxccypodG1sXHMqJVxdLyRKU0RhdGF7TnVtYmVyfS9laTsKCiAgICAgICAgJEpTRGF0YXtNZW51SUR9ID0gJ01lbnUnIC4gJEpTRGF0YXtNZW51SUR9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNU2hvd0NvbmZpcm1EaWFsb2cuJyAuICRQYXJhbXtNZW51SUR9LAogICAgICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/CustomerOverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6Q3VzdG9tZXJPdmVydmlld1NtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBcJVBhcmFtOwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzZXQgc3RvcmVkIGZpbHRlcnMgaWYgcHJlc2VudAogICAgbXkgJFN0b3JlZEZpbHRlcnNLZXkgPSAnVXNlclN0b3JlZEZpbHRlckNvbHVtbnMtJyAuICRTZWxmLT57QWN0aW9ufSAuICctJyAuICRTZWxmLT57RmlsdGVyfTsKICAgIGlmICggJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSApIHsKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7JFN0b3JlZEZpbHRlcnNLZXl9LAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSA9ICRTdG9yZWRGaWx0ZXJzOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGZpbHRlcgogICAgbXkgJEZpbHRlck5hbWUgPSBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfSApID8gJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfS0+e05hbWV9IDogJ0FsbCc7CgogICAgIyBnZXQgcGVybWlzc2lvbiBjb25kaXRpb24gZm9yIGZpbHRlcgogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnICA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zID0gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZykgKSB7CiAgICAgICAgUEVSTUNPTkY6CiAgICAgICAgZm9yIG15ICRDb25maWdJZGVudGlmaWVyICggc29ydCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+JSogKSB7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBncm91cCBwZXJtaXNzaW9uCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57R3JvdXBzfSApICkgewoKICAgICAgICAgICAgICAgICMgcHJlcGFyZSBncm91cCBsb29rdXAgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gMDsKICAgICAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cE5hbWUgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgR1JPVVAgaWYgISRHcm91cExvb2t1cHskR3JvdXBOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgJEFjY2Vzc09rID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyAkQWNjZXNzT2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEZpbHRlck5hbWUgZXEgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0gPSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zLT57JENvbmZpZ0lkZW50aWZpZXJ9IC8vIFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zJyktPntEZWZhdWx0fSAvLyBbXTsKICAgICAgICB9CiAgICAgICAgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gPSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9OwogICAgfQoKICAgICMgaWYgcHJlZmVyZW5jZSBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCBvdmVyd3JpdGUgZW5hYmxlZCBjb2x1bW5zIHdpdGggcHJlZmVyZW5jZXMKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gSXNBcnJheVJlZldpdGhEYXRhKCRDb2x1bW5zRW5hYmxlZCkgPyAkQ29sdW1uc0VuYWJsZWQgOiBbXTsKICAgIH0KCiAgICAjIGFsd2F5cyBzZXQgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ051bWJlcicgfSAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCogKSB7CiAgICAgICAgdW5zaGlmdCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCosICdOdW1iZXInOwogICAgfQogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdOdW1iZXInIH0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CiAgICAgICAgdW5zaGlmdCAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiwgJ051bWJlcic7CiAgICB9CgogICAgIyBnZXQgbmVjZXNzYXJ5IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZHMgYW5kIHNldCBhdmFpbGFibGUgYW5kIHZhbGlkIGZpbHRlciBhbmQgc29ydGFibGUgY29sdW1ucwogICAgRFlOQU1JQ0ZJRUxETkFNRToKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqICkgewoKICAgICAgICBteSAkRmllbGROYW1lOwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZE5hbWUgPX4gbXsgRHluYW1pY0ZpZWxkXyg/PEZpZWxkTmFtZT5bQS1aYS16MC05XC1dKykgfXhtcyApIHsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9ICQre0ZpZWxkTmFtZX07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUU7CiAgICAgICAgfQoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHN0b3JlIGZpZWxkIGNvbmZpZwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiwgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZmlsdHJhYmxlIGFuZCBzb3J0YWJsZSBiZWhhdmlvcnMKICAgICAgICBmb3IgbXkgJEJlaGF2aW9yIChxdyhGaWx0cmFibGUgU29ydGFibGUpKSB7CgogICAgICAgICAgICBteSAkSGFzQmVoYXZpb3IgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAiSXMkQmVoYXZpb3IiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNCZWhhdmlvcikgewogICAgICAgICAgICAgICAgJFNlbGYtPnsiQXZhaWxhYmxlJHtCZWhhdmlvcn1Db2x1bW5zIn17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggd2l0aCBhbGwgdmFsaWQgc29ydGFibGUgY29sdW1ucyAodGFrZW4gZnJvbSBJVFNNQ29uZmlnSXRlbVNlYXJjaCkKICAgICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8TnVtYmVyfENoYW5nZWR8TmFtZXxEZXBsU3RhdGV8Q3VyRGVwbFN0YXRlCiAgICAjIHxJbmNpU3RhdGV8Q3VySW5jaVN0YXRlCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQWdlJyAgICAgICAgICA9PiAxLAogICAgICAgICdOdW1iZXInICAgICAgID0+IDEsCiAgICAgICAgJ05hbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICA9PiAxLAogICAgICAgICdMYXN0Q2hhbmdlZCcgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICBkZWZpbmVkICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30KICAgICAgICA/ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPiUqCiAgICAgICAgOiAoKSwKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEFjdGlvblJvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9OwogICAgaWYgKCAkQ29sdW1ucyAmJiBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCAkQ29sdW1ucy0+QCogKSB7CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdMYXN0IGNoYW5nZWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbicgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoJFRyYW5zbGF0ZWRXb3JkKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAgICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICApOwoKICAgIGlmICggJENvbHVtbnNEeW5hbWljRmllbGQgJiYgSXNBcnJheVJlZldpdGhEYXRhKCRDb2x1bW5zRHluYW1pY0ZpZWxkKSApIHsKCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IEB7JENvbHVtbnNEeW5hbWljRmllbGR9ICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGQ7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBTb3J0T3JkZXJCYXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIElmICRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSBpcyBub3Qgc2VudCwgd2Ugd2FudCB0byBkaXNhYmxlIGFsbCBmaWx0ZXJzCiAgICAjICAgZm9yIHRoZSBjdXJyZW50IHNjcmVlbi4gV2UgbG9jYWxpemUgdGhlIHNldHRpbmcgZm9yIHRoaXMgc3ViIGFuZCBjaGFuZ2UgaXQKICAgICMgICBhZnRlciB0aGF0LCBpZiBuZWVkZWQuIFRoZSBvcmlnaW5hbCB2YWx1ZSB3aWxsIGJlIHJlc3RvcmVkIGFmdGVyIHRoaXMgZnVuY3Rpb24uCiAgICBsb2NhbCAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9ID0gJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfTsKICAgIGlmICggISRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSApIHsKICAgICAgICAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9ID0ge307ICAgICMgZGlzYWJsZSBhbGwgY29sdW1uIGZpbHRlcnMKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKHF3KENvbmZpZ0l0ZW1JRHMgUGFnZVNob3duIFN0YXJ0SGl0KSkgewogICAgICAgIGlmICggISRQYXJhbXskSXRlbX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRJdGVtISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgaW5jaWRlbnQgc2lnbmFscwogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgc3RvcmUgZGVwbG95bWVudCBzaWduYWxzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9LT5AKjsKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvbnZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlCiAgICAgICAgJERlcGxTaWduYWxzeyAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfSB9ID0gJERlcGxTdGF0ZTsKCiAgICAgICAgIyBjb252ZXJ0IHRvIGxvd2VyIGNhc2UKICAgICAgICBteSAkRGVwbFN0YXRlQ29sb3IgPSAoIGxjICRDb2xvciApID1+IHMvW14wLTlhLWZdLy9tc2dyOwoKICAgICAgICAjIGFkZCB0byBzdHlsZSBjbGFzc2VzIHN0cmluZwogICAgICAgICRTdHlsZUNsYXNzZXMgLj0gIgogICAgICAgICAgICAuRmxhZyBzcGFuLiREZXBsU3RhdGUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIyREZXBsU3RhdGVDb2xvcjsKICAgICAgICAgICAgfQogICAgICAgICI7CiAgICB9CgogICAgIyB3cmFwIGludG8gc3R5bGUgdGFncwogICAgaWYgKCRTdHlsZUNsYXNzZXMpIHsKICAgICAgICAkU3R5bGVDbGFzc2VzID0gIjxzdHlsZT4kU3R5bGVDbGFzc2VzPC9zdHlsZT4iOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgbXkgQENvbmZpZ0l0ZW1Cb3g7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9ICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9ICYmICRDb3VudGVyIDwgKCAkUGFyYW17UGFnZVNob3dufSArICRQYXJhbXtTdGFydEhpdH0gKSApIHsKCiAgICAgICAgICAgICMgR2V0IGNvbmZpZyBpdGVtIGRhdGEuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICVDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1SZWYtPiUqOwoKICAgICAgICAgICAgIyBzZXQgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc2lnbmFscwogICAgICAgICAgICAkQ29uZmlnSXRlbXtDdXJEZXBsU2lnbmFsfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlfSB9OwogICAgICAgICAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU2lnbmFsfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VySW5jaVN0YXRlVHlwZX0gfTsKCiAgICAgICAgICAgICMgZmlsbCBjb2x1bW4gbmFtZSBhdHRyaWJ1dGUgd2l0aCBjb3JyZXNwb25kaW5nIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICRDb25maWdJdGVte0NyZWF0ZWR9ICAgICA9ICRDb25maWdJdGVte0NyZWF0ZVRpbWV9OwogICAgICAgICAgICAkQ29uZmlnSXRlbXtMYXN0Q2hhbmdlZH0gPSAkQ29uZmlnSXRlbXtDaGFuZ2VUaW1lfTsKCiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1Cb3gsIFwlQ29uZmlnSXRlbTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBjb2x1bW5zZW5hYmxlZCBpcyBhIGZpbGxlZCBhcnJheSByZWZlcmVuY2UKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSApICkgewoKICAgICAgICAjIGNoZWNrIGlmIGNvbHVtbiBpcyByZWFsbHkgZmlsdGVyYWJsZQogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggQHsgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9OwogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNlbGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9LAogICAgKTsKCiAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdMaW5rUGFnZScsCiAgICAgICAgVmFsdWUgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb250ZW50JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYXJyYXkgdG8gc2F2ZSB0aGUgY29sdW1uIG5hbWVzIHRvIGRvIHRoZSBxdWVyeQogICAgbXkgQENvbCA9IEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH07CgogICAgIyBkZWZpbmUgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zCiAgICBteSAlU3BlY2lhbENvbHVtbnMgPSAoCiAgICAgICAgTnVtYmVyICAgICAgICA9PiAxLAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMSwKICAgICAgICBDdXJJbmNpU2lnbmFsID0+IDEsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbXtPcmRlckJ5fSB8fCAnVXAnOwogICAgJFBhcmFte1NvcnRCeX0gID0gJFBhcmFte1NvcnRCeX0gIHx8ICdOdW1iZXInOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9IHNjYWxhciBAQ29uZmlnSXRlbUJveDsKICAgIGlmICgkQ29uZmlnSXRlbURhdGEpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCdWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDU1MgPSAnJzsKCiAgICAgICAgIyBzaG93IHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucywgaWYgbmVlZGVkCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbCkgewogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENTUyA9ICRDb2x1bW4gLiAoICRTdGF0aWNDb2x1bW4gPyAnIFN0YXRpY0NvbHVtbicgOiAnJyApOwogICAgICAgICAgICBteSAkVGl0bGUgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17T3JkZXJCeX07CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBmaWx0ZXIgbmFtZSB0byBjb2x1bW4gbmFtZQogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJ0xhc3RDaGFuZ2VkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcmFsbCBibG9jayBzbyBOdW1iZXIgYXMgd2VsbCBhcyBvdGhlciBjb2x1bW5zIGNhbiBiZSBvcmRlcmVkCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRDb2x1bW59IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnsgJENvbHVtbiAuICdJRHMnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiT3ZlcnZpZXdOYXZCYXJQYWdlJENvbHVtbiIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4gICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIGh0bWwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgc29ydGFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiAhfiBte1xBIER5bmFtaWNGaWVsZF99eG1zICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJE9yZGVyQnkgZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDb2x1bW4pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSAgICAgPSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnsgJENvbHVtbiAuICdJRHMnIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3QgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNob3cgdGhlIERGcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJENvbHVtbjsKICAgICAgICAgICAgICAgICRERkNvbHVtbiA9fiBzL0R5bmFtaWNGaWVsZF8vL2c7CiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgICAgICAkVGl0bGUgPSAkTGFiZWw7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgPSAkTGFiZWw7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgc29ydGFibGUgY29uZGl0aW9uCiAgICAgICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzU29ydGFibGUpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAoICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSApICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIG9yZGVyIGZvciBzb3J0aW5nIGNvbHVtbi4KICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJiAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19GaWx0cmFibGVTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Tb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE5hbWU7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19GaWx0cmFibGVOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnVGFibGVCb2R5JyApOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0NvbmZpZ0l0ZW1Gb3VuZCcgKTsKICAgIH0KCiAgICAjIGJhY2sgbGluawogICAgaWYgKCAkUGFyYW17TGlua0JhY2t9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmaWx0ZXIgc2VsZWN0aW9uCiAgICBpZiAoICRQYXJhbXtGaWx0ZXJzfSApIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlcnMnLAogICAgICAgICk7CgogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQga2V5cyAleyAkUGFyYW17RmlsdGVyc30gfSApIHsKICAgICAgICAgICAgcHVzaCBATmF2QmFyRmlsdGVycywgJFBhcmFte0ZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlcicsCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkRmlsdGVyIChATmF2QmFyRmlsdGVycykgewogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgaWYgKCAkQ291bnQgPT0gc2NhbGFyIEBOYXZCYXJGaWx0ZXJzICkgewogICAgICAgICAgICAgICAgJEZpbHRlci0+e0NTU30gPSAnTGFzdCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggJEZpbHRlci0+e0ZpbHRlcn0gZXEgJFBhcmFte0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1SZWYgKEBDb25maWdJdGVtQm94KSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICV7JENvbmZpZ0l0ZW1SZWZ9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBDT05GSUdJVEVNQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbmZpZ0l0ZW1Db2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbmZpZ0l0ZW1Db2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZEJ5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW17Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkQ1NTQ2xhc3MgID0gJFN0YXRpY0NvbHVtbiA/ICdTdGF0aWNDb2x1bW4nIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0RlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2xhc3MnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CgogICAgICAgICAgICAgICAgICAgICMgSWYgdmFsdWUgaXMgaW4gZGF0ZSBmb3JtYXQsIGNoYW5nZSBibG9jayB0eXBlIHRvICdUaW1lJyBzbyBpdCBjYW4gYmUgbG9jYWxpemVkLiBTZWUgYnVnIzE0NTQyLgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRGF0YVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICREYXRhVmFsdWUgPX4gL15cZFxkXGRcZC0oXGR8XGRcZCktKFxkfFxkXGQpXHMoXGR8XGRcZCk6KFxkfFxkXGQpOihcZHxcZFxkKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1zIGFzIGpzCiAgICAgICAgaWYgKCAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAgICAjIHJlcGxhY2UgVFQgZGlyZWN0aXZlcyBmcm9tIHN0cmluZyB3aXRoIHZhbHVlcwogICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJEFjdGlvbkl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICRBY3Rpb25Sb3dDb25maWdJdGVtc3sgJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSB9ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb2x1bW4gZmlsdGVyIGZvcm0sIHRvIGNvcnJlY3RseSBmaWxsIHRoZSBjb2x1bW4gZmlsdGVycyBpcyBuZWNlc3NhcnkgdG8gcGFzcyBlYWNoCiAgICAjICAgIG92ZXJ2aWV3IHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIEFKQVggY2FsbCwgZm9yIGV4YW1wbGUgdGhlIGZpeGVkIEZpbHRlcnMgb3IgTmF2QmFyRmlsdGVycwogICAgIyAgICBhbmQgYWxzbyBvdGhlciB2YWx1ZXMgbGlrZSB0aGUgUXVldWUgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAgICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSBjb25maWcgaXRlbXMgc2hvdWxkIHByb3ZpZGUsIHNlZSBCdWcjOTkwMgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbHVtbkZpbHRlckZvcm19ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicpLT4kRnVuY3Rpb25OYW1lKAogICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgICAgICAgICBteSAkSXNGaWx0cmFibGUgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNGaWx0cmFibGU7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ID0gJElzRmlsdHJhYmxlOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+Q29sdW1uRmlsdGVyVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVlczsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH0gfHwgJFBhcmFte0NvbHVtbk5hbWV9OwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICcnLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgIF07CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnQ29sdW1uRmlsdGVyJzsKICAgIGlmICggJFBhcmFte0Nzc30gKSB7CiAgICAgICAgJENsYXNzIC49ICcgJyAuICRQYXJhbXtDc3N9OwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgICMgYXBwbHkgcmVzdHJpY3Rpb25zIGZvciBjdXN0b21lciBwZXJtaXNzaW9uIGNvbmRpdGlvbnMKICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnQ2xhc3MnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfSBlcSAkXyB9ICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdEZXBsU3RhdGUnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17RGVwbFN0YXRlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfSBlcSAkXyB9ICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17RGVwbFN0YXRlc30tPkAqICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTZWxlY3RlZFZhbHVlICA9ICcnOwogICAgbXkgJFNlbGVjdGVkQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgJFNlbGVjdGVkQ29sdW1uIC49ICdJRHMnOwogICAgfQoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZWN0ZWRDb2x1bW4gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSB7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT5bMF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPntFcXVhbHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKfQoKIyA9aGVhZDIgX0NvbHVtbkZpbHRlckpTT04oKQoKIyAgICAgY3JlYXRlcyBhIEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKIyAgICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsT2JqZWN0LT5fQ29sdW1uRmlsdGVySlNPTigKIyAgICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKIyAgICAgICAgIExhYmVsICAgICAgPT4gJ1F1ZXVlJywKIyAgICAgICAgIENvbHVtblZhbHVlcyA9PiB7CiMgICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3RlcicsCiMgICAgICAgICAgICAgMiA9PiAnSnVuaycsCiMgICAgICAgICB9LAojICAgICAgICAgU2VsZWN0ZWRWYWx1ZSAnMScsCiMgICAgICk7CgojID1jdXQKCnN1YiBfQ29sdW1uRmlsdGVySlNPTiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICgKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSAuICdJRHMnIH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfTsKICAgICRMYWJlbCA9fiBzeyBcQSBEeW5hbWljRmllbGRfIH17fWd4bXM7CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlbGV0ZUZpbHRlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJy0nLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17Q29sdW1uVmFsdWVzfSAmJiByZWYgJFBhcmFte0NvbHVtblZhbHVlc30gZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlVmFsdWVzID0gJXsgJFBhcmFte0NvbHVtblZhbHVlc30gfTsKCiAgICAgICAgIyBTZXQgcG9zc2libGUgdmFsdWVzLgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY0tleScsCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VsZWN0ZWRWYWx1ZX0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkSlNPTjsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMTEwLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMTExLAogICAgICAgIENsYXNzICAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICAgPT4gMTEzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gMTE0LAogICAgICAgIEN1ckRlcGxTdGF0ZSAgPT4gMTE1LAogICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gMTE2LAogICAgICAgIExhc3RDaGFuZ2VkICAgPT4gMTE3LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/OverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6T3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBcJVBhcmFtOwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2V0IHN0b3JlZCBmaWx0ZXJzIGlmIHByZXNlbnQKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CiAgICBpZiAoICRQcmVmZXJlbmNlc3skU3RvcmVkRmlsdGVyc0tleX0gKSB7CiAgICAgICAgbXkgJFN0b3JlZEZpbHRlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30gPSAkU3RvcmVkRmlsdGVyczsKICAgIH0KCiAgICAjIGxvb2sgdXAgZmlsdGVyIGFzIGZpbHRlciBuYW1lcyBpbiAkU2VsZiBhcmUgcG90ZW50aWFsbHkgdHJhbnNsYXRlZAogICAgbXkgJEZpbHRlck5hbWU7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0ZpbHRlcnN9eyAkU2VsZi0+e0ZpbHRlcn0gfSApICkgewogICAgICAgIG15ICRJdGVtTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICAkRmlsdGVyTmFtZSA9ICRJdGVtTGlzdC0+eyAkU2VsZi0+e0ZpbHRlcn0gfSAvLyAnJzsKICAgIH0KICAgICRGaWx0ZXJOYW1lIHx8PSAnQWxsJzsKCiAgICAjIGdhdGhlciBjb2x1bW4gY29uZmlnCiAgICAjICAgY29uZmlnIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbSBvdmVydmlldyBpcyB1c2VkIGZvciBib3RoIG92ZXJ2aWV3IGFuZCBzZWFyY2ggcmVzdWx0IHZpZXcKICAgIG15ICRPdmVydmlld0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtJyk7CgogICAgJFNlbGYtPntDb25maWd9e0RlZmF1bHRDb2x1bW5zfSAgICAgICAgPSAkT3ZlcnZpZXdDb25maWctPntEZWZhdWx0Q29sdW1uc307CiAgICAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfSA9ICRPdmVydmlld0NvbmZpZy0+e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX07CiAgICAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH0gICA9ICRPdmVydmlld0NvbmZpZy0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0Rpc2FibGVkfSAgPSAkT3ZlcnZpZXdDb25maWctPntDbGFzc0NvbHVtbnNEaXNhYmxlZH07CiAgICBteSAlQ29sdW1uQ29uZmlnID0gJFNlbGYtPntDb25maWd9e0RlZmF1bHRDb2x1bW5zfS0+JSo7CgogICAgIyBpZiBjbGFzcyBmaWx0ZXIgaXMgc2V0LCBkaXNwbGF5IGNsYXNzIHNwZWNpZmljIGZpZWxkcwogICAgaWYgKCAkRmlsdGVyTmFtZSAmJiAkRmlsdGVyTmFtZSBuZSAnQWxsJyApIHsKCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfSAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNBdmFpbGFibGV9eyRGaWx0ZXJOYW1lfSApICkgewogICAgICAgICAgICBmb3IgbXkgJEF2YWlsYWJsZUNvbHVtbiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNBdmFpbGFibGV9eyRGaWx0ZXJOYW1lfS0+QCogKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uQ29uZmlneyRBdmFpbGFibGVDb2x1bW59ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH17JEZpbHRlck5hbWV9ICkgKSB7CiAgICAgICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fXskRmlsdGVyTmFtZX0tPkAqICkgewogICAgICAgICAgICAgICAgJENvbHVtbkNvbmZpZ3skRGVmYXVsdENvbHVtbn0gPSAyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEaXNhYmxlZH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGlzYWJsZWR9eyRGaWx0ZXJOYW1lfSApICkgewogICAgICAgICAgICBmb3IgbXkgJERpc2FibGVkQ29sdW1uICggJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0Rpc2FibGVkfXskRmlsdGVyTmFtZX0tPkAqICkgewogICAgICAgICAgICAgICAgJENvbHVtbkNvbmZpZ3skRGlzYWJsZWRDb2x1bW59ID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG1lcmdlIHNldHRpbmdzIGZyb20gY2xhc3MgY29uZmlnIGFuZCBkZWZhdWx0IGNvbmZpZwogICAgQ09MVU1OOgogICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IF9EZWZhdWx0Q29sdW1uU29ydCBrZXlzICVDb2x1bW5Db25maWcgKSB7CgogICAgICAgICMgc2tpcCBkaXNhYmxlZCBjb2x1bW5zCiAgICAgICAgbmV4dCBDT0xVTU4gdW5sZXNzICRDb2x1bW5Db25maWd7JENvbHVtbn07CgogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkQ29sdW1uIH0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCosICRDb2x1bW47CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb2x1bW5Db25maWd7JENvbHVtbn0gPT0gMiAmJiAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0tPkAqLCAkQ29sdW1uOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIHByZWZlcmVuY2Ugc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSwgb3ZlcndyaXRlIGVuYWJsZWQgY29sdW1ucyB3aXRoIHByZWZlcmVuY2VzCiAgICBpZiAoICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gfSApIHsKCiAgICAgICAgbXkgJENvbHVtbnNFbmFibGVkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKS0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gfSwKICAgICAgICApOwoKICAgICAgICAjIGZpbHRlciBkaXNhYmxlZCBjb2x1bW5zCiAgICAgICAgbXkgQEZpbHRlcmVkQ29sdW1uc0VuYWJsZWQ7CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnNFbmFibGVkKSApIHsKCiAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKCAkQ29sdW1uc0VuYWJsZWQtPkAqICkgewoKICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIHVubGVzcyAkQ29sdW1uQ29uZmlneyRDb2x1bW59OwoKICAgICAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkQ29sdW1uc0VuYWJsZWQsICRDb2x1bW47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gXEBGaWx0ZXJlZENvbHVtbnNFbmFibGVkOwogICAgfQoKICAgICMgYWx3YXlzIHNldCBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggIWdyZXAgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiwgJ051bWJlcic7CiAgICB9CiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ051bWJlcicgfSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqLCAnTnVtYmVyJzsKICAgIH0KCiAgICAjIGdldCBuZWNlc3NhcnkgZHluYW1pYyBmaWVsZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY29sbGVjdCBkeW5hbWljIGZpZWxkcyBhbmQgc2V0IGF2YWlsYWJsZSBhbmQgdmFsaWQgZmlsdGVyIGFuZCBzb3J0YWJsZSBjb2x1bW5zCiAgICBEWU5BTUlDRklFTEROQU1FOgogICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICggJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CgogICAgICAgIG15ICRGaWVsZE5hbWU7CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkTmFtZSA9fiBteyBEeW5hbWljRmllbGRfKD88RmllbGROYW1lPltBLVphLXowLTlcLV0rKSB9eG1zICkgewogICAgICAgICAgICAkRmllbGROYW1lID0gJCt7RmllbGROYW1lfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxETkFNRTsKICAgICAgICB9CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHN0b3JlIGZpZWxkIGNvbmZpZwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiwgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZmlsdHJhYmxlIGFuZCBzb3J0YWJsZSBiZWhhdmlvcnMKICAgICAgICBmb3IgbXkgJEJlaGF2aW9yIChxdyhGaWx0cmFibGUgU29ydGFibGUpKSB7CgogICAgICAgICAgICBteSAkSGFzQmVoYXZpb3IgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAiSXMkQmVoYXZpb3IiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNCZWhhdmlvcikgewogICAgICAgICAgICAgICAgJFNlbGYtPnsiQXZhaWxhYmxlJHtCZWhhdmlvcn1Db2x1bW5zIn17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggd2l0aCBhbGwgdmFsaWQgc29ydGFibGUgY29sdW1ucyAodGFrZW4gZnJvbSBJVFNNQ29uZmlnSXRlbVNlYXJjaCkKICAgICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8TnVtYmVyfENoYW5nZWR8TmFtZXxEZXBsU3RhdGV8Q3VyRGVwbFN0YXRlCiAgICAjIHxJbmNpU3RhdGV8Q3VySW5jaVN0YXRlCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQWdlJyAgICAgICAgICA9PiAxLAogICAgICAgICdOdW1iZXInICAgICAgID0+IDEsCiAgICAgICAgJ05hbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICA9PiAxLAogICAgICAgICdMYXN0Q2hhbmdlZCcgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICBkZWZpbmVkICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30KICAgICAgICA/ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPiUqCiAgICAgICAgOiAoKSwKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEFjdGlvblJvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGZyb250ZW5kIHBlciBkZWZhdWx0IHRvIGFnZW50CiAgICAkUGFyYW17RnJvbnRlbmR9IC8vPSAnQWdlbnQnOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfHwge307CiAgICBpZiAoICRDb2x1bW5zICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb2x1bW5zKSApIHsKCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7JENvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIHRyYW5zbGF0ZWQgaW4gdGhlIG5leHQgYmxvY2sKICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXM7CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQgPSAkQ29sdW1uOwogICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCRUcmFuc2xhdGVkV29yZCksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIGR5bmFtaWMgZmllbGQgY29sdW1ucwogICAgbXkgJENvbHVtbnNEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgKTsKCiAgICBpZiAoICRDb2x1bW5zRHluYW1pY0ZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29sdW1uc0R5bmFtaWNGaWVsZCkgKSB7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBAeyRDb2x1bW5zRHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgU29ydE9yZGVyQmFyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBJZiAkUGFyYW17RW5hYmxlQ29sdW1uRmlsdGVyc30gaXMgbm90IHNlbnQsIHdlIHdhbnQgdG8gZGlzYWJsZSBhbGwgZmlsdGVycwogICAgIyAgIGZvciB0aGUgY3VycmVudCBzY3JlZW4uIFdlIGxvY2FsaXplIHRoZSBzZXR0aW5nIGZvciB0aGlzIHN1YiBhbmQgY2hhbmdlIGl0CiAgICAjICAgYWZ0ZXIgdGhhdCwgaWYgbmVlZGVkLiBUaGUgb3JpZ2luYWwgdmFsdWUgd2lsbCBiZSByZXN0b3JlZCBhZnRlciB0aGlzIGZ1bmN0aW9uLgogICAgbG9jYWwgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc307CiAgICBpZiAoICEkUGFyYW17RW5hYmxlQ29sdW1uRmlsdGVyc30gKSB7CiAgICAgICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHt9OyAgICAjIGRpc2FibGUgYWxsIGNvbHVtbiBmaWx0ZXJzCiAgICB9CgogICAgZm9yIG15ICRJdGVtIChxdyhDb25maWdJdGVtSURzIFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEl0ZW19ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkSXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHN0b3JlIGRlcGxveW1lbnQgc2lnbmFscwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJUdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBzdG9yZSB0aGUgb3JpZ2luYWwgZGVwbG95bWVudCBzdGF0ZSBhcyBrZXkKICAgICAgICAjIGFuZCB0aGUgc3Mgc2FmZSBjb252ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICREZXBsU3RhdGU7CgogICAgICAgICMgY29udmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gKCBsYyAkQ29sb3IgKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIG15ICRCdWxrRmVhdHVyZSA9IDA7CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUnKSApIHsKICAgICAgICBteSBAR3JvdXBzOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSApIHsKICAgICAgICAgICAgQEdyb3VwcyA9IEB7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhQEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwogICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgZm9yIG15ICRHcm91cCAoQEdyb3VwcykgewogICAgICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCRIYXNQZXJtaXNzaW9uKSB7CiAgICAgICAgICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIG15IEBDb25maWdJdGVtQm94OwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fSAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkgKSB7CgogICAgICAgICAgICAjIEdldCBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgICAgICMgc2V0IGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgICAgICAjIGZpbGwgY29sdW1uIG5hbWUgYXR0cmlidXRlIHdpdGggY29ycmVzcG9uZGluZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAkQ29uZmlnSXRlbXtDcmVhdGVkfSAgICAgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17TGFzdENoYW5nZWR9ID0gJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX07CgogICAgICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICVQb3NzaWJsZUFjdGlvbnM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgICAgICMgZ2V0IGFsbCByZWdpc3RlcmVkIEFjdGlvbnMKICAgICAgICAgICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1vZHVsZScpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNb2R1bGUnKSB9OwoKICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgICAgJVBvc3NpYmxlQWN0aW9ucyA9IG1hcCB7ICsrJENvdW50ZXIgPT4gJF8gfQogICAgICAgICAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nICkgZXEgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nIH0KICAgICAgICAgICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRBQ0w7CiAgICAgICAgICAgIG15ICVBY2xBY3Rpb24gPSAlUG9zc2libGVBY3Rpb25zOwoKICAgICAgICAgICAgJEFDTCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVBvc3NpYmxlQWN0aW9ucywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQWN0aW9uJywKICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAlQWNsQWN0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcnVuIGNvbmZpZyBpdGVtIHByZSBtZW51IG1vZHVsZXMKICAgICAgICAgICAgbXkgQEFjdGlvbkl0ZW1zOwogICAgICAgICAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIG15ICVNZW51cyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlJykgfTsKICAgICAgICAgICAgICAgIE1FTlU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgICAgICAgICAjIGxvYWQgbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1lbnVzeyRNZW51fS0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNZW51c3skTWVudX0tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICAgICBteSAkSXRlbSA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+IFwlQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgQUNMICAgICAgICA9PiBcJUFjbEFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNRU5VIGlmICEkSXRlbTsKICAgICAgICAgICAgICAgICAgICBuZXh0IE1FTlUgaWYgcmVmICRJdGVtIG5lICdIQVNIJzsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2Vzc2lvbiBpZCBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICEkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEQ29va2llfSAmJiAkSXRlbS0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSXRlbS0+e0xpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuPSAnOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGlkCiAgICAgICAgICAgICAgICAgICAgJEl0ZW0tPntJRH0gPSAkSXRlbS0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICRJdGVtLT57SUR9ID1+IHMvKFxzfCZ8OykvL2lnOwoKICAgICAgICAgICAgICAgICAgICBteSAkT3V0cHV0OwogICAgICAgICAgICAgICAgICAgIGlmICggJEl0ZW0tPntCbG9ja30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkSXRlbS0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAnPGxpIGlkPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRJdGVtLT57SUR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICciPjxhIGhyZWY9IiMiIHRpdGxlPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntEZXNjcmlwdGlvbn0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIj4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntOYW1lfSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICc8L2E+PC9saT4nOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJE91dHB1dCA9fiBzL1xuKy8vZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvXHMrLyAvZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvPFwhLS0uKz8tLT4vL2c7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQEFjdGlvbkl0ZW1zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUwgICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgID0+ICRJdGVtLT57SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9IC4gJEl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0ICAgICAgPT4gJEl0ZW0tPntUYXJnZXR9LAogICAgICAgICAgICAgICAgICAgICAgICBQb3B1cFR5cGUgICA9PiAkSXRlbS0+e1BvcHVwVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRJdGVtLT57RGVzY3JpcHRpb259LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9ID0gXEBBY3Rpb25JdGVtczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQm94LCBcJUNvbmZpZ0l0ZW07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgY29sdW1uc2VuYWJsZWQgaXMgYSBmaWxsZWQgYXJyYXkgcmVmZXJlbmNkCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBjb2x1bW4gaXMgcmVhbGx5IGZpbHRlcmFibGUKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfTsKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnTGlua1BhZ2UnLAogICAgICAgIFZhbHVlID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NhdGVnb3J5RmlsdGVyfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb250ZW50JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYXJyYXkgdG8gc2F2ZSB0aGUgY29sdW1uIG5hbWVzIHRvIGRvIHRoZSBxdWVyeQogICAgbXkgQENvbCA9IEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH07CgogICAgIyBkZWZpbmUgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zCiAgICBteSAlU3BlY2lhbENvbHVtbnMgPSAoCiAgICAgICAgTnVtYmVyID0+IDEsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbXtPcmRlckJ5fSB8fCAnVXAnOwogICAgJFBhcmFte1NvcnRCeX0gID0gJFBhcmFte1NvcnRCeX0gIHx8ICdOdW1iZXInOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9IHNjYWxhciBAQ29uZmlnSXRlbUJveDsKICAgIGlmICgkQ29uZmlnSXRlbURhdGEpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCdWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDU1MgPSAnJzsKCiAgICAgICAgIyBzaG93IHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucywgaWYgbmVlZGVkCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbCkgewogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENTUyA9ICRDb2x1bW4gLiAoICRTdGF0aWNDb2x1bW4gPyAnIFN0YXRpY0NvbHVtbicgOiAnJyApOwogICAgICAgICAgICBteSAkVGl0bGUgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17T3JkZXJCeX07CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBmaWx0ZXIgbmFtZSB0byBjb2x1bW4gbmFtZQogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJ0xhc3RDaGFuZ2VkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcmFsbCBibG9jayBzbyBOdW1iZXIgYXMgd2VsbCBhcyBvdGhlciBjb2x1bW5zIGNhbiBiZSBvcmRlcmVkCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+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+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+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+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZpbHRlciBzZWxlY3Rpb24KICAgIGlmICggJFBhcmFte0ZpbHRlcnN9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVycycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIGlmICggJENvdW50ID09IHNjYWxhciBATmF2QmFyRmlsdGVycyApIHsKICAgICAgICAgICAgICAgICRGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJVNwZWNpYWxDb2x1bW5zID0gKAogICAgICAgIE51bWJlciAgICAgICA9PiAxLAogICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAxLAogICAgICAgIEN1ckluY2lTdGF0ZSA9PiAxLAogICAgKTsKCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1SZWYgKEBDb25maWdJdGVtQm94KSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICV7JENvbmZpZ0l0ZW1SZWZ9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBDT05GSUdJVEVNQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbmZpZ0l0ZW1Db2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbmZpZ0l0ZW1Db2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZEJ5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW17Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkQ1NTQ2xhc3MgID0gJFN0YXRpY0NvbHVtbiA/ICdTdGF0aWNDb2x1bW4nIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0RlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2xhc3MnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CgogICAgICAgICAgICAgICAgICAgICMgSWYgdmFsdWUgaXMgaW4gZGF0ZSBmb3JtYXQsIGNoYW5nZSBibG9jayB0eXBlIHRvICdUaW1lJyBzbyBpdCBjYW4gYmUgbG9jYWxpemVkLiBTZWUgYnVnIzE0NTQyLgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRGF0YVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICREYXRhVmFsdWUgPX4gL15cZFxkXGRcZC0oXGR8XGRcZCktKFxkfFxkXGQpXHMoXGR8XGRcZCk6KFxkfFxkXGQpOihcZHxcZFxkKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1zIGFzIGpzCiAgICAgICAgaWYgKCAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAgICAjIHJlcGxhY2UgVFQgZGlyZWN0aXZlcyBmcm9tIHN0cmluZyB3aXRoIHZhbHVlcwogICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJEFjdGlvbkl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICRBY3Rpb25Sb3dDb25maWdJdGVtc3sgJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSB9ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb2x1bW4gZmlsdGVyIGZvcm0sIHRvIGNvcnJlY3RseSBmaWxsIHRoZSBjb2x1bW4gZmlsdGVycyBpcyBuZWNlc3NhcnkgdG8gcGFzcyBlYWNoCiAgICAjICAgIG92ZXJ2aWV3IHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIEFKQVggY2FsbCwgZm9yIGV4YW1wbGUgdGhlIGZpeGVkIEZpbHRlcnMgb3IgTmF2QmFyRmlsdGVycwogICAgIyAgICBhbmQgYWxzbyBvdGhlciB2YWx1ZXMgbGlrZSB0aGUgUXVldWUgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAgICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSBjb25maWcgaXRlbXMgc2hvdWxkIHByb3ZpZGUsIHNlZSBCdWcjOTkwMgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbHVtbkZpbHRlckZvcm19ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicpLT4kRnVuY3Rpb25OYW1lKAogICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgICAgICAgICBteSAkSXNGaWx0cmFibGUgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNGaWx0cmFibGU7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ID0gJElzRmlsdHJhYmxlOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+Q29sdW1uRmlsdGVyVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVlczsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH0gfHwgJFBhcmFte0NvbHVtbk5hbWV9OwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICcnLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgIF07CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnQ29sdW1uRmlsdGVyJzsKICAgIGlmICggJFBhcmFte0Nzc30gKSB7CiAgICAgICAgJENsYXNzIC49ICcgJyAuICRQYXJhbXtDc3N9OwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgIG15ICRTZWxlY3RlZFZhbHVlICA9ICcnOwogICAgbXkgJFNlbGVjdGVkQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgJFNlbGVjdGVkQ29sdW1uIC49ICdJRHMnOwogICAgfQoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZWN0ZWRDb2x1bW4gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSB7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT5bMF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPntFcXVhbHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKfQoKIyA9aGVhZDIgX0NvbHVtbkZpbHRlckpTT04oKQoKIyAgICAgY3JlYXRlcyBhIEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKIyAgICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsT2JqZWN0LT5fQ29sdW1uRmlsdGVySlNPTigKIyAgICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKIyAgICAgICAgIExhYmVsICAgICAgPT4gJ1F1ZXVlJywKIyAgICAgICAgIENvbHVtblZhbHVlcyA9PiB7CiMgICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3RlcicsCiMgICAgICAgICAgICAgMiA9PiAnSnVuaycsCiMgICAgICAgICB9LAojICAgICAgICAgU2VsZWN0ZWRWYWx1ZSAnMScsCiMgICAgICk7CgojID1jdXQKCnN1YiBfQ29sdW1uRmlsdGVySlNPTiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICgKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSAuICdJRHMnIH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfTsKICAgICRMYWJlbCA9fiBzeyBcQSBEeW5hbWljRmllbGRfIH17fWd4bXM7CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlbGV0ZUZpbHRlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJy0nLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17Q29sdW1uVmFsdWVzfSAmJiByZWYgJFBhcmFte0NvbHVtblZhbHVlc30gZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlVmFsdWVzID0gJXsgJFBhcmFte0NvbHVtblZhbHVlc30gfTsKCiAgICAgICAgIyBTZXQgcG9zc2libGUgdmFsdWVzLgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY0tleScsCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VsZWN0ZWRWYWx1ZX0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkSlNPTjsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAxMTAsCiAgICAgICAgQ3VySW5jaVN0YXRlID0+IDExMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICA9PiAxMTMsCiAgICAgICAgTmFtZSAgICAgICAgID0+IDExNCwKICAgICAgICBMYXN0Q2hhbmdlZCAgPT4gMTE1LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/PublicOverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6UHVibGljT3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KG5vbmUpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkpTT04nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gXCVQYXJhbTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gPSAnVXNlckZpbHRlckNvbHVtbnNFbmFibGVkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufSAuICctJyAuICRTZWxmLT57RmlsdGVyfTsKCiAgICAjIGxvYWQgYmFja2VuZCBjb25maWcKICAgIG15ICRCYWNrZW5kQ29uZmlnS2V5ID0gJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JyAuICRTZWxmLT57QWN0aW9ufTsKICAgICRTZWxmLT57Q29uZmlnfSA9ICRDb25maWdPYmplY3QtPkdldCgkQmFja2VuZENvbmZpZ0tleSk7CgogICAgIyBjaGVjayBmb3IgZmlsdGVyCiAgICBteSAkRmlsdGVyTmFtZSA9IElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0ZpbHRlcnN9LT57ICRTZWxmLT57RmlsdGVyfSB9ICkgPyAkU2VsZi0+e0ZpbHRlcnN9LT57ICRTZWxmLT57RmlsdGVyfSB9LT57TmFtZX0gOiAnQWxsJzsKCiAgICAjIGdldCBwZXJtaXNzaW9uIGNvbmRpdGlvbiBmb3IgZmlsdGVyCiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb25maWcgID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zID0gJENvbmZpZ09iamVjdC0+R2V0KCdQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zJyk7CgogICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9IFtdOwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb25maWcpICkgewogICAgICAgIFBFUk1DT05GOgogICAgICAgIGZvciBteSAkQ29uZmlnQ291bnRlciAoIDEgLi4gNSApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0lkZW50aWZpZXIgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRDb25maWdDb3VudGVyICk7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICBpZiAoICRGaWx0ZXJOYW1lIGVxICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57TmFtZX0gJiYgSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29sdW1ucykgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9ID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29sdW1ucy0+eyRDb25maWdJZGVudGlmaWVyfSAvLyBbXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoICEkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucycpLT57RGVmYXVsdH0gLy8gW107CiAgICAgICAgfQogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfTsKICAgIH0KCiAgICAjIGFsd2F5cyBzZXQgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICBpZiAoIG5vbmUgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiwgJ051bWJlcic7CiAgICB9CiAgICBpZiAoIG5vbmUgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqICkgewogICAgICAgIHVuc2hpZnQgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+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+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1vZHVsZScpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNb2R1bGUnKSB9OwoKICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgICAgJVBvc3NpYmxlQWN0aW9ucyA9IG1hcCB7ICsrJENvdW50ZXIgPT4gJF8gfQogICAgICAgICAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nICkgZXEgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nIH0KICAgICAgICAgICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1Cb3gsIFwlQ29uZmlnSXRlbTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBjb2x1bW5zZW5hYmxlZCBpcyBhIGZpbGxlZCBhcnJheSByZWZlcmVuY2VkCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBjb2x1bW4gaXMgcmVhbGx5IGZpbHRlcmFibGUKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfTsKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnTGlua1BhZ2UnLAogICAgICAgIFZhbHVlID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29udGVudCcsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICAjIGFycmF5IHRvIHNhdmUgdGhlIGNvbHVtbiBuYW1lcyB0byBkbyB0aGUgcXVlcnkKICAgIG15IEBDb2wgPSBAeyAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSB9OwoKICAgICMgZGVmaW5lIHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucwogICAgbXkgJVNwZWNpYWxDb2x1bW5zID0gKAogICAgICAgIE51bWJlciAgICAgICAgPT4gMSwKICAgICAgICBDdXJEZXBsU2lnbmFsID0+IDEsCiAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAxLAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAkUGFyYW17T3JkZXJCeX0gPSAkUGFyYW17T3JkZXJCeX0gfHwgJ1VwJzsKICAgICRQYXJhbXtTb3J0Qnl9ICA9ICRQYXJhbXtTb3J0Qnl9ICB8fCAnTnVtYmVyJzsKCiAgICBteSAkQ29uZmlnSXRlbURhdGEgPSBzY2FsYXIgQENvbmZpZ0l0ZW1Cb3g7CiAgICBpZiAoJENvbmZpZ0l0ZW1EYXRhKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1RhYmxlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdHlsZUNsYXNzZXMgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdUYWJsZUhlYWRlcicgKTsKCiAgICAgICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld0hlYWRlcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQnVsa05hdkJhcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQ1NTID0gJyc7CgogICAgICAgICMgc2hvdyBzcGVjaWFsIGNvbmZpZyBpdGVtIGNvbHVtbnMsIGlmIG5lZWRlZAogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBDb2wpIHsKICAgICAgICAgICAgbXkgJFN0YXRpY0NvbHVtbiA9ICEkQ291bnRlcjsKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRDU1MgPSAkQ29sdW1uIC4gKCAkU3RhdGljQ29sdW1uID8gJyBTdGF0aWNDb2x1bW4nIDogJycgKTsKICAgICAgICAgICAgbXkgJFRpdGxlICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIG15ICRPcmRlckJ5ID0gJFBhcmFte09yZGVyQnl9OwoKICAgICAgICAgICAgIyBUcmFuc2Zvcm0gZmlsdGVyIG5hbWUgdG8gY29sdW1uIG5hbWUKICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSBlcSAnQ2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fSA9ICdMYXN0Q2hhbmdlZCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3V0cHV0IG92ZXJhbGwgYmxvY2sgc28gTnVtYmVyIGFzIHdlbGwgYXMgb3RoZXIgY29sdW1ucyBjYW4gYmUgb3JkZXJlZAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbmZpZ0l0ZW1IZWFkZXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJFNwZWNpYWxDb2x1bW5zeyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJE9yZGVyQnkgZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDb2x1bW4pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSAgICAgPSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskQ29sdW1ufSB8fAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57ICRDb2x1bW4gLiAnSURzJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIk92ZXJ2aWV3TmF2QmFyUGFnZSRDb2x1bW4iLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZSBhbmQgc29ydGFibGUKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBodG1sIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYmICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIG9yZGVyIGZvciBzb3J0aW5nIGNvbHVtbi4KICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRPcmRlckJ5IGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGRlc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBjb2x1bW4gbmFtZSB0byB3cml0ZSBpdCBpbiB0aGUgY3VycmVudCBsYW5ndWFnZQogICAgICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGUnIHx8ICRDb2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVwbG95bWVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0luY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnIHx8ICRDb2x1bW4gZXEgJ0N1ckluY2lTaWduYWwnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IGNoYW5nZWQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJiAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57ICRDb2x1bW4gLiAnSURzJyB9ICkgewogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZSBhbmQgc29ydGFibGUKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBqdXN0IGZpbHRlcmFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgc29ydGFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaG93IHRoZSBERnMKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb2x1bW47CiAgICAgICAgICAgICAgICAkREZDb2x1bW4gPX4gcy9EeW5hbWljRmllbGRfLy9nOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkTGFiZWwgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgJFRpdGxlID0gJExhYmVsOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlID0gJExhYmVsOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHNvcnRhYmxlIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgbXkgJElzU29ydGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCRJc1NvcnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENTUyA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICggJFBhcmFte1NvcnRCeX0gZXEgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKSApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJE9yZGVyQnkgZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRPcmRlckJ5IGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGRlc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfRmlsdHJhYmxlU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBteSAkQ1NTICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGROYW1lOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGROb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfRmlsdHJhYmxlTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX05vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlQm9keScgKTsKCiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnTm9Db25maWdJdGVtRm91bmQnICk7CiAgICB9CgogICAgIyBiYWNrIGxpbmsKICAgIGlmICggJFBhcmFte0xpbmtCYWNrfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQmFjaycsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkUGFyYW17UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgZmlsdGVyIHNlbGVjdGlvbgogICAgaWYgKCAkUGFyYW17RmlsdGVyc30gKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWx0ZXJzJywKICAgICAgICApOwoKICAgICAgICBteSBATmF2QmFyRmlsdGVyczsKICAgICAgICBmb3IgbXkgJFByaW8gKCBzb3J0IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIGlmICggJENvdW50ID09IHNjYWxhciBATmF2QmFyRmlsdGVycyApIHsKICAgICAgICAgICAgICAgICRGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRDb25maWdJdGVtUmVmIChAQ29uZmlnSXRlbUJveCkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgbXkgJUNvbmZpZ0l0ZW0gPSAleyRDb25maWdJdGVtUmVmfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgIERhdGEgPT4geyVDb25maWdJdGVtfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGJ1bGsgZmVhdHVyZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGFibGUoJ0J1bGsnKSwKICAgICAgICAgICAgICAgIERhdGEgPT4geyVDb25maWdJdGVtfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAgICAgIyBzYXZlIGNvbHVtbiBjb250ZW50CiAgICAgICAgbXkgJERhdGFWYWx1ZTsKCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICAjIHNob3cgYWxsIG5lZWRlZCBjb2x1bW5zCiAgICAgICAgQ09ORklHSVRFTUNPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1Db2x1bW4gKEBDb2wpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdSb3cnLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiAhfiBte1xBIER5bmFtaWNGaWVsZF99eG1zICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkQ29uZmlnSXRlbURhdGEnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFNwZWNpYWxDb2x1bW5zeyRDb25maWdJdGVtQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb25maWdJdGVtQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljQ29sdW1uID0+ICRTdGF0aWNDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNQ09MVU1OOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NyZWF0ZWRCeScgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICVDb25maWdJdGVtQ3JlYXRlZEJ5SW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVte0NyZWF0ZUJ5fSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljQ29sdW1uID0+ICRTdGF0aWNDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEJsb2NrVHlwZSA9ICcnOwogICAgICAgICAgICAgICAgbXkgJENTU0NsYXNzICA9ICRTdGF0aWNDb2x1bW4gPyAnU3RhdGljQ29sdW1uJyA6ICcnOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtQ29sdW1uIGVxICdEZXBsU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnSW5jaVN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NsYXNzJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RyYW5zbGF0YWJsZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NyZWF0ZWQnIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwoKICAgICAgICAgICAgICAgICAgICAjIElmIHZhbHVlIGlzIGluIGRhdGUgZm9ybWF0LCBjaGFuZ2UgYmxvY2sgdHlwZSB0byAnVGltZScgc28gaXQgY2FuIGJlIGxvY2FsaXplZC4gU2VlIGJ1ZyMxNDU0Mi4KICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJERhdGFWYWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkRGF0YVZhbHVlID1+IC9eXGRcZFxkXGQtKFxkfFxkXGQpLShcZHxcZFxkKVxzKFxkfFxkXGQpOihcZHxcZFxkKTooXGR8XGRcZCkkLwogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ1RpbWUnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJSZWNvcmRDb25maWdJdGVtQ29sdW1uJEJsb2NrVHlwZSIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWNWYWx1ZSA9PiAkRGF0YVZhbHVlIHx8ICctJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDU1NDbGFzcyAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29uZmlnSXRlbUNvbHVtbjsKICAgICAgICAgICAgICAgICRERkNvbHVtbiA9fiBzL0R5bmFtaWNGaWVsZF8vL2c7CiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbXtWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZVN0cmctPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZFBsYWluJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZVN0cmctPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX0xpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e0xpbmt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIGFjdGlvbiBpdGVtcyBhcyBqcwogICAgICAgIGlmICggJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9ICkgewoKICAgICAgICAgICAgIyByZXBsYWNlIFRUIGRpcmVjdGl2ZXMgZnJvbSBzdHJpbmcgd2l0aCB2YWx1ZXMKICAgICAgICAgICAgZm9yIG15ICRBY3Rpb25JdGVtICggQHsgJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9IH0gKSB7CiAgICAgICAgICAgICAgICAkQWN0aW9uSXRlbS0+e0xpbmt9ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRBY3Rpb25JdGVtLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyAkQWN0aW9uUm93Q29uZmlnSXRlbXN7ICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0gfSA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoIERhdGEgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9ICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbUFjdGlvblJvdy4nIC4gJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdJdGVte0FjdGlvbkl0ZW1zfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgY29sdW1uIGZpbHRlciBmb3JtLCB0byBjb3JyZWN0bHkgZmlsbCB0aGUgY29sdW1uIGZpbHRlcnMgaXMgbmVjZXNzYXJ5IHRvIHBhc3MgZWFjaAogICAgIyAgICBvdmVydmlldyBzb21lIGluZm9ybWF0aW9uIGluIHRoZSBBSkFYIGNhbGwsIGZvciBleGFtcGxlIHRoZSBmaXhlZCBGaWx0ZXJzIG9yIE5hdkJhckZpbHRlcnMKICAgICMgICAgYW5kIGFsc28gb3RoZXIgdmFsdWVzIGxpa2UgdGhlIFF1ZXVlIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1RdWV1ZSwgb3RoZXJ3aXNlIHRoZSBmaWx0ZXJzIHdpbGwgYmUKICAgICMgICAgZmlsbGVkIHdpdGggZGVmYXVsdCByZXN0cmljdGlvbnMsIHJlc3VsdGluZyBpbiBtb3JlIG9wdGlvbnMgdGhhbiB0aGUgb25lcyB0aGF0IHRoZQogICAgIyAgICBhdmFpbGFibGUgY29uZmlnIGl0ZW1zIHNob3VsZCBwcm92aWRlLCBzZWUgQnVnIzk5MDIKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSApICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudENvbHVtbkZpbHRlckZvcm0nLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0gfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudENvbHVtbkZpbHRlckZvcm1FbGVtZW50JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lICA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICBFbGVtZW50VmFsdWUgPT4gJFBhcmFte0NvbHVtbkZpbHRlckZvcm19LT57JEVsZW1lbnR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyB1c2UgdGVtcGxhdGUKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9HZXRDb2x1bW5WYWx1ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtIZWFkZXJDb2x1bW59ICk7CgogICAgbXkgJUNvbHVtbkZpbHRlclZhbHVlczsKICAgIG15ICRDb25maWdJdGVtSURzOwoKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSApICkgewogICAgICAgICRDb25maWdJdGVtSURzID0gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc307CiAgICB9CgogICAgcmV0dXJuIFwlQ29sdW1uRmlsdGVyVmFsdWVzOwp9CgpzdWIgX0luaXRpYWxDb2x1bW5GaWx0ZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb2x1bW5OYW1lfTsKICAgIHJldHVybiBpZiAhJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfSB8fCAkUGFyYW17Q29sdW1uTmFtZX07CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJycsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdDb2x1bW5GaWx0ZXInOwogICAgaWYgKCAkUGFyYW17Q3NzfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyAnIC4gJFBhcmFte0Nzc307CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSwKICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YSwKICAgICAgICBDbGFzcyAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICcnLAogICAgKTsKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySFRNTDsKfQoKc3ViIEZpbHRlckNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtIZWFkZXJDb2x1bW59OwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICAjIGdldCBjb2x1bW4gdmFsdWVzIGZvciB0byBidWlsZCB0aGUgZmlsdGVycyBsYXRlcgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSwKICAgICAgICBIZWFkZXJDb2x1bW4gICAgICAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICk7CgogICAgIyBhcHBseSByZXN0cmljdGlvbnMgZm9yIHB1YmxpYyBwZXJtaXNzaW9uIGNvbmRpdGlvbnMKICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnQ2xhc3MnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggbm9uZSB7ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9IGVxICRfIH0gJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59eyRGaWx0ZXJWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgJiYgJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtEZXBsU3RhdGVzfS0+QCogKSB7CiAgICAgICAgZm9yIG15ICRGaWx0ZXJWYWx1ZSAoIGtleXMgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LT4lKiApIHsKICAgICAgICAgICAgaWYgKCBub25lIHsgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59eyRGaWx0ZXJWYWx1ZX0gZXEgJF8gfSAkUGFyYW17RmlsdGVyc30tPnsgJFBhcmFte0ZpbHRlcn0gfXtTZWFyY2h9e0RlcGxTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkU2VsZWN0ZWRWYWx1ZSAgPSAnJzsKICAgIG15ICRTZWxlY3RlZENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRIZWFkZXJDb2x1bW4gIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICRTZWxlY3RlZENvbHVtbiAuPSAnSURzJzsKICAgIH0KCiAgICBteSAkTGFiZWxDb2x1bW4gPSAkSGVhZGVyQ29sdW1uOwogICAgaWYgKCAkTGFiZWxDb2x1bW4gPX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICRMYWJlbENvbHVtbiA9fiBze1xBIER5bmFtaWNGaWVsZF8gfXt9eG1zOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJExhYmVsQ29sdW1uOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICRMYWJlbENvbHVtbiA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFNlbGVjdGVkQ29sdW1uICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgewoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSApIHsKICAgICAgICAgICAgJFNlbGVjdGVkVmFsdWUgPSAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufS0+WzBdOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT57RXF1YWxzfTsKICAgICAgICB9CiAgICB9CgogICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgIG15ICRDb2x1bW5GaWx0ZXJKU09OID0gJFNlbGYtPl9Db2x1bW5GaWx0ZXJKU09OKAogICAgICAgIENvbHVtbk5hbWUgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbENvbHVtbiwKICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufSwKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFZhbHVlLAogICAgKTsKCiAgICByZXR1cm4gJENvbHVtbkZpbHRlckpTT047Cn0KCiMgPWhlYWQyIF9Db2x1bW5GaWx0ZXJKU09OKCkKCiMgICAgIGNyZWF0ZXMgYSBKU09OIHNlbGVjdCBmaWx0ZXIgZm9yIGNvbHVtbiBoZWFkZXIKCiMgICAgIG15ICRDb2x1bW5GaWx0ZXJKU09OID0gJElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbE9iamVjdC0+X0NvbHVtbkZpbHRlckpTT04oCiMgICAgICAgICBDb2x1bW5OYW1lID0+ICdRdWV1ZScsCiMgICAgICAgICBMYWJlbCAgICAgID0+ICdRdWV1ZScsCiMgICAgICAgICBDb2x1bW5WYWx1ZXMgPT4gewojICAgICAgICAgICAgIDEgPT4gJ1Bvc3RNYXN0ZXInLAojICAgICAgICAgICAgIDIgPT4gJ0p1bmsnLAojICAgICAgICAgfSwKIyAgICAgICAgIFNlbGVjdGVkVmFsdWUgJzEnLAojICAgICApOwoKIyA9Y3V0CgpzdWIgX0NvbHVtbkZpbHRlckpTT04gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoCiAgICAgICAgISRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPnsgJFBhcmFte0NvbHVtbk5hbWV9IH0gJiYKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gLiAnSURzJyB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH07CiAgICAkTGFiZWwgPX4gc3sgXEEgRHluYW1pY0ZpZWxkXyB9e31neG1zOwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWxldGVGaWx0ZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0NvbHVtblZhbHVlc30gJiYgcmVmICRQYXJhbXtDb2x1bW5WYWx1ZXN9IGVxICdIQVNIJyApIHsKCiAgICAgICAgbXkgJVZhbHVlcyA9ICV7ICRQYXJhbXtDb2x1bW5WYWx1ZXN9IH07CgogICAgICAgICMgU2V0IHBvc3NpYmxlIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFZhbHVlS2V5ICggc29ydCB7IGxjICRWYWx1ZXN7JGF9IGNtcCBsYyAkVmFsdWVzeyRifSB9IGtleXMgJVZhbHVlcyApIHsKICAgICAgICAgICAgcHVzaCBAeyREYXRhfSwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFZhbHVlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlc3skVmFsdWVLZXl9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICREYXRhLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNLZXknLAogICAgICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1NlbGVjdGVkVmFsdWV9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZSA9PiAnb2ZmJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gJEpTT047Cn0KCnN1YiBfRGVmYXVsdENvbHVtblNvcnQgewoKICAgIG15ICVEZWZhdWx0Q29sdW1ucyA9ICgKICAgICAgICBDdXJEZXBsU2lnbmFsID0+IDExMCwKICAgICAgICBDdXJJbmNpU2lnbmFsID0+IDExMSwKICAgICAgICBDbGFzcyAgICAgICAgID0+IDExMiwKICAgICAgICBOdW1iZXIgICAgICAgID0+IDExMywKICAgICAgICBOYW1lICAgICAgICAgID0+IDExNCwKICAgICAgICBDdXJEZXBsU3RhdGUgID0+IDExNSwKICAgICAgICBDdXJJbmNpU3RhdGUgID0+IDExNiwKICAgICAgICBMYXN0Q2hhbmdlZCAgID0+IDExNywKICAgICk7CgogICAgIyBkeW5hbWljIGZpZWxkcyBjYW4gbm90IGJlIG9uIHRoZSBEZWZhdWx0Q29sdW1ucyBzb3J0aW5nIGhhc2gKICAgICMgd2hlbiBjb21wYXJpbmcgMiBkeW5hbWljIGZpZWxkcyBzb3J0aW5nIG11c3QgYmUgYWxwaGFiZXRpY2FsCiAgICBpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICYmICEkRGVmYXVsdENvbHVtbnN7JGJ9ICkgewogICAgICAgIHJldHVybiAkYSBjbXAgJGI7CiAgICB9CgogICAgIyB3aGVuIGEgZHluYW1pYyBmaWVsZCBpcyBjb21wYXJlZCB0byBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpdCBtdXN0IGJlIGhpZ2hlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRhfSApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIHdoZW4gYSBjb25maWcgaXRlbSBhdHRyaWJ1dGUgaXMgY29tcGFyZWQgdG8gYSBkeW5hbWljIGZpZWxkIGl0IG11c3QgYmUgbG93ZXIKICAgIGVsc2lmICggISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgICMgb3RoZXJ3aXNlIGRvIGEgbnVtZXJpY2FsIGNvbXBhcmlzb24gd2l0aCB0aGUgY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgcmV0dXJuICREZWZhdWx0Q29sdW1uc3skYX0gPD0+ICREZWZhdWx0Q29sdW1uc3skYn07Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0OjpJVFNNQ29uZmlnSXRlbSAtIGFsbCBDb25maWdJdGVtLXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIElUU00gQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50LXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoKQoKcmV0dXJucyBhbiBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtT3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICAgICBQcmludCA9PiAxLCAgICAgICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0l0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdlbmVyYXRlIG91dHB1dCBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbUZvcm1EYXRhR2V0KCkKCnJldHVybnMgdGhlIHZhbHVlcyBmcm9tIHRoZSBodG1sIGZvcm0gYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUZvcm1EYXRhR2V0KAogICAgICAgIEtleSAgICAgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgICAgID0+ICRJdGVtUmVmLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0gQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiB7fSBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkRm9ybURhdGEgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJEZvcm1EYXRhOwp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1JbnB1dENyZWF0ZSgpCgpyZXR1cm5zIGEgaW5wdXQgZmllbGQgaHRtbCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiAnJyBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBsb29rdXAgaXRlbSB2YWx1ZQogICAgbXkgJFN0cmluZyA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSglUGFyYW0pOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1TZWFyY2hGb3JtRGF0YUdldCgpCgpyZXR1cm5zIHRoZSB2YWx1ZXMgZnJvbSB0aGUgc2VhcmNoIGh0bWwgZm9ybQoKICAgIG15ICRBcnJheVJlZiA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtU2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbVNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiBbXSBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRWYWx1ZXM7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbVNlYXJjaElucHV0Q3JlYXRlKCkKCnJldHVybnMgYSBzZWFyY2ggaW5wdXQgZmllbGQgaHRtbCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGxvb2t1cCBpdGVtIHZhbHVlCiAgICBteSAkU3RyaW5nID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBfSVRTTUxvYWRMYXlvdXRCYWNrZW5kKCkKCmxvYWQgYSBpbnB1dCB0eXBlIGJhY2tlbmQgbW9kdWxlCgogICAgJEJhY2tlbmRPYmplY3QgPSAkTGF5b3V0T2JqZWN0LT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJ0dlbmVyYWxDYXRhbG9nJywKICAgICk7Cgo9Y3V0CgpzdWIgX0lUU01Mb2FkTGF5b3V0QmFja2VuZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxvZyBvYmplY3QKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgaWYgKCAhJFBhcmFte1R5cGV9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVHlwZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRHZW5lcmljTW9kdWxlID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0JFBhcmFte1R5cGV9IjsKCiAgICAjIGxvYWQgdGhlIGJhY2tlbmQgbW9kdWxlCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRHZW5lcmljTW9kdWxlKSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIGJhY2tlbmQgbW9kdWxlICRQYXJhbXtUeXBlfSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgbmV3IGluc3RhbmNlCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRHZW5lcmljTW9kdWxlLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgJVBhcmFtLAogICAgICAgIExheW91dE9iamVjdCA9PiAkU2VsZiwKICAgICk7CgogICAgaWYgKCAhJEJhY2tlbmRPYmplY3QgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGJhY2tlbmQgbW9kdWxlICRQYXJhbXtUeXBlfSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAkQmFja2VuZE9iamVjdDsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtTGlzdFNob3coKQoKUmV0dXJucyBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIHNvcnQgYW5kIHBhZ2luYXRpb24gY2FwYWJpbGl0aWVzLgoKVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIEw8S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dFRpY2tldDo6VGlja2V0TGlzdFNob3coKT4KaW4gRjxLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0VGlja2V0LnBtPi4KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygKICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzUmVmLCAgICAgICAgICAgICAgICAgICMgdG90YWwgbGlzdCBvZiBjb25maWcgaXRlbSBpZHMsIHRoYXQgY2FuIGJlIGxpc3RlZAogICAgICAgIFRvdGFsICAgICAgICAgPT4gc2NhbGFyIEB7ICRDb25maWdJdGVtSURzUmVmIH0sICAgICAgIyB0b3RhbCBudW1iZXIgb2YgbGlzdCBpdGVtcywgY29uZmlnIGl0ZW1zIGluIHRoaXMgY2FzZQogICAgICAgIFZpZXcgICAgICAgICAgPT4gJFNlbGYtPntWaWV3fSwgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgJ1NtYWxsJwogICAgICAgIEZpbHRlciAgICAgICAgPT4gJ0FsbCcsCiAgICAgICAgRmlsdGVycyAgICAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBGaWx0ZXJMaW5rICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIFRpdGxlTmFtZSAgICAgPT4gJ092ZXJ2aWV3OiBDb25maWcgSXRlbTogQ29tcHV0ZXInLAogICAgICAgIFRpdGxlVmFsdWUgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgIEVudiAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgRnJvbnRlbmQgICAgICA9PiAnQWdlbnQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgKEFnZW50fEN1c3RvbWVyfFB1YmxpYyksIGRlZmF1bHQ6IEFnZW50LCBpbmRpY2F0ZXMgZnJvbSB3aGljaCBmcm9udGVuZCB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGZyb250ZW5kIHBlciBkZWZhdWx0IHRvIGFnZW50CiAgICAkUGFyYW17RnJvbnRlbmR9IC8vPSAnQWdlbnQnOwoKICAgICMgdGFrZSBvYmplY3QgcmVmIHRvIGxvY2FsLCByZW1vdmUgaXQgZnJvbSAlUGFyYW0gKHByZXZlbnQgbWVtb3J5IGxlYWspCiAgICBteSAkRW52ID0gZGVsZXRlICRQYXJhbXtFbnZ9OwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ1B1YmxpYycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSwKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMgaWYgbmVlZGVkCiAgICBteSAkS2V5ID0gJ1VzZXJJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259OwogICAgaWYgKCAkUGFyYW17RnJvbnRlbmR9IG5lICdDdXN0b21lcicgJiYgJFBhcmFte0Zyb250ZW5kfSBuZSAnUHVibGljJyApIHsKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSAmJiAoICRTZWxmLT57JEtleX0gLy8gJycgKSBuZSAkVmlldyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFZpZXcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kczsKICAgIGlmICggJFBhcmFte0Zyb250ZW5kfSBlcSAnQWdlbnQnICkgewogICAgICAgICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RnJvbnRlbmR9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVyT3ZlcnZpZXcnKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgcHVibGljIGZyb250ZW5kCiAgICAgICAgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY092ZXJ2aWV3Jyk7CiAgICB9CgogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+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+e0NvbHVtbnNFbmFibGVkfSB9OwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNBdmFpbGFibGU7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICAgICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1uc0VuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJsZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBmaWx0ZXJlZCBjb2x1bW4gbGlzdAogICAgICAgICAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQgeyAkYSBjbXAgJGIgfSBAeyAkT2JqZWN0LT57Q29sdW1uc0F2YWlsYWJsZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG5vbmUgeyAkXyBlcSAkQ29sdW1uTmFtZSB9IEBDb2x1bW5zRW5hYmxlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0F2YWlsYWJsZSwgJENvbHVtbk5hbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICVDb2x1bW5zOwogICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCBAQ29sdW1uc0F2YWlsYWJsZSApIHsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uc3tDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfSA9ICggZ3JlcCB7ICRDb2x1bW5OYW1lIGVxICRfIH0gQENvbHVtbnNFbmFibGVkICkgPyAxIDogMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVyQ29sdW1uU2V0dGluZ3MnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICAgICAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXCVDb2x1bW5zICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnNFbmFibGVkICAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNFbmFibGVkICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnNBdmFpbGFibGUgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNBdmFpbGFibGUgKSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZVByZWYgICAgICAgICA9PiAkUHJlZktleUNvbHVtbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIERlc2MgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTaG93biBDb2x1bW5zJyksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlckFjdGlvbiAgICAgPT4gJEVudi0+e0FjdGlvbn0gLiAnLScgLiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmlldyAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lICAgICAgICA9PiAnQ29uZmlnSXRlbU92ZXJ2aWV3RmlsdGVyU2V0dGluZ3MnLAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICMgZW5kIHNob3cgY29sdW1uIGZpbHRlcnMgcHJlZmVyZW5jZXMKCiAgICAgICAgIyBjaGVjayBpZiB0aGVyZSB3YXMgc3RvcmVkIGZpbHRlcnMsIGFuZCBwcmludCBhIGxpbmsgdG8gZGVsZXRlIHRoZW0KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkT2JqZWN0LT57U3RvcmVkRmlsdGVyc30gKSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3dSZW1vdmVDb2x1bW5GaWx0ZXJzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENTUyA9PiAiQ29udGV4dFNldHRpbmdzIFJlbW92ZUZpbHRlcnMiLAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIG5hdiBiYXIgYW5kIHJ1biBvdmVydmlldyBiYWNrZW5kIG1vZHVsZQogICAgbXkgJE5hdkJhckhUTUwgPSAnJzsKCiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ0N1c3RvbWVyJyAmJiAkUGFyYW17RnJvbnRlbmR9IG5lICdQdWJsaWMnICkgewogICAgICAgICROYXZCYXJIVE1MID0gJFNlbGYtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyAlUGFyYW0sIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkTmF2QmFySFRNTCwKICAgICAgICAkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlDbGFzc2VzID0+ICRFbnYtPntDYXRlZ29yeUNsYXNzZXN9LAogICAgICAgICAgICBDb25maWcgICAgICAgICAgPT4gJEJhY2tlbmRzLT57JFZpZXd9LAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJExpbWl0LAogICAgICAgICAgICBTdGFydEhpdCAgICAgICAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICBQYWdlU2hvd24gICAgICAgPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgQWxsSGl0cyAgICAgICAgID0+ICRQYXJhbXtUb3RhbH0gIHx8IDAsCiAgICAgICAgICAgIE91dHB1dCAgICAgICAgICA9PiAkUGFyYW17T3V0cHV0fSB8fCAnJywKICAgICAgICApOwp9Cgo9aGVhZDIgWE1MRGF0YTJIYXNoKCkKCnJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIHRoZSByZXF1ZXN0ZWQgYXR0cmlidXRlcyBkYXRhIGZvciBhIGNvbmZpZyBpdGVtCgpSZXR1cm4KCiAgICAkRGF0YSA9IHsKICAgICAgICAnSGFyZERpc2s6OjInID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJ0hEMicsCiAgICAgICAgICAgIE5hbWUgID0+ICdIYXJkIERpc2snLAogICAgICAgICB9LAogICAgICAgICdDUFU6OjEnID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDUFUnLAogICAgICAgIH0sCiAgICAgICAgJ0hhcmREaXNrOjoyOjpDYXBhY2l0eTo6MScgPT4gewogICAgICAgICAgICBWYWx1ZSA9PiAnNzgwIEdCJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0NhcGFjaXR5JywKICAgICAgICB9LAogICAgfTsKCiAgICBteSAkRGF0YSA9ICRMYXlvdXRPYmplY3QtPlhNTERhdGEySGFzaCgKICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRWZXJzaW9uLT57WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkVmVyc2lvbi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgIEF0dHJpYnV0ZXMgICAgPT4gWydDUFU6OjEnLCAnSGFyZERyaXZlOjoyOjpDYXBhY2l0eTo6MScsIC4uLl0sCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJURhdGFIYXNoUmVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBQcmVmaXggICAgICAgID0+ICdIYXJkRGlzazo6MScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBYTUxEYXRhMkhhc2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGF0YX07CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiAhJFBhcmFte0F0dHJpYnV0ZXN9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte0F0dHJpYnV0ZXN9IG5lICdBUlJBWSc7CgogICAgIyB0byBzdG9yZSB0aGUgcmV0dXJuIGRhdGEKICAgIG15ICREYXRhID0gJFBhcmFte0RhdGF9IHx8IHt9OwoKICAgICMgY3JlYXRlIGEgbG9va3VwIHN0cnVjdHVyZQogICAgbXkgJVJlbGV2YW50QXR0cmlidXRlcyA9IG1hcCB7ICRfID0+IDEgfSBAeyAkUGFyYW17QXR0cmlidXRlc30gfTsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte1hNTERlZmluaXRpb259IH0gKSB7CgogICAgICAgIG15ICRDb3VudE1heCA9ICRJdGVtLT57Q291bnRNYXh9IHx8IDE7CgogICAgICAgIENPVU5URVI6CiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkQ291bnRNYXggKSB7CgogICAgICAgICAgICAjIGFkZCBwcmVmaXgKICAgICAgICAgICAgbXkgJFByZWZpeCA9ICRJdGVtLT57S2V5fSAuICc6OicgLiAkQ291bnRlcjsKICAgICAgICAgICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAgICAgICAgICRQcmVmaXggPSAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkUHJlZml4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNraXAgbm90IG5lZWRlZCBlbGVtZW50cyBhbmQgc3ViIGVsZW1lbnRzCiAgICAgICAgICAgIG5leHQgQ09VTlRFUiBpZiBub25lIHsgJF8gPX4gbXtcQSRQcmVmaXh9IH0gQHsgJFBhcmFte0F0dHJpYnV0ZXN9IH07CgogICAgICAgICAgICAjIGxvb2t1cCB2YWx1ZQogICAgICAgICAgICBteSAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MVmFsdWVMb29rdXAoCiAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9IC8vICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvbmx5IGlmIHZhbHVlIGlzIGRlZmluZWQKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRWYWx1ZSApIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBvdXRwdXQgc3RyaW5nCiAgICAgICAgICAgICAgICAkVmFsdWUgPSAkU2VsZi0+SVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIEl0ZW0gID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgIFByaW50ID0+ICRQYXJhbXtQcmludH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRSZWxldmFudEF0dHJpYnV0ZXN7JFByZWZpeH0gKSB7CgogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGUgaXRlbSBpbiBoYXNoCiAgICAgICAgICAgICAgICAkRGF0YS0+eyRQcmVmaXh9ID0gewogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlIC8vICcnLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICAgICBpZiAoICRJdGVtLT57U3VifSApIHsKICAgICAgICAgICAgICAgICREYXRhID0gJFNlbGYtPlhNTERhdGEySGFzaCgKICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXSwKICAgICAgICAgICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRQcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiAkRGF0YSwKICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+ICRQYXJhbXtBdHRyaWJ1dGVzfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICREYXRhOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItemTreeView.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtVHJlZVZpZXc7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyAtIGFsbCBDb25maWdJdGVtVHJlZVZpZXctcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgQ29uZmlnSXRlbVRyZWVWaWV3LXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgR2VuZXJhdGVIaWVyYXJjaHlHcmFwaCgpCgpjcmVhdGVzIEhUTUwgY29udGFpbmluZyB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIGZvciBkcmF3aW5nIHRoZSBncmFwaC4KCiAgICBteSAkQ2FudmFzSFRNTCA9ICRMYXlvdXRPYmplY3QtPkdlbmVyYXRlSGllcmFyY2h5R3JhcGgoCiAgICAgICAgRGVwdGggICAgICAgICAgPT4gMiwgIyBkZXB0aCBsZXZlbAogICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDEgICMgc291cmNlIGNvbmZpZyBpdGVtIElECiAgICAgICAgVmVyc2lvbklEICAgICAgPT4gMSAgIyBzb3VyY2UgY29uZmlnIGl0ZW0gdmVyc2lvbiBJRAogICAgKTsKCj1jdXQKCnN1YiBHZW5lcmF0ZUhpZXJhcmNoeUdyYXBoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LCwKICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICApOwoKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGdldCBDb25maWdJdGVtLicKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgJFNlbGYtPntDSVRyZWVNYXhEZXB0aH0gPSAxOwoKICAgIG15IEBMaW5rT3V0cHV0RGF0YVRhcmdldHMgPSAoWwogICAgICAgIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICBJRCA9PiAkU2VsZi0+X0dlbmVyYXRlSUQoICRDb25maWdJdGVtLT4lKiApLAogICAgICAgIH0sCiAgICBdKTsKICAgIG15IEBMaW5rT3V0cHV0RGF0YVNvdXJjZXMgPSBATGlua091dHB1dERhdGFUYXJnZXRzOwoKICAgICMgQnVpbGQgTGV2ZWxzIERvd24gKFRhcmdldHMpCiAgICAkU2VsZi0+R2V0Q0lTdWJUcmVlRGF0YSgKICAgICAgICBMaW5rT3V0cHV0RGF0YSA9PiBcQExpbmtPdXRwdXREYXRhVGFyZ2V0cywgICAgIyB3aWxsIGJlIG1vZGlmaWVkCiAgICAgICAgSW5pdCAgICAgICAgICAgPT4gMSwKICAgICAgICBEZXB0aCAgICAgICAgICA9PiAkUGFyYW17RGVwdGh9LAogICAgICAgIERpcmVjdGlvbiAgICAgID0+ICdTb3VyY2UnCiAgICApOwoKICAgICMgQnVpbGQgTGV2ZWxzIFVwIChTb3VyY2VzKQogICAgJFNlbGYtPkdldENJU3ViVHJlZURhdGEoCiAgICAgICAgTGlua091dHB1dERhdGEgPT4gXEBMaW5rT3V0cHV0RGF0YVNvdXJjZXMsICAgICMgd2lsbCBiZSBtb2RpZmllZAogICAgICAgIEluaXQgICAgICAgICAgID0+IDEsCiAgICAgICAgRGVwdGggICAgICAgICAgPT4gJFBhcmFte0RlcHRofSwKICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAnVGFyZ2V0JwogICAgKTsKCiAgICAjIFRoZSBuZWVkZWQgZGF0YSBoYXMgYmVlbiBjb2xsZWN0ZWQuCiAgICAjIFRoZSBmb2xsb3dpbmcganVzdCBwYXNzZXMgdGhlIHR3byB0cmVlcyB0byB0aGUgd2ViIHBhZ2UuCgogICAgIyBmb3IgdGhlIHNvdXJjZXMgc3RhcnQgd2l0aCB0aGUgZGVlcGVzdCBsZXZlbAogICAgbXkgQExpbmtEYXRhU291cmNlOyAgICAjIHdpbGwgYmUgdXNlZCBpbiBKYXZhU2NyaXB0IGZvciBkcmF3aW5nIHRoZSBhcmNzCiAgICBmb3IgbXkgJExldmVsICggcmV2ZXJzZSAoIDEgLi4gJCNMaW5rT3V0cHV0RGF0YVNvdXJjZXMgKSApIHsKICAgICAgICBteSAkRWxlbWVudHMgPSAkTGlua091dHB1dERhdGFTb3VyY2VzWyAkTGV2ZWwgXTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgID0+ICdDaGlsZFNvdXJjZUVsZW1lbnRzTGV2ZWwnLAogICAgICAgICAgICBMZXZlbCA9PiAkTGV2ZWwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkRWxlbWVudHMtPkAqICkgewogICAgICAgICAgICBteSAkSUQgPSAiJEVsZW1lbnQtPntJRH1fUyRMZXZlbCI7ICAgICMgb25seSBsaW5rIHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIGxldmVsLCB0aGUgc2VwYXJhdG9yIF9TIGluZGljYXRlcyBTb3VyY2UKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDaGlsZFNvdXJjZUVsZW1lbnRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkRWxlbWVudC0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRzICAgICA9PiAkRWxlbWVudC0+e0NvbnRlbnRzfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEVsZW1lbnQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgICA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbklEICAgID0+ICRQYXJhbXtTZXNzaW9uSUR9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG5lZWQgdG8gY29uc2lkZXIgdGhlIHNwZWNpYWwgY2FzZSB3aGVuIGxpbmtpbmcgdG8gdGhlIG9yaWdpbgogICAgICAgICAgICBteSAkTmV4dExldmVsID0gJExldmVsIC0gMTsKCiAgICAgICAgICAgIGZvciBteSAkTGluayAoIEB7ICRFbGVtZW50LT57TGlua30gLy8gW10gfSApIHsKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRUb0VsZW1lbnQgPSAkTmV4dExldmVsID8gJExpbmstPntMaW5rZWRUb30gLiAnX1MnIC4gJE5leHRMZXZlbCA6ICRMaW5rLT57TGlua2VkVG99OwogICAgICAgICAgICAgICAgcHVzaCBATGlua0RhdGFTb3VyY2UsIGpvaW4gJywnLCAkTGlua2VkVG9FbGVtZW50LCAkSUQsICRMaW5rLT57TGlua1R5cGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgTGV2ZWwgMAogICAgIyBHaXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSByb290IG5vZGUgdG8gdGhlIHdlYiBwYWdlLgogICAgIyBEeW5hbWljIGZpZWxkIGluZm8gaXMgbm90IG5lZWRlZC4KICAgIHsKICAgICAgICBteSAkQ29udGVudHMgPSAkU2VsZi0+X0dldENvbnRlbnRzKAogICAgICAgICAgICBBdHRyaWJ1dGVzID0+IFsgJ1ZlcnNpb25TdHJpbmcnLCAkU2VsZi0+Q0lUcmVlRGVmYXVsdEF0dHJpYnV0ZXMgXSwgICAgIyB0aGUgcm9vdCBoYXMgYWx3YXlzIGEgdmVyc2lvbgogICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPcmlnaW5FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbnRlbnRzICAgICA9PiAkQ29udGVudHMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgSUQgICAgICAgICAgID0+ICRMaW5rT3V0cHV0RGF0YVNvdXJjZXNbMF1bMF17SUR9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZvciB0aGUgdGFyZ2V0cyBzdGFydCB3aXRoIHRoZSBsb3dlc3QgbGV2ZWwKICAgIG15IEBMaW5rRGF0YVRhcmdldDsgICAgIyB3aWxsIGJlIHVzZWQgaW4gSmF2YVNjcmlwdCBmb3IgZHJhd2luZyB0aGUgYXJjcwogICAgZm9yIG15ICRMZXZlbCAoIDEgLi4gJCNMaW5rT3V0cHV0RGF0YVRhcmdldHMgKSB7CiAgICAgICAgbXkgJEVsZW1lbnRzID0gJExpbmtPdXRwdXREYXRhVGFyZ2V0c1sgJExldmVsIF07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDaGlsZFRhcmdldEVsZW1lbnRzTGV2ZWwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExldmVsID0+ICRMZXZlbAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggJEVsZW1lbnRzLT5AKiApIHsKICAgICAgICAgICAgbXkgJElEID0gIiRFbGVtZW50LT57SUR9X1QkTGV2ZWwiOyAgICAjIG9ubHkgbGluayB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBsZXZlbCwgdGhlIHNlcGFyYXRvciBfVCBpbmRpY2F0ZXMgVGFyZ2V0CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2hpbGRUYXJnZXRFbGVtZW50cycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJEVsZW1lbnQtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50cyAgICAgPT4gJEVsZW1lbnQtPntDb250ZW50c30sCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRFbGVtZW50LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIFNlc3Npb25JRCAgICA9PiAkUGFyYW17U2Vzc2lvbklEfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWFsIGNhc2Ugd2hlbiBsaW5raW5nIHRvIHRoZSBvcmlnaW4KICAgICAgICAgICAgbXkgJFByZXZpb3VzTGV2ZWwgPSAkTGV2ZWwgLSAxOwogICAgICAgICAgICBmb3IgbXkgJExpbmsgKCBAeyAkRWxlbWVudC0+e0xpbmt9IC8vIFtdIH0gKSB7CiAgICAgICAgICAgICAgICBteSAkTGlua2VkVG9FbGVtZW50ID0gJFByZXZpb3VzTGV2ZWwgPyAkTGluay0+e0xpbmtlZFRvfSAuICdfVCcgLiAkUHJldmlvdXNMZXZlbCA6ICRMaW5rLT57TGlua2VkVG99OwogICAgICAgICAgICAgICAgcHVzaCBATGlua0RhdGFUYXJnZXQsIGpvaW4gJywnLCAkSUQsICRMaW5rZWRUb0VsZW1lbnQsICRMaW5rLT57TGlua1R5cGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDb25maWdJdGVtVHJlZVZpZXcvQ29uZmlnSXRlbVRyZWVWaWV3R3JhcGgnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIE1heERlcHRoICAgICAgID0+ICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9LAogICAgICAgICAgICBMaW5rRGF0YVNvdXJjZSA9PiBqb2luKCAnOycsIEBMaW5rRGF0YVNvdXJjZSApLAogICAgICAgICAgICBMaW5rRGF0YVRhcmdldCA9PiBqb2luKCAnOycsIEBMaW5rRGF0YVRhcmdldCApLAogICAgICAgIH0KICAgICk7Cn0KCj1oZWFkMiBDSVRyZWVEZWZhdWx0QXR0cmlidXRlcygpCgpHZXQgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2hvd24gaW4gdGhlIG5vZGVzLgoKICAgIG15IEBBdHRyaWJ1dGVzID0gJExheW91dE9iamVjdC0+Q0lUcmVlRGVmYXVsdEF0dHJpYnV0ZXMoKTsKCj1jdXQKCnN1YiBDSVRyZWVEZWZhdWx0QXR0cmlidXRlcyB7CiAgICByZXR1cm4gcXcvQ2xhc3MgQ3VyRGVwbFN0YXRlIEN1ckluY2lTdGF0ZSBDdXJJbmNpU3RhdGVUeXBlLzsKfQoKIyBidWlsZCBDaGlsZHJlbiBzdHJ1Y3R1cmUKc3ViIEdldENJU3ViVHJlZURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGlua091dHB1dERhdGEgPSAkUGFyYW17TGlua091dHB1dERhdGF9OyAgICAjIHdpbGwgYmUgbW9kaWZpZWQKICAgIG15ICREZXB0aCAgICAgICAgICA9ICRQYXJhbXtEZXB0aH07CiAgICBteSAkSW5pdCAgICAgICAgICAgPSAkUGFyYW17SW5pdH07CiAgICBteSAkRGlyZWN0aW9uICAgICAgPSAkUGFyYW17RGlyZWN0aW9ufTsKCiAgICBteSAkQWN0dWFsTGV2ZWwgICAgICA9IDE7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgYnVpbGQgdGhlIGl0ZW1zIGZvciB0aGUgbmV3IGxldmVscwogICAgTE9PUERFUFRIOgogICAgZm9yIG15ICRHb0RlZXAgKCAkSW5pdCAuLiAkRGVwdGggKSB7CiAgICAgICAgbmV4dCBMT09QREVQVEggaWYgZXhpc3RzICRMaW5rT3V0cHV0RGF0YS0+WyAkR29EZWVwIF07CiAgICAgICAgbGFzdCBMT09QREVQVEggdW5sZXNzICRMaW5rT3V0cHV0RGF0YS0+WyAkR29EZWVwIC0gMSBdOwoKICAgICAgICAjIGdldCBsaW5rZWQgb2JqZWN0cyBmb3IgdGhlIG5leHQgbGV2ZWwKICAgICAgICBteSBASXRlbXNQZXJMZXZlbDsKICAgICAgICBteSAlSXRlbU1hcDsKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkTGlua091dHB1dERhdGEtPlsgJEdvRGVlcCAtIDEgXS0+QCogKSB7CgogICAgICAgICAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEVsZW1lbnQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRFbGVtZW50LT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAkRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRGF0YUZvckl0ZW0gPSAkU2VsZi0+R2V0TGlua091dHB1dERhdGEoCiAgICAgICAgICAgICAgICBMaW5rZWRDb25maWdJdGVtcyA9PiAkTGlua2VkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBMaW5rZWRUbyAgICAgICAgICA9PiAkRWxlbWVudC0+e0lEfSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBJVEVNOgogICAgICAgICAgICBmb3IgbXkgJFNpbmdsZUl0ZW0gKCBAeyAkRGF0YUZvckl0ZW0gLy8gW10gfSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXRlbSBhbHJlYWR5IGV4aXN0cyBvbiB0aGlzIGxheWVyLCBqdXN0IGFkZCBhbm90aGVyIGxpbmsgdG8gaXQKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSXRlbU1hcHsgJFNpbmdsZUl0ZW0tPntJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRJdGVtc1BlckxldmVsWyAkSXRlbU1hcHsgJFNpbmdsZUl0ZW0tPntJRH0gfSBde0xpbmt9IH0sICRTaW5nbGVJdGVtLT57TGlua31bMF07CgogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtc1BlckxldmVsLCAkU2luZ2xlSXRlbTsKICAgICAgICAgICAgICAgICRJdGVtTWFweyAkU2luZ2xlSXRlbS0+e0lEfSB9ID0gJCNJdGVtc1BlckxldmVsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQEl0ZW1zUGVyTGV2ZWwpIHsKICAgICAgICAgICAgJEFjdHVhbExldmVsKys7CiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YS0+WyRHb0RlZXBdID0gXEBJdGVtc1BlckxldmVsOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRBY3R1YWxMZXZlbCA+ICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9ICYmICRBY3R1YWxMZXZlbCAhPSAwICkgewogICAgICAgICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9ID0gJEFjdHVhbExldmVsOwogICAgfQoKICAgIHJldHVybjsKfQoKIyByZXR1cm4gY29udGVudHMgb2YgdGhlIG5vZGVzCnN1YiBfR2V0Q29udGVudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAQXR0cmlidXRlcyA9ICRQYXJhbXtBdHRyaWJ1dGVzfS0+QCo7CiAgICBteSAkQ29uZmlnSXRlbSA9ICRQYXJhbXtDb25maWdJdGVtfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZmlsbCBkYXRhIHdpdGggY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgbXkgQExpbmVzOwogICAgZm9yIG15ICRDb2x1bW4gKEBBdHRyaWJ1dGVzKSB7CgogICAgICAgIG15ICRDb2x1bW5MYWJlbCA9ICRDb2x1bW47CiAgICAgICAgaWYgKCBpbmRleCggJENvbHVtbiwgJzo6JyApID4gMCApIHsKICAgICAgICAgICAgbXkgQFZhbHMgPSBzcGxpdCAvOjovLCAkQ29sdW1uOwogICAgICAgICAgICBwb3AgQFZhbHM7CiAgICAgICAgICAgICRDb2x1bW5MYWJlbCA9IGpvaW4gJyAnLCBAVmFsczsKICAgICAgICB9CgogICAgICAgIG15ICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFNlbGYtPl9NYXBBdHRyaWJ1dGVzKCBMYWJlbCA9PiAkQ29sdW1uTGFiZWwgKSApOwogICAgICAgIG15ICRUZXh0ICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJENvbmZpZ0l0ZW0tPnskQ29sdW1ufSAvLyAnJyApOwoKICAgICAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlLiBTaG93IHRoZSBncmVlbiwgeWVsbG93LCByZWQgZmxhZ3MuCiAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKCiAgICAgICAgICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDdXJJbmNpU2lnbmFsID0gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH07CiAgICAgICAgICAgIHB1c2ggQExpbmVzLCBxcXs8c3BhbiBjbGFzcz0iRmxhZyBTbWFsbCI+IDxzcGFuIGNsYXNzPSIkQ3VySW5jaVNpZ25hbCI+IiRUZXh0Ijwvc3Bhbj48L3NwYW4+fTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQExpbmVzLCAiJExhYmVsOiAkVGV4dCI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBqb2luICI8YnI+XG4iLCBATGluZXM7Cn0KCiMgZ2VuZXJhdGUgYW4gSUQgdGhhdCBpcyB1c2VkIGZvciBkcmF3aW5nIHRoZSBhcmNzCnN1YiBfR2VuZXJhdGVJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICggZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbUlEfSA/ICJDJFBhcmFte0NvbmZpZ0l0ZW1JRH0iIDogJycgKSwKICAgICAgICAoIGRlZmluZWQgJFBhcmFte1ZlcnNpb25JRH0gICAgPyAiViRQYXJhbXtWZXJzaW9uSUR9IiAgICA6ICcnICk7Cn0KCiMgR2V0IGxpbmtzIGZvciByZWxhdGVkIENJLgojIFRoaXMgcmV0dXJuZWQgb3V0cHV0IGRhdGEgaXMgbm90IGEgdHJlZSwgYnV0IGFuIGFycmF5cmVmIG9mIGl0ZW1zIHBlciBsZXZlbC4Kc3ViIEdldExpbmtPdXRwdXREYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWd1cmVkVHlwZXMgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpUeXBlJyk7CgogICAgbXkgQE91dHB1dERhdGE7CiAgICBmb3IgbXkgJExpbmtlZENvbmZpZ0l0ZW0gKCBncmVwIHsgJF8tPntEaXJlY3Rpb259IGVxICRQYXJhbXtEaXJlY3Rpb259IH0gJFBhcmFte0xpbmtlZENvbmZpZ0l0ZW1zfS0+QCogKSB7CgogICAgICAgICMgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbmtlZCBjb25maWcgaXRlbQogICAgICAgICMgVGhlcmUgYXJlIG9ubHkgdHdvIGNhc2VzOgogICAgICAgICMgICAtIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbgogICAgICAgICMgICAtIFZlcnNpb25JRCBpcyBnaXZlbgogICAgICAgIG15ICVJbmNvbWluZ0lEcyA9IG1hcCB7ICRfID0+ICRMaW5rZWRDb25maWdJdGVtLT57JF99IH0gcXcoQ29uZmlnSXRlbUlEIFZlcnNpb25JRCk7CgogICAgICAgICMgQ29uZmlnSXRlbUdldCgpIGFsbG93cyBmb3IgYm90aCBjYXNlcwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICVJbmNvbWluZ0lEcywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgVGhpcyB3aWxsIGJlIHVzZWQgZm9yIGZpbmRpbmcgdGhlIG5leHQgbGV2ZWwgb2YgbGlua3M6CiAgICAgICAgIyAgIC0gQ29uZmlnSXRlbUlEIHdhcyBnaXZlbiA9PiBsYXRlc3QgVmVyc2lvbklEIHdpbGwgYmUgYWRkZWQKICAgICAgICAjICAgLSBWZXJzaW9uSUQgd2FzIGdpdmVuICAgID0+IENvbmZpZ0l0ZW1JRCBmb3IgdGhhdCB2ZXJzaW9uIHdpbGwgYmUgYWRkZWQKICAgICAgICBteSAlT3V0Z29pbmdJRHMgPSBtYXAgeyAkXyA9PiAkQ29uZmlnSXRlbS0+eyRffSB9IHF3KENvbmZpZ0l0ZW1JRCBWZXJzaW9uSUQpOwoKICAgICAgICAjIEZpbmQgbGFiZWwgZm9yIHRoZSBsaW5rLiBJbiBUcmVlVmlldyB0aGUgbGFiZWwgb2YgdGhlIGFyYwogICAgICAgICMgc2hvdWxkIGJlIGluIGFjY29yZGFuY2UgdG8gdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJjLiBUaGUgYXJlCiAgICAgICAgIyBpcyBhbHdheXMgZGlyZWN0ZWQgZnJvbSBTb3VyY2UgdG8gVGFyZ2V0LiBUaGVyZWZvcmUgdGhlIFNvdXJjZU5hbWUgaXMgdGhlIGFyYyBsYWJlbC4KICAgICAgICBteSAkTGlua1R5cGUgPSAkTGlua2VkQ29uZmlnSXRlbS0+e0xpbmtUeXBlfTsKICAgICAgICBteSAkQXJjTGFiZWwgPSAkQ29uZmlndXJlZFR5cGVzLT57JExpbmtUeXBlfS0+e1NvdXJjZU5hbWV9IHx8ICRMaW5rVHlwZTsKICAgICAgICBteSAkTGluayAgICAgPSBbIHsgTGlua2VkVG8gPT4gJFBhcmFte0xpbmtlZFRvfSwgIExpbmtUeXBlID0+ICRBcmNMYWJlbCB9IF07CgogICAgICAgICMgV2FzIHRoZSBsaW5rIHRvIHRoaXMgaXRlbSB2ZXJzaW9uIHNwZWNpZmljID8KICAgICAgICAjIFRoZSBWZXJzaW9uU3RyaW5nIGlzIG9ubHkgc2hvd24gaW4gdGhlIFRyZWVWaWV3IHdoZW4gYW4gZXhwbGljaXQgdmVyc2lvbiBpcyBsaW5rZWQuCiAgICAgICAgIyBUT0RPOiBpZiB3ZSB3YW50IG11bHRpcGxlIGxpbmtzIHRvIHRoZSB2ZXJzaW9uIG9uIHRoZSBzYW1lIGxheWVyLCBvbmx5IHBhcnRseSB2ZXJzaW9uIHNwZWNpZmljCiAgICAgICAgIyAgICAgICB3ZSB3b3VsZCBuZWVkIHNlcGFyYXRlIGlkcyBmb3IgYm90aC4gVGhpcyBjdXJyZW50bHkgaXMgbm90IGltcGxlbWVudGVkLgogICAgICAgIG15ICRMaW5rZWRBc1ZlcnNpb24gPSAkSW5jb21pbmdJRHN7VmVyc2lvbklEfSA/IDEgOiAwOwoKICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICBwdXNoIEBPdXRwdXREYXRhLCB7CiAgICAgICAgICAgICVPdXRnb2luZ0lEcywKICAgICAgICAgICAgSUQgICAgICAgICAgICAgID0+ICRTZWxmLT5fR2VuZXJhdGVJRCglT3V0Z29pbmdJRHMpLCAgICAjIHVzZWQgZm9yIGxpbmtpbmcgaW4gdGhlIGdyYXBoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICBMaW5rICAgICAgICAgICAgPT4gJExpbmssCiAgICAgICAgICAgIExpbmtlZEFzVmVyc2lvbiA9PiAkTGlua2VkQXNWZXJzaW9uLAogICAgICAgICAgICBDb250ZW50cyAgICAgICAgPT4gJFNlbGYtPl9HZXRDb250ZW50cygKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICggJExpbmtlZEFzVmVyc2lvbiA/ICdWZXJzaW9uU3RyaW5nJyA6ICgpICksCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPkNJVHJlZURlZmF1bHRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICksCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gXEBPdXRwdXREYXRhOwp9CgojIGNoYW5nZSBsYWJlbHMgZm9yIHRyYW5zbGF0YWJsZSB2YWx1ZXMKc3ViIF9NYXBBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0xhYmVsfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTGFiZWwhJwogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdGF0ZSAkTWFwVHJhbnNsYXRpb25zID0gewogICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdEZXBsb3ltZW50IFN0YXRlJywKICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnLAogICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJycsCiAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAnQ29uZmlnIEl0ZW0gTnVtYmVyJywKICAgICAgICBWZXJzaW9uU3RyaW5nICAgID0+ICdWZXJzaW9uIFN0cmluZycsCiAgICB9OwoKICAgIHJldHVybiAkTWFwVHJhbnNsYXRpb25zLT57ICRQYXJhbXtMYWJlbH0gfSAvLyAkUGFyYW17TGFiZWx9Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/LinkObject/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGxpbmsgb2JqZWN0IChjb25maWcgaXRlbSkKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtLT5uZXcoCiAgICAgICAgVXNlckxhbmd1YWdlID0+ICdlbicsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJMYW5ndWFnZSBVc2VySUQpKSB7CiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfSB8fCBkaWUgIkdvdCBubyAkTmVlZGVkISI7CiAgICB9CgogICAgIyBXZSBuZWVkIG91ciBvd24gTGF5b3V0T2JqZWN0IGluc3RhbmNlIHRvIGF2b2lkIGJsb2NrZGF0YSBjb2xsaXNpb25zCiAgICAjICAgd2l0aCB0aGUgbWFpbiBwYWdlLgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dC0+bmV3KCAleyRTZWxmfSApOwoKICAgICMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZXMKICAgICRTZWxmLT57T2JqZWN0RGF0YX0gPSB7CiAgICAgICAgT2JqZWN0ICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFJlYWxuYW1lICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdE5hbWUgPT4gJ1NvdXJjZU9iamVjdElEJywKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVGFibGVDcmVhdGVDb21wbGV4KCkKCnJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBibG9jayBkYXRhCgpSZXR1cm4KCiAgICBAQmxvY2tEYXRhID0gKAogICAgICAgIHsKCiAgICAgICAgICAgIE9iamVjdE5hbWUgID0+ICdDb25maWdJdGVtSUQnLAogICAgICAgICAgICBPYmplY3RJRCAgICA9PiAnMTIzJywKCiAgICAgICAgICAgIE9iamVjdCAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJ0NvbmZpZ0l0ZW0gQ29tcHV0ZXInLAogICAgICAgICAgICBIZWFkbGluZSAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAyMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMzAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnQ3VySW5jaVNpZ25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJzEyMycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTIzJywKICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0xMjMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1RoZSBOYW1lIG9mIHRoZSBDb25maWcgSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdJbiBSZXBhaXInLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAxLTAxIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgICAgID0+ICcyMzQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIzNCcsCiAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9MjM0JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdUaGUgTmFtZSBvZiB0aGUgQ29uZmlnIEl0ZW0gMjM0JywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA3LTExLTExIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKCiAgICBAQmxvY2tEYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlQ29tcGxleCgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVDb21wbGV4IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYW5kIHJlbWVtYmVyIHRoZSBEZXBsb3ltZW50IHN0YXRlIGNvbG9ycwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJFByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBhZGQgY29sb3Igc3R5bGUgZGVmaW5pdGlvbgogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBjb3ZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgICRTZWxmLT57RGVwbFN0YXRlQ29sb3JzfS0+eyREZXBsU3RhdGV9ID0gbGMgJENvbG9yOwogICAgfQoKICAgICMgR2V0IHRoZSBjb2x1bW5zIGNvbmZpZy4KICAgIG15ICRDb2x1bW5zQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTo6U2hvd0NvbHVtbnMnKTsKCiAgICAjIEdldCB0aGUgY29sdW1ucyBieSBjbGFzcyBjb25maWcuCiAgICBteSAkQ29sdW1uc0J5Q2xhc3NDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1uc0J5Q2xhc3MnKTsKCiAgICAjIEdldCBjb25maWd1cmVkIGNvbHVtbnMgYW5kIHJlb3JnYW5pemUgdGhlbSBieSBjbGFzcyBuYW1lLgogICAgbXkgJUNvbHVtbkJ5Q2xhc3M7CiAgICBteSAlU2lnbmFsQ29sdW1uTGlzdDsKICAgIGlmICggJENvbHVtbnNCeUNsYXNzQ29uZmlnICYmIHJlZiAkQ29sdW1uc0J5Q2xhc3NDb25maWcgZXEgJ0FSUkFZJyAmJiBAeyRDb2x1bW5zQnlDbGFzc0NvbmZpZ30gKSB7CgogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggQHskQ29sdW1uc0J5Q2xhc3NDb25maWd9ICkgewogICAgICAgICAgICBteSAoICRDbGFzcywgJENvbHVtbiApID0gc3BsaXQgLzo6LywgJE5hbWUsIDI7CgogICAgICAgICAgICBuZXh0IE5BTUUgaWYgISRDb2x1bW47CgogICAgICAgICAgICAjIElmIHNpZ25hbCBjb2x1bW5zIGFyZSBjb25maWd1cmVkIGp1c3QgZm9yIGNlcnRhaW4gY2xhc3NlcywgYWRkIHRoZW0gdG8gdGhlIGJlZ2lubmluZyBvZiBJdGVtQ29sdW1ucyBhcnJheSwKICAgICAgICAgICAgIyBub3QgdG8gdGhlIGFycmF5IHdpdGggb3RoZXIgY29sdW1ucy4KICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPnskQ29sdW1ufSA9IDE7CiAgICAgICAgICAgICAgICBuZXh0IE5BTUU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSB9LCAkQ29sdW1uOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvbnZlcnQgdGhlIGxpc3QKICAgIG15ICVMaW5rTGlzdDsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyREaXJlY3Rpb25MaXN0fSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRDbGFzcyA9ICREaXJlY3Rpb25MaXN0LT57JENvbmZpZ0l0ZW1JRH0tPntDbGFzc30gfHwgJyc7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRDbGFzczsKCiAgICAgICAgICAgICAgICAkTGlua0xpc3R7JENsYXNzfS0+eyRDb25maWdJdGVtSUR9LT57RGF0YX0gPSAkRGlyZWN0aW9uTGlzdC0+eyRDb25maWdJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15IEBCbG9ja0RhdGE7CiAgICBmb3IgbXkgJENsYXNzICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJUxpbmtMaXN0ICkgewoKICAgICAgICAjIGV4dHJhY3QgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtTGlzdCA9ICRMaW5rTGlzdHskQ2xhc3N9OwoKICAgICAgICAjIHRvIHN0b3JlIHRoZSBjb2x1bW4gaGVhZGxpbmUKICAgICAgICBteSBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgICMgY3JlYXRlIHRoZSBpdGVtIGxpc3QKICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKAogICAgICAgICAgICBzb3J0IHsgJENvbmZpZ0l0ZW1MaXN0LT57JGF9LT57RGF0YX0tPntOYW1lfSBjbXAgJENvbmZpZ0l0ZW1MaXN0LT57JGJ9LT57RGF0YX0tPntOYW1lfSB9CiAgICAgICAgICAgIGtleXMgJXskQ29uZmlnSXRlbUxpc3R9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY29sdW1uIGhlYWRsaW5lIGFycmF5IGlzIGVtcHR5IGZvciBlYWNoIGxvb3AKICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKCk7CgogICAgICAgICAgICBteSBASXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICgkQ29uZmlnSXRlbS0+e0NsYXNzfSk6ICRDb25maWdJdGVtLT57TmFtZX0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGNvbHVtbnMgZnJvbSAnTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zJyBzZXR0aW5nIHRvIHRoZSBjdXJyZW50IENJIGNsYXNzCiAgICAgICAgICAgICMgaWYgaXQgZG9lcyBub3QgY29udGFpbiB0aGVtLiBTaWduYWwgY29sdW1ucyBpcyBzYXZlZCBpbiBoYXNoIGJlY2F1c2UgdGhleSB3aWxsIGJlIGFkZGVkIGxhdGVyLgogICAgICAgICAgICBDT0xVTU5DT05GSUc6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggQHskQ29sdW1uc0NvbmZpZ30gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57JENvbHVtbn0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0sICRDb2x1bW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIHNpZ25hbCBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5IGlmIG5lZWRlZC4KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VyRGVwbFNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0N1ckRlcGxTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VySW5jaVNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZXNlIGNvbHVtbnMgd2lsbCBiZSBhZGRlZCBpZiBubyBjbGFzcyBiYXNlZCBjb2x1bW4gY29uZmlnIGlzIGRlZmluZWQKICAgICAgICAgICAgbXkgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbmZpZ0l0ZW0tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBleGlzdHMKICAgICAgICAgICAgIyBUT0RPOiBpbmNvcnBvcmF0ZSBkeW5hbWljIGZpZWxkIGRhdGEKICAgICAgICAgICAgaWYgKDApIHsgfQoKICAgICAgICAgICAgIyAgICAgICAgICAgIGlmICggJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICMgY29udmVydCB0aGUgWE1MIGRhdGEgaW50byBhIGhhc2gKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICBteSAkRXh0ZW5kZWRWZXJzaW9uRGF0YSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+WE1MRGF0YTJIYXNoKAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRWZXJzaW9uWE1MRGF0YS0+e1hNTERlZmluaXRpb259LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRWZXJzaW9uWE1MRGF0YS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoIEB7ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30gfSApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3Mgc29tZSBub24teG1sIGF0dHJpYnV0ZXMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmVyc2lvbi0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSB0aGUgQ0kgbmFtZQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpYWwgdHJhbnNsYXRpb24gaGFuZGxpbmcKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPnskQ29sdW1ufSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBoZWFkbGluZQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnICkgewogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGNvbHVtbgogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1Db2x1bW5zLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAkVmVyc2lvbi0+eyRDb2x1bW59LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnSW5jaWRlbnQgU3RhdGUnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDbGFzcycgKSB7CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgY29sdW1uCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRWZXJzaW9uLT57JENvbHVtbn0sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDbGFzcycsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWFsIGRhdGUvdGltZSBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDcmVhdGVUaW1lJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFZlcnNpb24tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYXNjaWkgdGV4dCBpbiBjYXNlIHRoZSB2YWx1ZSBjb250YWlucyBodG1sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57VmFsdWV9LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBhbGwgd2hpdGVzcGFjZSBhbmQgbmV3bGluZXMgdG8gc2luZ2xlIHNwYWNlcwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gc3sgXHMrIH17IH1neG1zOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkVmFsdWUsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeHRlbmRlZFZlcnNpb25EYXRhLT57JENvbHVtbn0tPntOYW1lfSB8fCAnJywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMgICAgICAgICAgICB9CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdCwKICAgICAgICAgICAgIyBzbyB0aGUgZGVmYXVsdCBjb2x1bW5zIHdpbGwgYmUgdXNlZAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgZGVmYXVsdCBjb2x1bW5zCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnM7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIGRlZmF1bHQgY29sdW1uIGhlYWRsaW5lcwogICAgICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhQEl0ZW1MaXN0OwoKICAgICAgICAjIGRlZmluZSB0aGUgYmxvY2sgZGF0YQogICAgICAgIG15ICVCbG9jayA9ICgKICAgICAgICAgICAgT2JqZWN0ICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICcgKCcgLiAkQ2xhc3MgLiAnKScsCiAgICAgICAgICAgIEhlYWRsaW5lICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gXEBJdGVtTGlzdCwKICAgICAgICApOwoKICAgICAgICAjIEFkZCAnQ3VySW5jaVNpZ25hbCcgYW5kICdDdXJEZXBsU2lnbmFsJyBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgaGVhZGxpbmUgaWYgbmVlZGVkLgogICAgICAgIGlmICggJFNpZ25hbENvbHVtbkxpc3R7JENsYXNzfS0+e0N1ckRlcGxTaWduYWx9ICkgewogICAgICAgICAgICB1bnNoaWZ0IEB7ICRCbG9ja3tIZWFkbGluZX0gfSwgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDIwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBpZiAoICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPntDdXJJbmNpU2lnbmFsfSApIHsKICAgICAgICAgICAgdW5zaGlmdCBAeyAkQmxvY2t7SGVhZGxpbmV9IH0sIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMjAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgY29sdW1uIGhlYWRsaW5lcwogICAgICAgIHB1c2ggQHsgJEJsb2Nre0hlYWRsaW5lfSB9LCBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgIHB1c2ggQEJsb2NrRGF0YSwgXCVCbG9jazsKICAgIH0KCiAgICByZXR1cm4gQEJsb2NrRGF0YTsKfQoKPWhlYWQyIFRhYmxlQ3JlYXRlU2ltcGxlKCkKCnJldHVybiBhIGhhc2ggd2l0aCB0aGUgbGluayBvdXRwdXQgZGF0YQoKUmV0dXJuCgogICAgJUxpbmtPdXRwdXREYXRhID0gKAogICAgICAgIE5vcm1hbDo6U291cmNlID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOjU1NTU1JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdDb25maWdJdGVtIyA1NTU1NTU6IFRoZSBjb25maWcgaXRlbSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDc3MgICAgID0+ICdzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2giJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ0k6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0NvbmZpZ0l0ZW0jIDIyMjIyOiBUaXRsZSBvZiBjb25maWcgbmFtZSAyMjIyMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUGFyZW50Q2hpbGQ6OlRhcmdldCA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDSTo3Nzc3NycsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnQ29uZmlnSXRlbSMgNzc3Nzc6IENvbmZpZ0l0ZW0gbmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICRMaW5rT2JqZWN0LT5UYWJsZUNyZWF0ZVNpbXBsZSgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVTaW1wbGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUxpbmtPdXRwdXREYXRhOwogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfSApIHsKCiAgICAgICAgIyBleHRyYWN0IGxpbmsgdHlwZSBMaXN0CiAgICAgICAgbXkgJExpbmtUeXBlTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX07CgogICAgICAgIGZvciBteSAkRGlyZWN0aW9uICggc29ydCBrZXlzICV7JExpbmtUeXBlTGlzdH0gKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgZGlyZWN0aW9uIGxpc3QKICAgICAgICAgICAgbXkgJERpcmVjdGlvbkxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn07CgogICAgICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWZXJzaW9uID0gJERpcmVjdGlvbkxpc3QtPnskQ29uZmlnSXRlbUlEfTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICVJdGVtID0gKAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOicgLiAkVmVyc2lvbi0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAiQ29uZmlnSXRlbSMgJFZlcnNpb24tPntOdW1iZXJ9ICgkVmVyc2lvbi0+e0NsYXNzfSk6ICRWZXJzaW9uLT57TmFtZX0iLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgICAgICAuICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1MaXN0LCBcJUl0ZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGl0ZW0gbGlzdCB0byBsaW5rIG91dHB1dCBkYXRhCiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YXsgJExpbmtUeXBlIC4gJzo6JyAuICREaXJlY3Rpb24gfS0+e0lUU01Db25maWdJdGVtfSA9IFxASXRlbUxpc3Q7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlTGlua091dHB1dERhdGE7Cn0KCj1oZWFkMiBDb250ZW50U3RyaW5nQ3JlYXRlKCkKCnJldHVybiBhIG91dHB1dCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+Q29udGVudFN0cmluZ0NyZWF0ZSgKICAgICAgICBDb250ZW50RGF0YSA9PiAkSGFzaFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ29udGVudFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29udGVudERhdGF9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb250ZW50RGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZXh0cmFjdCBjb250ZW50CiAgICBteSAkQ29udGVudCA9ICRQYXJhbXtDb250ZW50RGF0YX07CgogICAgaWYgKCAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJJbmNpU2lnbmFsJyAmJiAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN0cmluZzsKICAgIGlmICggJENvbnRlbnQtPntUeXBlfSBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CgogICAgICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICAgICAgaW5jaWRlbnQgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgIG9wZXJhdGlvbmFsID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgIHVua25vd24gICAgID0+ICdncmF5bGVkJywKICAgICAgICAgICAgd2FybmluZyAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBjdXJyZW50IGluY2lkZW50IHNpZ25hbAogICAgICAgICRDb250ZW50LT57Q3VySW5jaVN0YXRlVHlwZX0gfHw9ICd1bmtub3duJzsKICAgICAgICBteSAkQ3VySW5jaVNpZ25hbCA9ICRJbmNpU2lnbmFsc3sgJENvbnRlbnQtPntDdXJJbmNpU3RhdGVUeXBlfSB9OwogICAgICAgICRDdXJJbmNpU2lnbmFsIHx8PSAkSW5jaVNpZ25hbHN7dW5rbm93bn07CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+ICcKICAgICAgICAgICAgICAgIC4gJzxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+IDwvZGl2PicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkQ3VySW5jaVNpZ25hbCwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkQ29udGVudC0+e1R5cGV9IGVxICdDdXJEZXBsU2lnbmFsJyApIHsKCiAgICAgICAgIyBjb252ZXJ0IGRlcGxveW1lbnQgc3RhdGUgdG8gYSB3ZWIgc2FmZSBDU1MgY2xhc3MKICAgICAgICBteSAkRGVwbFN0YXRlID0gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJzsKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBnZXQgdGhlIGNvbG9yIG9mIHRoZSBkZXBseW1lbnQgc3RhdGUgaWYgZGVmaW5lZAogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9ICggJFNlbGYtPntEZXBsU3RhdGVDb2xvcnN9LT57JERlcGxTdGF0ZX0gfHwgJycgKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgbXkgJFRlbXBsYXRlID0gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+ICc7CgogICAgICAgICMgY2hlY2sgaWYgY29sb3IgaXMgZGVmaW5lZCBhbmQgc2V0IHRoZSBzdHlsZSBjbGFzcwogICAgICAgIGlmICgkRGVwbFN0YXRlQ29sb3IpIHsKICAgICAgICAgICAgJFRlbXBsYXRlIC49IDw8IkVORCI7CjxzdHlsZT4KICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIyREZXBsU3RhdGVDb2xvcjsKICAgIH0KPC9zdHlsZT4KRU5ECiAgICAgICAgfQoKICAgICAgICAkVGVtcGxhdGUgLj0gIjxzcGFuIGNsYXNzPVwiRGVwbFN0YXRlICREZXBsU3RhdGVcIj48L3NwYW4+IDwvZGl2PiI7CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJFRlbXBsYXRlLAogICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VsZWN0YWJsZU9iamVjdExpc3QoKQoKcmV0dXJuIGFuIGFycmF5IGhhc2ggd2l0aCBDPHNlbGVjdGFibGU+IG9iamVjdHMKClJldHVybgoKICAgIEBTZWxlY3RhYmxlT2JqZWN0TGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OjI1JywKICAgICAgICAgICAgVmFsdWUgPT4gJ0NvbmZpZ0l0ZW06OkNvbXB1dGVyJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjoyNicsCiAgICAgICAgICAgIFZhbHVlID0+ICdDb25maWdJdGVtOjpTb2Z0d2FyZScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6MjcnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQ29uZmlnSXRlbTo6TmV0d29yaycsCiAgICAgICAgfSwKICAgICk7CgogICAgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gJExpbmtPYmplY3QtPlNlbGVjdGFibGVPYmplY3RMaXN0KAogICAgICAgIFNlbGVjdGVkID0+ICRJZGVudGlmaWVyLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFNlbGVjdGFibGVPYmplY3RMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgaGVhZGxpbmUKICAgIG15IEBPYmplY3RTZWxlY3RMaXN0OwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIGlmICEkQ2xhc3NMaXN0OwogICAgcmV0dXJuIGlmIHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJzsKCiAgICAjIGdldCB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgc3Vib2JqZWN0cwogICAgbXkgJERlZmF1bHRTdWJvYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QnKSB8fCB7fTsKCiAgICBteSAkSGFzU2VsZWN0ZWRJdGVtOwoKICAgIENMQVNTSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgbGMgJENsYXNzTGlzdC0+eyRhfSBjbXAgbGMgJENsYXNzTGlzdC0+eyRifSB9IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKCiAgICAgICAgIyBzaG93IGNsYXNzIG9ubHkgaWYgdXNlciBoYXMgYWNjZXNzIHJpZ2h0cwogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhJEhhc0FjY2VzczsKCiAgICAgICAgbXkgJENsYXNzICAgICAgPSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IHx8ICcnOwogICAgICAgIG15ICRJZGVudGlmaWVyID0gJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gLiAnOjonIC4gJENsYXNzSUQ7CgogICAgICAgICMgc2V0IHNlbGVjdGVkIGZsYWcKICAgICAgICBteSAkU2VsZWN0ZWQ7CiAgICAgICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9ICkgewoKICAgICAgICAgICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9IGVxICRJZGVudGlmaWVyICkgewogICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17U2VsZWN0ZWR9IGVxICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9CiAgICAgICAgICAgICAgICAmJiAkRGVmYXVsdFN1Ym9iamVjdC0+eyAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgZGVmYXVsdCBjbGFzcyBuYW1lCiAgICAgICAgICAgICAgICBteSAkRGVmYXVsdENsYXNzID0gJERlZmF1bHRTdWJvYmplY3QtPnsgJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gfSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGNsYXNzCiAgICAgICAgICAgICAgICBpZiAoICREZWZhdWx0Q2xhc3MgZXEgJENsYXNzICkgewogICAgICAgICAgICAgICAgICAgICRTZWxlY3RlZCA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkU2VsZWN0ZWQpIHsKICAgICAgICAgICAgJEhhc1NlbGVjdGVkSXRlbSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSByb3cKICAgICAgICBteSAlUm93ID0gKAogICAgICAgICAgICBLZXkgICAgICA9PiAkSWRlbnRpZmllciwKICAgICAgICAgICAgVmFsdWUgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICc6OicgLiAkQ2xhc3MsCiAgICAgICAgICAgIFNlbGVjdGVkID0+ICRTZWxlY3RlZCwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBPYmplY3RTZWxlY3RMaXN0LCBcJVJvdzsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gJiYgISRIYXNTZWxlY3RlZEl0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAiTm8gdmFsaWQgc2VsZWN0aW9uIGZvciBsaW5rIG9iamVjdDogJyRQYXJhbXtTZWxlY3RlZH0nISBUaGUgY29uZmlndXJlZCBkZWZhdWx0IGNsYXNzIChMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0IyMjSVRTTUNvbmZpZ0l0ZW0pIG1heSBub3QgZXhpc3QuIiwKICAgICAgICApOwogICAgfQoKICAgICMgb25seSBhZGQgaGVhZGxpbmUgaWYgdGhlcmUgYXJlIGNvbmZpZ2l0ZW0gY2xhc3NlcwogICAgIyB3aGVyZSB0aGUgdXNlciBoYXMgdGhlIHBlcm1pc3Npb24gdG8gdXNlIHRoZW0KICAgIGlmIChAT2JqZWN0U2VsZWN0TGlzdCkgewoKICAgICAgICAjIGFkZCBoZWFkbGluZSBhcyBmaXJzdCBhcnJheSBlbGVtZW50CiAgICAgICAgdW5zaGlmdCBAT2JqZWN0U2VsZWN0TGlzdCwgewogICAgICAgICAgICBLZXkgICAgICA9PiAnLScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntSZWFsbmFtZX0sCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gQE9iamVjdFNlbGVjdExpc3Q7Cn0KCj1oZWFkMiBTZWFyY2hPcHRpb25MaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggc2VhcmNoIG9wdGlvbnMKClJldHVybgoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0NvbmZpZ0l0ZW0jJywKICAgICAgICAgICAgSW5wdXRTdHJnID0+ICRGb3JtU3RyaW5nLAogICAgICAgICAgICBGb3JtRGF0YSAgPT4gJzEyMzQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnQmxhQmxhJywKICAgICAgICB9LAogICAgKTsKCiAgICBAU2VhcmNoT3B0aW9uTGlzdCA9ICRMaW5rT2JqZWN0LT5TZWFyY2hPcHRpb25MaXN0KAogICAgICAgIFN1Yk9iamVjdCA9PiAnMjUnLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9wdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNlYXJjaCBvcHRpb24gbGlzdAogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lID0+ICdDb25maWdJdGVtIycsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOYW1lJywKICAgICAgICAgICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICBOYW1lID0+ICdEZXBsb3ltZW50IFN0YXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnTGlzdCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnTGlzdCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgb2JqZWN0IGRlcGVuZGVuY2UgYXR0cmlidXRlcwogICAgI2lmICggJFBhcmFte1N1Yk9iamVjdH0gKSB7CiAgICAjCiAgICAjICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICMgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICMgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIGlmICggJENsYXNzTGlzdCAmJiAkQ2xhc3NMaXN0IGVxICdIQVNIJyApIHsKICAgICMKICAgICMgICAgICAgICMgYWRkIGhlcmUgdGhlIHNlYXJjaCBhdHRyaWJ1dGVzIG9mIHRoZSBzdWJvYmplY3QhCiAgICAjICAgIH0KICAgICN9CgogICAgIyBhZGQgZm9ybWtleQogICAgZm9yIG15ICRSb3cgKEBTZWFyY2hPcHRpb25MaXN0KSB7CiAgICAgICAgJFJvdy0+e0Zvcm1LZXl9ID0gJ1NFQVJDSDo6JyAuICRSb3ctPntLZXl9OwogICAgfQoKICAgICMgYWRkIGZvcm0gZGF0YSBhbmQgaW5wdXQgc3RyaW5nCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKCiAgICAgICAgIyBwcmVwYXJlIHRleHQgaW5wdXQgZmllbGRzCiAgICAgICAgaWYgKCAkUm93LT57VHlwZX0gZXEgJ1RleHQnICkgewoKICAgICAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgICAgICRSb3ctPntGb3JtRGF0YX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKCiAgICAgICAgICAgICMgcGFyc2UgdGhlIGlucHV0IHRleHQgYmxvY2sKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0lucHV0VGV4dCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFJvdy0+e0Zvcm1EYXRhfSB8fCAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgaW5wdXQgc3RyaW5nCiAgICAgICAgICAgICRSb3ctPntJbnB1dFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0xpbmtPYmplY3QnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgbGlzdCBib3hlcwogICAgICAgIGlmICggJFJvdy0+e1R5cGV9IGVxICdMaXN0JyApIHsKCiAgICAgICAgICAgICMgZ2V0IGZvcm0gZGF0YQogICAgICAgICAgICBteSBARm9ybURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKICAgICAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9IFxARm9ybURhdGE7CgogICAgICAgICAgICAjIHByZXBhcmUgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICVMaXN0RGF0YTsKICAgICAgICAgICAgaWYgKCAkUm93LT57S2V5fSBlcSAnRGVwbFN0YXRlSURzJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICREZXBsU3RhdGVMaXN0ICYmIHJlZiAkRGVwbFN0YXRlTGlzdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJXskRGVwbFN0YXRlTGlzdH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcHJlcGFyZSBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIGVsc2lmICggJFJvdy0+e0tleX0gZXEgJ0luY2lTdGF0ZUlEcycgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgICAgICAgICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRJbmNpU3RhdGVMaXN0ICYmIHJlZiAkSW5jaVN0YXRlTGlzdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJXskSW5jaVN0YXRlTGlzdH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAgICAgJFJvdy0+e0lucHV0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJUxpc3REYXRhLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRSb3ctPntGb3JtRGF0YX0sCiAgICAgICAgICAgICAgICBTaXplICAgICAgID0+IDMsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBAU2VhcmNoT3B0aW9uTGlzdDsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminGenericInterfaceInvokerConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIj4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJHZW5lcmljSW50ZXJmYWNlIFdlYiBTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBCcmVhZGNydW1iTGluayA9IFN0cmluZygiQWRtaW5HZW5lcmljSW50ZXJmYWNlV2Vic2VydmljZSIpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCAnV2ViIFNlcnZpY2UgTWFuYWdlbWVudCcgKSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5XZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmsuY29weS5hcHBlbmQoICI7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9IiwgRGF0YS5XZWJzZXJ2aWNlSUQgKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIFNXSVRDSCBEYXRhLk1vZGUgJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEludm9rZXIiKSx9KSAlXQogICAgICAgIFslIENBU0UgJ0NoYW5nZScgJV0KICAgICAgICAgICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgSW52b2tlciIpKSAlXQogICAgICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBFZGl0VGl0bGUuYXBwZW5kKCAnOiAnLCBEYXRhLkludm9rZXIgKSwgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayB0byB3ZWIgc2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk1vZGUgPT0gJ0NoYW5nZScgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9ImJ1dHRvbiIgaWQ9IkRlbGV0ZUJ1dHRvbiI+PHNwYW4+IDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+IFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRGlhbG9nQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iV2FybmluZ0RpYWxvZyAiPiZuYnNwOzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iRGVsZXRlRGlhbG9nIiBjbGFzcz0iQ2VudGVyIFdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBpbnZva2VyPyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iQ2VudGVyIFdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFsbCBjb25maWd1cmF0aW9uIGRhdGEgd2lsbCBiZSBsb3N0LiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkludm9rZXIgRGV0YWlscyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgY2xhc3M9IlZhbGlkYXRlIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLk1vZGUgfCBodG1sICVdQWN0aW9uIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IldlYnNlcnZpY2VJRCIgdmFsdWU9IlslIERhdGEuV2Vic2VydmljZUlEIHwgaHRtbCAlXSIgaWQ9IldlYnNlcnZpY2VJRCIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJbnZva2VyVHlwZSIgdmFsdWU9IlslIERhdGEuSW52b2tlclR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCBpbnZva2VyIGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbnZva2VyIiBjbGFzcz0iTWFuZGF0b3J5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMgUmVnaXN0ZXJDaGFuZ2UgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5JbnZva2VyU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIgaWQ9Ikludm9rZXIiIG5hbWU9Ikludm9rZXIiIHZhbHVlPSJbJSBEYXRhLk5ld0ludm9rZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik9sZEludm9rZXIiIG5hbWU9Ik9sZEludm9rZXIiIHZhbHVlPSJbJSBEYXRhLkludm9rZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsbCB1cCBhbiBvcGVyYXRpb24gb2YgYSByZW1vdGUgd2ViIHNlcnZpY2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbnZva2VyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiUGxlYXNlIHByb3ZpZGUgYSB1bmlxdWUgbmFtZSBmb3IgdGhpcyB3ZWIgc2VydmljZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSW52b2tlclNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSB5b3UgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBSZWdpc3RlckNoYW5nZSIgbWF4bGVuZ3RoPSIyMDAiIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikludm9rZXJUeXBlRGlzcGxheSI+WyUgVHJhbnNsYXRlKCJJbnZva2VyIGJhY2tlbmQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgaWQ9Ikludm9rZXJUeXBlRGlzcGxheSIgdmFsdWU9IlslIERhdGEuSW52b2tlclR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBPVE9CTyBpbnZva2VyIGJhY2tlbmQgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRvIHByZXBhcmUgdGhlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgcmVtb3RlIHN5c3RlbSwgYW5kIHRvIHByb2Nlc3MgaXRzIHJlc3BvbnNlIGRhdGEuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXR0aW5nR2VuZXJhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdHZW5lcmFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlcXVlc3QiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVxdWVzdCBkYXRhIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNldHRpbmdSZXF1ZXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdMYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2V0dGluZ0hUTUwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nRXhwbGFuYXRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNlcnZlckVycm9yKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZ1JlcXVlc3QiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVxdWVzdCIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1hcHBpbmdPdXRib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBvdXRnb2luZyByZXF1ZXN0IGRhdGEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NYXBwaW5nT3V0Ym91bmRTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1hcHBpbmdPdXRib3VuZENvbmZpZ3VyZUJ1dHRvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iTWFwcGluZ091dGJvdW5kQ29uZmlnRGlhbG9nIiB2YWx1ZT0iWyUgRGF0YS5NYXBwaW5nT3V0Ym91bmRDb25maWdEaWFsb2cgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJIaWRlT25DaGFuZ2UgQ2FsbEZvckFjdGlvbiBJbkxpbmUiIGlkPSJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+ClslIFJlbmRlckJsb2NrRW5kKCJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIGRhdGEgZnJvbSB0aGUgaW52b2tlciBvZiBPVE9CTyB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIG1hcHBpbmcsIHRvIHRyYW5zZm9ybSBpdCB0byB0aGUga2luZCBvZiBkYXRhIHRoZSByZW1vdGUgc3lzdGVtIGV4cGVjdHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNYXBwaW5nSW5ib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBpbmNvbWluZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTWFwcGluZ0luYm91bmRTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJNYXBwaW5nSW5ib3VuZENvbmZpZ0RpYWxvZyIgdmFsdWU9IlslIERhdGEuTWFwcGluZ0luYm91bmRDb25maWdEaWFsb2cgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJIaWRlT25DaGFuZ2UgQ2FsbEZvckFjdGlvbiBJbkxpbmUiIGlkPSJNYXBwaW5nSW5ib3VuZENvbmZpZ3VyZUJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNvbmZpZ3VyZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSByZXNwb25zZSBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbWFwcGluZywgdG8gdHJhbnNmb3JtIGl0IHRvIHRoZSBraW5kIG9mIGRhdGEgdGhlIGludm9rZXIgb2YgT1RPQk8gZXhwZWN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3BvbnNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MgZm9yIGluY29taW5nIHJlc3BvbnNlIGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZ1Jlc3BvbnNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdMYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2V0dGluZ0hUTUwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nRXhwbGFuYXRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNlcnZlckVycm9yKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZ1Jlc29uc2UiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzcG9uc2UiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkV2ZW50IGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXZlbnRzVGFibGUiPlslIFRyYW5zbGF0ZSgiRXZlbnQgVHJpZ2dlcnMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFc1MHBjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBXNTBwYyIgaWQ9IkV2ZW50c1RhYmxlIiBzdW1tYXJ5PSJMaXN0IG9mIGFsbCBjb25maWd1cmVkIGV2ZW50cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJFdmVudCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDZW50ZXIiPlslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJDb25kaXRpb24iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkVkaXQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkV2ZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkFzQmxvY2siPlslIERhdGEuRXZlbnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKERhdGEuQXN5bmNocm9ub3VzKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoRGF0YS5Db25kaXRpb24pIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iUGVuY2lsIEVkaXRFdmVudCBIaWRlT25DaGFuZ2UiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRXZlbnQ7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9WyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCBodG1sICVdO0ludm9rZXI9WyUgRGF0YS5JbnZva2VyIHwgaHRtbCAlXTtFdmVudD1bJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRWRpdCB0aGlzIGV2ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRWRpdCB0aGlzIGV2ZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZWRpdCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iRGVsZXRlRXZlbnRbJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgY2xhc3M9IlRyYXNoQ2FuIERlbGV0ZUV2ZW50IEhpZGVPbkNoYW5nZSIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIHRoaXMgZXZlbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyBldmVudCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRXZlbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgaW52b2tlciB3aWxsIGJlIHRyaWdnZXJlZCBieSB0aGUgY29uZmlndXJlZCBldmVudHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRXZlbnREaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQgPSJEZWxldGVFdmVudERpYWxvZyIgY2xhc3M9IklubmVyQ29udGVudCBHZW5lcmljSW50ZXJmYWNlRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ildhcm5pbmdEaWFsb2cgIj4mbmJzcDs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+WyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZXZlbnQgdHJpZ2dlcj8iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJFdmVudFR5cGUiPlslIFRyYW5zbGF0ZSgiQWRkIEV2ZW50IFRyaWdnZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkV2ZW50VHlwZVN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRBZGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXZlbnRTdHJnICVdClslIFJlbmRlckJsb2NrRW5kKCJFdmVudEFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iQXN5bmNocm9ub3VzIiBjaGVja2VkIGNsYXNzPSJHZW5lcmljSW50ZXJmYWNlU3BhY2luZyIgbmFtZT0iQXN5bmNocm9ub3VzIj48bGFiZWwgZm9yPSJBc3luY2hyb25vdXMiPlslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9IkFkZEV2ZW50IiBjbGFzcz0iQWRkIEdlbmVyaWNJbnRlcmZhY2VTcGFjaW5nIEhpZGVPbkNoYW5nZSIgbmFtZT0iQWRkRXZlbnQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkFkZCBFdmVudCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJBZGQgRXZlbnQiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVG8gYWRkIGEgbmV3IGV2ZW50IHNlbGVjdCB0aGUgZXZlbnQgb2JqZWN0IGFuZCBldmVudCBuYW1lIGFuZCBjbGljayBvbiB0aGUgXCIrXCIgYnV0dG9uIikgfCBodG1sICVdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIGV2ZW50IHRyaWdnZXJzIGFyZSBoYW5kbGVkIGJ5IHRoZSBPVE9CTyBTY2hlZHVsZXIgRGFlbW9uIGluIGJhY2tncm91bmQgKHJlY29tbWVuZGVkKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTeW5jaHJvbm91cyBldmVudCB0cmlnZ2VycyB3b3VsZCBiZSBwcm9jZXNzZWQgZGlyZWN0bHkgZHVyaW5nIHRoZSB3ZWIgcmVxdWVzdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSBhbmQgZmluaXNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminGenericInterfaceOperationConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIj4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJHZW5lcmljSW50ZXJmYWNlIFdlYiBTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBCcmVhZGNydW1iTGluayA9IFN0cmluZygiQWRtaW5HZW5lcmljSW50ZXJmYWNlV2Vic2VydmljZSIpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCAnV2ViIFNlcnZpY2UgTWFuYWdlbWVudCcgKSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5XZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmsuY29weS5hcHBlbmQoICI7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9IiwgRGF0YS5XZWJzZXJ2aWNlSUQgKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIFNXSVRDSCBEYXRhLk1vZGUgJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIE9wZXJhdGlvbiIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBPcGVyYXRpb24iKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5PcGVyYXRpb24gKSwgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayB0byB3ZWIgc2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk1vZGUgPT0gJ0NoYW5nZScgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9ImJ1dHRvbiIgaWQ9IkRlbGV0ZUJ1dHRvbiI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iIGlkPSJEZWxldGVEaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJXYXJuaW5nRGlhbG9nICI+Jm5ic3A7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJEZWxldGVEaWFsb2ciIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIG9wZXJhdGlvbj8iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkNlbnRlciBXYXJuaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBbGwgY29uZmlndXJhdGlvbiBkYXRhIHdpbGwgYmUgbG9zdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk9wZXJhdGlvbiBEZXRhaWxzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBjbGFzcz0iVmFsaWRhdGUiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlslIERhdGEuTW9kZSB8IGh0bWwgJV1BY3Rpb24iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iV2Vic2VydmljZUlEIiB2YWx1ZT0iWyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCBodG1sICVdIiBpZD0iV2Vic2VydmljZUlEIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik9wZXJhdGlvblR5cGUiIHZhbHVlPSJbJSBEYXRhLk9wZXJhdGlvblR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCBvcGVyYXRpb24gZGF0YSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9wZXJhdGlvbiIgY2xhc3M9Ik1hbmRhdG9yeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFJlZ2lzdGVyQ2hhbmdlIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuT3BlcmF0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIgaWQ9Ik9wZXJhdGlvbiIgbmFtZT0iT3BlcmF0aW9uIiB2YWx1ZT0iWyUgRGF0YS5OZXdPcGVyYXRpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik9sZE9wZXJhdGlvbiIgbmFtZT0iT2xkT3BlcmF0aW9uIiB2YWx1ZT0iWyUgRGF0YS5PcGVyYXRpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsbCB1cCB0aGlzIHdlYiBzZXJ2aWNlIG9wZXJhdGlvbiBmcm9tIGEgcmVtb3RlIHN5c3RlbS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik9wZXJhdGlvbkVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIlBsZWFzZSBwcm92aWRlIGEgdW5pcXVlIG5hbWUgZm9yIHRoaXMgd2ViIHNlcnZpY2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik9wZXJhdGlvblNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSB5b3UgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBSZWdpc3RlckNoYW5nZSIgbWF4bGVuZ3RoPSIyMDAiIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9wZXJhdGlvblR5cGVEaXNwbGF5Ij5bJSBUcmFuc2xhdGUoIk9wZXJhdGlvbiBiYWNrZW5kIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiByZWFkb25seSBjbGFzcz0iVzUwcGMiIGlkPSJPcGVyYXRpb25UeXBlRGlzcGxheSIgdmFsdWU9IlslIERhdGEuT3BlcmF0aW9uVHlwZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIE9UT0JPIG9wZXJhdGlvbiBiYWNrZW5kIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbnRlcm5hbGx5IHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QsIGdlbmVyYXRpbmcgZGF0YSBmb3IgdGhlIHJlc3BvbnNlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZ0dlbmVyYWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlNldHRpbmdOYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0xhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXR0aW5nSFRNTCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdFeHBsYW5hdGlvbikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLlNldHRpbmdOYW1lIHwgaHRtbCAlXUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2VydmVyRXJyb3IpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXR0aW5nR2VuZXJhbCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXF1ZXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXR0aW5nUmVxdWVzdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdSZXF1ZXN0IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlcXVlc3QiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiTWFwcGluZyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNYXBwaW5nSW5ib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NYXBwaW5nSW5ib3VuZFN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWFwcGluZ0luYm91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik1hcHBpbmdJbmJvdW5kQ29uZmlnRGlhbG9nIiB2YWx1ZT0iWyUgRGF0YS5NYXBwaW5nSW5ib3VuZENvbmZpZ0RpYWxvZyB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IkhpZGVPbkNoYW5nZSBDYWxsRm9yQWN0aW9uIElubGluZSIgaWQ9Ik1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFwcGluZ0luYm91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIHJlcXVlc3QgZGF0YSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIG1hcHBpbmcsIHRvIHRyYW5zZm9ybSBpdCB0byB0aGUga2luZCBvZiBkYXRhIE9UT0JPIGV4cGVjdHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXNwb25zZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNldHRpbmdSZXNwb25zZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdSZXNvbnNlIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlc3BvbnNlIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1hcHBpbmdPdXRib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTWFwcGluZ091dGJvdW5kU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik1hcHBpbmdPdXRib3VuZENvbmZpZ0RpYWxvZyIgdmFsdWU9IlslIERhdGEuTWFwcGluZ091dGJvdW5kQ29uZmlnRGlhbG9nIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iSGlkZU9uQ2hhbmdlIENhbGxGb3JBY3Rpb24gSW5saW5lIiBpZD0iTWFwcGluZ091dGJvdW5kQ29uZmlndXJlQnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFwcGluZ091dGJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSByZXNwb25zZSBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbWFwcGluZywgdG8gdHJhbnNmb3JtIGl0IHRvIHRoZSBraW5kIG9mIGRhdGEgdGhlIHJlbW90ZSBzeXN0ZW0gZXhwZWN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QW5kQ29udGludWUiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluR2VuZXJpY0ludGVyZmFjZVdlYnNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9WyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCB1cmkgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdDb25maWcgSXRlbSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElGIChEYXRhLkNsYXNzU2VsZWN0ZWQpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5DbGFzc1NlbGVjdGVkLk5hbWUsCiAgICAgICAgICAgIExpbmsgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPUNsYXNzRGVmaW5pdGlvbkxpc3Q7Q2xhc3NJRD0nIF8gRGF0YS5DbGFzc1NlbGVjdGVkLklECiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElGIChEYXRhLlJvbGVTZWxlY3RlZCkgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgTmFtZSA9PiBEYXRhLlJvbGVTZWxlY3RlZC5OYW1lLAogICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtO1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkxpc3Q7Um9sZUlEPScgXyBEYXRhLlJvbGVTZWxlY3RlZC5JRAogICAgICAgIH0pICVdCiAgICBbJSBFTkQgJV0KCiAgICBbJSBJRiAoRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZCkgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgTmFtZSA9PiAnVmVyc2lvbiAnIF8gRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZC5WZXJzaW9uLAogICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtO1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25WaWV3O0RlZmluaXRpb25JRD0nIF8gRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZC5JRAogICAgICAgIH0pICVdCiAgICBbJSBFTkQgJV0KCiAgICBbJSBJRiAoRGF0YS5Sb2xlVmVyc2lvblNlbGVjdGVkKSAlXQogICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goewogICAgICAgICAgICBOYW1lID0+ICdWZXJzaW9uICcgXyBEYXRhLlJvbGVWZXJzaW9uU2VsZWN0ZWQuVmVyc2lvbiwKICAgICAgICAgICAgTGluayA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbTtTdWJhY3Rpb249Um9sZURlZmluaXRpb25WaWV3O0RlZmluaXRpb25JRD0nIF8gRGF0YS5Sb2xlVmVyc2lvblNlbGVjdGVkLklECiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElGIChEYXRhLkVkaXQpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgIE5hbWUgPT4gJ0VkaXQgZGVmaW5pdGlvbicsCiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NvbnRlbnQnPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJnZXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQ2xhc3NEZWZpbml0aW9uQ2hhbmdlIi8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSBjbGFzcyBkZWZpbml0aW9uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9ImdldCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJSb2xlRGVmaW5pdGlvbkNoYW5nZSIvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5Sb2xlT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSByb2xlIGRlZmluaXRpb24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkNsYXNzRXhwb3J0Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uTXVsdFN0cmcgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkV4cG9ydElERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhwb3J0SURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiBpZD0iRXhwb3J0IiB2YWx1ZT0iRXhwb3J0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwb3J0IENsYXNzZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgoKClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0IFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkNsYXNzSW1wb3J0Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXhhbXBsZUNsYXNzTGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhhbXBsZUNsYXNzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhhbXBsZUNsYXNzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIiBuYW1lPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIiB2YWx1ZT0iMSIgY2hlY2tlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIj5bJSBUcmFuc2xhdGUoIlVwZGF0ZSBleGlzdGluZyBlbnRpdGllcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nIycgaWQ9J0ltcG9ydCcgY2xhc3M9J0NhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtdXBsb2FkJz48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdMaXN0IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpc3QiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25MaXN0O0NsYXNzSUQ9WyUgRGF0YS5DbGFzc0lEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gUm9sZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3Um9sZUxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkxpc3Q7Um9sZUlEPVslIERhdGEuUm9sZUlEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3Um9sZUxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGlzdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzRGVmaW5pdGlvbkxpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVzUwcGMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzc0RlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249Q2xhc3NEZWZpbml0aW9uVmlldztEZWZpbml0aW9uSUQ9WyUgRGF0YS5EZWZpbml0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuQ2xhc3MgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLlZlcnNpb24gfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsYXNzRGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsYXNzRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb2xlRGVmaW5pdGlvbkxpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVzUwcGMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gUm9sZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJvbGVEZWZpbml0aW9uTGlzdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVJvbGVEZWZpbml0aW9uVmlldztEZWZpbml0aW9uSUQ9WyUgRGF0YS5EZWZpbml0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuUm9sZSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlQnlVc2VyIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm9sZURlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb2xlRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzc0RlZmluaXRpb25WaWV3IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlZpZXciKSB8IGh0bWwgJV06IDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3NEZWZpbml0aW9uVmlldyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvbGVEZWZpbml0aW9uVmlldyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJWaWV3IikgfCBodG1sICVdOiA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIFJvbGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm9sZURlZmluaXRpb25WaWV3IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ2xhc3NEZWZpbml0aW9uQ2hhbmdlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkNoYW5nZSIpIHwgaHRtbCAlXTogPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJDbGFzc0RlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ2xhc3NJRCIgdmFsdWU9IlslIERhdGEuQ2xhc3NJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKWyUgSUYgRGF0YS5FcnJvciAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgV2lkZ2V0TWVzc2FnZSBUb3AgRXJyb3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+WyUgVHJhbnNsYXRlKERhdGEuRXJyb3IsIERhdGEuRXJyb3JBcmcxLCBEYXRhLkVycm9yQXJnMikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIEVORCAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2xhc3MgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvZGVNaXJyb3JDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNNVG9vbGJhckNvbnRhaW5lciIgY2xhc3M9IkNNVG9vbGJhckNvbnRhaW5lciBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDTVRvb2xiYXJJY29ucyIgY2xhc3M9IkNNVG9vbGJhckljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXV0byBJbmRlbnQgQ29kZSIpIHwgaHRtbCAlXSIgY2xhc3M9IkNNSW5kZW50IiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuSW5kZW50Q29kZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbW1lbnQvVW5jb21tZW50IENvZGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTUNvbW1lbnQiIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5Ub29nbGVDb21tZW50KCk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2giIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5TZWFyY2goKTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggJiBSZXBsYWNlIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2hSZXBsYWNlIiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuU2VhcmNoUmVwbGFjZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBBbGwiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTVNlbGVjdEFsbCIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlNlbGVjdEFsbCgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgU2NyZWVuIikgfCBodG1sICVdIiBjbGFzcz0iQ01NYXhpbWl6ZSIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlRvb2dsZUZ1bGxTY3JlZW4oJ01heGltaXplJyk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgY2xhc3M9IiBDb2RlTWlycm9yRWRpdG9yIFslIElGIERhdGEuRXJyb3IgJV1bJSBEYXRhLkVycm9yQ2xhc3NlcyAlXVslIEVORCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSBlZGl0aW5nIGZpZWxkIGFsbG93cyB5b3UgdG8gdXNlIGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBhdXRvbWF0aWMgZm9ybWF0dGluZywgd2luZG93IHJlc2l6ZSBhcyB3ZWxsIGFzIHRhZy0gYW5kIGJyYWNrZXQtY29tcGxldGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXRBbmRDb250aW51ZSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc0RlZmluaXRpb25DaGFuZ2UiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb2xlRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJDaGFuZ2UiKSB8IGh0bWwgJV06IDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iUm9sZURlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUm9sZUlEIiB2YWx1ZT0iWyUgRGF0YS5Sb2xlSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29udGludWVBZnRlclNhdmUiIGlkPSJDb250aW51ZUFmdGVyU2F2ZSIgdmFsdWU9IiIvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KClslIElGIERhdGEuRXJyb3IgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFdpZGdldE1lc3NhZ2UgVG9wIEVycm9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPlslIFRyYW5zbGF0ZShEYXRhLkVycm9yLCBEYXRhLkVycm9yQXJnMSwgRGF0YS5FcnJvckFyZzIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBFTkQgJV0KCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBSb2xlIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJvbGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvZGVNaXJyb3JDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNNVG9vbGJhckNvbnRhaW5lciIgY2xhc3M9IkNNVG9vbGJhckNvbnRhaW5lciBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDTVRvb2xiYXJJY29ucyIgY2xhc3M9IkNNVG9vbGJhckljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXV0byBJbmRlbnQgQ29kZSIpIHwgaHRtbCAlXSIgY2xhc3M9IkNNSW5kZW50IiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuSW5kZW50Q29kZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbW1lbnQvVW5jb21tZW50IENvZGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTUNvbW1lbnQiIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5Ub29nbGVDb21tZW50KCk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2giIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5TZWFyY2goKTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggJiBSZXBsYWNlIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2hSZXBsYWNlIiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuU2VhcmNoUmVwbGFjZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBBbGwiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTVNlbGVjdEFsbCIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlNlbGVjdEFsbCgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgU2NyZWVuIikgfCBodG1sICVdIiBjbGFzcz0iQ01NYXhpbWl6ZSIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlRvb2dsZUZ1bGxTY3JlZW4oJ01heGltaXplJyk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgY2xhc3M9IiBDb2RlTWlycm9yRWRpdG9yIFslIElGIERhdGEuRXJyb3IgJV1bJSBEYXRhLkVycm9yQ2xhc3NlcyAlXVslIEVORCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSBlZGl0aW5nIGZpZWxkIGFsbG93cyB5b3UgdG8gdXNlIGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBhdXRvbWF0aWMgZm9ybWF0dGluZywgd2luZG93IHJlc2l6ZSBhcyB3ZWxsIGFzIHRhZy0gYW5kIGJyYWNrZXQtY29tcGxldGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXRBbmRDb250aW51ZSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb2xlRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentDashboardITSMConfigItemGeneric.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhciIpICVdCjxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgIFslIERhdGEuU2l0ZU5hdkJhciAlXQo8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhciIpICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlciIpICVdCgojPCEtLSBUaGlzIGZvcm0gd2lsbCBub3QgYmUgc3VibWl0dGVkLCB3ZSBuZWVkIGl0IGZvciB0aGUgQUpBWCBjYWxscy4gLS0+Cjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkN1c3RvbWVySUQiIHZhbHVlPSJbJSBEYXRhLkN1c3RvbWVySUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lclVzZXJJRCIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJVc2VySUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGaWx0ZXJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRmlsdGVyVmFsdWUgfCBodG1sICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWRkaXRpb25hbEZpbHRlclslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJBZGRpdGlvbmFsRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuQWRkaXRpb25hbEZpbHRlclZhbHVlIHwgaHRtbCAlXSIgLz4KICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICA8dGhlYWQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRyPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YSIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkRhc2hib2FyZEhlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGlkPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdRmxhZ092ZXJ2aWV3Q29udHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+PC9hPgoKWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YUxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlck1ldGFFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlckNvbHVtbk5hbWUpIHwgaHRtbCAlXSI+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJNZXRhRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1OdW1iZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgQ29uZmlnSXRlbU51bWJlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJDb25maWdJdGVtTnVtYmVyIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iQ29uZmlnSXRlbU51bWJlck92ZXJ2aWV3Q29udHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IkNvbmZpZ0l0ZW1OdW1iZXJPdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBDb25maWcoIkNvbmZpZ0l0ZW06Okhvb2siKSAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1OdW1iZXJDb2x1bW4iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJJREF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkRlbGV0ZUZpbHRlciBIaWRkZW4iPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rQ3VzdG9tZXJVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua0N1c3RvbWVyVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iRGVsZXRlRmlsdGVyIEhpZGRlbiI+PGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb25maWdJdGVtSGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKICAgICAgICAgICAgPC90cj4KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlciIpICVdCiAgICAgICAgPC90aGVhZD4KCiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1JvdyIpICVdCiAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGEiKSAlXQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJbJSBEYXRhLkNsYXNzVGFibGUgfCBodG1sICVdIEZsYWdzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93TWV0YUltYWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DbGFzc1NwYW4gfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNSb3dNZXRhIikgJV0KCiMgICAgICAgICAgICA8dGQgY2xhc3M9IlcxMHBjIj4KIyAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuQ29uZmlnSXRlbU51bWJlciB8IGh0bWwgJV08L2E+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkIGNsYXNzPSJXNTBwYyI+CiMgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg3MCkgfCBodG1sICVdPC9kaXY+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkPlslIERhdGEuVGltZSB8IGh0bWwgJV08L3RkPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb25maWdJdGVtQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb25maWdJdGVtTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1OdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtU2lnbmFsIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuU3RhdGUgfCBodG1sICVdIiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5TaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuV2hvbGVUaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbVRpdGxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5UcmFuc2xhdGFibGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5HZW5lcmljVmFsdWUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5UaW1lIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRXNjYWxhdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5HZW5lcmljVmFsdWUgfCBodG1sICVdIiBjbGFzcz0iWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRXNjYWxhdGlvbiIpICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1Db2x1bW4iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iICB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGQiKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1JvdyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljTm9uZSIpICVdCiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQXV0b0NvbHNwYW4iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgibm9uZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljTm9uZSIpICVdCiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CjwvZm9ybT4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemAdd.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMT5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXTwvaDE+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyQ2xhc3NlcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIENsYXNzZXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyQ2xhc3NlcyIgY2xhc3M9IkZpbHRlckJveCIgbmFtZT0iRmlsdGVyQ2xhc3NlcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBDbGFzc2VzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJKdXN0IHN0YXJ0IHR5cGluZyB0byBmaWx0ZXIuLi4iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiSGludCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBpZD0iQ2xhc3NlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlcxMDBwYyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0l0ZW1MaXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPVslIERhdGEuQ2xhc3NJRCB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3SXRlbUxpc3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemBulk.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrQWN0aW9uIikgJV0KPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9ImNvbXBvc2UiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJEbyIvPgoKICAgIDxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uIikgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlVzZWRDb25maWdJdGVtSUQiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiVXNlZENvbmZpZ0l0ZW1JRCIpICVdCgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEIj5bJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jaVN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuSW5jaVN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkxpbmtUb2dldGhlciI+WyUgVHJhbnNsYXRlKCJMaW5rIHRvZ2V0aGVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUb2dldGhlclllc05vT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGlua1RvZ2V0aGVyTGlua1R5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMaW5rVG9nZXRoZXJBbm90aGVyIj5bJSBUcmFuc2xhdGUoIkxpbmsgdG8gYW5vdGhlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJbJSBEYXRhLkxpbmtUb2dldGhlckFub3RoZXJJbnZhbGlkIHwgaHRtbCAlXSBXMjVwYyIgaWQ9IkxpbmtUb2dldGhlckFub3RoZXIiIG5hbWU9IkxpbmtUb2dldGhlckFub3RoZXIiIHZhbHVlPSJbJSBEYXRhLkxpbmtUb2dldGhlckFub3RoZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkxpbmtUb2dldGhlckFub3RoZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgRGF0YS5EeW5hbWljRmllbGRIVE1MICVdCiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJzdWJtaXRSaWNoVGV4dCIgYWNjZXNza2V5PSJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0gKGcpIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsa0FjdGlvbiIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemDelete.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk51bWJlcikgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgoKPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyIpIHwgaHRtbCAlXQo8L3A+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFydE5vcm1hbCIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5OdW1iZXIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L2gxPgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGFydE5vcm1hbCIpICVdCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkNsYXNzSXRlbSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiIGlkPSJDbGFzc0l0ZW0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFydFNtYWxsIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuTnVtYmVyKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5DbGFzcykgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTY3JlZW5UeXBlIiB2YWx1ZT0iUG9wdXAiLz4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXJ0U21hbGwiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkR1cGxpY2F0ZUlEIiB2YWx1ZT0iWyUgRGF0YS5EdXBsaWNhdGVJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUm93TmFtZUludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0iKSB8IGh0bWwgJV0iWyUgSUYgRGF0YS5SZWFkb25seSAlXSByZWFkb25seVslIEVORCAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93TmFtZUVycm9yRGVmYXVsdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRGVmYXVsdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyIsIERhdGEuRHVwbGljYXRlcykgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRHVwbGljYXRlcyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvclJlZ0V4IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLlJlZ0V4RXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dOYW1lRXJyb3JSZWdFeCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93VmVyc2lvblN0cmluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlZlcnNpb25TdHJpbmciPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVmVyc2lvbiBOdW1iZXIiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWZXJzaW9uU3RyaW5nIiBpZD0iVmVyc2lvblN0cmluZyIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUm93VmVyc2lvblN0cmluZ0ludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IlslIERhdGEuVmVyc2lvblN0cmluZyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU3RyaW5nRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93VmVyc2lvblN0cmluZ0Vycm9yRGVmYXVsdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU3RyaW5nU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93VmVyc2lvblN0cmluZ0Vycm9yRGVmYXVsdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVmVyc2lvblN0cmluZ1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMiLCBEYXRhLkR1cGxpY2F0ZXMpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93VmVyc2lvblN0cmluZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd0RlcGxTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkRlcGxTdGF0ZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgU3RhdGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGVwbFN0YXRlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiID48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGVwbFN0YXRlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3dJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJJbmNpU3RhdGVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbmNpU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbmNpU3RhdGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbmNpU3RhdGVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd0luY2lTdGF0ZSIpICVdCgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd0Rlc2NyaXB0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlc2NyaXB0aW9uIj5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSaWNoVGV4dEZpZWxkIiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJEZXNjcmlwdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFslIERhdGEuUmljaFRleHRJbnZhbGlkIHwgaHRtbCAlXSIgbmFtZT0iRGVzY3JpcHRpb24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSB8IGh0bWwgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dEZXNjcmlwdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJTkNMVURFICJGb3JtRWxlbWVudHMvQXR0YWNobWVudExpc3QudHQiICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iU3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QnV0dG9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkNhbmNlbEJ1dHRvbiIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbmRTbWFsbCIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kU21hbGwiKSAlXQogICAgICAgIDwvZm9ybT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRW5kTm9ybWFsIikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkVuZE5vcm1hbCIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemHistory.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8IS0tIHN0YXJ0IGZvcm0gLS0+CjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMiLCBEYXRhLk5hbWUpIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJIaXN0b3J5IENvbnRlbnQiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJDb25maWd1cmF0aW9uIEl0ZW0gSGlzdG9yeSIgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiWm9vbSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlVzZXIiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDcmVhdGV0aW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5IaXN0b3J5VHlwZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iTGlua1pvb21WaWV3IEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEICVdIj5bJSBUcmFuc2xhdGUoIlpvb20gdmlldyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZW5kIGZvcm0gLS0+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewNavBar.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhciIpICVdCjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiBbJSBEYXRhLlZpZXcgfCBodG1sICVdIj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZU5hbWUpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuVGl0bGVWYWx1ZSkgfCBodG1sICVdPC9oMT4KCiAgICBbJSBEYXRhLkRhdGFJblRoZU1pZGRsZSAlXQoKICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3Q29udHJvbCIgaWQ9Ik92ZXJ2aWV3Q29udHJvbCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXUNhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08c3Bhbj5bJSBEYXRhLkNvdW50IHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV1DYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAtClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBpZD0iSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdIFslIERhdGEuUHJvZmlsZU5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ29udGV4dEZ1bmN0aW9ucyI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd1JlbW92ZUNvbHVtbkZpbHRlcnMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyICVdO0NhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIGFjdGl2ZSBmaWx0ZXJzIGZvciB0aGlzIHNjcmVlbi4iKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd1JlbW92ZUNvbHVtbkZpbHRlcnMiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZXR0aW5ncyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29nIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZ092ZXJ2aWV3WyUgRGF0YS5WaWV3IHwgaHRtbCAlXSIgY2xhc3M9IldpZGdldFNldHRpbmdzRm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50UHJlZmVyZW5jZXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVXBkYXRlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3VwIiB2YWx1ZT0iWyUgRGF0YS5Hcm91cCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmVkaXJlY3RVUkwiIHZhbHVlPSJbJSBEYXRhLlJlcXVlc3RlZFVSTCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUHJlZmVyZW5jZXNLZXkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkZpbHRlckNvbHVtblNldHRpbmdzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJDb2x1bW5zRW5hYmxlZEpTT04iIHZhbHVlPSJbJSBEYXRhLkNvbHVtbnNFbmFibGVkIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJDb2x1bW5zQXZhaWxhYmxlSlNPTiIgdmFsdWU9IlslIERhdGEuQ29sdW1uc0F2YWlsYWJsZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IlslIERhdGEuR3JvdXBOYW1lIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRmlsdGVyQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5GaWx0ZXJBY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkRvbnRQcmludCIgZm9yPSJbJSBEYXRhLk5hbWVQcmVmIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuRGVzYykgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBEb250UHJpbnQgTGF5b3V0R3JpZCBBbGxvY2F0aW9uTGlzdENvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+WyUgVHJhbnNsYXRlKCJBdmFpbGFibGUgQ29sdW1ucyIpIHwgaHRtbCAlXTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpbHRlcklucHV0Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iRmlsdGVyQXZhaWxhYmxlRmllbGRzIiBuYW1lPSJGaWx0ZXJBdmFpbGFibGVGaWVsZHMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZpbHRlciBhdmFpbGFibGUgZmllbGRzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJGaWx0ZXIgYXZhaWxhYmxlIGZpZWxkcyIpIHwgaHRtbCAlXS4uLiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWxsb2NhdGlvbkxpc3QgVGFibGVsaWtlIEF2YWlsYWJsZUZpZWxkcyBTZXR0aW5nc092ZXJ2aWV3IiBpZD0iQXZhaWxhYmxlRmllbGQtRGFzaGJvYXJkWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+PC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaXplMW9mMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj5bJSBUcmFuc2xhdGUoIlZpc2libGUgQ29sdW1ucyAob3JkZXIgYnkgZHJhZyAmIGRyb3ApIikgfCBodG1sICVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBbGxvY2F0aW9uTGlzdCBUYWJsZWxpa2UgQXNzaWduZWRGaWVsZHMgT3JkZXJOdW1iZXJzIFNldHRpbmdzT3ZlcnZpZXciIGlkPSJBc3NpZ25lZEZpZWxkcy1EYXNoYm9hcmRbJSBEYXRhLk5hbWUgfCBodG1sICVdIj48L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja0VuZCgiRmlsdGVyQ29sdW1uU2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJPdmVydmlld0FjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQWN0aW9uUm93ICVdCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJPdmVydmlld1pvb20iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnk9WyUgRGF0YS5DYXRlZ29yeUZpbHRlciB8IHVyaSAlXTtWaWV3PVslIERhdGEuVmlldyB8IHVyaSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWVTaG9ydCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRMb25nICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIFslIERhdGEuU29ydE9yZGVyQmFyICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyIikgJV0K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93IikgJV0KPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRBY3Rpb25Sb3dCdWxrIikgJV0KICAgIDxsaSBpZD0iQ29uZmlnSXRlbUJ1bGtBY3Rpb24iIGNsYXNzPSJBbHdheXNQcmVzZW50IEJ1bGsgSW5hY3RpdmUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2E+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50QWN0aW9uUm93QnVsayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd0xhc3RDb2x1bW5GaWx0ZXIiKSAlXQogICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyI+WyUgVHJhbnNsYXRlKCJSZXNldCBvdmVydmlldyIpIHwgaHRtbCAlXTwvYT48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3dMYXN0Q29sdW1uRmlsdGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93SXRlbSIpICVdCiAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPjwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd0l0ZW0iKSAlXQo8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3ciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KPGRpdiBpZD0iT3ZlcnZpZXdDb250YWluZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXJzIikgJV0KICAgIDxkaXYgaWQ9Ik92ZXJ2aWV3Q29udHJvbCIgY2xhc3M9IlNpZGVCYXJGaWx0ZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyRmlsdGVyIikgJV0KICAgICAgICA8dWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNpZGVCYXJGaWx0ZXJJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtDYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdIChbJSBEYXRhLkNvdW50IHwgaHRtbCAlXSk8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0NhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKTwvYT4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgLQpbJSBSZW5kZXJCbG9ja0VuZCgiU2lkZUJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyRmlsdGVySXRlbSIpICVdCiAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIlNpZGVCYXJGaWx0ZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyUGFnZUJhY2siKSAlXQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBpZD0iSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdIFslIERhdGEuUHJvZmlsZU5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyUGFnZUJhY2siKSAlXQogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJzIikgJV0KCiAgICA8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBDb25maWdJdGVtTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQ29uZmlnSXRlbUZvdW5kIikgJV0KICAgICAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQ29uZmlnSXRlbUZvdW5kIikgJV0KCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9Im1hdHJpeCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IiIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXN0Q29sdW1uRmlsdGVyIiBpZD0iTGFzdENvbHVtbkZpbHRlciIgdmFsdWU9IlslIERhdGEuTGFzdENvbHVtbkZpbHRlciB8IGh0bWwgJV0iLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdUYWJsZSIpICVdCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIj4KICAgICAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dHI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQnVsa05hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iQ2hlY2tib3giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBhbGwiKSB8IGh0bWwgJV0iIGlkPSJTZWxlY3RBbGxDb25maWdJdGVtcyIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJCdWxrTmF2QmFyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgfCB1cmkgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VGbGFnRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVXNlckF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1bJSBEYXRhLkNvbHVtbk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuQ29sdW1uTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5IikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV0gRHluYW1pY0ZpZWxkIExhc3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX05vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Ob3RTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIExhc3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9Ob3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfTm90U29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPC90aD4KCiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGhlYWQ+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlQm9keSIpICVdCiAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDaGVja2JveCBOb25UZXh0Q29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9IkNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iQ29uZmlnSXRlbUlEIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QgdGhpcyBjb25maWcgaXRlbSIpIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93TWV0YSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iWyUgRGF0YS5DbGFzc1RhYmxlIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkNsYXNzU3BhbiB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+WyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iRmxhZ2dlZE5hbWUiPlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DdXJJbmNpU2lnbmFsIHwgaHRtbCAlXSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9IkZsYWdnZWROYW1lIj5bJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1DcmVhdGVkQnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlVzZXJGdWxsbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuVXNlckxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuVXNlckZ1bGxuYW1lIHwgdHJ1bmNhdGUoNTApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRpbWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3Um93IikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHRkPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfTGluayIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdCiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgPC90ZD4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgICAgICA8dGQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMl9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8L3RkPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8L3RyPgoKWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8L3Rib2R5PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGFibGVCb2R5IikgJV0KICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VGFibGUiKSAlXQogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29udGVudCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiIGlkPSJDb2x1bW5GaWx0ZXJBdHRyaWJ1dGVzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJbJSBEYXRhLkVsZW1lbnROYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRWxlbWVudFZhbHVlIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hBSkFYIikgJV0KPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50Ij4KICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQ2xhc3MiPlslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIiBpZD0nRGl2Q2xhc3NJRCc+CiAgICAgICAgICAgIFslIERhdGEuQ2xhc3NPcHRpb25TdHJnICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2ZpZWxkc2V0Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9IklubmVyQ29udGVudCIgaWQ9IkFKQVhVcGRhdGUiPgoKICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNsYXNzSUQiIHZhbHVlPSJbJSBEYXRhLkNsYXNzSUQgfCBodG1sICVdIiBpZD0iU2VhcmNoQ2xhc3NJRCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgoKICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZSc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VhcmNoUHJvZmlsZSI+WyUgVHJhbnNsYXRlKCJTZWFyY2ggdGVtcGxhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNlYXJjaFByb2ZpbGUiIG5hbWU9IlNlYXJjaFByb2ZpbGUiIHZhbHVlPSJbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQcm9maWxlTmFtZSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGROYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0iYnV0dG9uIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUgVGVtcGxhdGUiKSB8IGh0bWwgJV0iIGlkPSJTZWFyY2hQcm9maWxlQWRkQWN0aW9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZU5ldyIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVBc0xpbmsiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlByb2ZpbGUgbGluayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KCiAgICA8L2Zvcm0+CjwvZGl2PgoKPGRpdiBjbGFzcz0iQ29udGVudEZvb3RlciBDZW50ZXIiPgogICAgPGJ1dHRvbiBpZD0iU2VhcmNoRm9ybVN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSBIaWRkZW4iIHZhbHVlPSJSdW4gU2VhcmNoIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+WyUgVHJhbnNsYXRlKCJSdW4gU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEFKQVgiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQUpBWENvbnRlbnQiKSAlXQo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaENsYXNzSUQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2VhcmNoRGlhbG9nIiB2YWx1ZT0nMSc+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNob3duQXR0cmlidXRlcyIgdmFsdWU9IiIgaWQ9IlNob3duQXR0cmlidXRlcyI+CiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZSc+CiAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICA8bGFiZWwgZm9yPSJTZWFyY2hQcm9maWxlIj5bJSBUcmFuc2xhdGUoIlNlYXJjaCB0ZW1wbGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5Qcm9maWxlc1N0cmcgJV0KICAgICAgICAgICAgPGRpdiBpZD0iU2VhcmNoUHJvZmlsZUFkZEJsb2NrIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQcm9maWxlTmFtZSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGROYW1lIi8+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVOZXciIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZUFzTGluayIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJQcm9maWxlIGxpbmsiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTYXZlIGNoYW5nZXMgaW4gdGVtcGxhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2F2ZVByb2ZpbGUiIGlkPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICA8L2Rpdj4KICAgIDwvZmllbGRzZXQ+CgogICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgSGlkZGVuIiBpZD0nSVRTTVNlYXJjaEZpZWxkcyc+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiIGlkPSJTZWFyY2hJbnNlcnQiPgogICAgICAgICAgICA8bGVnZW5kPjxzcGFuPlslIFRyYW5zbGF0ZSgiRmlsdGVycyBpbiB1c2UiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgIDxsZWdlbmQ+PHNwYW4+WyUgVHJhbnNsYXRlKCJBZGRpdGlvbmFsIGZpbHRlcnMiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFkZCBhbm90aGVyIGF0dHJpYnV0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkF0dHJpYnV0ZXNTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPdXRwdXQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgPC9maWVsZHNldD4KPC9mb3JtPgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxsYWJlbCBmb3I9Ik51bWJlciIgaWQ9IkxhYmVsTnVtYmVyIj5bJSBUcmFuc2xhdGUoIk51bWJlciIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIihlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCopIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgdmFsdWU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPGxhYmVsIGZvcj0iTmFtZSIgaWQ9IkxhYmVsTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiIGlkPSJMYWJlbERlcGxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiIGlkPSJMYWJlbEluY2lTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgWyUgRGF0YS5MYWJlbCAlXQogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dHJpYnV0ZVJvdyIpICVdCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXSIgaWQ9IkxhYmVsWyUgRGF0YS5LZXkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvbikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICBbJSBEYXRhLklucHV0U3RyaW5nICVdCiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dHJpYnV0ZVJvdyIpICVdCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICBbJSBEYXRhLkF0dHJpYnV0ZXNPcmlnU3RyZyAlXQo8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiQUpBWENvbnRlbnQiKSAlXQo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemTreeView.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIiPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0iKSB8IGh0bWwgJV06IFslIERhdGEuQ29uZmlnSXRlbU51bWJlciB8IGh0bWwgJV0g4oCUIFslIERhdGEuQ29uZmlnSXRlbU5hbWUgfCBodG1sICVdCiAgICAgICAgPC9oMT4KICAgICAgICA8cD4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlRyZWVWaWV3Q2xvc2VMaW5rIj5bJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgZGlhbG9nIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4gU3BhY2luZ1RvcCI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIiBpZD0iV2lkZ2V0Q29udGFpbmVyIj4KCiAgICAgICAgICAgIDxmb3JtIG5hbWU9IlRyZWVWaWV3IiBpZD0iVHJlZVZpZXciPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiAgICAgICAgaWQ9IkNvbmZpZ0l0ZW1JRCIgICAgICAgIHZhbHVlPSJbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVmVyc2lvbklEIiAgICAgICAgICAgaWQ9IlZlcnNpb25JRCIgICAgICAgICAgIHZhbHVlPSJbJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT1RPQk9BZ2VudEludGVyZmFjZSIgaWQ9Ik9UT0JPQWdlbnRJbnRlcmZhY2UiIHZhbHVlPSJbJSBEYXRhLlNlc3Npb25JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2hvd0xpbmtMYWJlbHMiICAgICAgaWQ9IlNob3dMaW5rTGFiZWxzIiAgICAgIHZhbHVlPSJbJSBEYXRhLlNob3dMaW5rTGFiZWxzIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXN0Wm9vbSIgICAgICAgICAgICBpZD0iTGFzdFpvb20iICAgICAgICAgICAgdmFsdWU9IjEwMCI+CiAgICAgICAgICAgIDwvZm9ybT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3cgQ29udGFpbmVyQmFyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvd1RpdGxlIj48aSBjbGFzcz0iZmEgZmEtc2l0ZW1hcCI+PC9pPiBbJSBUcmFuc2xhdGUoIlRyZWUgVmlldyIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3B0Q29udGFpbmVyIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJEZXB0aExhYmVsIj5bJSBUcmFuc2xhdGUoIkRlcHRoIExldmVsIikgfCBodG1sICVdOiA8L2xhYmVsPiAgPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iRGVwdGgiIGlkPSJEZXB0aCIgbWluPSIxIiBtYXg9IjEwIiB2YWx1ZT0iWyUgRGF0YS5EZXB0aCB8IGh0bWwgJV0iIGNsYXNzPSJPcHREZXB0aCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJab29tSW5PdXRMYWJlbCI+WyUgVHJhbnNsYXRlKCJab29tIEluL091dCIpIHwgaHRtbCAlXTogPC9sYWJlbD4gPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iWm9vbSIgaWQ9Ilpvb20iIG1pbj0iMjAiIG1heD0iMjAwIiBzdGVwPSIxMCIgdmFsdWU9IjEwMCI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9IkFKQVhMb2FkZXJEZXB0aCIgY2xhc3M9IkFKQVhMb2FkZXIgSGlkZGVuIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0iVHJlZVZpZXdNZXNzYWdlcyIgY2xhc3M9IlRyZWVWaWV3TWVzc2FnZXMgQ2VudGVyIEhpZGRlbiI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iQ2VudGVyIFRyZWVWaWV3TWVzc2FnZSI+WyUgVHJhbnNsYXRlKCJNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEiKSB8IGh0bWwgICVdPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGFpbmVyQ2FudmFzIiBpZD0iQ2FudmFzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxkaXYgY2xhc3M9IkZsYWciIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgxIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyYXRpb24gSXRlbSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdICZuZGFzaDsgWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIikgfCBodG1sICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CgogICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdCgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZXRhIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIFRpZ2h0Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuTmFtZSB8IHRydW5jYXRlKDI1KSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkN1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDdXJyZW50IEluY2lkZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVCeVVzZXJGdWxsTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNoYW5nZUJ5VXNlckZ1bGxOYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0ZpbGVuYW1lPVslIERhdGEuRmlsZW5hbWUgfCB1cmkgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIERhdGEuRmlsZXNpemUgfCBMb2NhbGl6ZSgnRmlsZXNpemUnKSB8IGh0bWwgJV0pClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk1ldGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMaW5rVGFibGVTaW1wbGUiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlua2VkIE9iamVjdHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUYWJsZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxpbmtUYWJsZVNpbXBsZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3ciPgogICAgICAgICAgICAgICAgPGgyPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWVudSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1lbnVJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiBpZD0iTWVudVslIERhdGEuTWVudUlEIHwgaHRtbCAlXSIgY2xhc3M9IlslIERhdGEuTWVudUNsYXNzIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudUl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudSIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VsZWN0aW9uUm93IikgJV0KICAgICAgICAgICAgPGRpdiBpZD0iU2VsZWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBhZ2VTZWxlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLlBhZ2VOYW1lKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZU5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IHVyaSAlXTtQYWdlPVslIERhdGEuUGFnZU5hbWUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJvb29TIFBhZ2VTZWxlY3Rpb25CdXR0b24gQ2FsbEZvckFjdGlvblslIElGIERhdGEuRGlzYWJsZWQgJV0gRGlzYWJsZWRbJSBFTFNJRiBEYXRhLlNlbGVjdGVkICVdIFNlbGVjdGVkWyUgRU5EICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgaWQ9IlZlcnNpb25TZWxlY3Rpb25Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvblNlbGVjdGlvbiAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VsZWN0aW9uUm93IikgJV0KICAgICAgICAgICAgPGRpdiBpZD0iSVRTTUl0ZW1zIj4KICAgICAgICAgICAgICAgIFslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVGFibGVTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/ConfigItemTreeView/ConfigItemTreeViewGraph.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJTZWN0aW9uQ29udGFpbmVyIj4KCiAgICA8ZGl2IGNsYXNzPSJDaGlsZENvbnRhaW5lciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNoaWxkU291cmNlRWxlbWVudHNMZXZlbCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIiBpZD0iU291cmNlTGV2ZWxbJURhdGEuTGV2ZWwgfCBodG1sJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDaGlsZFNvdXJjZUVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3giIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1JbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV07T1RPQk9BZ2VudEludGVyZmFjZT1bJSBEYXRhLlNlc3Npb25JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJab29tTGluayI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFNvdXJjZUVsZW1lbnRzIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFNvdXJjZUVsZW1lbnRzTGV2ZWwiKSAlXQogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2hpbGRDb250YWluZXIiIGlkPSJPcmlnaW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPcmlnaW5FbGVtZW50IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IiBpZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29uZmlnSXRlbUluZm8iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWRkaXRpb25hbEluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPcmlnaW5FbGVtZW50IikgJV0KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ2hpbGRUYXJnZXRFbGVtZW50c0xldmVsIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIiBpZD0iVGFyZ2V0TGV2ZWxbJURhdGEuTGV2ZWwgfCBodG1sJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDaGlsZFRhcmdldEVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3giIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1JbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV07T1RPQk9BZ2VudEludGVyZmFjZT1bJSBEYXRhLlNlc3Npb25JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJab29tTGluayI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFRhcmdldEVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2hpbGRUYXJnZXRFbGVtZW50c0xldmVsIikgJV0KCiAgICA8L2Rpdj4KCjwvZGl2Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNYXhEZXB0aCIgICAgICAgaWQ9Ik1heERlcHRoIiAgICAgICB2YWx1ZT0iWyUgRGF0YS5NYXhEZXB0aCB8IGh0bWwgJV0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rRGF0YVNvdXJjZSIgaWQ9IkxpbmtEYXRhU291cmNlIiB2YWx1ZT0iWyUgRGF0YS5MaW5rRGF0YVNvdXJjZSB8IGh0bWwgJV0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rRGF0YVRhcmdldCIgaWQ9IkxpbmtEYXRhVGFyZ2V0IiB2YWx1ZT0iWyUgRGF0YS5MaW5rRGF0YVRhcmdldCB8IGh0bWwgJV0iPgoKIDxkaXYgY2xhc3M9IlNwYWNlclRyZWUiPjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiWW91ciBDb25maWdJdGVtcyIpIHwgaHRtbCAlXTwvaDE+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaEJveCIpICVdCiAgICAgICAgPGRpdiBpZD0ib29vU2VhcmNoQm94Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YSBpZD0nb29vSGVhZGVyQnV0dG9uJyBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDtGaWx0ZXI9MTtWaWV3PVNtYWxsO1NvcnRCeT1BZ2U7T3JkZXJCeT1VcCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBhY2Nlc3NrZXk9IlslIERhdGEuQWNjZXNzS2V5IHwgaHRtbCAlXSI+PGJ1dHRvbj48c3Bhbj4gWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+PC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoQm94IikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBpZD0nb29vTWFpbkJveCc+CiAgICAgICAgPGRpdiBpZD0nb29vSVRTTUNvbmZpZ0l0ZW1MaXN0SGVhZGVyJz4KWyUgSUYgRW52KCJTdWJhY3Rpb24iKSA9PSAnU2VhcmNoJyAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTIgb29vbCBTZWxlY3RlZCI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTogICJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIKICAgICAgICAgICAgPC9wPgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVySGVhZGVyIikgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuQ2xhc3NBIHwgaHRtbCAlXSBvb28xMmcgb29vbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVslIEVudigiU3ViYWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1NvcnRCeT1bJSBEYXRhLlNvcnRCeSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXVslIERhdGEuQ3VzdG9tZXJJRHMgJV07RnVsbHRleHQ9WyUgRGF0YS5GdWxsdGV4dCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKQogICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJIZWFkZXIiKSAlXQpbJSBJRiBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vMTJnIG9vb3IiPgogICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVyRGVsZXRlIikgJV0KICAgICAgICAgICAgPGRpdiBpZD0ib29vSVRTTUNvbmZpZ0l0ZW1GaWx0ZXJEZWxldGUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJSZXNldCBvdmVydmlldyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1kZWxldGVfb3V0bCI+PC9pPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlckRlbGV0ZSIpICVdCiMgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIG9vb2wiPlslIERhdGEuSVRTTUNvbmZpZ0l0ZW1Db3VudCB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJDb25maWdJdGVtcyIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vbCI+WyUgVHJhbnNsYXRlKCJTb3J0IikgfCBodG1sICVdPC9wPgojICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyBvb29yIj5bJSBUcmFuc2xhdGUoIkZpbHRlciIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vciI+WyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIFslIERhdGEuSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0Ij4KICAgIDxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0U2Nyb2xsQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQogICAgICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1RhYmxlIikgJV0KICAgICAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyI+CiAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpIHwgdXJpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VyRGVwbFNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9IlVzZXJBdXRvQ29tcGxldGUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbmZpZ0l0ZW1IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlRhYmxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGFibGVCb2R5IikgJV0KICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtRGF0YSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTaWduYWwiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VyRGVwbFNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlVzZXJGdWxsbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuVXNlckxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuVXNlckZ1bGxuYW1lIHwgdHJ1bmNhdGUoNTApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UcmFuc2xhdGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UcmFuc2xhdGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVGltZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtRGF0YSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgIDwvdGJvZHk+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUJvZHkiKSAlXQogICAgICAgIDwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1RhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29udGVudCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiIGlkPSJDb2x1bW5GaWx0ZXJBdHRyaWJ1dGVzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJbJSBEYXRhLkVsZW1lbnROYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRWxlbWVudFZhbHVlIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnSXRlbSBTZWFyY2giKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2g7RmlsdGVyPTE7Vmlldz1TbWFsbDtTb3J0Qnk9QWdlO09yZGVyQnk9VXAiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIgYWNjZXNza2V5PSJbJSBEYXRhLkFjY2Vzc0tleSB8IGh0bWwgJV0iPjxidXR0b24+PHNwYW4+IFslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEJveCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9J29vb01haW5Cb3gnPgogICAgICAgIDxkaXYgaWQ9Im9vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciI+ClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9Ik1vZHVsYXJGb3JtIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBlcm1pc3Npb25Db25kaXRpb24iPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDbGFzc0lEcyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOdW1iZXIiPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOYW1lIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOYW1lIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2lTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5jaVN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkFjdGlvblJvdyBSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hBY3Rpb24iIHR5cGU9InN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoRm9ybSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICAgICAgWyUgRGF0YS5JVFNNQ29uZmlnSXRlbUxpc3RIVE1MICVdClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hSZXN1bHQiKSAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgaWQ9J29vb0NvbnRlbnQnIGNsYXNzPSdBUklBUm9sZU1haW4nPgogICAgWyUgRGF0YS5TdHlsZUNsYXNzZXMgJV0KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGRpdiBjbGFzcz0nb29vV2l0aFN1Yic+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZ1bGxTdWIiKSAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXSNbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0jWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiRnVsbFN1YiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzU3ViIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc1N1YiIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0nQ0lJbmZvQmFyJz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbG95bWVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuRGVwbFN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsb3ltZW50U3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpZGVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuSW5jaVN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNpZGVudFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ3JlYXRlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPjxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3A+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ3JlYXRlZFRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBDaGFuZ2VkIikgfCBodG1sICVdOjwvbGFiZWw+PHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBpZD0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBhZ2VTZWxlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuUGFnZU5hbWUpIHwgaHRtbCAlXTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlBhZ2VOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCB1cmkgJV07UGFnZT1bJSBEYXRhLlBhZ2VOYW1lIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ib29vUyBQYWdlU2VsZWN0aW9uQnV0dG9uWyUgSUYgRGF0YS5TZWxlY3RlZCAlXSBTZWxlY3RlZFslIEVORCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuUGFnZU5hbWUpIHwgaHRtbCAlXTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlBhZ2VMaW5rIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBdHRhY2htZW50Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iQXR0YWNobWVudHMiIGhyZWY9IiMiPjxpIGNsYXNzPSdvb29mbyBvb29mby1hdHRhY2htZW50Jz48L2k+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBdHRhY2htZW50Qm94IiBjbGFzcz0iSGlkZGVuIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7RmlsZW5hbWU9WyUgRGF0YS5GaWxlbmFtZSB8IHVyaSAlXTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAoWyUgRGF0YS5GaWxlc2l6ZSB8IExvY2FsaXplKCdGaWxlc2l6ZScpIHwgaHRtbCAlXSk8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnRzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVmVyc2lvbnMiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZlcnNpb25TZWxlY3Rpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWZXJzaW9uU2VsZWN0aW9uIj5bJSBUcmFuc2xhdGUoIlZlcnNpb24iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJWZXJzaW9ucyIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DynamicField/Agent/ITSMConfigItemLens.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iWyUgRGF0YS5GaWVsZE5hbWUgJV0iIG5hbWU9IlslIERhdGEuRmllbGROYW1lICVdIiB2YWx1ZT0iWyUgRGF0YS5WYWx1ZUVzY2FwZWQgJV0iIC8+CjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iWyUgRGF0YS5GaWVsZENsYXNzICVdIiBpZD0iQXV0b2NvbXBsZXRlX1slIERhdGEuRmllbGROYW1lICVdIiBuYW1lPSJBdXRvY29tcGxldGVfWyUgRGF0YS5GaWVsZE5hbWUgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5GaWVsZExhYmVsRXNjYXBlZCkgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5WaXNpYmxlVmFsdWUgJV0iIC8+ClslIElGIERhdGEuTWFuZGF0b3J5ICVdCjxkaXYgaWQ9IlslIERhdGEuRGl2SURNYW5kYXRvcnkgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgIDxwPgogICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkZpZWxkUmVxdWlyZWRNZXNzYWdlKSB8IGh0bWwgJV0KICAgIDwvcD4KPC9kaXY+ClslIEVORCAlXQpbJSBJRiBEYXRhLlNlcnZlckVycm9yICVdCjxkaXYgaWQ9IlslIERhdGEuRGl2SURTZXJ2ZXJFcnJvciAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgPHA+CiAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV0KICAgIDwvcD4KPC9kaXY+ClslIEVORCAlXQo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/ITSMConfigItemDetails.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6U2NyaXB0VXNhZ2UpCjxkaXYgY2xhc3M9Im9vb0NvbnRlbnRHcmlkIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRDZWxsIikgJV0KICAgIDxkaXYgY2xhc3M9Im9vb0NvbnRlbnRDZWxsIFslIERhdGEuVHlwZSB8IGh0bWwgJV1fQ2VsbCIgc3R5bGU9IlslIERhdGEuR3JpZEFyZWEgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyUm93IikgJV0KICAgICAgICA8aDIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlcikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5IZWFkZXIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJSb3ciKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkNlbGxDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmllbGREaXNwbGF5Um93IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGREaXNwbGF5Um93IiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZpZWxkRGlzcGxheUNlbGwiKSAlXQpbJSBJRiBEYXRhLlR5cGUgPT0gJ0xhYmVsJyAlXQogICAgICAgICAgICAgICAgPGxhYmVsIFslIElGIERhdGEuQ1NTQ2xhc3MgJV1jbGFzcz0iWyUgRGF0YS5DU1NDbGFzcyB8IGh0bWwgJV0iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdIiBzdHlsZT0iWyUgRGF0YS5HcmlkQ29sdW1tIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvbGFiZWw+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWUnICVdCiAgICAgICAgICAgICAgICA8cCB0aXRsZT0iWyUgRGF0YS5UaXRsZSAlXSIgc3R5bGU9IlslIERhdGEuR3JpZENvbHVtbiB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3A+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVMaW5rJyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWYWx1ZUl0ZW1MaW5rIikgJV0KICAgICAgICAgICAgICAgIDxwIHRpdGxlPSJbJSBEYXRhLlRpdGxlICVdIiBzdHlsZT0iWyUgRGF0YS5HcmlkQ29sdW1uIHwgaHRtbCAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iWyUgSUYgRGF0YS5MaW5rUHJldmlldyAlXSBkYXRhLXRyaWdnZXI9ImZsb2F0ZXIiIGRhdGEtZmxvYXRlci11cmw9IlslIERhdGEuTGlua1ByZXZpZXcgfCBJbnRlcnBvbGF0ZSAlXSJbJSBFTkQgJV0gY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+PC9wPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNdWx0aXZhbHVlU2VwYXJhdG9yTGluayIpICVdCiAgICAgICAgICAgICAgICA8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiTXVsdGl2YWx1ZVNlcGFyYXRvckxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiVmFsdWVJdGVtTGluayIpICVdClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVSYXcnICVdCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJbJSBEYXRhLkdyaWRDb2x1bW4gfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9kaXY+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnRnVsbFJvdycgJV0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+WyUgRGF0YS5WYWx1ZSAlXTwvZGl2PgpbJSBFTFNJRiBEYXRhLlR5cGUgPT0gJ0lmcmFtZScgJV0KICAgICAgICAgICAgICAgIDxkaXY+CiMgZXhlY3V0ZSBJRnJhbWUgSlMgYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4gYmVmb3JlIG91ciBBUEkgd2FzIGxvYWRlZAojIHRoZSBmb2xsb3dpbmcgSlMgY29kZSBtdXN0IGJlIHdpdGhpbiB0aGUgdGVtcGxhdGUsIG90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4sIHRoYXQgYWxzbyB0aGlzIGNvZGUgaXRzZWxmIGlzIG5vdCBsb2FkZWQgeWV0CjxzY3JpcHQ+CmZ1bmN0aW9uIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKSB7CiAgICBpZiAodHlwZW9mIENvcmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBDb3JlLkFnZW50ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgSVRTTS5bJSBEYXRhLkZyb250ZW5kIHwgaHRtbCAlXS5Db25maWdJdGVtLlpvb20gPT09ICdvYmplY3QnKSB7CiAgICAgICAgSVRTTS5bJSBEYXRhLkZyb250ZW5kIHwgaHRtbCAlXS5Db25maWdJdGVtLlpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjJyArIElGcmFtZUlEKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKTsKICAgICAgICB9LCA1MDApOwogICAgfQp9Cjwvc2NyaXB0PgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIG1zLWFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3giIHdpZHRoPSIxMDAlIiBmcmFtZWJvcmRlcj0iMCIgaWQ9IklmcmFtZVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0nKTsgfSwgNTAwKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuRnJvbnRlbmQgfCBodG1sICVdSVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O1N1YmFjdGlvbj1IVE1MVmlldztDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV07WyUgRW52KCJTZXNzaW9uTmFtZSIpIHwgaHRtbCAlXT1bJSBFbnYoIlNlc3Npb25JRCIpIHwgaHRtbCAlXSI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJGaWVsZERpc3BsYXlDZWxsIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWVsZERpc3BsYXlSb3ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmljSFRNTCIpICVdCiAgICAgICAgWyUgRGF0YS5IVE1MICVdClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmljSFRNTCIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRDZWxsIikgJV0KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/JavaScript/Templates/Standard/Agent/ITSMConfigurationManagement/ClassImportConfirm.html.tmpl" Permission="660" Encode="Base64">PHA+e3sgIlRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkIiB8IFRyYW5zbGF0ZSB9fTo8L3A+CjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRTbWFsbCBOYXJyb3ciPgoKeyUgZm9yIENsYXNzIGluIENsYXNzZXMgJX0KCiAgICA8cCBjbGFzcz0iVmFsdWUiPnt7IENsYXNzIH19PC9wPgoKeyUgZW5kZm9yICV9Cgo8L2ZpZWxkc2V0PgoKeyUgaWYgUm9sZXMgJX0KCjxwPnt7ICJUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQiIHwgVHJhbnNsYXRlIH19OjwvcD4KPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZFNtYWxsIE5hcnJvdyI+CgogICAgeyUgZm9yIFJvbGUgaW4gUm9sZXMgJX0KCiAgICA8cCBjbGFzcz0iVmFsdWUiPnt7IFJvbGUgfX08L3A+CgogICAgeyUgZW5kZm9yICV9Cgo8L2ZpZWxkc2V0PgoKeyUgZW5kaWYgJX0KCjxwIGNsYXNzPSJFcnJvciIgc3R5bGU9Im1heC13aWR0aDogNDUwcHg7Ij57eyAiTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLiIgfCBUcmFuc2xhdGUgfX08L3A+CjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPHAgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7Ij57eyAiRG8geW91IHdhbnQgdG8gcHJvY2VlZD8iIHwgVHJhbnNsYXRlfX08L3A+Cg==</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+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KCiMgU0hPVUxEIEtFRVA/ICAgIApbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0xpbmsiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkJhY2tsaW5rQm94Ij48YSBjbGFzcz0iQmFja2xpbmsiIHRpdGxlPSJCYWNrIHRvIG92ZXJ2aWV3IiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW0iPjxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19sIj48L2k+PHNwYW4+WyUgVHJhbnNsYXRlKCJCYWNrIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGluayIpICVdCgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGlkPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBpZD0iUGFnZVNlbGVjdGlvbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBhZ2VOYW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZU5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IHVyaSAlXTtQYWdlPVslIERhdGEuUGFnZU5hbWUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJvb29TIFBhZ2VTZWxlY3Rpb25CdXR0b25bJSBJRiBEYXRhLlNlbGVjdGVkICVdIFNlbGVjdGVkWyUgRU5EICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkF0dGFjaG1lbnRDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIDxhIGlkPSJBdHRhY2htZW50cyIgaHJlZj0iIyI+PGkgY2xhc3M9J29vb2ZvIG9vb2ZvLWF0dGFjaG1lbnQnPjwvaT5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkF0dGFjaG1lbnRCb3giIGNsYXNzPSJIaWRkZW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtGaWxlbmFtZT1bJSBEYXRhLkZpbGVuYW1lIHwgdXJpICVdO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIChbJSBEYXRhLkZpbGVzaXplIHwgTG9jYWxpemUoJ0ZpbGVzaXplJykgfCBodG1sICVdKTxici8+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudHMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWZXJzaW9ucyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvblNlbGVjdGlvbiAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZlcnNpb25TZWxlY3Rpb24iPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlZlcnNpb25zIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/PublicITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iIGFjY2Vzc2tleT0iWyUgRGF0YS5BY2Nlc3NLZXkgfCBodG1sICVdIj48YnV0dG9uPjxzcGFuPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hCb3giKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGlkPSJvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0xpbmsiKSAlXQogICAgICAgICAgICA8YSBjbGFzcz0iQmFja2xpbmsiIHRpdGxlPSJCYWNrIHRvIG92ZXJ2aWV3IiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW0iPjxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19sIj48L2k+PHNwYW4+WyUgVHJhbnNsYXRlKCJCYWNrIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGluayIpICVdClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9Ik1vZHVsYXJGb3JtIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QZXJtaXNzaW9uQ29uZGl0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBlcm1pc3Npb25Db25kaXRpb24iPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZENlbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDbGFzc0lEcyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOdW1iZXIiPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOYW1lIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOYW1lIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRDZWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2lTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5jaVN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkQ2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkJvdHRvbUFjdGlvblJvdyIgY2xhc3M9IkFjdGlvblJvdyBSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hBY3Rpb24iIHR5cGU9InN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoRm9ybSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICAgICAgWyUgRGF0YS5JVFNNQ29uZmlnSXRlbUxpc3RIVE1MICVdClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hSZXN1bHQiKSAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</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/System/Console/Command/Admin/ITSM/ConfigItem/ClassExport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NFeHBvcnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcikKCiMgSW5mb3JtIHRoZSBvYmplY3QgbWFuYWdlciBhYm91dCB0aGUgaGFyZCBkZXBlbmRlbmNpZXMuCiMgVGhpcyBtb2R1bGUgbXVzdCBiZSBkaXNjYXJkZWQgd2hlbiBvbmUgb2YgdGhlIGhhcmQgZGVwZW5kZW5jaWVzIGhhcyBiZWVuIGRpc2NhcmRlZC4Kb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkNsYXNzRXhwb3J0IC0gc3VwcG9ydCBmb3IgdXBncmFkaW5nIHRoZSBDTURCCgo9aGVhZDEgREVTQ1JJUFRJT04KCk1vZHVsZSBmb3IgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpDbGFzc0V4cG9ydD4uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbigKICAgICAgICAnRXhwb3J0IGR5bmFtaWMgZmllbGQgY2xhc3NlcyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBkeW5hbWljIGZpZWxkcy4nCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgZXhwb3J0ZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmaWxlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICAgICAiVGhlIG91dHB1dCBZQU1MIGZpbGUgY29udGFpbmluZyB0aGUgZXhwb3J0ZWQgY2xhc3MgZGVmaW5pdGlvbiBhbmQgaXRzIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gYSBsb2NhbCBmaWxlIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGNsYXNzIGluIHRoZSBsaXN0LiIsCiAgICAgICAgUmVxdWlyZWQgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ID0+IHFyLy4vLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZvcmNlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiSWYgdGhlIG91dHB1dCBZQU1MIGZpbGUgYWxyZWFkeSBleGlzdHMsIG92ZXJ3cml0ZSBpdCB3aXRob3V0IGFza2luZy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMCwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2xhc3NOYW1lTGlzdCAgPSAkU2VsZi0+R2V0T3B0aW9uKCdjbGFzcycpOwogICAgbXkgJEZpbGVOYW1lICAgICAgID0gJFNlbGYtPkdldE9wdGlvbignZmlsZScpIHx8ICIkQ2xhc3NOYW1lTGlzdC0+WzBdLnltbCI7ICAgICMgYnkgZGVmYXVsdCBmaWxlIGhhcyB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgY2xhc3MKICAgIG15ICRGb3JjZU92ZXJ3cml0ZSA9ICRTZWxmLT5HZXRPcHRpb24oJ2ZvcmNlJyk7CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGxpc3RzIG9mIGV4aXN0aW5nIGNsYXNzZXMgYW5kIHJvbGVzCiAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApIC8vIHt9CiAgICB9OwogICAgbXkgJVJvbGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICkgLy8ge30KICAgIH07CgogICAgbXkgJEVycm9yID0gc3ViIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+JF9bMF08L3JlZD5cbiIpOwogICAgICAgICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9OwoKICAgIG15IEBDbGFzc0lETGlzdDsKICAgIGZvciBteSAkQ2xhc3NOYW1lICggQHskQ2xhc3NOYW1lTGlzdH0gKSB7CgogICAgICAgIGlmICggJENsYXNzTG9va3VweyRDbGFzc05hbWV9ICkgewogICAgICAgICAgICBwdXNoIEBDbGFzc0lETGlzdCwgJENsYXNzTG9va3VweyRDbGFzc05hbWV9OwoKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXhwb3J0aW5nIGV4aXN0aW5nIGNvbmZpZ2l0ZW08L2dyZWVuPiAkQ2xhc3NOYW1lIDxncmVlbj5jbGFzczwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUm9sZUxvb2t1cHskQ2xhc3NOYW1lfSApIHsKICAgICAgICAgICAgcHVzaCBAQ2xhc3NJRExpc3QsICRSb2xlTG9va3VweyRDbGFzc05hbWV9OwoKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXhwb3J0aW5nIGV4aXN0aW5nIGNvbmZpZ2l0ZW08L2dyZWVuPiAkQ2xhc3NOYW1lIDxncmVlbj5yb2xlPC9ncmVlbj5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRFcnJvci0+KCAnQ2xhc3Mgb3IgUm9sZSAnIC4gJENsYXNzTmFtZSAuICcgZG9lcyBub3QgZXhpc3QuJyApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIC1lICRGaWxlTmFtZSAmJiAhJEZvcmNlT3ZlcndyaXRlICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5GaWxlICckRmlsZU5hbWUnIGFscmVhZHkgZXhpc3RzLiBPdmVyd3JpdGUgaXQ/PC95ZWxsb3c+XG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPHllbGxvdz5QbGVhc2UgY29uZmlybSBieSB0eXBpbmcgJ3knZXM8L3llbGxvdz5cblx0Iik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpIGlmIDxTVERJTj4gIX4gL155ZT9zPyQvaTsKICAgIH0KCiAgICBteSAkWUFNTENvbnRlbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NFeHBvcnQoIEl0ZW1JRExpc3QgPT4gXEBDbGFzc0lETGlzdCApOwoKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgIExvY2F0aW9uID0+ICRGaWxlTmFtZSwKICAgICAgICBDb250ZW50ICA9PiBcJFlBTUxDb250ZW50LAogICAgKTsKICAgIHJldHVybiAkRXJyb3ItPigiQ291bGQgbm90IHdyaXRlIGZpbGUuIikgdW5sZXNzICRTdWNjZXNzOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgd2l0aCBhbGw8L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ClassImport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NJbXBvcnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcikKCiMgSW5mb3JtIHRoZSBvYmplY3QgbWFuYWdlciBhYm91dCB0aGUgaGFyZCBkZXBlbmRlbmNpZXMuCiMgVGhpcyBtb2R1bGUgbXVzdCBiZSBkaXNjYXJkZWQgd2hlbiBvbmUgb2YgdGhlIGhhcmQgZGVwZW5kZW5jaWVzIGhhcyBiZWVuIGRpc2NhcmRlZC4Kb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpDbGFzc0ltcG9ydCAtIHN1cHBvcnQgZm9yIHVwZ3JhZGluZyB0aGUgQ01EQgoKPWhlYWQxIERFU0NSSVBUSU9OCgpNb2R1bGUgZm9yIHRoZSBjb25zb2xlIGNvbW1hbmQgQzxBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NJbXBvcnQ+LgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1jdXQKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oCiAgICAgICAgJ0ltcG9ydCBkeW5hbWljIGZpZWxkIGNsYXNzZXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgZHluYW1pYyBmaWVsZHMuJwogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZpbGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFuZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gYXMgWUFNTC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CgogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndXBkYXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiSWYgdGhlIGNsYXNzIGFscmVhZHkgZXhpc3RzLCB1cGRhdGUgaXQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDAsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+SW1wb3J0aW5nIG5ldyBjb25maWdpdGVtIGNsYXNzPC9ncmVlbj5cbiIpOwoKICAgIG15ICRGaWxlID0gJFNlbGYtPkdldE9wdGlvbignZmlsZScpOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJEVycm9yID0gc3ViIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+JF9bMF08L3JlZD5cbiIpOwoKICAgICAgICAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfTsKCiAgICBteSAkRGVmaW5pdGlvbllBTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZSwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25SYXcgPSAkWUFNTE9iamVjdC0+TG9hZCgKICAgICAgICBEYXRhID0+ICR7JERlZmluaXRpb25ZQU1MfSwKICAgICk7CgogICAgaWYgKCByZWYgJERlZmluaXRpb25SYXcgZXEgJ0hBU0gnICkgewogICAgICAgICREZWZpbml0aW9uUmF3ID0gWyREZWZpbml0aW9uUmF3XTsKICAgIH0KCiAgICByZXR1cm4gJEVycm9yLT4oJ0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLicpIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJERlZmluaXRpb25SYXcpOwoKICAgIG15ICRDbGFzc0V4aXN0cyA9ICRTZWxmLT5HZXRPcHRpb24oJ3VwZGF0ZScpID8gJ1VQREFURScgOiAnRVJST1InOwogICAgbXkgJFJlc3VsdCAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICREZWZpbml0aW9uUmF3LAogICAgICAgIENsYXNzRXhpc3RzID0+ICRDbGFzc0V4aXN0cywKICAgICk7CgogICAgcmV0dXJuICRFcnJvci0+KCAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAiQ291bGQgbm90IGltcG9ydCBkZWZpbml0aW9ucyBmcm9tIGZpbGUuIiApIHVubGVzcyAkUmVzdWx0LT57U3VjY2Vzc307CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSB3aXRoIGFsbDwvZ3JlZW4+XG4iKTsKCiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ConvertLegacyRefDFs.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q29udmVydExlZ2FjeVJlZkRGczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6SW50ZXJmYWNlQ29uc29sZTsgICAgIyMgbm8gcGVybGltcG9ydHMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oCiAgICAgICAgJ0NvbnZlcnQgbGVnYWN5IE90b2JvUGFyIERGcyBvZiB0eXBlIElUU01Db25maWdJdGVtUmVmZXJlbmNlIHRvIHN0YW5kYXJkIENvbmZpZ0l0ZW0gZmllbGRzLicKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmaWxlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRmlsZSBuYW1lIGZvciB0aGUgY29uc3RyaWN0aW9ucyByZXBvcnQsIGJ5IGRlZmF1bHQgcHJpbnRzIHRoZSByZXBvcnQgdG8gdGhlIGRpc3BsYXkuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmb3JjZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIklmIHRoZSByZXBvcnQgZmlsZSBhbHJlYWR5IGV4aXN0cywgb3ZlcndyaXRlIHdpdGhvdXQgcHJvbXB0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4vLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmlsZU5hbWUgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdmaWxlJyk7CiAgICBteSAkRm9yY2VPdmVyd3JpdGUgPSAkU2VsZi0+R2V0T3B0aW9uKCdmb3JjZScpOwoKICAgIGlmICggLWUgJEZpbGVOYW1lICYmICEkRm9yY2VPdmVyd3JpdGUgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkNvbnN0cmljdGlvbnMgcmVwb3J0IGZpbGUgJyRGaWxlTmFtZScgYWxyZWFkeSBleGlzdHMuIE92ZXJ3cml0ZSBpdD88L3llbGxvdz4iKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPHllbGxvdz5QbGVhc2UgY29uZmlybSBieSB0eXBpbmcgJ3knZXM8L3llbGxvdz46ICIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpIGlmIDxTVERJTj4gIX4gL155ZT9zPyQvaTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJERCT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKTsKICAgIG15ICRQYWNrYWdlT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJyk7CgogICAgIyBzdXBwb3J0IGNvbnNvbGUgY29tbWFuZAogICAgaWYgKCAhZGVmaW5lZCAkREJPYmplY3QtPntkYmh9ICkgewogICAgICAgICREQk9iamVjdC0+Q29ubmVjdCgpOwogICAgfQogICAgaWYgKCAhZGVmaW5lZCAkREJPYmplY3QtPntkYmh9ICkgewogICAgICAgIGRpZSgidW5hYmxlIHRvIGNvbm5lY3QgdG8gRGF0YWJhc2UuIik7CiAgICB9CgogICAgJERCT2JqZWN0LT5CZWdpbldvcmsoKTsKICAgIG15IEBJRHMgPSAkU2VsZi0+X0dldERGVHlwZUlEcygKICAgICAgICBEQk9iamVjdCA9PiAkREJPYmplY3QsCiAgICAgICAgREZUeXBlICAgPT4gJ0lUU01Db25maWdJdGVtUmVmZXJlbmNlJywKICAgICk7CgogICAgbXkgJENvdW50RmllbGRVcGRhdGVzID0gMDsKICAgIG15ICRDb3VudFZhbHVlVXBkYXRlcyA9IDA7CiAgICBteSBAQ29uc3RyaWN0aW9uc0xpc3Q7CgogICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICRTZWxmLT5fVXBkYXRlRHluYW1pY0ZpZWxkQ29uZmlnKAogICAgICAgICAgICBJRCAgICAgICAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICBEeW5hbWljRmllbGRPYmplY3QgPT4gJER5bmFtaWNGaWVsZE9iamVjdCwKICAgICAgICAgICAgQ29uc3RyaWN0aW9uc0xpc3QgID0+IFxAQ29uc3RyaWN0aW9uc0xpc3QsCiAgICAgICAgKTsKICAgICAgICAkQ291bnRGaWVsZFVwZGF0ZXMrKzsKICAgICAgICAkQ291bnRWYWx1ZVVwZGF0ZXMgKz0gJFNlbGYtPl9VcGRhdGVEeW5hbWljRmllbGRWYWx1ZXMoCiAgICAgICAgICAgIElEICAgICAgICAgICAgICAgICAgICAgID0+ICRJRCwKICAgICAgICAgICAgREJPYmplY3QgICAgICAgICAgICAgICAgPT4gJERCT2JqZWN0LAogICAgICAgICAgICBEeW5hbWljRmllbGRWYWx1ZU9iamVjdCA9PiAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAkREJPYmplY3QtPntkYmh9LT5jb21taXQoKTsKCiAgICAkU2VsZi0+UHJpbnQoIiRDb3VudEZpZWxkVXBkYXRlcyBmaWVsZHMgdXBkYXRlZFxuIik7CiAgICAkU2VsZi0+UHJpbnQoIiRDb3VudFZhbHVlVXBkYXRlcyBmaWVsZCB2YWx1ZXMgdXBkYXRlZFxuIik7CgogICAgJFNlbGYtPl9SZXBvcnRDb25zdHJpY3Rpb25zKAogICAgICAgIENvbnN0cmljdGlvbnNMaXN0ID0+IFxAQ29uc3RyaWN0aW9uc0xpc3QsCiAgICAgICAgRmlsZU5hbWUgICAgICAgICAgPT4gJEZpbGVOYW1lLAogICAgKTsKCiAgICAjIHJlbW92ZSBEeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbSBwYWNrYWdlCiAgICBteSAkUGFja2FnZU5hbWUgPSAnRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlVuaW5zdGFsbGluZyAkUGFja2FnZU5hbWUgcGFja2FnZS4uLjwveWVsbG93PlxuIik7CiAgICBteSBAUmVwb3MgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUxpc3QoCiAgICAgICAgUmVzdWx0ID0+ICdTaG9ydCcKICAgICk7CiAgICBteSBAUGFja2FnZUVudHJ5ID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhY2thZ2VOYW1lIH0gQFJlcG9zOwogICAgaWYgKCAhQFBhY2thZ2VFbnRyeSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGZpbmQgJFBhY2thZ2VOYW1lIHBhY2thZ2UhPC9yZWQ+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRQYWNrYWdlVmVyc2lvbiA9ICRQYWNrYWdlRW50cnlbMF17VmVyc2lvbn07CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkZvdW5kICRQYWNrYWdlTmFtZSBWZXJzaW9uICRQYWNrYWdlVmVyc2lvbjwveWVsbG93PlxuIik7CiAgICAgICAgbXkgJFBhY2thZ2UgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUdldCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkUGFja2FnZU5hbWUsCiAgICAgICAgICAgIFZlcnNpb24gPT4gJFBhY2thZ2VWZXJzaW9uLAogICAgICAgICk7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkUGFja2FnZU9iamVjdC0+UGFja2FnZVVuaW5zdGFsbCgKICAgICAgICAgICAgU3RyaW5nID0+ICRQYWNrYWdlLAogICAgICAgICk7CiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgdW5pbnN0YWxsaW5nICRQYWNrYWdlTmFtZSBwYWNrYWdlLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5pbnN0YWxsICRQYWNrYWdlTmFtZSBwYWNrYWdlITwvcmVkPlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmU8L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIF9VcGRhdGVEeW5hbWljRmllbGRDb25maWcgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElEICAgICAgICAgICAgICAgICA9ICRQYXJhbXsnSUQnfTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkUGFyYW17J0R5bmFtaWNGaWVsZE9iamVjdCd9OwogICAgbXkgJENvbnN0cmljdGlvbnNMaXN0ICA9ICRQYXJhbXsnQ29uc3RyaWN0aW9uc0xpc3QnfTsKCiAgICBteSAkREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIElEID0+ICRJRCApOwoKICAgIG15ICROZXdDb25maWcgPSB7CiAgICAgICAgJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScgPT4gJycsCiAgICAgICAgJ011bHRpc2VsZWN0JyAgICAgICAgICAgPT4gKCAkREYtPntDb25maWd9e01heEFycmF5U2l6ZX0gPiAxID8gMSA6IDAgKSwKICAgICAgICAnUmVmZXJlbmNlRmlsdGVyTGlzdCcgICA9PiBbXSwKICAgICAgICAnU2VhcmNoQXR0cmlidXRlJyAgICAgICA9PiAnJywKICAgICAgICAnUG9zc2libGVOb25lJyAgICAgICAgICA9PiAnMScsCiAgICAgICAgJ0VkaXRGaWVsZE1vZGUnICAgICAgICAgPT4gJ0F1dG9Db21wbGV0ZScsCiAgICAgICAgJ011bHRpVmFsdWUnICAgICAgICAgICAgPT4gMCwKICAgICAgICAnTGlua1R5cGUnICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnTGlua0RpcmVjdGlvbicgICAgICAgICA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScsCiAgICAgICAgJ0Rpc3BsYXlUeXBlJyAgICAgICAgICAgPT4gJFNlbGYtPl9Db252ZXJ0RnJvbURpc3BsYXlQYXR0ZXJuKCBQYXR0ZXJuID0+ICRERi0+e0NvbmZpZ317RGlzcGxheVBhdHRlcm59ICksCiAgICAgICAgJ0NsYXNzSURzJyAgICAgICAgICAgICAgPT4gJERGLT57Q29uZmlnfXtJVFNNQ29uZmlnSXRlbUNsYXNzZXN9LAogICAgICAgICdEZXBsU3RhdGVJRHMnICAgICAgICAgID0+ICRERi0+e0NvbmZpZ317RGVwbG95bWVudFN0YXRlc30sCiAgICAgICAgJ1Rvb2x0aXAnICAgICAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ1JlZmVyZW5jZWRPYmplY3RUeXBlJyAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIH07CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkSUQsCiAgICAgICAgTmFtZSAgICAgICA9PiAkREYtPntOYW1lfSwKICAgICAgICBMYWJlbCAgICAgID0+ICRERi0+e0xhYmVsfSwKICAgICAgICBGaWVsZE9yZGVyID0+ICRERi0+e0ZpZWxkT3JkZXJ9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJERGLT57T2JqZWN0VHlwZX0sCiAgICAgICAgVmFsaWRJRCAgICA9PiAkREYtPntWYWxpZElEfSwKICAgICAgICBDb25maWcgICAgID0+ICROZXdDb25maWcsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoICI8cmVkPlVuYWJsZSB0byBzZXQgREYgQ29uZmlnIGZvciAiIC4gJERGLT57TmFtZX0gLiAiICgkSUQpIHdpdGg6XG4gJE5ld0NvbmZpZzwvcmVkPlxuIiApOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgIG15IEBMb2NhbENvbnN0cmljdGlvbnMgPSBzcGxpdCggL1xyXG4vLCAkREYtPntDb25maWd9e0NvbnN0cmljdGlvbnN9ICk7CiAgICBmb3IgbXkgJENvbnN0cmljdGlvbiAoQExvY2FsQ29uc3RyaWN0aW9ucykgewogICAgICAgIHB1c2ggQHskQ29uc3RyaWN0aW9uc0xpc3R9LCB7CiAgICAgICAgICAgIElEICAgICAgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpZWxkTmFtZSAgICA9PiAkREYtPntOYW1lfSwKICAgICAgICAgICAgQ29uc3RyaWN0aW9uID0+ICRDb25zdHJpY3Rpb24sCiAgICAgICAgfTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIF9Db252ZXJ0RnJvbURpc3BsYXlQYXR0ZXJuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhdHRlcm4gPSAkUGFyYW17J1BhdHRlcm4nfTsKCiAgICBpZiAoICRQYXR0ZXJuID1+IC88Q0lfQ2xhc3M+LyAmJiAkUGF0dGVybiA9fiAvPENJX05hbWU+LyApIHsKICAgICAgICByZXR1cm4gJ0NsYXNzQ29uZmlnSXRlbU5hbWUnOwogICAgfQogICAgZWxzaWYgKCAkUGF0dGVybiA9fiAvPENJX0NsYXNzPi8gJiYgJFBhdHRlcm4gPX4gLzxDSV9OdW1iZXI+LyApIHsKICAgICAgICByZXR1cm4gJ0NsYXNzQ29uZmlnSXRlbU51bWJlcic7CiAgICB9CiAgICBlbHNpZiAoICRQYXR0ZXJuID1+IC88Q0lfTmFtZT4vICkgewogICAgICAgIHJldHVybiAnQ29uZmlnSXRlbU5hbWUnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICdDb25maWdJdGVtTnVtYmVyJzsKICAgIH0KfQoKc3ViIF9VcGRhdGVEeW5hbWljRmllbGRWYWx1ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGRJRCAgICAgICAgICAgICAgICAgPSAkUGFyYW17J0lEJ307CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgICAgPSAkUGFyYW17J0RCT2JqZWN0J307CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkUGFyYW17J0R5bmFtaWNGaWVsZFZhbHVlT2JqZWN0J307CgogICAgbXkgQE9iamVjdElEczsKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICdTRUxFQ1QgRElTVElOQ1Qgb2JqZWN0X2lkIEZST00gZHluYW1pY19maWVsZF92YWx1ZSBXSEVSRSBmaWVsZF9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJEZpZWxkSUQgXSwKICAgICk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBPYmplY3RJRHMsICRSb3dbMF07CiAgICB9CgogICAgbXkgJENvdW50VmFsdWVVcGRhdGVzID0gMDsKICAgIGZvciBteSAkT2JqZWN0SUQgKEBPYmplY3RJRHMpIHsKCiAgICAgICAgbXkgJEV4aXN0aW5nVmFsdWVzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRmllbGRJRCAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgIE9iamVjdElEID0+ICRPYmplY3RJRAogICAgICAgICk7CgogICAgICAgIG15IEBOZXdWYWx1ZXM7CiAgICAgICAgbXkgJEluZGV4VmFsdWUgPSAwOwogICAgICAgIGZvciBteSAkRXhpc3RpbmdWYWx1ZSAoICRFeGlzdGluZ1ZhbHVlcy0+QCogKSB7CiAgICAgICAgICAgIG15ICROZXdWYWx1ZSA9IHsKICAgICAgICAgICAgICAgIFZhbHVlVGV4dCA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIFZhbHVlSW50ICA9PiAkRXhpc3RpbmdWYWx1ZS0+e1ZhbHVlVGV4dH0sCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICggc2NhbGFyICRFeGlzdGluZ1ZhbHVlcy0+QCogPiAxICkgewogICAgICAgICAgICAgICAgJE5ld1ZhbHVlLT57SW5kZXhWYWx1ZX0gPSAkSW5kZXhWYWx1ZTsKICAgICAgICAgICAgICAgICRJbmRleFZhbHVlKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBATmV3VmFsdWVzLCAkTmV3VmFsdWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRWYWx1ZU9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgIEZpZWxkSUQgID0+ICRGaWVsZElELAogICAgICAgICAgICBPYmplY3RJRCA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgIFZhbHVlICAgID0+IFxATmV3VmFsdWVzLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+VW5hYmxlIHRvIHNldCBERiBWYWx1ZSBmb3Igb2JqZWN0ICRPYmplY3RJRCBmaWVsZCAkRmllbGRJRC48L3JlZD5cbiIpOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICAgICB9CgogICAgICAgICRDb3VudFZhbHVlVXBkYXRlcyArPSBzY2FsYXIgJEV4aXN0aW5nVmFsdWVzLT5AKjsKICAgIH0KCiAgICByZXR1cm4gJENvdW50VmFsdWVVcGRhdGVzOwp9CgpzdWIgX0dldERGVHlwZUlEcyB7CgogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkREJPYmplY3QgPSAkUGFyYW17J0RCT2JqZWN0J307CiAgICBteSAkREZUeXBlICAgPSAkUGFyYW17J0RGVHlwZSd9OwoKICAgIG15IEBSZXN1bHQ7CiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAnU0VMRUNUIGlkIEZST00gZHluYW1pY19maWVsZCBXSEVSRSBmaWVsZF90eXBlID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkREZUeXBlIF0sCiAgICApOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFJlc3VsdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKc3ViIF9SZXBvcnRDb25zdHJpY3Rpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnN0cmljdGlvbnNMaXN0ID0gJFBhcmFteydDb25zdHJpY3Rpb25zTGlzdCd9OwogICAgbXkgJEZpbGVOYW1lICAgICAgICAgID0gJFBhcmFteydGaWxlTmFtZSd9OwoKICAgIGlmICggQHskQ29uc3RyaWN0aW9uc0xpc3R9ICkgewogICAgICAgIG15ICRDb25zdHJpY3Rpb25zU3RyID0gImZpZWxkXHRjb25zdHJpY3Rpb25cbiI7CiAgICAgICAgZm9yIG15ICRDb25zdHJpY3Rpb24gKCBAeyRDb25zdHJpY3Rpb25zTGlzdH0gKSB7CiAgICAgICAgICAgICRDb25zdHJpY3Rpb25zU3RyIC49ICRDb25zdHJpY3Rpb24tPntGaWVsZE5hbWV9IC4gIlx0IiAuICRDb25zdHJpY3Rpb24tPntDb25zdHJpY3Rpb259IC4gIlxuIjsKICAgICAgICB9CiAgICAgICAgbXkgJENvdW50ID0gc2NhbGFyIEB7JENvbnN0cmljdGlvbnNMaXN0fTsKICAgICAgICBpZiAoJEZpbGVOYW1lKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgTG9jYXRpb24gPT4gJEZpbGVOYW1lLAogICAgICAgICAgICAgICAgQ29udGVudCAgPT4gXCRDb25zdHJpY3Rpb25zU3RyLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3Qgd3JpdGUgZmlsZS48L3JlZD5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Gb3VuZCAkQ291bnQgY29uc3RyaWN0aW9ucywgdGhleSByZXF1aXJlIG1hbnVhbCBjb25maWd1cmF0aW9uLiBQbGVhc2UgY2hlY2sgdGhlIHJlcG9ydCBmaWxlICckRmlsZU5hbWUnLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwcmludCAkQ29uc3RyaWN0aW9uc1N0cjsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkZvdW5kICRDb3VudCBjb25zdHJpY3Rpb25zLCB0aGV5IHJlcXVpcmUgbWFudWFsIGNvbmZpZ3VyYXRpb24uPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIk5vIGNvbnN0cmljdGlvbnMgd2VyZSBmb3VuZC5cbiIpOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/Delete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6RGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdEZWxldGUgY29uZmlnIGl0ZW1zIChhbGwsIGJ5IGNsYXNzIChhbmQgZGVwbG95bWVudCBzdGF0ZSkgb3IgYnkgbnVtYmVyKS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBhbGwgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRBcmd1bWVudCgKICAgICAgICBOYW1lICAgICAgICA9PiAnYWNjZXB0JywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWNjZXB0IGRlbGV0ZSBhbGwgb3IgY2FuY2VsLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8oeXxuKS9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtcyBvZiB0aGlzIGNsYXNzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdkZXBsb3ltZW50LXN0YXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbXMgd2l0aCB0aGlzIGRlcGxveW1lbnQgc3RhdGUgKE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdjb25maWdpdGVtLW51bWJlcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL1xkKy9zbXgsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtb2xkLXZlcnNpb25zJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbSB2ZXJzaW9ucyBleGNlcHQgdGhlIG5ld2VzdCB2ZXJzaW9uLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbSB2ZXJzaW9ucyBidXQga2VlcCB0aGUgbGFzdCBYWCB2ZXJzaW9ucy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtIHZlcnNpb25zIG9sZGVyIHRoYW4gWFggZGF5cy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgaWYgKAogICAgICAgICEkQWxsCiAgICAgICAgJiYgISRDbGFzcwogICAgICAgICYmICFAQ29uZmlnSXRlbU51bWJlcnMKICAgICAgICAmJiAhJERlcGxveW1lbnRTdGF0ZQogICAgICAgICYmICEkQWxsT2xkVmVyc2lvbnMKICAgICAgICAmJiAhJEFsbEJ1dEtlZXBMYXN0CiAgICAgICAgJiYgISRBbGxPbGRlclRoYW5EYXlzCiAgICAgICAgKQogICAgewogICAgICAgIGRpZQogICAgICAgICAgICAiUGxlYXNlIHByb3ZpZGUgb3B0aW9uIC0tYWxsLCAtLWNsYXNzLCAtLWNvbmZpZ2l0ZW0tbnVtYmVyLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgb3IgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zLiIKICAgICAgICAgICAgLiAiIEZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KCiAgICBteSAkQWxsT3B0aW9uVHlwZUNvdW50ID0gMDsKICAgIGZvciBteSAkVmFsdWUgKCAkQWxsLCAkQWxsT2xkVmVyc2lvbnMsICRBbGxCdXRLZWVwTGFzdCwgJEFsbE9sZGVyVGhhbkRheXMgKSB7CiAgICAgICAgaWYgKCRWYWx1ZSkgewogICAgICAgICAgICAkQWxsT3B0aW9uVHlwZUNvdW50Kys7CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkQWxsT3B0aW9uVHlwZUNvdW50ID4gMSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb25zIC0tYWxsLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgYW5kIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBjYW4gbm90IGJlIG1peGVkLiBcbkZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KICAgIGlmICggJEFsbE9wdGlvblR5cGVDb3VudCAmJiAoICRDbGFzcyB8fCBAQ29uZmlnSXRlbU51bWJlcnMgfHwgJERlcGxveW1lbnRTdGF0ZSApICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiVGhlIG9wdGlvbnMgLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyBhbmQgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIGNhbiBub3QgdXNlZCB0b2dldGhlciB3aXRoIGFueSBvdGhlciBvcHRpb24uIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggJERlcGxveW1lbnRTdGF0ZSAmJiAhJENsYXNzICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiRGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIHRoaXMgZGVwbG95bWVudCBzdGF0ZSBpcyBwb3NpYmxlIE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIuIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggQENvbmZpZ0l0ZW1OdW1iZXJzICYmICggJENsYXNzIHx8ICREZXBsb3ltZW50U3RhdGUgKSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb24gLS1jb25maWdpdGVtLW51bWJlciBjYW4gbm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgLS1jbGFzcyBvciB0aGUgLS1kZXBsb3ltZW50LXN0YXRlIHBhcmFtZXRlci4gXG5Gb3IgbW9yZSBkZXRhaWxzIHVzZSAtLWhlbHBcbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcy4uLjwveWVsbG93PlxuXG4iKTsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgIyBkZWxldGUgYWxsIGNvbmZpZyBpdGVtcwogICAgaWYgKCRBbGwpIHsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCBSZXN1bHQgPT4gJ0FSUkFZJyApOwoKICAgICAgICAjIGdldCBudW1iZXIgb2YgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBDSSB0byBkZWxldGUKICAgICAgICBpZiAoJENJQ291bnQpIHsKCiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5BcmUgeW91IHN1cmUgdGhhdCB5b3Ugd2FudCB0byBkZWxldGUgQUxMICRDSUNvdW50IGNvbmZpZyBpdGVtcz88L3llbGxvdz5cbiIpOwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhpcyBpcyBpcnJldm9jYWJsZS4gW3kvbl0gPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgbXkgJENvbmZpcm1hdGlvbiA9ICRTZWxmLT5HZXRBcmd1bWVudCgnYWNjZXB0Jyk7CiAgICAgICAgICAgIGNob21wKCAkQ29uZmlybWF0aW9uID0gbGMgPFNURElOPiApIGlmICFkZWZpbmVkICRDb25maXJtYXRpb247CgogICAgICAgICAgICAjIGlmIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBkZWxldGlvbgogICAgICAgICAgICBpZiAoICRDb25maXJtYXRpb24gZXEgJ3knICkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtcwogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcy4uLjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtcyggQ29uZmlnSXRlbUlEcyA9PiBcQENvbmZpZ0l0ZW1JRHMgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Db21tYW5kIGRlbGV0ZSB3YXMgY2FuY2VsZWQ8L3llbGxvdz5cbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5UaGVyZSBhcmUgTk8gY29uZmlnIGl0ZW1zIHRvIGRlbGV0ZS48L3llbGxvdz5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zCiAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggXEBDb25maWdJdGVtTnVtYmVycyApICkgewoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgbXkgJElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJRCkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJElEOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlVuYWJsZSB0byBmaW5kIGNvbmZpZyBpdGVtICRDb25maWdJdGVtTnVtYmVyLjwveWVsbG93PlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtcyAoaWYgYW55IHZhbGlkIG51bWJlciB3YXMgZ2l2ZW4pCiAgICAgICAgaWYgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5EZWxldGluZyBzcGVjaWZpZWQgY29uZmlnIGl0ZW1zLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzCiAgICBlbHNpZiAoJENsYXNzKSB7CgogICAgICAgIG15IEBDb25maWdJdGVtSURzOwoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGludmVydCB0aGUgaGFzaCB0byBoYXZlIHRoZSBjbGFzc2VzIG5hbWVzIGFzIGtleXMKICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwoKICAgICAgICBpZiAoICRDbGFzc05hbWUySUR7JENsYXNzfSApIHsKICAgICAgICAgICAgbXkgJElEID0gJENsYXNzTmFtZTJJRHskQ2xhc3N9OwoKICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBwYXJhbSBmb3IgdGhlIGNsYXNzIHNlYXJjaAogICAgICAgICAgICBteSAlU2VhcmNoUGFyYW0gPSAoCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyRJRF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFsc28gYSBkZXBsb3ltZW50IHN0YXRlIGlzIGdpdmVuCiAgICAgICAgICAgIGlmICgkRGVwbG95bWVudFN0YXRlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBpbnZlcnQgdGhlIGhhc2ggdG8gaGF2ZSB0aGUgZGVwbG95bWVudCBzdGF0ZSBuYW1lcyBhcyBrZXlzCiAgICAgICAgICAgICAgICBteSAlRGVwbG95bWVudFN0YXRlMklEID0gcmV2ZXJzZSAleyREZXBsb3ltZW50U3RhdGVMaXN0fTsKCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBkZXBsb3ltZW50IHN0YXRlIGlzIHZhbGlkCiAgICAgICAgICAgICAgICBpZiAoICREZXBsb3ltZW50U3RhdGUySUR7JERlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgICAgICAgICAgbXkgJElEID0gJERlcGxveW1lbnRTdGF0ZTJJRHskRGVwbG95bWVudFN0YXRlfTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXtEZXBsU3RhdGVJRHN9ID0gWyRJRF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgZGVwbG95bWVudCBzdGF0ZSAkRGVwbG95bWVudFN0YXRlLiIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcyAoYW5kIG1heWJlIGRlcGxveW1lbnQgc3RhdGUpIGNvbmZpZyBpdGVtcwogICAgICAgICAgICBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCVTZWFyY2hQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgY2xhc3MgbmFtZSAkQ2xhc3MuIik7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgY29uZmlnIGl0ZW1zIChpZiBhbnkgdmFsaWQgbnVtYmVyIHdhcyBnaXZlbikKICAgICAgICBpZiAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcyB0aGF0IGJlbG9uZyB0byB0aGUgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBubyBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzICRDbGFzcy4uLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHZlcnNpb25zIG9sZGVyIHRoYW4geHggZGF5cyBmcm9tIGFsbCBjb25maWcgaXRlbXMKICAgIGVsc2lmICgkQWxsT2xkZXJUaGFuRGF5cykgewoKICAgICAgICBteSAkT2xkZXJEYXRlRFRPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAkT2xkZXJEYXRlRFRPYmplY3QtPlN1YnRyYWN0KAogICAgICAgICAgICBEYXlzID0+ICRBbGxPbGRlclRoYW5EYXlzLAogICAgICAgICk7CgogICAgICAgIG15ICRWZXJzaW9uc09sZGVyRGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICAgICAgT2xkZXJEYXRlID0+ICRPbGRlckRhdGVEVE9iamVjdC0+VG9TdHJpbmcoKSwKICAgICAgICApOwoKICAgICAgICAjIFdlIG5lZWQgdG8gZ2V0IGFsbCB2ZXJzaW9ucyB0byBtYWtlIHN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgdmVyc2lvbiByZW1haW5zCiAgICAgICAgIyAtPiBpZiBvbmUgdmVyc2lvbiBvZiBhIGNvbmZpZ2l0ZW0gaXMgeW91bmdlciB0aGFuIHRoZSBhbW91bnQgb2YgZGF5cywKICAgICAgICAjICAgIHdlIGNhbiBkZWxldGUgYWxsIFZlcnNpb25zIHJlY2VpdmVkIGJ5IHRoZSAiT2xkZXJEYXRlIiBxdWVyeQogICAgICAgICMgLT4gaWYgbm8gdmVyc2lvbiBpcyB5b3VuZ2VyIHRoYW4gdGhlIGFtb3VudCBvZiBkYXlzCiAgICAgICAgIyAgICB3ZSBoYXZlIHRvIGtlZXAgb25lIHZlcnNpb24gb2YgdGhlICJPbGRlckRhdGUiIHF1ZXJ5IHJlc3VsdAogICAgICAgIG15ICRWZXJzaW9uc0FsbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgpOwoKICAgICAgICBteSBAVmVyc2lvbnNUb0RlbGV0ZTsKCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zT2xkZXJEYXRlfSApIHsKCiAgICAgICAgICAgICMgbnVtYmVyIG9mIGZvdW5kIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgQ0kKICAgICAgICAgICAgbXkgJE51bWJlck9mT2xkZXJWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG51bWJlciBvZiBhbGwgdmVyc2lvbnMgb2YgdGhpcyBDSQogICAgICAgICAgICBteSAkTnVtYmVyT2ZBbGxWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG5leHQgaWYgdGhlcmUgYXJlIG5vIG9sZGVyIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTnVtYmVyT2ZPbGRlclZlcnNpb25zOwoKICAgICAgICAgICAgIyBuZXh0IGlmIHRoZXJlIGlzIG9ubHkgb25lIG9yIHplcm8gb2YgYWxsIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICROdW1iZXJPZkFsbFZlcnNpb25zIDw9IDE7CgogICAgICAgICAgICAjIGlmIHRoZSBhbW91bnQgb2YgVmVyc2lvbnMgd2UgaGF2ZSB0byBkZWxldGUKICAgICAgICAgICAgIyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBhbW91bnQgb2YgQWxsVmVyc2lvbnMKICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIGtlZXAgdGhlIGxhc3Qgb25lCiAgICAgICAgICAgICMgaW4gb3JkZXIgdG8ga2VlcCB0aGUgc3lzdGVtIHdvcmtpbmcKICAgICAgICAgICAgIwogICAgICAgICAgICAjIC0+IHNvIGxldCdzIHN0YXJ0IGNvdW50aW5nIGF0ICIxIiBpbnN0ZWFkIG9mICIwIgogICAgICAgICAgICAjIGluIG9yZGVyIHRvIHN0b3AgZGVsZXRpbmcgYmVmb3JlIHdlIHJlYWNoIHRoZSBuZXdlc3QgdmVyc2lvbgogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBpZiAoICROdW1iZXJPZk9sZGVyVmVyc2lvbnMgPT0gJE51bWJlck9mQWxsVmVyc2lvbnMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgbnVtZXJpY2FsbHkgc29ydGVkCiAgICAgICAgICAgIGZvciBteSAkVmVyc2lvbiAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ291bnQgPCAkTnVtYmVyT2ZPbGRlclZlcnNpb25zICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsICRWZXJzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgZXhjZXB0IHRoZSBuZXdlc3QgdmVyc2lvbgogICAgZWxzaWYgKCRBbGxPbGRWZXJzaW9ucykgewoKICAgICAgICBteSAkVmVyc2lvbnNBbGwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkxpc3RBbGwoKTsKCiAgICAgICAgbXkgQFZlcnNpb25zVG9EZWxldGU7CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkVmVyc2lvbnNBbGwpICkgewoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyRWZXJzaW9uc0FsbH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIHZlcnNpb25zIGFyZSBudW1lcmljYWxseSBzb3J0ZWQKICAgICAgICAgICAgICAgIG15IEBSZWR1Y2VkVmVyc2lvbnMgPSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBsYXN0IChuZXdlc3QpIHZlcnNpb24KICAgICAgICAgICAgICAgIHBvcCBAUmVkdWNlZFZlcnNpb25zOwoKICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsIEBSZWR1Y2VkVmVyc2lvbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgWFggdmVyc2lvbnMKICAgIGVsc2lmICgkQWxsQnV0S2VlcExhc3QpIHsKCiAgICAgICAgbXkgJFZlcnNpb25zQWxsID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKCk7CgogICAgICAgIG15IEBWZXJzaW9uc1RvRGVsZXRlOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uc0FsbCkgKSB7CgogICAgICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zQWxsfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9ICk7CgogICAgICAgICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgdmVyc2lvbnMgYXJlIG51bWVyaWNhbGx5IHJldmVyc2Ugc29ydGVkCiAgICAgICAgICAgICAgICBteSBAUmVkdWNlZFZlcnNpb25zID0gcmV2ZXJzZSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgICAgICAgICBAUmVkdWNlZFZlcnNpb25zID0gZ3JlcCB7ICRDb3VudCsrOyAkQ291bnQgPiAkQWxsQnV0S2VlcExhc3QgfSBAUmVkdWNlZFZlcnNpb25zOwogICAgICAgICAgICAgICAgcHVzaCBAVmVyc2lvbnNUb0RlbGV0ZSwgQFJlZHVjZWRWZXJzaW9uczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1WZXJzaW9ucygKICAgICAgICAgICAgVmVyc2lvbklEcyA9PiBcQFZlcnNpb25zVG9EZWxldGUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIk5vIGNvbmZpZyBpdGVtIGZvciBkZWxldGUuIik7CiAgICB9CgogICAgIyBzaG93IHN1Y2Nlc3NmdWxsIG91dHB1dAogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1zIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWxldGVkQ0k7CgogICAgIyBkZWxldGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtcwogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICBteSAkVHJ1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVHJ1ZSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlVuYWJsZSB0byBkZWxldGUgY29uZmlnIGl0ZW0gd2l0aCBpZCAkQ29uZmlnSXRlbUlELiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJERlbGV0ZWRDSSsrOwogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5EZWxldGVkICREZWxldGVkQ0kgY29uZmlnIGl0ZW0ocykuPC9ncmVlbj5cblxuIik7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBEZWxldGVDb25maWdJdGVtVmVyc2lvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRlbGV0aW5nIGNvbmZpZyBpdGVtIHZlcnNpb25zLjwvZ3JlZW4+XG5cbiIpOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uRGVsZXRlKAogICAgICAgIFZlcnNpb25JRHMgPT4gJFBhcmFte1ZlcnNpb25JRHN9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/DumpGraph.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkR1bXBHcmFwaDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gcXcoCiAgICBLZXJuZWw6OlN5c3RlbTo6REIKICAgIEtlcm5lbDo6U3lzdGVtOjpNYWluCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdEdW1wIHRoZSBncmFwaCBvZiBjb25maWcgaXRlbXMgYXMgU1ZHIHRvIHRoZSBmaWxlIE9UT0JPX0lUU01fQ29uZmlnX0l0ZW1zLnN2Zy4nKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIENoZWNrIHdoZXRoZXIgdGhlIG9wdGlvbmFsIG1vZHVsZSBHcmFwaFZpejIgaXMgaW5zdGFsbGVkCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBpZiAoICEkTWFpbk9iamVjdC0+UmVxdWlyZSgnR3JhcGhWaXoyJykgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRoZSBvcHRpb25hbCBQZXJsIG1vZHVsZSAnR3JhcGhWaXoyJyBpcyBub3QgaW5zdGFsbGVkIik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcjsKICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRSb3dzICAgICA9ICREQk9iamVjdC0+U2VsZWN0QWxsKAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIHNvdXJjZV9jb25maWdpdGVtX2lkLCBzb3VyY2VfY29uZmlnaXRlbV92ZXJzaW9uX2lkLCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCxsaW5rX3R5cGVfaWQKICBGUk9NIGNvbmZpZ2l0ZW1fbGluawpFTkRfU1FMCiAgICApOwoKICAgIG15ICRHcmFwaCA9IEdyYXBoVml6Mi0+bmV3KAogICAgICAgIGVkZ2UgICA9PiB7IGNvbG9yICAgID0+ICdncmV5JyB9LAogICAgICAgIGdsb2JhbCA9PiB7IGRpcmVjdGVkID0+IDEgfSwKICAgICAgICBncmFwaCAgPT4gewogICAgICAgICAgICBsYWJlbCAgID0+ICdPVE9CTyBJVFNNIENvbmZpZyBJdGVtcycsCiAgICAgICAgICAgIHJhbmtkaXIgPT4gJ1RCJwogICAgICAgIH0sCiAgICAgICAgbm9kZSA9PiB7CiAgICAgICAgICAgIHNoYXBlID0+ICdvdmFsJywKICAgICAgICAgICAgY29sb3IgPT4gJ2JsdWUnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgbG9vayBvdmVyIHRoZSBlZGdlcywgYWRkIG5vZGVzLCBhZGQgdGhlIGVkZ2VzCiAgICBteSAlTm9kZVNlZW47CiAgICBmb3IgbXkgJFJvdyAoICRSb3dzLT5AKiApIHsKICAgICAgICBteSAoICRTb3VyY2VDb25maWdJdGVtSUQsICRTb3VyY2VWZXJzaW9uSUQsICRUYXJnZXRDb25maWdJdGVtSUQsICRUYXJnZXRWZXJzaW9uSUQsICRMaW5rVHlwZUlEICkgPSAkUm93LT5AKjsKCiAgICAgICAgbXkgJFNvdXJjZU5hbWUgPSAkU291cmNlQ29uZmlnSXRlbUlEID8gIkNJICRTb3VyY2VDb25maWdJdGVtSUQiIDogIlZlcnNpb24gJFNvdXJjZVZlcnNpb25JRCI7CiAgICAgICAgaWYgKCAhJE5vZGVTZWVueyRTb3VyY2VOYW1lfSsrICkgewogICAgICAgICAgICBteSAkU2hhcGUgPSAkU291cmNlQ29uZmlnSXRlbUlEID8gJ2NpcmNsZScgOiAnZGlhbW9uZCc7CiAgICAgICAgICAgICRHcmFwaC0+YWRkX25vZGUoCiAgICAgICAgICAgICAgICBuYW1lICA9PiAkU291cmNlTmFtZSwKICAgICAgICAgICAgICAgIHNoYXBlID0+ICRTaGFwZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRUYXJnZXROYW1lID0gJFRhcmdldENvbmZpZ0l0ZW1JRCA/ICJDSSAkVGFyZ2V0Q29uZmlnSXRlbUlEIiA6ICJWZXJzaW9uICRUYXJnZXRWZXJzaW9uSUQiOwogICAgICAgIGlmICggISROb2RlU2VlbnskVGFyZ2V0TmFtZX0rKyApIHsKICAgICAgICAgICAgbXkgJFNoYXBlID0gJFRhcmdldENvbmZpZ0l0ZW1JRCA/ICdjaXJjbGUnIDogJ2RpYW1vbmQnOwogICAgICAgICAgICAkR3JhcGgtPmFkZF9ub2RlKAogICAgICAgICAgICAgICAgbmFtZSAgPT4gJFRhcmdldE5hbWUsCiAgICAgICAgICAgICAgICBzaGFwZSA9PiAkU2hhcGUKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRHcmFwaC0+YWRkX2VkZ2UoCiAgICAgICAgICAgIGZyb20gID0+ICRTb3VyY2VOYW1lLAogICAgICAgICAgICB0byAgICA9PiAkVGFyZ2V0TmFtZSwKICAgICAgICAgICAgbGFiZWwgPT4gIkxpbmsgVHlwZSAkTGlua1R5cGVJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBjbHVzdGVyIGFuZCBvcmRlciB0aGUgdmVyc2lvbnMgb2YgYSBDSQogICAgICAgICMkR3JhcGgtPnB1c2hfc3ViZ3JhcGgoCiAgICAgICAgIyAgICBuYW1lICA9PiAnY2x1c3Rlcl8xJywKICAgICAgICAjICAgIGdyYXBoID0+IHtsYWJlbCA9PiAnQ2hpbGQnfSwKICAgICAgICAjICAgIG5vZGUgID0+IHtjb2xvciA9PiAnbWFnZW50YScsIHNoYXBlID0+ICdkaWFtb25kJ30sCiAgICAgICAgIyk7CiAgICAgICAgIyAkR3JhcGgtPmFkZF9lZGdlKGZyb20gPT4gJ0NoYWRzdG9uZScsIHRvID0+ICdXYXZlcmxleScpOwogICAgICAgICMgJEdyYXBoLT5wb3Bfc3ViZ3JhcGg7CiAgICB9CgogICAgbXkgJE91dHB1dEZpbGUgPSAnT1RPQk9fSVRTTV9Db25maWdfSXRlbXMuc3ZnJzsKICAgICRHcmFwaC0+cnVuKCBvdXRwdXRfZmlsZSA9PiAkT3V0cHV0RmlsZSApOwoKICAgICRTZWxmLT5QcmludCgiRHVtcCBncmFwaCBpbiAkT3V0cHV0RmlsZVxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ListDuplicates.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0xpc3QgQ29uZmlnSXRlbXMgd2hpY2ggaGF2ZSBhIG5vbi11bmlxdWUgbmFtZS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NsYXNzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQ2hlY2sgb25seSBjb25maWcgaXRlbXMgb2YgdGhpcyBjbGFzcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnc2NvcGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWZpbmUgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayAoZ2xvYmFsfGNsYXNzKSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLyhnbG9iYWx8Y2xhc3MpL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtc3RhdGVzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWxzbyBjaGVjayBjb25maWcgaXRlbXMgaW4gbm9uLXByb2R1Y3RpdmUgc3RhdGVzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjbGFzcyBhcmd1bWVudAogICAgbXkgJENsYXNzID0gJFNlbGYtPkdldE9wdGlvbignY2xhc3MnKSAvLyAnJzsKCiAgICBpZiAoJENsYXNzKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgaW52ZXJ0IHRoZSBoYXNoIHRvIGhhdmUgdGhlIGNsYXNzZXMnIG5hbWVzIGFzIGtleXMKICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGlzIGNsYXNzIGV4aXN0cwogICAgICAgIGlmICggJENsYXNzTmFtZTJJRHskQ2xhc3N9ICkgewogICAgICAgICAgICBteSAkSUQgPSAkQ2xhc3NOYW1lMklEeyRDbGFzc307CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcycgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57Q2xhc3NJRHN9ID0gWyRJRF07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBkaWUgIkNsYXNzICRDbGFzcyBkb2VzIG5vdCBleGlzdC4uLlxuIjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pkxpc3RpbmcgZHVwbGljYXRlcyBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgaWYgKCAhJFNlbGYtPkdldE9wdGlvbignYWxsLXN0YXRlcycpICkgewoKICAgICAgICAjIExpbWl0IHRoZSBjaGVja2VkIGNvbmZpZyBpdGVtcyBieSBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57RGVwbFN0YXRlSURzfSA9IFsga2V5cyAkU3RhdGVMaXN0LT4lKiBdOwogICAgfQoKICAgICMgZ2V0IElUU01Db25maWdJdGVtIG9iamVjdAogICAgbXkgJElUU01Db25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgIG15IEBDb25maWdJdGVtSURzID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT4lKiwKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICk7CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgIyBnZXQgY2xhc3MgYXJndW1lbnQKICAgIG15ICRDbGFzcyA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CgogICAgIyBpZiB0aGVyZSBhcmUgYW55IENJIHRvIGNoZWNrCiAgICBpZiAoJENJQ291bnQpIHsKCiAgICAgICAgIyBpZiB0aGUgc2NvcGUgd2FzIGV4cGxpY2l0ZWx5IGRlZmluZWQsIHNldCBpdCwgb3RoZXJ3aXNlIHRoaXMgc2NyaXB0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZQogICAgICAgICMgdmFsdWUgc2V0IGluIFN5c0NvbmZpZwogICAgICAgIG15ICRTY29wZSA9ICRTZWxmLT5HZXRPcHRpb24oJ3Njb3BlJyk7CiAgICAgICAgaWYgKCRTY29wZSkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5TZXQoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkU2NvcGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJENsYXNzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5DaGVja2luZyBjb25maWcgaXRlbXMgb2YgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5DaGVja2luZyBhbGwgY29uZmlnIGl0ZW1zLi4uXG48L3llbGxvdz5cbiIpOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlByaW50KCAiPGdyZWVuPiIgLiAoICc9JyB4IDY5ICkgLiAiPC9ncmVlbj5cbiIgKTsKCiAgICAgICAgbXkgJER1cGxpY2F0ZXNGb3VuZCA9IDA7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW1zCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBjb25maWcgaXRlbQogICAgICAgICAgICBteSAkVmVyc2lvbiA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRWZXJzaW9uOwoKICAgICAgICAgICAgaWYgKCAhJFZlcnNpb24tPntOYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Ta2lwcGluZyBDb25maWdJdGVtICRDb25maWdJdGVtSUQgYXMgaXQgZG9lc24ndCBoYXZlIGEgbmFtZS5cbjwvcmVkPlxuIik7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdfSVRFTV9JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRWZXJzaW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb24tPntOYW1lfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJER1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICREdXBsaWNhdGVzRm91bmQgPSAxOwoKICAgICAgICAgICAgICAgIG15IEBEdXBsaWNhdGVEYXRhID0KICAgICAgICAgICAgICAgICAgICBtYXAgeyAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoIENvbmZpZ0l0ZW1JRCA9PiAkXyApIH0KICAgICAgICAgICAgICAgICAgICAkRHVwbGljYXRlcy0+QCo7CgogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgICAgICI8eWVsbG93PkNvbmZpZ0l0ZW0gJFZlcnNpb24tPntOdW1iZXJ9IChOYW1lOiAkVmVyc2lvbi0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiJFZlcnNpb24tPntDb25maWdJdGVtSUR9KSBoYXMgdGhlIGZvbGxvd2luZyBkdXBsaWNhdGVzOjwveWVsbG93PlxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGxpc3QgYWxsIHRoZSBkZXRhaWxzIG9mIHRoZSBkdXBsaWNhdGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJER1cGxpY2F0ZVZlcnNpb24gKEBEdXBsaWNhdGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgICAgICAgICAiXG48Z3JlZW4+XHQgKiAkRHVwbGljYXRlVmVyc2lvbi0+e051bWJlcn0gKENvbmZpZ0l0ZW1JRDogJER1cGxpY2F0ZVZlcnNpb24tPntDb25maWdJdGVtSUR9KTwvZ3JlZW4+XG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJER1cGxpY2F0ZXNGb3VuZCkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5GaW5pc2hlZCBjaGVja2luZyBmb3IgZHVwbGljYXRlIG5hbWVzLlxuPC9ncmVlbj5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pk5vIGR1cGxpY2F0ZSBuYW1lcyBmb3VuZC5cbjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBOTyBjb25maWcgaXRlbXMgdG8gY2hlY2suXG48L3llbGxvdz5cbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/UpgradeTo11.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTE7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBQYXRoOjpDbGFzcyBxdyhkaXIpOwp1c2UgTGlzdDo6VXRpbCAgcXcoYW55IHVuaXEpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpGb3JlYWNoVG9Gb3IpCgojIEluZm9ybSB0aGUgb2JqZWN0IG1hbmFnZXIgYWJvdXQgdGhlIGhhcmQgZGVwZW5kZW5jaWVzLgojIFRoaXMgbW9kdWxlIG11c3QgYmUgZGlzY2FyZGVkIHdoZW4gb25lIG9mIHRoZSBoYXJkIGRlcGVuZGVuY2llcyBoYXMgYmVlbiBkaXNjYXJkZWQuCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpYTUwnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OlVwZ3JhZGVUbzExIC0gc3VwcG9ydCBmb3IgdXBncmFkaW5nIHRoZSBDTURCCgo9aGVhZDEgREVTQ1JJUFRJT04KCk1vZHVsZSBmb3IgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpVcGdyYWRlVG8xMT4uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbigKICAgICAgICAnVXBncmFkZSB0aGUgY29tcGxldGUgQ01EQiBmcm9tIE9UT0JPIDEwIHRvIE9UT0JPIDExLiBBbGwgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgd2lsbCBiZSBjaGFuZ2VkLCBmb3IgZWFjaCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgYSBkeW5hbWljIGZpZWxkIHdpbGwgYmUgcHJlcGFyZWQgYW5kIHRoZSBkYXRhIHdpbGwgYmUgbWlncmF0ZWQuJwogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3VzZS1kZWZhdWx0cycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIk1ha2UgdGhlIHNjcmlwdCBub24gaW50ZXJhY3RpdmUuIEFsd2F5cyB1c2UgZGVmYXVsdCBzdWdnZXN0aW9ucyBhbmQgZG8gbm90IGdpdmUgdGhlIGNoYW5jZSB0byBjdXN0b21pemUgdGhlIHNjaGVtYXRhLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3N0YXJ0LWF0JywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3RhcnQgYXQgYSBjZXJ0YWluIHN0ZXAuIFZhbGlkIHZhbHVlcyBhcmU6IDAgLSBSZXN0YXJ0IGNvbXBsZXRlbHk7IDEgLSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL15bMC00XSQvLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3RtcGRpcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlByb3ZpZGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIG1hcHBpbmdzIGFuZCBzY2hlbWF0YS4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICduby1uYW1lc3BhY2UnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJQcm92aWRlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlcyB3aGljaCBhcmUgdG8gYmUgZ2VuZXJhdGVkIHdpdGhvdXQgbmFtZXNwYWNlLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4vLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgRGVjbGFyYXRpb24gb2YgcHJvY2Vzc2luZyBzdGVwcy4KICAgICMgVGhpcyBhbGxvd3MgcGlja2luZyB1cCBwcm9jZXNzaW5nIGF0IGEgc3BlY2lmaWMgc3RlcC4gT24gdGhlIGNvbW1hbmQgbGluZQogICAgIyB0aGUgc3RlcHMgYXJlIG51bWJlcmVkLCBzdGFydGluZyBhdCAxLgogICAgbXkgQFN0ZXBEZWNsYXJhdGlvbnMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdQcmVwYXJlIEF0dHJpYnV0ZSBNYXBwaW5nJywKICAgICAgICAgICAgSGFuZGxlciA9PiBcJl9QcmVwYXJlQXR0cmlidXRlTWFwcGluZywKICAgICAgICB9LAoKICAgICAgICAjICdQcmVwYXJlIER5bmFtaWNGaWVsZHMnLCAgIyBuZWNlc3Nhcnk/IHdoYXQgZG8gd2Ugd2FudCB0byBtYWtlIGNvbmZpZ3VyYWJsZSBiZXNpZGVzIHRoZSBuYW1lPyAoc3RlcCAwKQogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICA9PiAnUHJlcGFyZSBEZWZpbml0aW9ucycsCiAgICAgICAgICAgIEhhbmRsZXIgPT4gXCZfUHJlcGFyZURlZmluaXRpb25zLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdNaWdyYXRlIERlZmluaXRpb25zJywKICAgICAgICAgICAgSGFuZGxlciA9PiBcJl9NaWdyYXRlRGVmaW5pdGlvbnMsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgPT4gJ01pZ3JhdGUgQXR0cmlidXRlIERhdGEnLAogICAgICAgICAgICBIYW5kbGVyID0+IFwmX01pZ3JhdGVBdHRyaWJ1dGVEYXRhLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdEZWxldGUgTGVnYWN5IERhdGEnLAogICAgICAgICAgICBIYW5kbGVyID0+IFwmX0RlbGV0ZUxlZ2FjeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFRlbXBEaXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RlbXBEaXInKTsKCiAgICAkU2VsZi0+e1dvcmtpbmdEaXJ9ICA9ICRTZWxmLT5HZXRPcHRpb24oJ3RtcGRpcicpIHx8ICIkVGVtcERpci9DTURCVXBncmFkZVRvMTFTY2hlbWF0YSI7CiAgICAkU2VsZi0+e1VzZURlZmF1bHRzfSA9ICRTZWxmLT5HZXRPcHRpb24oJ3VzZS1kZWZhdWx0cycpOwogICAgJFNlbGYtPntOb05hbWVzcGFjZX0gPSAkU2VsZi0+R2V0T3B0aW9uKCduby1uYW1lc3BhY2UnKTsKICAgIG15ICRTdGFydEF0ID0gJFNlbGYtPkdldE9wdGlvbignc3RhcnQtYXQnKSAvLyAkU2VsZi0+X0dldEN1cnJlbnRTdGVwKCk7CgogICAgaWYgKCRTdGFydEF0KSB7CiAgICAgICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPk5lZWQgZXhpc3Rpbmcgd29ya2luZyBkaXJlY3RvcnkgJyRTZWxmLT57V29ya2luZ0Rpcn0nLjwvcmVkPlxuIik7CgogICAgICAgICAgICBkaWU7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Q29udGludWUgQ01EQiB1cGdyYWRlIGF0OiAnJFN0ZXBEZWNsYXJhdGlvbnNbICRTdGFydEF0IF0tPntOYW1lfSchPC95ZWxsb3c+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5TdGFydGluZyBDTURCIHVwZ3JhZGUhPC95ZWxsb3c+XG4iKTsKICAgIH0KCiAgICAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICRTZWxmLT57WUFNTE9iamVjdH0gICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICAjIGxpc3Qgb2YgQ29uZmlnSXRlbSBjbGFzc2VzLCBlaXRoZXIgaW4gT1RPQk8gMTAgb3IgT1RPQk8gMTEgZm9ybWF0CiAgICAkU2VsZi0+e0NsYXNzTGlzdH0gPSAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBnZXQgY29tcGxldGUgaGlzdG9yeSBvZiB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBjb25maWdpdGVtIGNsYXNzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkU2VsZi0+e0NsYXNzTGlzdH0tPiUqICkgewogICAgICAgICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPkRlZmluaXRpb25MaXN0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFN1Y2Nlc3M7CiAgICBTVEVQOgogICAgZm9yIG15ICRDdXJyZW50U3RlcCAoICRTdGFydEF0IC4uICQjU3RlcERlY2xhcmF0aW9ucyApIHsKICAgICAgICBteSAkU3RlcERlY2xhcmF0aW9uID0gJFN0ZXBEZWNsYXJhdGlvbnNbJEN1cnJlbnRTdGVwXTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPn5+IFN0ZXAgJEN1cnJlbnRTdGVwIH5+XG5TdGFydCB3b3JraW5nIG9uICRTdGVwRGVjbGFyYXRpb24tPntOYW1lfTwvZ3JlZW4+XG4iKTsKICAgICAgICAkU3VjY2VzcyA9ICRTdGVwRGVjbGFyYXRpb24tPntIYW5kbGVyfS0+KAogICAgICAgICAgICAkU2VsZiwKICAgICAgICAgICAgQ3VycmVudFN0ZXAgPT4gJEN1cnJlbnRTdGVwLAogICAgICAgICk7CgogICAgICAgIGxhc3QgU1RFUCB1bmxlc3MgJFN1Y2Nlc3M7CiAgICAgICAgbGFzdCBTVEVQIHVubGVzcyAkU3VjY2VzcyBlcSAnTmV4dCc7CiAgICB9CgogICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSE8L2dyZWVuPlxuIik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPazsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5BbiBlcnJvciBvY2N1cnJlZCE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3I7CiAgICB9Cn0KCj1oZWFkMSBQUklWQVRFIE1FVEhPRFMKCj1oZWFkMiAgX0dldEN1cnJlbnRTdGVwKCkKClRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCgo9Y3V0CgpzdWIgX0dldEN1cnJlbnRTdGVwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDA7Cn0KCj1oZWFkMiBfUHJlcGFyZUF0dHJpYnV0ZU1hcHBpbmcoKQoKQ29sbGVjdCB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIGFueSB2ZXJzaW9uIG9mIGFueSBvZiB0aGUgbGVnYWN5IGNvbmZpZyBpdGVtIGNsYXNzZXMuCgpPbmUgbWFwcGluZyBpcyBkdW1wZWQgcGVyIGNvbmZpZyBpdGVtIGNsYXNzLiBUaGlzIG1hcHBpbmcgbWFwcyB0aGUga2V5IG9mIHRoZSBsZWdhY3kgYXR0cmlidXRlCnRvIHRoZSBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjb25maWcgaXRlbSBpbiBPVE9CTyAxMS4KCj1jdXQKCnN1YiBfUHJlcGFyZUF0dHJpYnV0ZU1hcHBpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIFRPRE86IGNyZWF0ZSBkaXJlY3RvcnkgaW4gYW4gaW5pdGlhbGl6YXRpb24gc3Vicm91dGluZQogICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICBkaXIoICRTZWxmLT57V29ya2luZ0Rpcn0gKS0+bWtwYXRoKCAwLCBvY3QoJzc3MCcpICk7ICAgICMgMCB0dXJucyBvZmYgdmVyYm9zaXR5CiAgICB9CgogICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGNyZWF0ZSB0aGUgd29ya2luZyBkaXJlY3RvcnkgJzwvcmVkPiRTZWxmLT57V29ya2luZ0Rpcn08cmVkPicuPC9yZWQ+XG4iKTsKCiAgICAgICAgZGllOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Xcml0aW5nIGF0dHJpYnV0ZSBtYXBzIGludG88L3llbGxvdz4gJFNlbGYtPntXb3JraW5nRGlyfVxuIik7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICVOb05hbWVzcGFjZTsKICAgIGlmICggJFNlbGYtPntOb05hbWVzcGFjZX0gKSB7CiAgICAgICAgJU5vTmFtZXNwYWNlID0gbWFwIHsgJF8gPT4gMSB9IHNwbGl0KCAvXHMqLFxzKi8sICRTZWxmLT57Tm9OYW1lc3BhY2V9ICk7CiAgICB9CgogICAgQ0xBU1NfSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkU2VsZi0+e0NsYXNzTGlzdH0tPiUqICkgewoKICAgICAgICAjIExvb3Agb3ZlciBhbGwgdmVyc2lvbnMgb2YgZGVmaW5pdGlvbnMgZm9yIHRoYXQgY29uZmlnIGl0ZW0gY2xhc3MKICAgICAgICBteSBAQXR0cmlidXRlS2V5czsKICAgICAgICBmb3IgbXkgJERlZmluaXRpb24gKCAkU2VsZi0+e0RlZmluaXRpb25MaXN0fXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICBteSBAQXR0cmlidXRlc0ZvclZlcnNpb24gPSAkU2VsZi0+X0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCgKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIFJlY3VTdWJzICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgbm90IGNhcmluZyBhYm91dCBkdXBsaWNhdGVzIGhlcmUKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlS2V5cywgbWFwIHsgJF8tPntLZXl9IH0gQEF0dHJpYnV0ZXNGb3JWZXJzaW9uOwogICAgICAgIH0KCiAgICAgICAgIyBkbyBub3Qgd3JpdGUgYW4gYXR0cmlidXRlIG1hcCBmb3IgT1RPQk8gMTEgY29uZmlnIGl0ZW1zCiAgICAgICAgIyBUT0RPOiBtYXliZSBjaGVjayBmb3IgYSBtaXggb2YgT1RPQk8gMTAgYW5kIE9UT0JPIDExIGZvcm1hdHMKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyBAQXR0cmlidXRlS2V5czsKCiAgICAgICAgbXkgJE5hbWVzcGFjZSA9ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gPX4gcy9bXlx3XGRdLy9ncjsKCiAgICAgICAgIyBUT0RPOiB3aGF0IGlzIHNwZWNpYWwgYWJvdXQgVW1sYXV0cyBhbmQgw58KICAgICAgICBteSAlU3Vic3RpdGlvbnMgPSAoCiAgICAgICAgICAgICfDpCcgPT4gJ2FlJywKICAgICAgICAgICAgJ8O2JyA9PiAnb2UnLAogICAgICAgICAgICAnw7wnID0+ICd1ZScsCiAgICAgICAgICAgICfDnycgPT4gJ3NzJywKICAgICAgICAgICAgJ18nID0+ICcnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkU3ViICggc29ydCBrZXlzICVTdWJzdGl0aW9ucyApIHsKICAgICAgICAgICAgJE5hbWVzcGFjZSA9fiBzLyRTdWIvJFN1YnN0aXRpb25zeyRTdWJ9LzsKICAgICAgICB9CgogICAgICAgIG15ICVBdHRyaWJ1dGVNYXA7CiAgICAgICAgZm9yIG15ICRLZXkgKCB1bmlxIEBBdHRyaWJ1dGVLZXlzICkgewogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJEtleSA9fiBzL1teXHdcZF0vL2dyOwogICAgICAgICAgICBmb3IgbXkgJFN1YiAoIHNvcnQga2V5cyAlU3Vic3RpdGlvbnMgKSB7CiAgICAgICAgICAgICAgICAkRmllbGROYW1lID1+IHMvJFN1Yi8kU3Vic3RpdGlvbnN7JFN1Yn0vOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkQXR0cmlidXRlTWFweyRLZXl9ID0gJE5vTmFtZXNwYWNleyRLZXl9ID8gJEZpZWxkTmFtZSA6ICROYW1lc3BhY2UgLiAnLScgLiAkRmllbGROYW1lOwogICAgICAgIH0KCiAgICAgICAgbXkgJE1hcFlBTUwgPSAkU2VsZi0+e1lBTUxPYmplY3R9LT5EdW1wKAogICAgICAgICAgICBEYXRhID0+IFwlQXR0cmlidXRlTWFwLAogICAgICAgICk7CgogICAgICAgICRNYWluT2JqZWN0LT5GaWxlV3JpdGUoCiAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICAgICAgQ29udGVudCAgID0+IFwkTWFwWUFNTCwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X0NvbnRpbnVlT3JOb3QoIEN1cnJlbnRTdGVwID0+ICRQYXJhbXtDdXJyZW50U3RlcH0gKTsKfQoKc3ViIF9QcmVwYXJlRGVmaW5pdGlvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+V3JpdGluZyBjbGFzcyBkZWZpbml0aW9ucy48L3llbGxvdz5cbiIpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICAjIHdoZW4gY2hlY2tpbmcgZm9yIHRoZSBuZWNlc3NhcnkgcGFja2FnZXMgdG8gaW5zdGFsbCB3aXRob3V0IC0tdXNlLWRlZmF1bHRzCiAgICAjIGlmIGV4aXN0cyBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb3IgbW9yZSB0aGFuIG9uZSB2ZXJzaW9uIG9mIGFuIGVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIHBhY2thZ2UKICAgICMgdGhlIHNhbWUgbWVzc2FnZSBpcyBpc3N1ZWQgcmVwZWF0ZWRseSByZWZlcnJpbmcgdG8gdGhlIHNhbWUgcGFja2FnZQogICAgIyB0aGlzIGhhc2ggaXMgdXNlZCB0byBwcmV2ZW50IG1lc3NhZ2UgcmVwZXRpdGlvbgogICAgbXkgJUNoZWNrZWRQYWNrYWdlczsKCiAgICAkU2VsZi0+e01pc3NpbmdQYWNrYWdlc30gPSAwOwoKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJFNlbGYtPntDbGFzc0xpc3R9LT4lKiApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lQ2xlYW4gPSAkTWFpbk9iamVjdC0+RmlsZW5hbWVDbGVhblVwKAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQXR0cmlidXRlTWFwXycgLiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJy55bWwnLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyAtZSAkU2VsZi0+e1dvcmtpbmdEaXJ9IC4gJy8nIC4gJEZpbGVuYW1lQ2xlYW47CgogICAgICAgIG15ICRNYXBSZWYgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lQ2xlYW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBTa2lwIHRoZSBjbGFzcyB3aGVuIHRoZXJlIGlzIG5vIGF0dHJpYnV0ZSBtYXBwaW5nLgogICAgICAgICMgVGhpcyBoYXBwZW5zIHdoZW4gdGhlIGZpbGUgd2FzIHJlbW92ZWQgb3Igd2hlbiB0aGUgY2xhc3MgYWxyZWFkeSB3YXMgaW4gT1RPQk8gMTEgZm9ybWF0LgogICAgICAgICMgVE9ETzogaGVyZSBpdCBpcyBhbiBlcnJvciBub3csIHdlIGRvbid0IGV2ZW4gdHJ5IGlmIHRoZSBmaWxlIGlzIHJlbW92ZWQKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyBkZWZpbmVkICRNYXBSZWY7CgogICAgICAgIG15ICRBdHRyaWJ1dGVNYXAgPSAkU2VsZi0+e1lBTUxPYmplY3R9LT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICR7JE1hcFJlZn0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhIHNhbml0eSBjaGVjawogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzIHJlZiAkQXR0cmlidXRlTWFwIGVxICdIQVNIJzsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggJFNlbGYtPntEZWZpbml0aW9uTGlzdH17JENsYXNzSUR9LT5AKiApIHsKICAgICAgICAgICAgbXkgQEF0dHJpYnV0ZXMgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCgKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICREZWZpbml0aW9uWUFNTCA9ICRTZWxmLT5fR2VuZXJhdGVEZWZpbml0aW9uWUFNTCgKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgICAgPT4gJEF0dHJpYnV0ZU1hcCwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICA9PiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9LAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIENoZWNrZWRQYWNrYWdlcyA9PiBcJUNoZWNrZWRQYWNrYWdlcywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRGaWxlTG9jYXRpb24gPSAkTWFpbk9iamVjdC0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgRGlyZWN0b3J5ID0+ICRTZWxmLT57V29ya2luZ0Rpcn0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICdfQ0lEZWZpbml0aW9uXycgLiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gLiAnLnltbCcsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gXCREZWZpbml0aW9uWUFNTC0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJEZpbGVMb2NhdGlvbiA9ICRNYWluT2JqZWN0LT5GaWxlV3JpdGUoCiAgICAgICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJ19ERkRlZmluaXRpb25fJyAuICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSAuICcueW1sJywKICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiBcJERlZmluaXRpb25ZQU1MLT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e01pc3NpbmdQYWNrYWdlc30gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+SW1wb3J0IGZhaWxlZC4gVGhlcmUgYXJlICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSBuZWNlc3NhcnkgcGFja2FnZShzKSBtaXNzaW5nIGluc3RhbGxhdGlvbi48L3JlZD5cbiIpOwogICAgICAgIHJldHVybiAnRXhpdCc7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fQ29udGludWVPck5vdCggQ3VycmVudFN0ZXAgPT4gJFBhcmFte0N1cnJlbnRTdGVwfSApOwp9CgpzdWIgX01pZ3JhdGVEZWZpbml0aW9ucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5JbXBvcnQgZGVmaW5pdGlvbnMuPC95ZWxsb3c+XG4iKTsKCiAgICBteSAkTWFpbk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICREQk9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRYTUxPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyk7CgogICAgIyBrZWVwIHRoZSBsZWdhY3kgZGVmaW5pdGlvbiBmb3Igbm93CiAgICBteSAkQ29sdW1uQWRkWE1MID0gPDwnRU5EX1hNTCc7CjxUYWJsZUFsdGVyIE5hbWU9ImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiI+CiAgPENvbHVtbkFkZCBOYW1lPSJjb25maWdpdGVtX2RlZmluaXRpb25fbGVnYWN5IiBSZXF1aXJlZD0iZmFsc2UiIFR5cGU9IkxPTkdCTE9CIiAvPgo8L1RhYmxlQWx0ZXI+CkVORF9YTUwKCiAgICAjIENyZWF0ZSBkYXRhYmFzZSBzcGVjaWZpYyBTUUwgYW5kIFBvc3RTUUwgY29tbWFuZHMgb3V0IG9mIFhNTC4KICAgIG15IEBBZGRYTUxBUlJBWSA9ICRYTUxPYmplY3QtPlhNTFBhcnNlKCBTdHJpbmcgPT4gJENvbHVtbkFkZFhNTCApOwoKICAgICMgQ3JlYXRlIGRhdGFiYXNlIHNwZWNpZmljIFNRTC4KICAgIG15IEBDb2x1bW5BZGRTUUwgPSAkREJPYmplY3QtPlNRTFByb2Nlc3NvcigKICAgICAgICBEYXRhYmFzZSA9PiBcQEFkZFhNTEFSUkFZLAogICAgKTsKCiAgICAjIENyZWF0ZSBkYXRhYmFzZSBzcGVjaWZpYyBQb3N0U1FMLgogICAgbXkgQENvbHVtbkFkZFNRTFBvc3QgPSAkREJPYmplY3QtPlNRTFByb2Nlc3NvclBvc3QoKTsKCiAgICAjIEV4ZWN1dGUgU1FMLgogICAgZm9yIG15ICRTUUwgKCBAQ29sdW1uQWRkU1FMLCBAQ29sdW1uQWRkU1FMUG9zdCApIHsKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oIFNRTCA9PiAkU1FMICk7CiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICI8eWVsbG93PkNvdWxkIG5vdCBjbG9uZSB0aGUgY29uZmlnaXRlbV9kZWZpbml0aW9uIGNvbHVtbiBEQiB0YWJsZS4gSWYgeW91IGF0dGVtcHRlZCB0aGlzIHN0ZXAgZWFybGllciwgcGxlYXNlIHdyaXRlICdjb24nIHRvIGNvbnRpbnVlLjwveWVsbG93PlxuXHQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gaWYgPFNURElOPiAhfiBtL15jb24odGludWUpPyQvOwogICAgICAgIH0KICAgIH0KCiAgICAkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBTRVQgY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeSA9IGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbicsCiAgICApOwoKICAgIG15ICVEeW5hbWljRmllbGRzOwogICAgbXkgJURlZmluaXRpb25zOwogICAgbXkgJU5hbWVzcGFjZXM7CgogICAgIyBjb2xsZWN0IGRhdGEKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJFNlbGYtPntDbGFzc0xpc3R9LT4lKiApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lQ2xlYW4gPSAkTWFpbk9iamVjdC0+RmlsZW5hbWVDbGVhblVwKAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQXR0cmlidXRlTWFwXycgLiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJy55bWwnLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyAtZSAkU2VsZi0+e1dvcmtpbmdEaXJ9IC4gJy8nIC4gJEZpbGVuYW1lQ2xlYW47CgogICAgICAgIERFRklOSVRJT046CiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggJFNlbGYtPntEZWZpbml0aW9uTGlzdH17JENsYXNzSUR9LT5AKiApIHsKCiAgICAgICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lID0+ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0NJRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gJy55bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBza2lwIGRlZmluaXRpb25zIGlmIGZpbGVzIGFyZSBub3QgcHJvdmlkZWQ7IFRPRE86IG9ubHkgc2tpcCB3aXRob3V0IGVycm9yIGlmIHRoaXMgaXMgZm9yIHRoZSB3aG9sZSBjbGFzcwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gdW5sZXNzIC1lICRTZWxmLT57V29ya2luZ0Rpcn0gLiAnLycgLiAkRmlsZW5hbWVDbGVhbjsKCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtWUFNTCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZUNsZWFuLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgICAgICAgICBEYXRhID0+ICR7JENvbmZpZ0l0ZW1ZQU1MfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgVE9ETzogQWRkIGFuZCB1c2UgYSBEZWZpbml0aW9uQ2hlY2sgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpEZWZpbml0aW9uCgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbURlZmluaXRpb24gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoICI8cmVkPkNvdWxkIG5vdCBpbnRlcnByZXQiIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICdfQ0lEZWZpbml0aW9uXycgLiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gLiAiLnltbCE8L3JlZD5cbiIgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lID0+ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0RGRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gJy55bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFlBTUwgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWVDbGVhbiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGREZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgICAgICAgICBEYXRhID0+ICR7JER5bmFtaWNGaWVsZFlBTUx9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZERlZmluaXRpb24gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoICI8cmVkPkNvdWxkIG5vdCBpbnRlcnByZXQiIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICdfREZEZWZpbml0aW9uXycgLiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gLiAiLnltbCE8L3JlZD5cbiIgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICREZWZpbml0aW9uc3skQ2xhc3NJRH17ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSB9ID0gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbVlBTUwgPT4gJHskQ29uZmlnSXRlbVlBTUx9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICAgPT4gJER5bmFtaWNGaWVsZERlZmluaXRpb24sCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJER5bmFtaWNGaWVsZERlZmluaXRpb24tPiUqICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHN7JE5hbWV9ID0gJER5bmFtaWNGaWVsZERlZmluaXRpb24tPnskTmFtZX07CgogICAgICAgICAgICAgICAgaWYgKCAkTmFtZSA9fiAvXihbXi1dKyktLyApIHsKICAgICAgICAgICAgICAgICAgICAkTmFtZXNwYWNlc3skMX0gPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZERlZmluaXRpb24tPnskTmFtZX17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkICggJER5bmFtaWNGaWVsZERlZmluaXRpb24tPnskTmFtZX17Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVkLT57REZ9ID1+IC9eKFteLV0rKS0vICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5hbWVzcGFjZXN7JDF9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHN7ICRJbmNsdWRlZC0+e0RGfSB9ID0gJEluY2x1ZGVkLT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IG5hbWVzcGFjZSBzZXR0aW5nIGlmIGVtcHR5CiAgICBteSAkTmFtZXNwYWNlc1NldHRpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ05hbWVzcGFjZXMjIyNEeW5hbWljRmllbGQnKTsKICAgIGlmICggJU5hbWVzcGFjZXMgJiYgKCAhJE5hbWVzcGFjZXNTZXR0aW5nIHx8ICEkTmFtZXNwYWNlc1NldHRpbmctPkAqICkgKSB7CiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgIExvY2tBbGwgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ05hbWVzcGFjZXMjIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSAgICA9PiBbIHNvcnQga2V5cyAlTmFtZXNwYWNlcyBdLAogICAgICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICAgICAgVW5sb2NrQWxsID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyAnUmVidWlsZCcgdGhlIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlndXJhdGlvbkRlcGxveSgKICAgICAgICAgICAgQ29tbWVudHMgICAgPT4gIkNNREIgVXBncmFkZTogQWRkIGR5bmFtaWMgZmllbGQgbmFtZXNwYWNlcy4iLAogICAgICAgICAgICBBbGxTZXR0aW5ncyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoJU5hbWVzcGFjZXMpIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICJcbjx5ZWxsb3c+WW91IGFscmVhZHkgaGF2ZSBkeW5hbWljIGZpZWxkIG5hbWVzcGFjZXMgZGVwbG95ZWQsIHRodXMgdGhlIG5ldyBvbmVzIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYmUgc2V0LiBQbGVhc2UgYWRkIHRoZW0gbWFudWFsbHk6PC95ZWxsb3c+XG4iCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJE5hbWVzcGFjZSAoIHNvcnQga2V5cyAlTmFtZXNwYWNlcyApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCJcdCROYW1lc3BhY2VcbiIpOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+UHJpbnQoIlxuIik7CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBmaWVsZCBvcmRlcgogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwogICAgbXkgJE9yZGVyID0gJER5bmFtaWNGaWVsZExpc3QtPkAqOwoKICAgICMgY3JlYXRlIGR5bmFtaWMgZmllbGRzCiAgICBmb3IgbXkgJEZpZWxkICggc29ydCBrZXlzICVEeW5hbWljRmllbGRzICkgewogICAgICAgIG15ICVTZXRDb25maWc7CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkc3skRmllbGR9e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgIG15IEBJbmNsdWRlZCA9IG1hcCB7IHsgREYgPT4gJF8tPntERn0gfSB9ICREeW5hbWljRmllbGRzeyRGaWVsZH17Q29uZmlnfXtJbmNsdWRlfS0+QCo7CiAgICAgICAgICAgICVTZXRDb25maWcgPSAoCiAgICAgICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRzeyRGaWVsZH17Q29uZmlnfS0+JSosCiAgICAgICAgICAgICAgICAgICAgSW5jbHVkZSA9PiBcQEluY2x1ZGVkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICREeW5hbWljRmllbGRzeyRGaWVsZH17SUR9ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkc3skRmllbGR9LT4lKiwKICAgICAgICAgICAgJVNldENvbmZpZywKICAgICAgICAgICAgRmllbGRPcmRlciA9PiArKyRPcmRlciwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZW9yZGVyICAgID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISREeW5hbWljRmllbGRzeyRGaWVsZH17SUR9ICkgewoKICAgICAgICAgICAgIyBUT0RPOiBhbHRlcm5hdGl2ZWx5IHRyeSB0byBnZXQgdGhlIERGLCBhbmQgY2hlY2sgd2hldGhlciBpdHMgZGVmaW5pdGlvbiBmaXRzLiBNYXliZSBzdGlsbCBhc2sKICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgIjxyZWQ+Q291bGQgbm90IGNyZWF0ZSBkeW5hbWljIGZpZWxkICRGaWVsZCEgRml4IGl0cyBkZWZpbml0aW9ucyBhbmQgZGVsZXRlIGFsbCBvdGhlciBkeW5hbWljIGZpZWxkcyBjcmVhdGVkIGJ5IHRoaXMgcHJvY2VzcyBiZWZvcmUgcmV0cnlpbmcuPC9yZWQ+XG4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRBbGxTdWNjZXNzID0gMTsKCiAgICAjIHNldCBuZXcgZGVmaW5pdGlvbnMKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJURlZmluaXRpb25zICkgewoKICAgICAgICBteSAkRmlsZW5hbWVDbGVhbiA9ICRNYWluT2JqZWN0LT5GaWxlbmFtZUNsZWFuVXAoCiAgICAgICAgICAgIEZpbGVuYW1lID0+ICdBdHRyaWJ1dGVNYXBfJyAuICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnLnltbCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBTa2lwIHRoZSBjbGFzcyB3aGVuIHRoZXJlIGlzIG5vIGF0dHJpYnV0ZSBtYXBwaW5nLgogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzIC1lICRTZWxmLT57V29ya2luZ0Rpcn0gLiAnLycgLiAkRmlsZW5hbWVDbGVhbjsKCiAgICAgICAgREVGSU5JVElPTjoKICAgICAgICBmb3IgbXkgJERlZmluaXRpb25JRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICREZWZpbml0aW9uc3skQ2xhc3NJRH0tPiUqICkgewoKICAgICAgICAgICAgIyBhZGQgdGhlIElEIG9mIHRoZSBuZXdseSBjcmVhdGVkIGR5bmFtaWMgZmllbGRzIHRvIHRoZWlyIGRlZmluaXRpb24gc3BlY2lmaWMgY29uZmlncwogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHZhbHVlcyAkRGVmaW5pdGlvbnN7JENsYXNzSUR9eyREZWZpbml0aW9uSUR9e0R5bmFtaWNGaWVsZH0tPiUqICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e0lEfSA9ICREeW5hbWljRmllbGRzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfXtJRH07CgogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSW5jbHVkZWQtPntEZWZpbml0aW9ufXtJRH0gPSAkRHluYW1pY0ZpZWxkc3sgJEluY2x1ZGVkLT57REZ9IH17SUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFlBTUwgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb25zeyRDbGFzc0lEfXskRGVmaW5pdGlvbklEfXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMICA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBTRVQgY29uZmlnaXRlbV9kZWZpbml0aW9uID0gPywgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24gPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCREZWZpbml0aW9uc3skQ2xhc3NJRH17JERlZmluaXRpb25JRH17Q29uZmlnSXRlbVlBTUx9LCBcJER5bmFtaWNGaWVsZFlBTUwsIFwkRGVmaW5pdGlvbklEIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFRPRE86IElmIGFuIGVycm9yIG9jY3VycywgYXNrLCB3aGV0aGVyIHdlIHNob3VsZCBjb250aW51ZSBvciBub3QgcHJvYmFibHkuIEhlcmUgaXQgd291bGQgc3RhcnQgdG8gZ2V0IG1lc3N5Li4uCiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCB1cGRhdGUgREIgZW50cnkgb2YgZGVmaW5pdGlvbiBpZCAnJERlZmluaXRpb25JRCchPC9yZWQ+XG4iKTsKICAgICAgICAgICAgICAgICRBbGxTdWNjZXNzID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJFBlcm1pc3Npb25Hcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICBHcm91cCA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBjbGFzcyBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlc0RlZmF1bHRzID0gKAogICAgICAgICAgICBQZXJtaXNzaW9uICAgICAgICAgID0+IFskUGVybWlzc2lvbkdyb3VwSURdLAogICAgICAgICAgICBOdW1iZXJNb2R1bGUgICAgICAgID0+IFsnQXV0b0luY3JlbWVudCddLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nTW9kdWxlID0+IFsnSW5jcmVtZW50YWwnXSwKICAgICAgICAgICAgQ2F0ZWdvcmllcyAgICAgICAgICA9PiBbJ0FsbCddLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICgga2V5cyAlUHJlZmVyZW5jZXNEZWZhdWx0cyApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkUHJlZmVyZW5jZXNEZWZhdWx0c3skUHJlZmVyZW5jZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3Qgc2V0IHByZWZlcmVuY2UgJyRQcmVmZXJlbmNlJyBmb3IgY2xhc3MgJyRDbGFzc0lEJyE8L3JlZD5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB1bmxlc3MgJEFsbFN1Y2Nlc3M7CiAgICByZXR1cm4gJ05leHQnOwp9CgpzdWIgX01pZ3JhdGVBdHRyaWJ1dGVEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkNvcHkgYXR0cmlidXRlIGRhdGEuPC95ZWxsb3c+XG4iKTsKCiAgICBteSAkTWFpbk9iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJERCT2JqZWN0ICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgY29uZmlnaXRlbV92ZXJzaW9uIFNFVCBjaGFuZ2VfdGltZT1jcmVhdGVfdGltZSwgY2hhbmdlX2J5PWNyZWF0ZV9ieSBXSEVSRSBjaGFuZ2VfYnkgSVMgTlVMTDsnLAogICAgKTsKCiAgICBteSAlQmFzZUFycmF5RmllbGRzID0gbWFwIHsgJF8gPT4gMSB9IHF3L0dlbmVyYWxDYXRhbG9nIEN1c3RvbWVyQ29tcGFueSBDdXN0b21lclVzZXIgVGlja2V0IENvbmZpZ0l0ZW0gQWdlbnQgU2VydmljZSBRdWV1ZSBTTEEgVHlwZS87CiAgICBteSAkRGlzYWJsZWRIaXN0b3J5OwogICAgbXkgJEhpc3RvcnlTZXR0aW5nID0gcXtJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3Rvcnl9OwoKICAgIGRlbGV0ZSAkU2VsZi0+e0NvbmZpZ0l0ZW1PYmplY3R9e0NhY2hlfXtEZWZpbml0aW9uR2V0fTsKICAgIGxvY2FsICR8ID0gMTsKCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICRTZWxmLT57Q2xhc3NMaXN0fS0+JSogKSB7CgogICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICApOwoKICAgICAgICAjIFNraXAgdGhlIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gYXR0cmlidXRlIG1hcHBpbmcuCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgLWUgJFNlbGYtPntXb3JraW5nRGlyfSAuICcvJyAuICRGaWxlbmFtZUNsZWFuOwoKICAgICAgICBteSAlRGVmaW5pdGlvbjsKICAgICAgICBteSAkTWFwUmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZUNsZWFuLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICAjIFRoaXMgaGFwcGVucyB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIG9yIHdoZW4gdGhlIGNsYXNzIGFscmVhZHkgd2FzIGluIE9UT0JPIDExIGZvcm1hdC4KICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyBkZWZpbmVkICRNYXBSZWY7CgogICAgICAgIG15ICRBdHRyaWJ1dGVNYXAgPSAkU2VsZi0+e1lBTUxPYmplY3R9LT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICR7JE1hcFJlZn0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhIHNhbml0eSBjaGVjawogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzIHJlZiAkQXR0cmlidXRlTWFwIGVxICdIQVNIJzsKCiAgICAgICAgIyBmb3Igc2V0cwogICAgICAgIG15ICRBdHRyaWJ1dGVMb29rdXAgPSB7IHJldmVyc2UgJEF0dHJpYnV0ZU1hcC0+JSogfTsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uSUQgKCBtYXAgeyAkXy0+e0RlZmluaXRpb25JRH0gfSAkU2VsZi0+e0RlZmluaXRpb25MaXN0fXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICAkRGVmaW5pdGlvbnskRGVmaW5pdGlvbklEfSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGFsbCB2ZXJzaW9ucyBvZiBhIGNsYXNzIGluIG9uZSBnbwogICAgICAgICMgVE9ETzogRG8gd2UgbmVlZCBiYXRjaGVzIGZvciByZWFsbHkgbGFyZ2UgQ01EQnM/CiAgICAgICAgbXkgJFJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCB2LmlkLCB2LmRlZmluaXRpb25faWQsIHYuY29uZmlnaXRlbV9pZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIHYKICBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW0gY2kgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBXSEVSRSBjaS5jbGFzc19pZCA9ID8KICBPUkRFUiBCWSB2LmlkCkVORF9TUUwKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ2xhc3NJRCBdLAogICAgICAgICk7CgogICAgICAgICMgVE9ETzogZGlzYWJsZSBoaXN0b3J5IGJlZm9yZSB0aGUgbG9vcCBvdmVyIHRoZSBjbGFzc2VzCiAgICAgICAgaWYgKCAhJERpc2FibGVkSGlzdG9yeSAmJiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJEhpc3RvcnlTZXR0aW5nKSApIHsKCiAgICAgICAgICAgICMgZG8gbm90IHdyaXRlIGEgaGlzdG9yeQogICAgICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgICAgIExvY2tBbGwgPT4gMSwKICAgICAgICAgICAgICAgIEZvcmNlICAgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVcGRhdGUoCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkSGlzdG9yeVNldHRpbmcsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVbmxvY2soCiAgICAgICAgICAgICAgICBVbmxvY2tBbGwgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgJ1JlYnVpbGQnIHRoZSBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAjIFRPRE86IHdoeSBtdXN0IHRoaXMgc2V0dGluZyBiZSBkZXBsb3llZD8gSXQgc2hvdWxkIHN1ZmZpY2UgdG8gY2hhbmdlIGlzIHRlbXBvcmFyaWx5CiAgICAgICAgICAgICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICAgICAgICAgICAgICBDb21tZW50cyAgICA9PiAiQ01EQiBVcGdyYWRlOiBUZW1wb3JhcmlseSBkaXNhYmxlIENNREIgaGlzdG9yeSBmb3IgdGhlIGRhdGEgdHJhbnNmZXIuIiwKICAgICAgICAgICAgICAgIEFsbFNldHRpbmdzID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJERpc2FibGVkSGlzdG9yeSA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSBAU2tpcHBlZDsKICAgICAgICBteSAlQ0lWZXJzaW9uU3RyaW5nQ291bnRlcjsKICAgICAgICBteSAkQ291bnQgPSBzY2FsYXIgJFJvd3MtPkAqOwogICAgICAgIG15ICRGcmFjICA9IGludCggJENvdW50IC8gMTAgKTsKICAgICAgICBteSAkYyAgICAgPSAwOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIlx0V29ya2luZyBvbiA8eWVsbG93PiRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH08L3llbGxvdz4gKCRDb3VudCBWZXJzaW9ucykiKTsKCiAgICAgICAgUk9XOgogICAgICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgICAgICBteSAoICRWZXJzaW9uSUQsICREZWZpbml0aW9uSUQsICRDb25maWdJdGVtSUQgKSA9ICRSb3ctPkAqOwoKICAgICAgICAgICAgIyBzZXQgY29uZmlnaXRlbSB2ZXJzaW9uIHN0cmluZwogICAgICAgICAgICAkQ0lWZXJzaW9uU3RyaW5nQ291bnRlcnskQ29uZmlnSXRlbUlEfSAvLz0gMTsKICAgICAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApVUERBVEUgY29uZmlnaXRlbV92ZXJzaW9uCiAgU0VUIHZlcnNpb25fc3RyaW5nID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwgY2hhbmdlX2J5ID0gPwogIFdIRVJFIGlkID0gPwpFTkRfU1FMCiAgICAgICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgICAgICBcJENJVmVyc2lvblN0cmluZ0NvdW50ZXJ7JENvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgXDEsCiAgICAgICAgICAgICAgICAgICAgXCRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3Qgc2V0IFZlcnNpb25TdHJpbmcgZm9yIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCwgVmVyc2lvbiAkVmVyc2lvbklEITwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENJVmVyc2lvblN0cmluZ0NvdW50ZXJ7JENvbmZpZ0l0ZW1JRH0rKzsKCiAgICAgICAgICAgIGlmICggKyskYyA9PSAkRnJhYyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiLiIpOwogICAgICAgICAgICAgICAgJGMgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkRGVmaW5pdGlvbnskRGVmaW5pdGlvbklEfXtEeW5hbWljRmllbGRSZWZ9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAU2tpcHBlZCwgJFZlcnNpb25JRDsKCiAgICAgICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICAgICBteSBAWE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpLT5YTUxIYXNoR2V0KAogICAgICAgICAgICAgICAgVHlwZSA9PiAiSVRTTTo6Q29uZmlnSXRlbTo6JENsYXNzSUQiLAogICAgICAgICAgICAgICAgS2V5ICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB0cnkgYXJjaGl2ZQogICAgICAgICAgICBpZiAoICFAWE1MICkgewogICAgICAgICAgICAgICAgQFhNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpYTUwnKS0+WE1MSGFzaEdldCgKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICJJVFNNOjpDb25maWdJdGVtOjpBcmNoaXY6OiRDbGFzc0lEIiwKICAgICAgICAgICAgICAgICAgICBLZXkgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICRYTUxbMV17VmVyc2lvbn1bMV0tPiUqICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgdW5sZXNzICRBdHRyaWJ1dGVNYXAtPnskQXR0cmlidXRlfTsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJERlZmluaXRpb257JERlZmluaXRpb25JRH17RHluYW1pY0ZpZWxkUmVmfXsgJEF0dHJpYnV0ZU1hcC0+eyRBdHRyaWJ1dGV9IH07CgogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgdW5sZXNzICREeW5hbWljRmllbGQ7CgogICAgICAgICAgICAgICAgbXkgJFZhbHVlOwogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFNldCAoIEB7ICRYTUxbMV17VmVyc2lvbn1bMV17JEF0dHJpYnV0ZX0gfVsgMSAuLiAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9LT4kIyogXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJVNldFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbmNsdWRlZCAoICREeW5hbWljRmllbGQtPntDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZUxvb2t1cC0+eyAkSW5jbHVkZWQtPntERn0gfSBlcSAkQXR0cmlidXRlIC4gJzo6PFN1YlByaW1hcnlBdHRyaWJ1dGU+JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZWQtPntEZWZpbml0aW9ufXtGaWVsZFR5cGV9IGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXQtPntDb250ZW50fSAuPSAnOjAwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXRWYWx1ZXsgJEluY2x1ZGVkLT57REZ9IH0gPSAkQmFzZUFycmF5RmllbGRzeyAkSW5jbHVkZWQtPntEZWZpbml0aW9ufXtGaWVsZFR5cGV9IH0gPyBbICRTZXQtPntDb250ZW50fSBdIDogJFNldC0+e0NvbnRlbnR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE5hbWUgICAgPSAkQXR0cmlidXRlTG9va3VwLT57ICRJbmNsdWRlZC0+e0RGfSB9ID1+IHMvXi4rPzo6Ly9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdWJBdHRyID0gJFNldC0+eyROYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkU3ViQXR0clZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEJhc2VBcnJheUZpZWxkc3sgJEluY2x1ZGVkLT57RGVmaW5pdGlvbn17RmllbGRUeXBlfSB9IHx8ICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0NvbmZpZ317TXVsdGlWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdWJBdHRyVmFsdWUgPSBbIG1hcCB7ICRfLT57Q29udGVudH0gfSBAeyRTdWJBdHRyfVsgMSAuLiAkU3ViQXR0ci0+JCMqIF0gXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdWJBdHRyVmFsdWUgPSAkU3ViQXR0ci0+WzFde0NvbnRlbnR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAlVmFsdWVzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5jbHVkZWQtPntERn0gPT4gJFN1YkF0dHJWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVZhbHVlcyA9IG1hcCB7ICggJF8gPT4gJFZhbHVlc3skX30gLiAnOjAwJyApIH0ga2V5cyAlVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVNldFZhbHVlID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlU2V0VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCAkVmFsdWUtPkAqLCBcJVNldFZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFZhbHVlcyA9IG1hcCB7ICRfLT57Q29udGVudH0gfSBAeyAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9IH1bIDEgLi4gJFhNTFsxXXtWZXJzaW9ufVsxXXskQXR0cmlidXRlfS0+JCMqIF07CgogICAgICAgICAgICAgICAgICAgIElOREVYOgogICAgICAgICAgICAgICAgICAgIHdoaWxlIChAVmFsdWVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFZhbHVlc1stMV0gfHwgJFZhbHVlc1stMV0gZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3AgQFZhbHVlczsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgSU5ERVg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICFAVmFsdWVzOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWYWx1ZXMgPSBtYXAgeyAkXyAuICc6MDAnIH0gQFZhbHVlczsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRWYWx1ZSA9IFxAVmFsdWVzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFZhbHVlID0gJEJhc2VBcnJheUZpZWxkc3sgJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gfSA/IFsgJFhNTFsxXXtWZXJzaW9ufVsxXXskQXR0cmlidXRlfVsxXXtDb250ZW50fSBdIDogJFhNTFsxXXtWZXJzaW9ufVsxXXskQXR0cmlidXRlfVsxXXtDb250ZW50fTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVmFsdWUgLj0gJzowMCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ0F0dGFjaG1lbnQnICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2UnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgICAgICAgICAgICAgID0gJEF0dGFjaG1lbnRCYWNrZW5kT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRWYWx1ZSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkeyAkQXR0YWNobWVudC0+e0NvbnRlbnRSZWZ9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEF0dGFjaG1lbnQtPntQcmVmZXJlbmNlc317RGF0YVR5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRBdHRhY2htZW50LT57RmlsZU5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVTaXplICAgID0+ICRBdHRhY2htZW50LT57UHJlZmVyZW5jZXN9e0ZpbGVTaXplQnl0ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgIWRlZmluZWQgJFZhbHVlIHx8ICRWYWx1ZSBlcSAnJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISggcmVmICRWYWx1ZSApIHx8ICggcmVmICRWYWx1ZSBuZSAnQVJSQVknICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRWYWx1ZSA9IFskVmFsdWVdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJFNlbGYtPlByaW50KCJcbiIpOwogICAgfQoKICAgIGlmICgkRGlzYWJsZWRIaXN0b3J5KSB7CgogICAgICAgICMgcmVhY3RpdmF0ZSB3cml0aW5nIGhpc3RvcnkKICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgTG9ja0FsbCA9PiAxLAogICAgICAgICAgICBGb3JjZSAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkSGlzdG9yeVNldHRpbmcsCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICBVbmxvY2tBbGwgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICBDb21tZW50cyAgICA9PiAiQ01EQiBVcGdyYWRlOiBSZWVuYWJsZSBDTURCIGhpc3RvcnkuIiwKICAgICAgICAgICAgQWxsU2V0dGluZ3MgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCcKICAgICk7CgogICAgcmV0dXJuICdOZXh0JzsKfQoKc3ViIF9EZWxldGVMZWdhY3lEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KAogICAgICAgICI8eWVsbG93Pk9wdGlvbmFsbHkgYWxsIGxlZ2FjeSBkYXRhIGNhbiBiZSBkZWxldGVkLiBUaGlzIHN0ZXAgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIG1pZ3JhdGVkIENNREIgdG8gd29yayBhbmQgY2FuIGJlIGRvbmUgYXQgYW55IGxhdGVyIHRpbWUuPC95ZWxsb3c+XG4iCiAgICApOwogICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+RG8geW91IHJlYWxseSB3YW50IHRvIHBlcm1hbmVudGx5IGRlbGV0ZSBhbGwgYmFja3VwIGxlZ2FjeSBkYXRhIGZyb20gdGhlIHN5c3RlbT8gKHR5cGUgJ3llcycpPC9yZWQ+XG4iKTsKCiAgICBpZiAoIDxTVERJTj4gPX4gbS9eeWVzJC9pICkgeyAgICAjIyBubyBjcml0aWMgcXcoSW5wdXRPdXRwdXQ6OlByb2hpYml0RXhwbGljaXRTdGRpbik7CgogICAgICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICAgICAgbXkgJE1haW5PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgICAgICBteSAkUGFja2FnZU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnKTsKCiAgICAgICAgIyAxLiBkZWxldGUgZmlsZXMgZnJvbSB0ZW1wb3JhcnkgZGlyZWN0b3J5CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIHByZXZpb3VzbHkgY3JlYXRlZCB0ZW1wb3JhcnkgZmlsZXMgZnJvbSBkaXNrLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICBteSBARmlsZXNJbkRpcmVjdG9yeSA9ICRNYWluT2JqZWN0LT5EaXJlY3RvcnlSZWFkKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsdGVyICAgID0+ICcqJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkRmlsZSAoIHNvcnQgQEZpbGVzSW5EaXJlY3RvcnkgKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJE1haW5PYmplY3QtPkZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGRlbGV0ZSBmaWxlICRGaWxlITwvcmVkPiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgZGVsZXRpbmcgdGVtcG9yYXJ5IGZpbGVzLjwvZ3JlZW4+XG4iKTsKCiAgICAgICAgIyAyLiBkZWxldGUgY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeSBkYXRhYmFzZSBjb2x1bW4KICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+RGVsZXRpbmcgZGF0YWJhc2UgY29sdW1uIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9sZWdhY3kgZnJvbSB0YWJsZSBjb25maWdpdGVtX2RlZmluaXRpb24uLi48L3llbGxvdz5cbiIpOwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMID0+ICdBTFRFUiBUQUJMRSBjb25maWdpdGVtX2RlZmluaXRpb24gRFJPUCBDT0xVTU4gY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lIGRlbGV0aW5nIHRoZSBkYXRhYmFzZSBjb2x1bW4uPC9ncmVlbj5cbiIpOwoKICAgICAgICAjIDMuIGNsZWFuIHVwIHhtbCBzdG9yYWdlCiAgICAgICAgIyBnZXQgYWxsIHZlcnNpb25zIGFuZCBjb3JyZXNwb25kaW5nIGNsYXNzIGlkcyBpbiBvbmUgZ28KICAgICAgICAjIFRPRE86IERvIHdlIG5lZWQgYmF0Y2hlcyBmb3IgcmVhbGx5IGxhcmdlIENNREJzPwogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5EZWxldGluZyBjb25maWdpdGVtIGRhdGEgZnJvbSB4bWwgc3RvcmFnZS4uLjwveWVsbG93PlxuIik7CiAgICAgICAgbXkgJFJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCB2LmlkLCBjaS5jbGFzc19pZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIHYKICBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW0gY2kgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBPUkRFUiBCWSB2LmlkCkVORF9TUUwKICAgICAgICApOwoKICAgICAgICAjIFRPRE86IGRpc2FibGUgaGlzdG9yeSBiZWZvcmUgdGhlIGxvb3Agb3ZlciB0aGUgY2xhc3NlcwogICAgICAgIG15ICREaXNhYmxlZEhpc3Rvcnk7CiAgICAgICAgbXkgJEhpc3RvcnlTZXR0aW5nID0gcXtJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3Rvcnl9OwogICAgICAgIGlmICggISREaXNhYmxlZEhpc3RvcnkgJiYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCRIaXN0b3J5U2V0dGluZykgKSB7CgogICAgICAgICAgICAjIGRvIG5vdCB3cml0ZSBhIGhpc3RvcnkKICAgICAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgICAgICBMb2NrQWxsID0+IDEsCiAgICAgICAgICAgICAgICBGb3JjZSAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJEhpc3RvcnlTZXR0aW5nLAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICAgICAgVW5sb2NrQWxsID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgIyBUT0RPOiB3aHkgbXVzdCB0aGlzIHNldHRpbmcgYmUgZGVwbG95ZWQ/IEl0IHNob3VsZCBzdWZmaWNlIHRvIGNoYW5nZSBpcyB0ZW1wb3JhcmlseQogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICAgICAgQ29tbWVudHMgICAgPT4gIkNNREIgVXBncmFkZTogVGVtcG9yYXJpbHkgZGlzYWJsZSBDTURCIGhpc3RvcnkgZm9yIHRoZSBkYXRhIHRyYW5zZmVyLiIsCiAgICAgICAgICAgICAgICBBbGxTZXR0aW5ncyA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREaXNhYmxlZEhpc3RvcnkgPSAxOwogICAgICAgIH0KCiAgICAgICAgUk9XOgogICAgICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgICAgICBteSAoICRWZXJzaW9uSUQsICRDbGFzc0lEICkgPSAkUm93LT5AKjsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpYTUwnKS0+WE1MSGFzaERlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OiRDbGFzc0lEIiwKICAgICAgICAgICAgICAgIEtleSAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSBkZWxldGluZyBjb25maWcgaXRlbSBkYXRhIGZyb20geG1sIHN0b3JhZ2UuPC9ncmVlbj5cbiIpOwoKICAgICAgICAjIHJlbW92ZSBDSUF0dHJpYnV0ZUNvbGxlY3Rpb24gcGFja2FnZSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFBhY2thZ2VOYW1lID0gJ0lUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uJzsKICAgICAgICBteSBAUmVwb3MgICAgICAgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUxpc3QoCiAgICAgICAgICAgIFJlc3VsdCA9PiAnU2hvcnQnCiAgICAgICAgKTsKICAgICAgICBteSBAUGFja2FnZUVudHJ5ID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhY2thZ2VOYW1lIH0gQFJlcG9zOwogICAgICAgIGlmIChAUGFja2FnZUVudHJ5KSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Vbmluc3RhbGxpbmcgJFBhY2thZ2VOYW1lIHBhY2thZ2UuLi48L3llbGxvdz5cbiIpOwogICAgICAgICAgICBteSAkUGFja2FnZVZlcnNpb24gPSAkUGFja2FnZUVudHJ5WzBde1ZlcnNpb259OwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Rm91bmQgJFBhY2thZ2VOYW1lIFZlcnNpb24gJFBhY2thZ2VWZXJzaW9uPC95ZWxsb3c+XG4iKTsKCiAgICAgICAgICAgICMgcmVzZXQgc2V0dGluZ3MgdGhhdCB0aGlzIGxlZ2FjeSBwYWNrYWdlIHVuc3VjY2Vzc2Z1bGx5IGF0dGVtcHRzIHRvIHJlc2V0IHVwb24gdW5pbnN0YWxsYXRpb24gKGxvY2sgaXMgbWlzc2luZykKICAgICAgICAgICAgJFNlbGYtPl9SZXNldFNldHRpbmdzKAogICAgICAgICAgICAgICAgU2V0dGluZ05hbWUgPT4gJ0xvYWRlcjo6QWdlbnQ6OkNvbW1vbkpTIyMjMTAwLUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRQYWNrYWdlID0gJFBhY2thZ2VPYmplY3QtPlJlcG9zaXRvcnlHZXQoCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRQYWNrYWdlTmFtZSwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJFBhY2thZ2VWZXJzaW9uLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRQYWNrYWdlT2JqZWN0LT5QYWNrYWdlVW5pbnN0YWxsKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYWNrYWdlLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJFN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgdW5pbnN0YWxsaW5nICRQYWNrYWdlTmFtZSBwYWNrYWdlLjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5pbnN0YWxsICRQYWNrYWdlTmFtZSBwYWNrYWdlITwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICI8Z3JlZW4+Q29udGludWluZyB3aXRob3V0IGRlbGV0aW5nIGxlZ2FjeSBkYXRhLjwvZ3JlZW4+XG4iCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJ05leHQnOwp9CgpzdWIgX0dlbmVyYXRlRGVmaW5pdGlvbllBTUwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEV4cGxpY2l0bHkgZ2VuZXJhdGUgYSBZQU1MIHN0cmluZyBpbiBvcmRlciB0byBoYXZlIGJldHRlciBjb250cm9sCiAgICAjIG9mIHRoZSBsYXlvdXQuCiAgICBteSAkQ0lZQU1MID0gPDwnRU5EX1lBTUwnOwotLS0KUGFnZXM6CiAgLSBOYW1lOiBDb250ZW50CiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDEKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQoKU2VjdGlvbnM6CiAgQXR0cmlidXRlczoKICAgIENvbnRlbnQ6CkVORF9ZQU1MCgogICAgbXkgJUR5bmFtaWNGaWVsZHM7CgogICAgQVRUUklCVVRFOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkUGFyYW17QXR0cmlidXRlc30tPkAqICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfTsKCiAgICAgICAgbXkgJFlBTUxMaW5lID0gIiAgICAgIC0gREY6ICRQYXJhbXtBdHRyaWJ1dGVNYXB9eyAkQXR0cmlidXRlLT57S2V5fSB9XG4iOwoKICAgICAgICBpZiAoICRBdHRyaWJ1dGUtPntJbnB1dH17UmVxdWlyZWR9ICkgewogICAgICAgICAgICAkWUFNTExpbmUgLj0gIiAgICAgICAgTWFuZGF0b3J5OiAxXG4iOwogICAgICAgIH0KCiAgICAgICAgbXkgJURGQmFzaWMgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFBhcmFte0F0dHJpYnV0ZU1hcH17ICRBdHRyaWJ1dGUtPntLZXl9IH0sCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEF0dHJpYnV0ZS0+e05hbWV9LAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIENJQ2xhc3MgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICApOwoKICAgICAgICBteSAlREZTcGVjaWZpYyA9ICRTZWxmLT5fREZDb25maWdGcm9tTGVnYWN5KAogICAgICAgICAgICBBdHRyaWJ1dGUgICAgPT4gJEF0dHJpYnV0ZSwKICAgICAgICAgICAgQXR0cmlidXRlTWFwID0+ICRQYXJhbXtBdHRyaWJ1dGVNYXB9LAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVERlNwZWNpZmljICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY29udmVydCAnJEF0dHJpYnV0ZS0+e05hbWV9JyB0byBEeW5hbWljRmllbGQgKENsYXNzOiAnJFBhcmFte0NsYXNzfSc7IERlZmluaXRpb25JRDogJyRQYXJhbXtEZWZpbml0aW9uSUR9JykgLSBza2lwcGluZyBhdHRyaWJ1dGUhPC9yZWQ+XG4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IEFUVFJJQlVURTsKICAgICAgICB9CgogICAgICAgICRDSVlBTUwgLj0gJFlBTUxMaW5lOwoKICAgICAgICAkRHluYW1pY0ZpZWxkc3sgJFBhcmFte0F0dHJpYnV0ZU1hcH17ICRBdHRyaWJ1dGUtPntLZXl9IH0gfSA9IHsgJURGQmFzaWMsICVERlNwZWNpZmljIH07CiAgICB9CgogICAgbXkgJERGWUFNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkR1bXAoCiAgICAgICAgRGF0YSA9PiBcJUR5bmFtaWNGaWVsZHMsCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDSVlBTUwsCiAgICAgICAgRHluYW1pY0ZpZWxkID0+ICRERllBTUwsCiAgICB9Owp9CgpzdWIgX0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJFBhcmFte0RlZmluaXRpb25SZWZ9IC8vICRTZWxmLT57WUFNTE9iamVjdH0tPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgU2tpcCBkZWZpbml0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBmb3JtYXQgZm9yIE9UT0JPIDExCiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZiBlcSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuIGlmICREZWZpbml0aW9uUmVmLT57UGFnZXN9OwogICAgICAgIHJldHVybiBpZiAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfTsKICAgIH0KCiAgICAjIGEgc2FuaXR5IHRlc3Qgd2hldGhlciB0aGlzIGlzIHBvc3NpYmx5IGluIHRoZSBmb3JtYXQgZm9yIE9UT0JPIDEwCiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZiBuZSAnQVJSQVknICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5OZWVkIGEgdmFsaWQgbGVnYWN5IGRlZmluaXRpb24hPC9yZWQ+XG4iKTsKCiAgICAgICAgZGllOwogICAgfQoKICAgIG15IEBBdHRyaWJ1dGVzOwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkRGVmaW5pdGlvblJlZi0+QCogKSB7CiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJEF0dHJpYnV0ZTsKCiAgICAgICAgaWYgKCAkQXR0cmlidXRlLT57U3VifSAmJiAkUGFyYW17UmVjdVN1YnN9ICkgewogICAgICAgICAgICBteSAkUHJpbWFyeVN1YiA9IHsgS2V5ID0+ICRBdHRyaWJ1dGUtPntLZXl9IC4gJzo6PFN1YlByaW1hcnlBdHRyaWJ1dGU+JyB9OwoKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJFByaW1hcnlTdWI7CiAgICAgICAgICAgIG15IEBTdWJBdHRyaWJ1dGVzID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVzRnJvbUxlZ2FjeVlBTUwoIERlZmluaXRpb25SZWYgPT4gJEF0dHJpYnV0ZS0+e1N1Yn0gKTsKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgbWFwIHsgeyBLZXkgPT4gJEF0dHJpYnV0ZS0+e0tleX0gLiAnOjonIC4gJF8tPntLZXl9IH0gfSBAU3ViQXR0cmlidXRlczsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBBdHRyaWJ1dGVzOwp9CgpzdWIgX0RGQ29uZmlnRnJvbUxlZ2FjeSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtUeXBlfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+QXR0cmlidXRlIHdpdGhvdXQgSW5wdXQgVHlwZSE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkVHlwZSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtUeXBlfTsKICAgIG15ICVERjsKCiAgICBpZiAoIGFueSB7IGRlZmluZWQgJFBhcmFte0F0dHJpYnV0ZX17JF99IH0gcXcvQ291bnRNaW4gQ291bnRNYXggQ291bnREZWZhdWx0LyApIHsKICAgICAgICB1bmxlc3MgKCAhJFBhcmFte0F0dHJpYnV0ZX17Q291bnRNYXh9IHx8ICggJFBhcmFte0F0dHJpYnV0ZX17Q291bnRNYXh9ICYmICRQYXJhbXtBdHRyaWJ1dGV9e0NvdW50TWF4fSA8PSAxICkgKSB7ICAgICMjIG5vIGNyaXRpYyBxdyhDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRVbmxlc3NCbG9ja3MpCiAgICAgICAgICAgICRERntDb25maWd9e011bHRpVmFsdWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtTdWJ9ICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1NldCc7CgogICAgICAgIGlmICggJFBhcmFte0luU3VifSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPlN1YnMgb2Ygc3VicyBhcmUgbm90IHN1cHBvcnRlZCE8L3JlZD5cbiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1YiAgICAgPSBkZWxldGUgJFBhcmFte0F0dHJpYnV0ZX17U3VifTsKICAgICAgICBteSAkUHJpbWFyeSA9IHsKICAgICAgICAgICAgJFBhcmFte0F0dHJpYnV0ZX0tPiUqLAogICAgICAgICAgICBLZXkgID0+ICc8U3ViUHJpbWFyeUF0dHJpYnV0ZT4nLAogICAgICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICB9OwoKICAgICAgICAjIHByaW1hcnkgYXR0cmlidXRlIGNhbm5vdCBiZSBtdWx0aXZhbHVlIGluIFhNTCBzY2hlbWEKICAgICAgICBmb3IgbXkgJERlbGV0ZSAocXcvQ291bnRNaW4gQ291bnRNYXggQ291bnREZWZhdWx0LykgewogICAgICAgICAgICBkZWxldGUgJFByaW1hcnktPnskRGVsZXRlfTsKICAgICAgICB9CgogICAgICAgIG15IEBJbmNsdWRlOwoKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkUHJpbWFyeSwgJFN1Yi0+QCogKSB7CiAgICAgICAgICAgICRBdHRyaWJ1dGUtPntLZXl9ID0gJFBhcmFte0F0dHJpYnV0ZX17S2V5fSAuICc6OicgLiAkQXR0cmlidXRlLT57S2V5fTsKCiAgICAgICAgICAgIG15ICVERkJhc2ljID0gKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfSwKICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEF0dHJpYnV0ZS0+e05hbWV9LAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgQ0lDbGFzcyAgICA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJURGU3BlY2lmaWMgPSAkU2VsZi0+X0RGQ29uZmlnRnJvbUxlZ2FjeSgKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSAgICA9PiAkQXR0cmlidXRlLAogICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwID0+ICRQYXJhbXtBdHRyaWJ1dGVNYXB9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICElREZTcGVjaWZpYyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY29udmVydCBzdWIgYXR0cmlidXRlICckQXR0cmlidXRlLT57TmFtZX0nICgkUGFyYW17QXR0cmlidXRlfXtLZXl9OjokQXR0cmlidXRlLT57S2V5fSkgdG8gRHluYW1pY0ZpZWxkIChDbGFzczogJyRQYXJhbXtDbGFzc30nOyAgRGVmaW5pdGlvbklEOiAnJFBhcmFte0RlZmluaXRpb25JRH0nKSAtIHNraXBwZWQgYXR0cmlidXRlITwvcmVkPlxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBASW5jbHVkZSwgewogICAgICAgICAgICAgICAgREYgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4geyAlREZCYXNpYywgJURGU3BlY2lmaWMgfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRERntDb25maWd9e0luY2x1ZGV9ID0gXEBJbmNsdWRlOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnVGV4dCcgfHwgJFR5cGUgZXEgJ1RleHRBcmVhJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICRUeXBlOwogICAgICAgICRERntDb25maWd9e1JlZ0V4TGlzdH0gPSBbXTsKCiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXh9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtSZWdFeExpc3R9ID0gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXh9LAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXhFcnJvck1lc3NhZ2V9IC8vICdGb3JtYXQgaW52YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVEZWZhdWx0fSApIHsKICAgICAgICAgICAgJERGe0NvbmZpZ317RGVmYXVsdFZhbHVlfSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZURlZmF1bHR9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICRUeXBlOwoKICAgICAgICBpZiAoICEkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17Q2xhc3N9ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+R2VuZXJhbENhdGFsb2cgYXR0cmlidXRlIHdpdGhvdXQgY2xhc3MhPC9yZWQ+XG4iKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRERntDb25maWd9e0NsYXNzfSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtDbGFzc307CgogICAgICAgIGlmICggJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAgICAgJERGe0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAkVHlwZTsKCiAgICAgICAgJERGe0NvbmZpZ317UG9zc2libGVOb25lfSAgPSAxOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0Ryb3Bkb3duJzsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0N1c3RvbWVyJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdDdXN0b21lclVzZXInOwoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ICA9IDE7CiAgICAgICAgJERGe0NvbmZpZ317RWRpdEZpZWxkTW9kZX0gPSAnQXV0b0NvbXBsZXRlJzsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0RhdGUnIHx8ICRUeXBlIGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAkVHlwZTsKCiAgICAgICAgJERGe0NvbmZpZ317WWVhcnNJbkZ1dHVyZX0gPSA1OwogICAgICAgICRERntDb25maWd9e1llYXJzSW5QYXN0fSAgID0gNTsKICAgICAgICAkREZ7Q29uZmlnfXtZZWFyc1BlcmlvZH0gICA9IDA7CgogICAgICAgIGlmICggJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1llYXJQZXJpb2RGdXR1cmV9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtZZWFyc1BlcmlvZH0gICA9IDE7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzSW5GdXR1cmV9ID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1llYXJQZXJpb2RGdXR1cmV9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtZZWFyUGVyaW9kUGFzdH0gKSB7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzUGVyaW9kfSA9IDE7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzSW5QYXN0fSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtZZWFyUGVyaW9kUGFzdH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnSW50ZWdlcicgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnRHJvcGRvd24nOwoKICAgICAgICAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVNaW59IHx8PSAwOwogICAgICAgICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZU1heH0gfHw9IDMwOwoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZVZhbHVlc30gPSB7IG1hcCB7ICRfID0+ICRfIH0gKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVNaW59IC4uICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZU1heH0gKSB9OwoKICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZURlZmF1bHR9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtEZWZhdWx0VmFsdWV9ID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1ZhbHVlRGVmYXVsdH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ID0gMTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdUaWNrZXRSZWZlcmVuY2UnICkgewogICAgICAgICRERntGaWVsZFR5cGV9ICAgICAgICAgICAgICAgICAgICA9ICdUaWNrZXQnOwogICAgICAgICRERntDb25maWd9e1Bvc3NpYmxlTm9uZX0gICAgICAgICA9IDE7CiAgICAgICAgJERGe0NvbmZpZ317RWRpdEZpZWxkTW9kZX0gICAgICAgID0gJ0F1dG9Db21wbGV0ZSc7CiAgICAgICAgJERGe0NvbmZpZ317UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ1RpY2tldCc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdDSUNsYXNzUmVmZXJlbmNlJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSAgICAgICAgICAgICAgID0gJ0NvbmZpZ0l0ZW0nOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ICAgPSAnQXV0b0NvbXBsZXRlJzsKICAgICAgICAkREZ7Q29uZmlnfXtTZWFyY2hBdHRyaWJ1dGV9ID0gJ05hbWUnOwoKICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtSZWZlcmVuY2VkQ0lDbGFzc05hbWV9ICkgewogICAgICAgICAgICBteSAkUmVmZXJlbmNlZENJQ2xhc3NOYW1lID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1JlZmVyZW5jZWRDSUNsYXNzTmFtZX07CiAgICAgICAgICAgIG15ICVDbGFzc05hbWUySUQgICAgICAgICAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICkgLy8ge30KICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCAkQ2xhc3NOYW1lMklEeyRSZWZlcmVuY2VkQ0lDbGFzc05hbWV9ICkgewogICAgICAgICAgICAgICAgJERGe0NvbmZpZ317Q2xhc3NJRHN9ID0gWyAkQ2xhc3NOYW1lMklEeyRSZWZlcmVuY2VkQ0lDbGFzc05hbWV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkQXR0cktleSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0tleX07CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhlIFJlZmVyZW5jZWRDSUNsYXNzTmFtZSAnJFJlZmVyZW5jZWRDSUNsYXNzTmFtZScgaW4gYXR0cmlidXRlICckQXR0cktleScgaGFzIG5vIG1hdGNoPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ1VzZXInICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ0FnZW50JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ0lBQ0N1c3RvbWVyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnQ3VzdG9tZXJDb21wYW55JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ3VzdG9tZXJVc2VyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnQ3VzdG9tZXJDb21wYW55JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ0lBdHRhY2htZW50JyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkQXR0YWNobWVudCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENoZWNrUGFja2FnZSAmJiAkU2VsZi0+e1VzZURlZmF1bHRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9Kys7CiAgICAgICAgfQogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ0F0dGFjaG1lbnQnOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0F1dG9Db21wbGV0ZSc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdTZXJ2aWNlUmVmZXJlbmNlJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdTZXJ2aWNlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnUXVldWVSZWZlcmVuY2UnICkgewogICAgICAgIG15ICRDaGVja1BhY2thZ2UgPSAkU2VsZi0+X0NoZWNrSW5zdGFsbGVkUGFja2FnZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBQYWNrYWdlID0+ICdEeW5hbWljRmllbGRUaWNrZXRzQXR0cmlidXRlcycsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENoZWNrUGFja2FnZSAmJiAkU2VsZi0+e1VzZURlZmF1bHRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9Kys7CiAgICAgICAgfQogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1F1ZXVlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnU0xBUmVmZXJlbmNlJyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkVGlja2V0c0F0dHJpYnV0ZXMnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDaGVja1BhY2thZ2UgJiYgJFNlbGYtPntVc2VEZWZhdWx0c30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSsrOwogICAgICAgIH0KICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdTTEEnOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0F1dG9Db21wbGV0ZSc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdUeXBlUmVmZXJlbmNlJyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkVGlja2V0c0F0dHJpYnV0ZXMnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDaGVja1BhY2thZ2UgJiYgJFNlbGYtPntVc2VEZWZhdWx0c30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSsrOwogICAgICAgIH0KICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdUeXBlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnVGV4dExpbmsnICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1RleHQnOwogICAgICAgICRERntDb25maWd9e0xpbmt9ID0gJ1slIERhdGEuVmFsdWUgfCB1cmwgJV0nOwogICAgfQoKICAgICMgTGVnYWN5IERGIHR5cGUgJ0R5bmFtaWNGaWVsZCcgZnJvbSB0aGUgcGFja2FnZSBDSUF0dHJpYnV0ZXNDb2xsZWN0aW9uCiAgICAjIFRoaXMgdHlwZSByZWZlcmVuY2VzIGEgZ2VuZXJpYyBERiB3aG9zZSB0eXBlIG11c3QgYmUgc3BlY2lmaWVkIGJ5IHRoZSBsZWdhY3kgYXR0cmlidXRlIE5hbWUKICAgIGVsc2lmICggJFR5cGUgZXEgJ0R5bmFtaWNGaWVsZCcgKSB7CiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17TmFtZX0gKSB7CiAgICAgICAgICAgIG15ICRMZWdhY3lGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e05hbWV9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkREZ7RmllbGRUeXBlfSAgICAgICAgICAgICAgPSAnRHJvcGRvd24nOwogICAgICAgICAgICAkREZ7Q29uZmlnfXtNdWx0aVZhbHVlfSAgICAgPSAoICRQYXJhbXtBdHRyaWJ1dGV9e0NvdW50TWF4fSAmJiAkUGFyYW17QXR0cmlidXRlfXtDb3VudE1heH0gPiAxICkgPyAxIDogMDsKICAgICAgICAgICAgJERGe0NvbmZpZ317UG9zc2libGVWYWx1ZXN9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZWdhY3lGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5GaWVsZCB0eXBlICdEeW5hbWljRmllbGQnIHJlcXVpcmVzIE5hbWUgc3BlY2lmaWNhdGlvbiE8L3JlZD5cbiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Vbmtub3duIGlucHV0IHR5cGUgJyRUeXBlJyE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICVERjsKfQoKc3ViIF9Db250aW51ZU9yTm90IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICdOZXh0JyBpZiAkU2VsZi0+e1VzZURlZmF1bHRzfTsKCiAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgIjx5ZWxsb3c+RG9uZS5cblxuWW91IGNhbiBwYXVzZSBoZXJlIHRvIHJldmlldyBhbmQgcG9zc2libHkgYWx0ZXIgdGhlIHN1Z2dlc3Rpb25zIGJ5IGluc3BlY3RpbmcgYW5kIGNoYW5naW5nIHRoZSBmaWxlcy4gQ2FsbGluZyB0aGUgc2NyaXB0IGFnYWluIGxhdGVyIHNob3VsZCBhdXRvbWF0aWNhbGx5IHJlc3VtZSBhdCB0aGUgcmlnaHQgc3RlcCwgeW91IGNhbiBtYW51YWxseSBlbmZvcmNlIHRoaXMgYnkgY2FsbGluZyB2aWE6PC95ZWxsb3c+XG4iCiAgICApOwogICAgJFNlbGYtPlByaW50KCAiXHRiaW4vb3RvYm8uQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTEgLS1zdGFydC1hdCAiIC4gKCAkUGFyYW17Q3VycmVudFN0ZXB9ICsgMSApIC4gIlxuIiApOwogICAgJFNlbGYtPlByaW50KAogICAgICAgICJcbjx5ZWxsb3c+VG8gZmluaXNoIHRoZSBzY3JpcHQgbm93LCBqdXN0IHByZXNzIGVudGVyLiBUbyBkaXJlY3RseSBjb250aW51ZSB3aXRoIHRoZSBkZWZhdWx0IHN1Z2dlc3Rpb25zIHdpdGhvdXQgcmV2aWV3IHdyaXRlICdkZWYnLjwveWVsbG93PlxuXHQiCiAgICApOwoKICAgIHJldHVybiAnTmV4dCcgaWYgPFNURElOPiA9fiBtL15kZWYoYXVsdCk/JC87CgogICAgcmV0dXJuICdFeGl0JzsKfQoKc3ViIF9DaGVja0luc3RhbGxlZFBhY2thZ2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUGFzcyA9IDE7CgogICAgcmV0dXJuICRQYXNzIGlmICRTZWxmLT57Q2hlY2tlZFR5cGVzfXsgJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1R5cGV9IH07CgogICAgJFBhc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UGFja2FnZScpLT5QYWNrYWdlSXNJbnN0YWxsZWQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17UGFja2FnZX0sCiAgICApOwogICAgaWYgKCAhJFBhc3MgKSB7CiAgICAgICAgbXkgJENsYXNzICAgICAgICA9ICRQYXJhbXtDbGFzc307CiAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbXtEZWZpbml0aW9uSUR9OwogICAgICAgIG15ICRGaWVsZFR5cGUgICAgPSAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VHlwZX07CiAgICAgICAgbXkgJEZpZWxkTmFtZSAgICA9ICRQYXJhbXtBdHRyaWJ1dGV9e05hbWV9OwogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5cbkVycm9yIGNvbnZlcnRpbmcgREYgKENsYXNzOiAkQ2xhc3MsIERlZmluaXRpb25JRDogJERlZmluaXRpb25JRCwgRmllbGQgVHlwZTogJEZpZWxkVHlwZSwgRmllbGQgTmFtZTogJEZpZWxkTmFtZSkuIDwvcmVkPiIpOwogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5UaGUgJFBhcmFte1BhY2thZ2V9IHBhY2thZ2UgaXMgcmVxdWlyZWQuPC9yZWQ+XG4iKTsKICAgIH0KICAgICRTZWxmLT57Q2hlY2tlZFR5cGVzfXsgJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1R5cGV9IH0gPSAxOwoKICAgIHJldHVybiAkUGFzczsKfQoKc3ViIF9SZXNldFNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJFNldHRpbmdOYW1lICAgICAgID0gJFBhcmFte1NldHRpbmdOYW1lfTsKICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIEZvcmNlICA9PiAxLAogICAgICAgIE5hbWUgICA9PiAkU2V0dGluZ05hbWUsCiAgICApOwogICAgaWYgKCAhJEV4Y2x1c2l2ZUxvY2tHVUlEICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgbG9jayAnJFNldHRpbmdOYW1lJyBmb3IgcmVzZXQ8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdSZXNldCgKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkU2V0dGluZ05hbWUsCiAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCByZXNldCAnJFNldHRpbmdOYW1lJzwvcmVkPlxuIik7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICBOYW1lICAgPT4gJFNldHRpbmdOYW1lLAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5sb2NrICckU2V0dGluZ05hbWUnPC9yZWQ+XG4iKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJURlcGxveW1lbnRSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgIENvbW1lbnRzID0+ICJSZXNldCAkU2V0dGluZ05hbWUuIiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIEZvcmNlICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJERlcGxveW1lbnRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCBkZXBsb3kgcmVzZXQgb2YgJyRTZXR0aW5nTmFtZSc8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5TdWNjZXNzZnVsbHkgcmVzZXQgJyRTZXR0aW5nTmFtZScuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ImportExport/Export.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW1wb3J0RXhwb3J0OjpFeHBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdUaGUgdG9vbCBmb3IgZXhwb3J0aW5nIGNvbmZpZyBpdGVtcycpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndGVtcGxhdGUtbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSBhIHRlbXBsYXRlIG51bWJlciB0byBiZSBleHBvcnRlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKICAgICRTZWxmLT5BZGRBcmd1bWVudCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZGVzdGluYXRpb24nLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJTcGVjaWZ5IHRoZSBwYXRoIHRvIGEgZmlsZSB3aGVyZSBjb25maWcgaXRlbSBkYXRhIHNob3VsZCBiZSBleHBvcnRlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLiovc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVJRCA9ICRTZWxmLT5HZXRPcHRpb24oJ3RlbXBsYXRlLW51bWJlcicpOwoKICAgICMgZ2V0IHRlbXBsYXRlIGRhdGEKICAgIG15ICRUZW1wbGF0ZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkVGVtcGxhdGVEYXRhLT57VGVtcGxhdGVJRH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRlbXBsYXRlICRUZW1wbGF0ZUlEIG5vdCBmb3VuZCEuXG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXhwb3J0IGFib3J0ZWQuLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkV4cG9ydGluZyBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgICMgZXhwb3J0IGRhdGEKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPkV4cG9ydCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdCApIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXJyb3Igb2NjdXJyZWQuIEV4cG9ydCBpbXBvc3NpYmxlISBTZWUgU3lzbG9nIGZvciBkZXRhaWxzLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCAiPGdyZWVuPiIgLiAoICctJyB4IDY5ICkgLiAiPC9ncmVlbj5cbiIgKTsKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPlN1Y2Nlc3M6ICRSZXN1bHQtPntTdWNjZXNzfSBzdWNjZWVkZWQ8L2dyZWVuPlxuIik7CiAgICBpZiAoICRSZXN1bHQtPntGYWlsZWR9ICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCIkUmVzdWx0LT57RmFpbGVkfSBmYWlsZWQuXG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkVycm9yOiAkUmVzdWx0LT57RmFpbGVkfSBmYWlsZWQuPC9ncmVlbj5cbiIpOwogICAgfQoKICAgIG15ICREZXN0aW5hdGlvbkZpbGUgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ2Rlc3RpbmF0aW9uJyk7CgogICAgaWYgKCREZXN0aW5hdGlvbkZpbGUpIHsKCiAgICAgICAgbXkgJEZpbGVDb250ZW50ID0gam9pbiAiXG4iLCBAeyAkUmVzdWx0LT57RGVzdGluYXRpb25Db250ZW50fSB9OwoKICAgICAgICAjIHNhdmUgZGVzdGluYXRpb24gY29udGVudCB0byBmaWxlCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlV3JpdGUoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICREZXN0aW5hdGlvbkZpbGUsCiAgICAgICAgICAgIENvbnRlbnQgID0+IFwkRmlsZUNvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKCJDYW4ndCB3cml0ZSBmaWxlICREZXN0aW5hdGlvbkZpbGUuXG5FeHBvcnQgYWJvcnRlZC5cbiIpOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkZpbGUgJERlc3RpbmF0aW9uRmlsZSBzYXZlZC48L2dyZWVuPlxuIik7CgogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkV4cG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ImportExport/Import.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW1wb3J0RXhwb3J0OjpJbXBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdUaGUgdG9vbCBmb3IgaW1wb3J0aW5nIGNvbmZpZyBpdGVtcycpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndGVtcGxhdGUtbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSBhIHRlbXBsYXRlIG51bWJlciB0byBiZSBpbXBvZXJ0ZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvXGQrL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NvdXJjZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIGZpbGUgd2hpY2ggY29udGFpbmluZyB0aGUgY29uZmlnIGl0ZW0gZGF0YSBmb3IgaW1wb3J0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTb3VyY2VQYXRoID0gJFNlbGYtPkdldEFyZ3VtZW50KCdzb3VyY2UnKTsKICAgIGlmICggJFNvdXJjZVBhdGggJiYgIS1yICRTb3VyY2VQYXRoICkgewogICAgICAgIGRpZSAiRmlsZSAkU291cmNlUGF0aCBkb2VzIG5vdCBleGlzdCwgY2FuIG5vdCBiZSByZWFkLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVJRCA9ICRTZWxmLT5HZXRPcHRpb24oJ3RlbXBsYXRlLW51bWJlcicpOwoKICAgICMgZ2V0IHRlbXBsYXRlIGRhdGEKICAgIG15ICRUZW1wbGF0ZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkVGVtcGxhdGVEYXRhLT57VGVtcGxhdGVJRH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRlbXBsYXRlICRUZW1wbGF0ZUlEIG5vdCBmb3VuZCEuXG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXhwb3J0IGFib3J0ZWQuLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkltcG9ydGluZyBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgIG15ICRTb3VyY2VDb250ZW50OwogICAgbXkgJFNvdXJjZUZpbGUgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ3NvdXJjZScpOwoKICAgIGlmICgkU291cmNlRmlsZSkgewoKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+UmVhZCBGaWxlICRTb3VyY2VGaWxlLjwveWVsbG93PlxuIik7CgogICAgICAgICMgcmVhZCBzb3VyY2UgZmlsZQogICAgICAgICRTb3VyY2VDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICRTb3VyY2VGaWxlLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnU0NBTEFSJywKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ2Jpbm1vZGUnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTb3VyY2VDb250ZW50ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiQ2FuJ3QgcmVhZCBmaWxlICRTb3VyY2VGaWxlLlxuSW1wb3J0IGFib3J0ZWQuXG4iKSBpZiAhJFNvdXJjZUNvbnRlbnQ7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICB9CgogICAgIyBpbXBvcnQgZGF0YQogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+SW1wb3J0KAogICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgU291cmNlQ29udGVudCA9PiAkU291cmNlQ29udGVudCwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggISRSZXN1bHQgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlxuRXJyb3Igb2NjdXJyZWQuIEltcG9ydCBpbXBvc3NpYmxlISBTZWUgdGhlIE9UT0JPIGxvZyBmb3IgZGV0YWlscy5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgICMgcHJpbnQgcmVzdWx0CiAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPkltcG9ydCBvZiAkUmVzdWx0LT57Q291bnRlcn0gJFJlc3VsdC0+e09iamVjdH0gcmVjb3Jkczo8L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+U3VjY2VzczogJFJlc3VsdC0+e1N1Y2Nlc3N9IHN1Y2NlZWRlZDwvZ3JlZW4+XG4iKTsKICAgIGlmICggJFJlc3VsdC0+e0ZhaWxlZH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIiRSZXN1bHQtPntGYWlsZWR9IGZhaWxlZC5cbiIpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXJyb3I6ICRSZXN1bHQtPntGYWlsZWR9IGZhaWxlZC48L2dyZWVuPlxuIik7CiAgICB9CgogICAgZm9yIG15ICRSZXRDb2RlICggc29ydCBrZXlzICV7ICRSZXN1bHQtPntSZXRDb2RlfSB9ICkgewogICAgICAgIG15ICRDb3VudCA9ICRSZXN1bHQtPntSZXRDb2RlfS0+eyRSZXRDb2RlfSB8fCAwOwogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBvZiAkUmVzdWx0LT57Q291bnRlcn0gJFJlc3VsdC0+e09iamVjdH0gcmVjb3JkczogJENvdW50ICRSZXRDb2RlPC9ncmVlbj5cbiIpOwogICAgfQogICAgaWYgKCAkUmVzdWx0LT57RmFpbGVkfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5MYXN0IHByb2Nlc3NlZCBsaW5lIG51bWJlciBvZiBpbXBvcnQgZmlsZTogJFJlc3VsdC0+e0NvdW50ZXJ9PC9ncmVlbj5cbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/IncidentState/Recalculate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ1JlY2FsY3VsYXRlcyB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW1zLicpOwoKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NvbmZpZ2l0ZW0tbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiUmVjYWxjdWxhdGUgbGlzdGVkIGNvbmZpZyBpdGVtcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWNhbGN1bGF0aW5nIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgQENvbmZpZ0l0ZW1JRHM7ICAgICMgZWl0aGVyIGV4cGxpY2l0IGxpc3Qgb3IgYWxsIHZhbGlkIGNsYXNzZXMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzID0gQHsgJFNlbGYtPkdldE9wdGlvbignY29uZmlnaXRlbS1udW1iZXInKSAvLyBbXSB9OwogICAgaWYgKEBDb25maWdJdGVtTnVtYmVycykgewoKICAgICAgICBDT05GSUdfSVRFTV9OVU1CRVI6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgbXkgJElEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJRCkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJElEOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fTlVNQkVSOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VW5hYmxlIHRvIGZpbmQgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1OdW1iZXIuPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGNsYXNzIGlkcwogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKICAgICAgICBteSBAVmFsaWRDbGFzc0lEcyA9IHNvcnQga2V5cyAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMgZm9ybSBhbGwgdmFsaWQgY2xhc3NlcwogICAgICAgIG15ICVDb25maWdJdGVtc0lEc1JlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQFZhbGlkQ2xhc3NJRHMsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICdIQVNIJwogICAgICAgICk7CgogICAgICAgIEBDb25maWdJdGVtSURzID0ga2V5cyAlQ29uZmlnSXRlbXNJRHNSZWY7CiAgICB9CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlJlY2FsY3VsYXRpbmcgaW5jaWRlbnQgc3RhdGUgZm9yICRDSUNvdW50IGNvbmZpZyBpdGVtcy48L3llbGxvdz5cbiIpOwoKICAgICMgUmVtZW1iZXIgY29uZmlnIGl0ZW0gcmVzdWx0cyB0aHJvdWdoIG11bHRpcGxlIHJ1bnMgb2YgQ3VySW5jaVN0YXRlUmVjYWxjKCkuCiAgICBteSAlTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGU7CiAgICBteSAlU2Nhbm5lZENvbmZpZ0l0ZW1JRHM7CgogICAgbXkgJENvdW50ID0gMDsKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSA9PiBcJU5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLAogICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiBcJVNjYW5uZWRDb25maWdJdGVtSURzLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Li4uIGNvdWxkIG5vdCByZWNhbGN1bGF0ZSBpbmNpZGVudCBzdGF0ZSBmb3IgY29uZmlnIGl0ZW0gaWQgJyRDb25maWdJdGVtSUQnITwvcmVkPlxuIik7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU07CiAgICAgICAgfQoKICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgaWYgKCAkQ291bnQgJSAxMDAgPT0gMCApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+Li4uICRDb3VudCBjb25maWcgaXRlbXMgcmVjYWxjdWxhdGVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPlByaW50KCJcbjxncmVlbj5SZWFkeS4gUmVjYWxjdWxhdGVkICRDb3VudCBjb25maWcgaXRlbXMuPC9ncmVlbj5cblxuIik7CgogICAgIyBnZXQgc2VydmljZSBvYmplY3QKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKCiAgICAjIGdldCBsaXN0IG9mIGFsbCBzZXJ2aWNlcyAodmFsaWQgYW5kIGludmFsaWQpCiAgICBteSAlU2VydmljZUxpc3QgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIG15ICROdW1iZXJPZlNlcnZpY2VzID0gc2NhbGFyIGtleXMgJVNlcnZpY2VMaXN0OwoKICAgICRTZWxmLT5QcmludCgKICAgICAgICAiPGdyZWVuPlJlc2V0dGluZyBTZXJ2aWNlUHJlZmVyZW5jZXMgJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJyBmb3IgJE51bWJlck9mU2VydmljZXMgc2VydmljZXMuLi48L2dyZWVuPlxuIgogICAgKTsKCiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgICMgdXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2Ugd2l0aCBhbiBlbXB0eSB2YWx1ZQogICAgICAgICMgdGhpcyBpcyBuZWNlc3NhcnkgdG8gZm9yY2UgYSByZWNhbGN1bGF0aW9uIG9uIGEgU2VydmljZUdldCgpCiAgICAgICAgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJycsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+UmVhZHkuPC9ncmVlbj5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Maint/ITSM/ConfigItem/CreateConditionalTickets.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ0l0ZW06OkNyZWF0ZUNvbmRpdGlvbmFsVGlja2V0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignQ2hlY2tzIHRoZSBjb25maWd1cmVkIGNvbmZpZyBpdGVtcyBhbmQgY3JlYXRlcyB0aWNrZXRzIGFzIG5vdGlmaWNhdGlvbiBpZiB0aGUgcmVxdWlyZW1lbnRzIGFyZSBmdWxmaWxsZWQuJyk7CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE5vdGlmaWNhdGlvbkNvbmZpZ3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0NNREJOb3RpZmljYXRpb25zOjpSdWxlcycpOwoKICAgIGlmICggISROb3RpZmljYXRpb25Db25maWdzICkgewogICAgICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+Tm8gbm90aWZpY2F0aW9ucyBjb25maWd1cmVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMaW5rT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICVDbGFzc0xpc3QgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApCiAgICB9OwogICAgbXkgJURlcGxTdGF0ZUxpc3QgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgKQogICAgfTsKCiAgICAjIGdvIHRocm91Z2ggYWxsIGNvbmZpZ3VyZWQgbm90aWZpY2F0aW9uIHNldHVwcwogICAgQ09ORklHOgogICAgZm9yIG15ICRDb25maWcgKCB2YWx1ZXMgJXskTm90aWZpY2F0aW9uQ29uZmlnc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGFuZCBkZXBsb3ltZW50IHN0YXRlIGlkcwogICAgICAgIG15ICRDbGFzc0lEICAgICAgPSAkQ2xhc3NMaXN0eyAkQ29uZmlnLT57Q2xhc3N9IH07CiAgICAgICAgbXkgJERlcGxTdGF0ZUlEcyA9IFsgbWFwIHsgJERlcGxTdGF0ZUxpc3R7JF99IH0gQHsgJENvbmZpZy0+e0FjdGl2ZURlcGxveW1lbnRTdGF0ZXN9IH0gXTsKCiAgICAgICAgaWYgKCAhJENsYXNzSUQgfHwgIUlzQXJyYXlSZWZXaXRoRGF0YSgkRGVwbFN0YXRlSURzKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIGNsYXNzICckQ29uZmlnLT57Q2xhc3N9Jywgb3IgdmFsaWQgZGVwbG95bWVudCBzdGF0ZXMgY29uZmlndXJlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IENPTkZJRzsKICAgICAgICB9CgogICAgICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnbyB0aHJvdWdoIGFsbCBjb25maWcgaXRlbXMKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkTGFzdFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmZpZy0+e1RpbWVDSUtleX0gfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRHluYW1pYyBmaWVsZCAkQ29uZmlnLT57VGltZUNJS2V5fSBvZiBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCBpcyBlbXB0eSBvciBkb2VzIG5vdCBleGlzdCAtIHNraXAhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHRyaWdnZXIgZGF0ZTsKICAgICAgICAgICAgbXkgJFRyaWdnZXJEYXRlT2JqZWN0OwoKICAgICAgICAgICAgIyBkYXRlIGZpZWxkIGZvcm1hdAogICAgICAgICAgICBpZiAoICRMYXN0VmVyc2lvbi0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGltZUNJS2V5fSB9ID1+IC9eKFxkKyktKFxkKyktKFxkKykvICkgewogICAgICAgICAgICAgICAgJFRyaWdnZXJEYXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBZZWFyICAgPT4gJDEsCiAgICAgICAgICAgICAgICAgICAgICAgIE1vbnRoICA9PiAkMiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF5ICAgID0+ICQzLAogICAgICAgICAgICAgICAgICAgICAgICBIb3VyICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgTWludXRlID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZCA9PiAwLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljIGZpZWxkICRDb25maWctPntUaW1lQ0lLZXl9IG9mIENvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGhhcyBhbiBpbnZhbGlkIGZvcm1hdCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHByZXBhcmUgdGhlIG1vZGlmaWVyCiAgICAgICAgICAgIG15ICggJFNpZ24sICRTdW1tYW5kLCAkVW5pdCApID0gKCAkQ29uZmlnLT57VGltZU1vZGlmaWVyfSA9fiAvXlxzKihbKy1dPylccyooXGQrKVxzKihbZGhtXT8pLyApOwogICAgICAgICAgICAkU3VtbWFuZCAqPSAoICRTaWduICYmICRTaWduIGVxICctJyApICA/IC0xIDogMTsKICAgICAgICAgICAgJFN1bW1hbmQgKj0gKCAhJFVuaXQgfHwgJFVuaXQgZXEgJ2QnICkgPyA4NjQwMCA6CiAgICAgICAgICAgICAgICAoICRVbml0IGVxICdoJyApID8gMzYwMCA6IDYwOwoKICAgICAgICAgICAgIyBnZXQgbm93CiAgICAgICAgICAgIG15ICROb3dPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSBwcm9jZWVkLCBpZiBub3cgaXMgbGF0ZXIgdGhhbiB0aGVuIG1vZGlmaWVkIHRyaWdnZXIgZGF0ZQogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAoICROb3dPYmplY3QtPlRvRXBvY2goKSA8ICRUcmlnZ2VyRGF0ZU9iamVjdC0+VG9FcG9jaCgpICsgJFN1bW1hbmQgKTsKCiAgICAgICAgICAgICMgY2hlY2sgd2hldGhlciBhIHRpY2tldCB3YXMgZ2VuZXJhdGVkIHByZXZpb3VzbHkgYW5kIGlzIG5vdCBjbG9zZWQKICAgICAgICAgICAgbXkgJUxpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFN0YXRlICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICgga2V5cyAlTGlua0xpc3QgKSB7CiAgICAgICAgICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJExpbmtlZFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU2lsZW50ICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNraXAgY29uZmlnIGl0ZW0sIGlmIGFuIG9wZW4gdGlja2V0IHdhcyBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGlja2V0fXtEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgICAgICAmJiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGlja2V0fXtEeW5hbWljRmllbGR9IH0gPT0gMQogICAgICAgICAgICAgICAgICAgICYmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAiY2xvc2VkIgogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcmVwYXJlIHN1YnN0aXR1dGlvbnMKICAgICAgICAgICAgbXkgJVN1YnN0aXR1dGlvbnMgPSAoCiAgICAgICAgICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTlVNQkVSPicgPT4gJExhc3RWZXJzaW9uLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9OQU1FPicgICA9PiAkTGFzdFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9EQVRFPicgICA9PiAkTGFzdFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmZpZy0+e1RpbWVDSUtleX0gfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFNVQktFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCAoICRDb25maWctPntUaWNrZXR9e1RpdGxlfSAuICRDb25maWctPntUaWNrZXR9e1RleHR9ICkgPX4gLzxPVE9CT19DT05GSUdJVEVNXyhbXj5dKyk+L2cgKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNVQktFWSBpZiBleGlzdHMgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In07CiAgICAgICAgICAgICAgICBuZXh0IFNVQktFWSBpZiAhJExhc3RWZXJzaW9uLT57JEtleX07CgogICAgICAgICAgICAgICAgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In0gPSAkTGFzdFZlcnNpb24tPnskS2V5fSAvLyAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFRpY2tldFRpdGxlICAgICAgPSAkQ29uZmlnLT57VGlja2V0fXtUaXRsZX07CiAgICAgICAgICAgIG15ICROb3RpZmljYXRpb25UZXh0ID0gJENvbmZpZy0+e1RpY2tldH17VGV4dH07CiAgICAgICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlU3Vic3RpdHV0aW9ucyApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRUaXRsZSAgICAgID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICAgICAgICAgICAgICAkTm90aWZpY2F0aW9uVGV4dCA9fiBzLyRLZXkvJFN1YnN0aXR1dGlvbnN7ICRLZXkgfS9nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFsbCBjaGVja3MgZmluaXNoZWQgLT4gY3JlYXRlIGEgdGlja2V0IGFzIG5vdGlmaWNhdGlvbgogICAgICAgICAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCksCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICRDb25maWctPntUaWNrZXR9e1F1ZXVlfSwKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtMb2NrfSAgICAgICAgIHx8ICd1bmxvY2snLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICRDb25maWctPntUaWNrZXR9e1ByaW9yaXR5fSAgICAgfHwgJzMgbm9ybWFsJywKICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtTdGF0ZX0gICAgICAgIHx8ICduZXcnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRDb25maWctPntUaWNrZXR9e1R5cGV9ICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICBTZXJ2aWNlICAgICAgPT4gJENvbmZpZy0+e1RpY2tldH17U2VydmljZX0gICAgICB8fCAnJywKICAgICAgICAgICAgICAgIFNMQSAgICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtTTEF9ICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICRDb25maWctPntUaWNrZXR9e0N1c3RvbWVySUR9ICAgfHwgJycsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJENvbmZpZy0+e1RpY2tldH17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtPd25lcklEfSAgICAgIHx8ICcxJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkVGlja2V0SUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIGEgdGlja2V0IGZvciBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtSUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkbyBhcnRpY2xlIGRiIGluc2VydAogICAgICAgICAgICBteSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQ2hhbm5lbCggQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJyApOwogICAgICAgICAgICBteSAkQXJ0aWNsZUlEICAgICAgICAgICAgICAgICAgICA9ICRJbnRlcm5hbEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJENvbmZpZy0+e1RpY2tldH17U2VuZGVyVHlwZX0gfHwgJ3N5c3RlbScsCiAgICAgICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAwLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnLAogICAgICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJE5vdGlmaWNhdGlvblRleHQsCiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAkVGlja2V0VGl0bGUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAiXCVcJUNNREJOb3RpZmljYXRpb24iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjbG9zZSB0aWNrZXQgaWYgYXJ0aWNsZSBjcmVhdGUgZmFpbGVkIQogICAgICAgICAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IHByb2Nlc3MgdGlja2V0ISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbGluayB0aWNrZXQgYW5kIGNvbmZpZyBpdGVtCiAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgIHRvIDEsIHRvIG1hcmsgdGhlIHRpY2tldCBhcyBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJENvbmZpZy0+e1RpY2tldH17RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Maint/ITSM/ConfigItem/RebuildLinkTable.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ0l0ZW06OlJlYnVpbGRMaW5rVGFibGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKDw8J0VORF9UWFQnKTsKUmVidWlsZCB0aGUgZGF0YWJhc2UgdGFibGUgY29uZmlnaXRlbV9saW5rIGZyb20gdGhlIGR5bmFtaWMgZmllbGRzIG9mIHRoZSB0eXBlIFJlZmVyZW5jZS4gT25seSB0aGUgZmllbGRzIGxpbmtpbmcgY29uZmlnIGl0ZW1zIGFyZQpjb25zaWRlcmVkIGluIHRoaXMgcHJvY2Vzcy4KRU5EX1RYVAoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWJ1aWxkaW5nIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRSZXN1bHQgICAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJlYnVpbGRMaW5rVGFibGU7CgogICAgJFNlbGYtPlByaW50KCI8JFJlc3VsdC0+e0NvbG9yfT4kUmVzdWx0LT57TWVzc2FnZX08LyRSZXN1bHQtPntDb2xvcn0+XG5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvciB1bmxlc3MgJFJlc3VsdC0+e1N1Y2Nlc3N9OwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Maint/WebService/TriggerConfigItemFetch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGFlbW9uOjpTY2hlZHVsZXJEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoLicpOwogICAgJFNlbGYtPkFkZEFyZ3VtZW50KAogICAgICAgIE5hbWUgICAgICAgID0+ICdXZWJTZXJ2aWNlTmFtZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNlbGVjdCBuYW1lIG9mIHdlYiBzZXJ2aWNlIHRvIGJlIHRyaWdnZXJlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0ludm9rZXInLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJTZWxlY3QgSW52b2tlciB0byBiZSB0cmlnZ2VyZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJbnZva2VyICAgICAgICA9ICRTZWxmLT5HZXRBcmd1bWVudCgnSW52b2tlcicpOwogICAgbXkgJFdlYnNlcnZpY2VOYW1lID0gJFNlbGYtPkdldEFyZ3VtZW50KCdXZWJTZXJ2aWNlTmFtZScpOwoKICAgICMgQ2hlY2sgaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgbWV0ICh3ZWIgc2VydmljZSBleGlzdHMgYW5kIGhhcyBuZWVkZWQgbWV0aG9kKS4KICAgIG15ICRXZWJzZXJ2aWNlCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KCBOYW1lID0+ICRXZWJzZXJ2aWNlTmFtZSApOwogICAgZGllICJSZXF1aXJlZCB3ZWIgc2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBkb2VzIG5vdCBleGlzdCFcbiIgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlKTsKICAgIGRpZSAiUmVxdWlyZWQgd2ViIHNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgaXMgaW52YWxpZCFcbiIgICAgIGlmICRXZWJzZXJ2aWNlLT57VmFsaWRJRH0gbmUgMTsKCiAgICBteSAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nCiAgICAgICAgPSAkV2Vic2VydmljZS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9OwogICAgZGllICJXZWIgc2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBkb2VzIG5vdCBjb250YWluIHJlcXVpcmVkIFJFU1QgY29udHJvbGxlciBtYXBwaW5nIVxuIgogICAgICAgIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nKTsKICAgIGRpZSAiV2ViIHNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgZG9lcyBub3QgY29udGFpbiB0aGUgSW52b2tlciAnJEludm9rZXInISIKICAgICAgICBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmctPnskSW52b2tlcn0gKTsKCiAgICAjIFJlbWVtYmVyIGRhdGEgZm9yIHRhc2suCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1GZXRjaFRhc2tEYXRhfSA9IHsKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2UtPntJRH0sCiAgICAgICAgSW52b2tlciAgICAgID0+ICRJbnZva2VyLAogICAgICAgIERhdGEgICAgICAgICA9PiB7IER1bW15ID0+IDEgfSwKICAgIH07CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEludm9rZXIgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ0ludm9rZXInKTsKCiAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgIjx5ZWxsb3c+VHJpZ2dlcmluZyAkSW52b2tlciBmb3IgaW1tZWRpYXRlIChhc3luY2hyb25vdXMpIGV4ZWN1dGlvbi48L3llbGxvdz5cbiIKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyktPlJ1biggJFNlbGYtPntDb25maWdJdGVtRmV0Y2hUYXNrRGF0YX0tPiUqICk7CgogICAgIyBUT0RPOiBUaGluayBhYm91dCBqdXN0IGFkZGluZyBhIHRhc2sKICAgICMgICAgbXkgJFRhc2tJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEYWVtb246OlNjaGVkdWxlckRCJyktPlRhc2tBZGQoCiAgICAjICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ0dlbmVyaWNJbnRlcmZhY2UnLAogICAgIyAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgID0+ICdDb25maWdJdGVtRmV0Y2hfJyAuICRJbnZva2VyLAogICAgIyAgICAgICAgTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzID0+IDEsCiAgICAjICAgICAgICBEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntDb25maWdJdGVtRmV0Y2hUYXNrRGF0YX0sCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIGlmICggIUlzSW50ZWdlcigkVGFza0lEKSApIHsKICAgICMgICAgICAgICRTZWxmLT5QcmludEVycm9yKCdDb3VsZCBub3QgdHJpZ2dlciBpbnZva2VyJyk7CiAgICAjICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICMgICAgfQogICAgIwogICAgIyAgICBpZiAoICRUYXNrSUQgPT0gLTEgKSB7CiAgICAjICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+QW5vdGhlciAkSW52b2tlciBjb250cm9sbGVyIGlzIGFscmVhZHkgcnVubmluZy4gUGxlYXNlIHRyeSBhZ2FpbiE8L3llbGxvdz5cbiIpOwogICAgIyAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICAjICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/Driver/ConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0KQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVJlZmVyZW5jZSk7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgZmlyc3QpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtIGJhY2tlbmQgZm9yIHRoZSBSZWZlcmVuY2UgZHluYW1pYyBmaWVsZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCml0IGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IGNyZWF0ZSBpbnN0YW5jZXMgb2YgZHluYW1pYyBmaWVsZCBkcml2ZXJzLgpJbnN0YW5jZXMgb2YgdGhlIGRyaXZlcnMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZQpkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0IEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3Mge30sICRUeXBlOwoKICAgICMgU29tZSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgdGFibGUgYXR0cmlidXRlIGR5bmFtaWNfZmllbGRfdmFsdWUudmFsdWVfaW50LgogICAgJFNlbGYtPntWYWx1ZVR5cGV9ICAgICAgPSAnSW50ZWdlcic7CiAgICAkU2VsZi0+e1ZhbHVlS2V5fSAgICAgICA9ICdWYWx1ZUludCc7CiAgICAkU2VsZi0+e1RhYmxlQXR0cmlidXRlfSA9ICd2YWx1ZV9pbnQnOwoKICAgICMgVXNlZCBmb3IgZGVjbGFyaW5nIENTUyBjbGFzc2VzCiAgICAkU2VsZi0+e0ZpZWxkQ1NTQ2xhc3N9ID0gJ0R5bmFtaWNGaWVsZFJlZmVyZW5jZSc7CgogICAgIyBzZXQgZmllbGQgYmVoYXZpb3JzCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDAsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDEsCiAgICAgICAgJ0lzSGlkZGVuSW5UaWNrZXRJbmZvcm1hdGlvbicgID0+IDAsCiAgICAgICAgJ0lzUmVmZXJlbmNlRmllbGQnICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU2V0Q2FwYWJsZScgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ1NldHNEeW5hbWljQ29udGVudCcgICAgICAgICAgID0+IDEsCiAgICB9OwoKICAgICRTZWxmLT57UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ0lUU01Db25maWdJdGVtJzsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUdldCgpCgpUaGlzIG1ldGhvZCBjb250YWlucyBzcGVjaWFsIHN1cHBvcnQgZm9yIHRoZSBjYXNlIG9mIExlbnNlcy4gQSBMZW5zIG9wZXJhdGVzIGRpcmVjdGx5IG9uIGR5bmFtaWMgZmllbGQgb2YgYW4gc3BlY2lmaWMgb2JqZWN0LgpUaGUgc3BlY2lmaWMgb2JqZWN0IGlzIHVzdWFsbHkgaWRlbnRpZmllZCBieSB0aGUgdmFsdWUgb2YgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkLiBCdXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHNwZWNpYWwgY2FzZS4KV2hlbiB0aGUgcmVmZXJlbmNlIGlzIHRvIGFuIEM8SVRTTUNvbmZpZ0l0ZW0+IHRoZW4gdGhlIHJlbGV2YW50IElEIGlzIHRoZSBJRCBvZiB0aGUgbGFzdCB2ZXJzaW9uLiBUaGlzIGNhc2UgaXMgaGFuZGxlZAp3aGVuIHRoZSBwYXJhbWV0ZXIgQzxGb3JMZW5zPiBpcyBwYXNzZWQuCgo9Y3V0CgpzdWIgVmFsdWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgcGFyZW50IGNsYXNzCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U1VQRVI6OlZhbHVlR2V0KCVQYXJhbSk7CgogICAgIyBzcGVjaWFsIGhhbmRsaW5nIG9ubHkgZm9yIExlbnMKICAgIHJldHVybiAkVmFsdWUgdW5sZXNzICRQYXJhbXtGb3JMZW5zfTsKCiAgICAjIGZvciB1c2FnZSBpbiBsZW5zZXMgd2UgbWlnaHQgaGF2ZSB0byBpbnRlcnByZXQgdGhlIHZhbHVlcyB0byBiZSB1c2FibGUgZm9yIHRoZWlyIFZhbHVlR2V0KCkKICAgIHJldHVybiAkU2VsZi0+VmFsdWVGb3JMZW5zKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWx1ZSA9PiAkVmFsdWUKICAgICk7Cn0KCj1oZWFkMiBWYWx1ZVNldCgpCgpUaGlzIG1ldGhvZCBoYW5kbGVzIENvbmZpZ0l0ZW0tTGluayBzeW5jIGZvciBDPElUU01Db25maWdJdGVtPnMgd2hlbiBEeW5hbWljIEZpZWxkIFJlZmVyZW5jZXMgYmV0d2VlbiAyCkNvbmZpZ0l0ZW0oVmVyc2lvbikgYXJlIHVwZGF0ZWQuCgo9Y3V0CgpzdWIgVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHBlcmZvcm0gc2VhcmNoIGlmIG5lY2Vzc2FyeQogICAgaWYgKAogICAgICAgIGRlbGV0ZSAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICYmCiAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtJbXBvcnRTZWFyY2hBdHRyaWJ1dGV9ICYmCiAgICAgICAgJFNlbGYtPmNhbignU2VhcmNoT2JqZWN0cycpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgICAgIG15IEBWYWx1ZXM7CiAgICAgICAgICAgIGZvciBteSAkVmFsdWVJdGVtICggJFBhcmFte1ZhbHVlfS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkVHJhbnNmb3JtZWRWYWx1ZSA9ICRTZWxmLT5fVHJhbnNmb3JtRXh0ZXJuYWxTb3VyY2UoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlQXJyYXkgICAgICAgICA9PiAkVmFsdWVJdGVtLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBWYWx1ZXMsICRUcmFuc2Zvcm1lZFZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRQYXJhbXtWYWx1ZX0gPSBcQFZhbHVlczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkU2VsZi0+X1RyYW5zZm9ybUV4dGVybmFsU291cmNlKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgVmFsdWVBcnJheSAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+U1VQRVI6OlZhbHVlU2V0KCVQYXJhbSk7CgogICAgaWYgKCRSZXN1bHQpIHsKCiAgICAgICAgIyBvcHRpb25hbCBjb25maWcgaXRlbSBsaW5rcwogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAgICAgbXkgJE9iamVjdFR5cGUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX07CiAgICAgICAgbXkgJEZpZWxkVHlwZSAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfTsKCiAgICAgICAgIyBvbmx5IHByb2NlZWQgaWYgdGhpcyBpcyBhIENJIDwtPiBDSSByZWxhdGlvbnNoaXAKICAgICAgICByZXR1cm4gJFJlc3VsdCB1bmxlc3MgJE9iamVjdFR5cGUgPX4gL15JVFNNQ29uZmlnSXRlbS87CiAgICAgICAgcmV0dXJuICRSZXN1bHQgdW5sZXNzICRGaWVsZFR5cGUgID1+IC9eQ29uZmlnSXRlbS87CgogICAgICAgIG15ICRWYWx1ZVR5cGUgPSByZWYoICRQYXJhbXtWYWx1ZX0gKTsKICAgICAgICBteSBAVmFsdWVzICAgID0gJFZhbHVlVHlwZSAmJiAkVmFsdWVUeXBlIGVxICdBUlJBWScKICAgICAgICAgICAgPyAkUGFyYW17VmFsdWV9LT5AKgogICAgICAgICAgICA6ICRQYXJhbXtWYWx1ZX0gPyAoICRQYXJhbXtWYWx1ZX0gKSA6ICgpOwoKICAgICAgICBpZiAoICRQYXJhbXtTZXR9ICkgewoKICAgICAgICAgICAgIyBpbiBzZXRzIHdlIGV4cGVjdCBlaXRoZXIgYXJyYXkgcmVmZXJlbmNlcyBvciB1bmRlZiBmb3IgdGhlIHNpbmdsZSBzZXQgaW5kaWNlcwogICAgICAgICAgICAjIGZyb20gWyBbVmFsMTEsIFZhbDEyXSwgdW5kZWYsIFtWYWwzMV0gXQogICAgICAgICAgICAjIHZpYSAgKCBbVmFsMTEsIFZhbDEyXSwgdW5kZWYsIFtWYWwzMV0gKQogICAgICAgICAgICAjIHRvICAgKCBWYWwxMSwgVmFsMTIsIFZhbDMxICkKICAgICAgICAgICAgQFZhbHVlcyA9IG1hcCB7ICRfID8gJF8tPkAqIDogKCkgfSBAVmFsdWVzOwogICAgICAgIH0KCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnSXRlbSAgICAgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBjb25maWdpdGVtX2xpbmsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+U3luY0xpbmtUYWJsZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgID0+IFxAVmFsdWVzLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCiMgT3ZlcnJpZGUgZnJvbSBCYXNlUmVmZXJlbmNlIHRvIHByZXZlbnQgTGlua09iamVjdC1BdXRvLUxpbmtpbmcgZm9yIENJIDwtPiBDSSByZWxhdGlvbnMKCnN1YiBfQ3JlYXRlQXV0b0xpbmtPYmplY3RMaW5rIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRQYXJhbXtEeW5hbWljRmllbGR9OwogICAgbXkgJE9iamVjdFR5cGUgICA9ICREeW5hbWljRmllbGQtPntPYmplY3RUeXBlfTsKICAgIG15ICRGaWVsZFR5cGUgICAgPSAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfTsKCiAgICAkRmllbGRUeXBlICA9fiBzL15Db25maWdJdGVtL0lUU01Db25maWdJdGVtLzsKICAgICRGaWVsZFR5cGUgID1+IHMvXklUU01Db25maWdJdGVtVmVyc2lvbi9JVFNNQ29uZmlnSXRlbS87CiAgICAkT2JqZWN0VHlwZSA9fiBzL15JVFNNQ29uZmlnSXRlbVZlcnNpb24vSVRTTUNvbmZpZ0l0ZW0vOwoKICAgIGlmICggJEZpZWxkVHlwZSBlcSAkT2JqZWN0VHlwZSAmJiAkRmllbGRUeXBlID1+IC9eSVRTTUNvbmZpZ0l0ZW0vICkgewoKICAgICAgICAjIHNraXAgZHluYW1pYyBsaW5raW5nIGZvciBDb25maWdJdGVtIDwtPiBDb25maWdJdGVtIGxpbmtzCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+U1VQRVI6Ol9DcmVhdGVBdXRvTGlua09iamVjdExpbmsoJVBhcmFtKTsKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgRWRpdEZpZWxkVmFsdWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgcGFyZW50IGNsYXNzCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U1VQRVI6OkVkaXRGaWVsZFZhbHVlR2V0KCVQYXJhbSk7CgogICAgIyBmb3IgdGhpcyBmaWVsZCB0aGUgbm9ybWFsIHJldHVybiBhbiB0aGUgUmV0dXJuVmFsdWVTdHJ1Y3R1cmUgYXJlIHRoZSBzYW1lCiAgICByZXR1cm4gJFZhbHVlIHVubGVzcyAkUGFyYW17Rm9yTGVuc307CgogICAgIyBmb3IgdXNhZ2UgaW4gbGVuc2VzIHdlIG1pZ2h0IGhhdmUgdG8gaW50ZXJwcmV0IHRoZSB2YWx1ZXMgdG8gYmUgdXNhYmxlIGZvciB0aGVpciBWYWx1ZUdldCgpCiAgICByZXR1cm4gJFNlbGYtPlZhbHVlRm9yTGVucyggVmFsdWUgPT4gJFZhbHVlICk7Cn0KCj1oZWFkMiBHZXRGaWVsZFR5cGVTZXR0aW5ncygpCgpHZXQgdGhlIGZpZWxkIHR5cGUgc2V0dGluZ3MgZm9yIHRoZSByZWZlcmVuY2VkIG9iamVjdCB0eXBlIEM8SVRTTUNvbmZpZ0l0ZW0+LgpUaGUgZ2VuZXJpYyBzZXR0aW5ncyBmb3IgYWxsIHJlZmVyZW5jZWQgb2JqZWN0IHR5cGVzIGFyZSBpbmNsdWRlZCBhcyB3ZWxsLgoKPWN1dAoKc3ViIEdldEZpZWxkVHlwZVNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlZmVyZW5jaW5nT2JqZWN0VHlwZSA9ICRQYXJhbXtPYmplY3RUeXBlfTsKCiAgICAjIEZpcnN0IGZldGNoIHRoZSBnZW5lcmljIHNldHRpbmdzLgogICAgbXkgQEZpZWxkVHlwZVNldHRpbmdzID0gJFNlbGYtPlNVUEVSOjpHZXRGaWVsZFR5cGVTZXR0aW5ncygKICAgICAgICAlUGFyYW0sCiAgICApOwoKICAgICMgQWRkIHRoZSBzZWxlY3Rpb24gb2YgdGhlIGNvbmZpZyBpdGVtIGNsYXNzLgogICAgewogICAgICAgIG15ICRDbGFzc0lEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnQ2xhc3NJRHMnLAogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nKSwKICAgICAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJyksCiAgICAgICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gJENsYXNzSUQyTmFtZSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgY2xhc3MgaXMgcmVxdWlyZWQKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICAgICA9PiAxLAogICAgICAgICAgICB9OwogICAgfQoKICAgICMgQWRkIHRoZSBzZWxlY3Rpb24gb2YgdGhlIGNvbmZpZyBpdGVtIGRlcGxveW1lbnQgc3RhdGUuCiAgICB7CiAgICAgICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApOwogICAgICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJyksCiAgICAgICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnKSwKICAgICAgICAgICAgICAgIElucHV0VHlwZSAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiAkRGVwbG95bWVudFN0YXRlc0xpc3QsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgICAgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICAgICA9PiAxLAogICAgICAgICAgICB9OwogICAgfQoKICAgICMgU2VsZWN0IHRoZSBsaW5rIHJlZmVyZW5jaW5nIHR5cGUKICAgIGlmICggJFJlZmVyZW5jaW5nT2JqZWN0VHlwZSA9fiBtL15JVFNNQ29uZmlnSXRlbS8gKSB7CiAgICAgICAgbXkgQFNlbGVjdGlvbkRhdGEgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdEeW5hbWljJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnRHluYW1pYyAoQ29uZmlnSXRlbSknKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ1N0YXRpYycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1N0YXRpYyAoVmVyc2lvbiknKSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdMaW5rUmVmZXJlbmNpbmdUeXBlJywKICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgUmVmZXJlbmNpbmcgVHlwZScpLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgKICAgICAgICAgICAgICAgICdXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJwogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIElucHV0VHlwZSAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25EYXRhID0+IFxAU2VsZWN0aW9uRGF0YSwKICAgICAgICAgICAgICAgIERlZmF1bHRLZXkgICAgPT4gJ0R5bmFtaWMnLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lICA9PiAwLAogICAgICAgICAgICB9OwogICAgfQoKICAgICMgU3VwcG9ydCBjb25maWd1cmFibGUgc2VhcmNoIGtleQogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ1NlYXJjaEF0dHJpYnV0ZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0F0dHJpYnV0ZSB3aGljaCB3aWxsIGJlIHNlYXJjaGVkIG9uIGF1dG9jb21wbGV0ZScpLAogICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieScpLAogICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiB7CiAgICAgICAgICAgICAgICAnTnVtYmVyJyA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICdOYW1lJyAgID0+ICdOYW1lJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICk7CiAgICBteSAlREZTZWxlY3Rpb25EYXRhID0gbWFwIHsgKCAiRHluYW1pY0ZpZWxkXyRfIiA9PiAiRHluYW1pY0ZpZWxkXyRfIiApIH0gdmFsdWVzICREeW5hbWljRmllbGRzTGlzdC0+JSo7CgogICAgIyBTdXBwb3J0IGNvbmZpZ3VyYWJsZSBpbXBvcnQgc2VhcmNoIGF0dHJpYnV0ZQogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0V4dGVybmFsLXNvdXJjZSBrZXknKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnV2hlbiBzZXQgdmlhIGFuIGV4dGVybmFsIHNvdXJjZSAoZS5nLiB3ZWIgc2VydmljZSBvciBpbXBvcnQgLyBleHBvcnQpLCB0aGUgdmFsdWUgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyB0aGlzIGF0dHJpYnV0ZS4nKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ05hbWUnICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgJ051bWJlcicgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAlREZTZWxlY3Rpb25EYXRhLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgfTsKCiAgICAjIFN1cHBvcnQgdmFyaW91cyBkaXNwbGF5IG9wdGlvbnMKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdEaXNwbGF5VHlwZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0F0dHJpYnV0ZSB3aGljaCBpcyBkaXNwbGF5ZWQgZm9yIHZhbHVlcycpLAogICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheScpLAogICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiB7CiAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbU51bWJlcicgICAgICA9PiAnPENvbmZpZyBJdGVtIE51bWJlcj4nLAogICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1OYW1lJyAgICAgICAgPT4gJzxDb25maWcgSXRlbSBOYW1lPicsCiAgICAgICAgICAgICAgICAnQ2xhc3NDb25maWdJdGVtTnVtYmVyJyA9PiAnPENsYXNzIE5hbWU+OiA8Q29uZmlnIEl0ZW0gTnVtYmVyPicsCiAgICAgICAgICAgICAgICAnQ2xhc3NDb25maWdJdGVtTmFtZScgICA9PiAnPENsYXNzIE5hbWU+OiA8Q29uZmlnIEl0ZW0gTmFtZT4nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgfTsKCiAgICAjIFN1cHBvcnQgcmVmZXJlbmNlIGZpbHRlcnMKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdSZWZlcmVuY2VGaWx0ZXJMaXN0JywKICAgICAgICB9OwoKICAgIHJldHVybiBARmllbGRUeXBlU2V0dGluZ3M7Cn0KCj1oZWFkMiBPYmplY3RQZXJtaXNzaW9uKCkKCmNoZWNrcyByZWFkIHBlcm1pc3Npb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IGFuZCBVc2VySUQuCgogICAgJFBlcm1pc3Npb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0UGVybWlzc2lvbigKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdFBlcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICApOwp9Cgo9aGVhZDIgT2JqZWN0RGVzY3JpcHRpb25HZXQoKQoKcmV0dXJuIGEgaGFzaCBvZiBvYmplY3QgZGVzY3JpcHRpb25zLgoKICAgIG15ICVEZXNjcmlwdGlvbiA9ICRCYWNrZW5kT2JqZWN0LT5PYmplY3REZXNjcmlwdGlvbkdldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgKTsKClJldHVybgoKICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkNJIyAxMjM0NDU1IiwKICAgICAgICBMb25nICAgPT4gIkNJIyAxMjM0NDU1OiBOZWVkIGEgc2FtcGxlIGNvbmZpZyBpdGVtIHRpdGxlIiwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgIFNpbGVudCAgICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbSApIHsKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBOb3JtYWwgPT4gIiRQYXJhbXtPYmplY3RJRH0gKGRlbGV0ZWQpIiwKICAgICAgICAgICAgTG9uZyAgID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHByZXBhcmUgdHJhbnNsYXRpb24gb2YgY2xhc3MgbmFtZSBpZiBwb3NzaWJsZQogICAgbXkgJENsYXNzTmFtZVN0cmcgPSAkQ29uZmlnSXRlbS0+e0NsYXNzfTsKICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH0gKSB7CiAgICAgICAgJENsYXNzTmFtZVN0cmcgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ2xhc3NOYW1lU3RyZyk7CiAgICB9CgogICAgbXkgJURlc2NyaXB0aW9uczsKICAgIGlmICggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30gJiYgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtEaXNwbGF5VHlwZX0gKSB7CgogICAgICAgICMgcHJlcGFyZSBzdHJpbmcgYXMgY29uZmlndXJlZAogICAgICAgIG15ICREaXNwbGF5VHlwZSA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317RGlzcGxheVR5cGV9OwogICAgICAgIGlmICggJERpc3BsYXlUeXBlIGVxICdDb25maWdJdGVtTnVtYmVyJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn0iOwogICAgICAgICAgICAkRGVzY3JpcHRpb25ze0xvbmd9ICAgPSAiJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERpc3BsYXlUeXBlIGVxICdDb25maWdJdGVtTmFtZScgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ2xhc3NDb25maWdJdGVtTnVtYmVyJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgICAgICAkRGVzY3JpcHRpb25ze0xvbmd9ICAgPSAiJENsYXNzTmFtZVN0cmc6ICRDb25maWdJdGVtLT57TnVtYmVyfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERpc3BsYXlUeXBlIGVxICdDbGFzc0NvbmZpZ0l0ZW1OYW1lJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAiJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgIH0KCiAgICBteSAkTGluazsKICAgIGlmICggJFBhcmFte0xpbmt9ICkgewogICAgICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gJiYgJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gZXEgJ0FnZW50SW50ZXJmYWNlJyApIHsKCiAgICAgICAgICAgICMgVE9ETzogb25seSBzaG93IHRoZSBsaW5rIGlmIHRoZSB1c2VyICRQYXJhbXtVc2VySUR9IGhhcyBwZXJtaXNzaW9ucwogICAgICAgICAgICAkTGluayA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e0Jhc2VsaW5rfSAuICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRQYXJhbXtPYmplY3RJRH0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9ICYmICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9IGVxICdDdXN0b21lckludGVyZmFjZScgKSB7CiAgICAgICAgICAgICRMaW5rID0gJFBhcmFte0xheW91dE9iamVjdH17QmFzZWxpbmt9IC4gIkFjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JFBhcmFte09iamVjdElEfSI7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgIyAgIExheW91dE9iamVjdCBpcyBwcmVzZW50LCBidXQgd2UgZG8gbm90IGhhdmUgYSBzZXNzaW9uIHNvdXJjZQogICAgICAgIGVsc2lmICggcmVmICRQYXJhbXtMYXlvdXRPYmplY3R9IGVxICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyApIHsKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JFBhcmFte09iamVjdElEfSI7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGRlc2NyaXB0aW9uCiAgICByZXR1cm4gKAogICAgICAgICVEZXNjcmlwdGlvbnMsCiAgICAgICAgTGluayA9PiAkTGluaywKICAgICk7Cn0KCj1oZWFkMiBTZWFyY2hPYmplY3RzKCkKClRoaXMgaXMgdXNlZCBpbiBhdXRvIGNvbXBsZXRpb24gd2hlbiBzZWFyY2hpbmcgZm9yIHBvc3NpYmxlIG9iamVjdCBJRHMuCgogICAgbXkgQE9iamVjdElEcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hPYmplY3RzKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSBpZiBnaXZlbiwgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIFRlcm0KICAgICAgICBUZXJtICAgICAgICAgICAgICAgPT4gJFRlcm0sICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkgZGVmYXVsdHMgdG8gd2lsZGNhcmQgc2VhcmNoIHdpdGggZW1wdHkgc3RyaW5nCiAgICAgICAgTWF4UmVzdWx0cyAgICAgICAgID0+ICRNYXhSZXN1bHRzLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgT2JqZWN0ICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgfSwKICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hPYmplY3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte1Rlcm19IC8vPSAnJzsKCiAgICBteSAkREZEZXRhaWxzID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfSAvLyB7fTsKCiAgICBteSAlU2VhcmNoUGFyYW1zOwoKICAgIGlmICggJFBhcmFte09iamVjdElEfSApIHsKICAgICAgICAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17T2JqZWN0SUR9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICkgewoKICAgICAgICAjIGluY2x1ZGUgY29uZmlndXJlZCBzZWFyY2ggcGFyYW0gaWYgcHJlc2VudAogICAgICAgIG15ICRTZWFyY2hBdHRyaWJ1dGUgPSAkREZEZXRhaWxzLT57SW1wb3J0U2VhcmNoQXR0cmlidXRlfSB8fCAnTmFtZSc7CgogICAgICAgICMgZHluYW1pYyBmaWVsZCBhdHRyaWJ1dGUKICAgICAgICBpZiAoICRTZWFyY2hBdHRyaWJ1dGUgPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JFNlYXJjaEF0dHJpYnV0ZX0gPSB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFBhcmFte1Rlcm19LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBuYW1lIG9yIG51bWJlcgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRTZWFyY2hBdHRyaWJ1dGV9ID0gIiRQYXJhbXtUZXJtfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9ICIqJFBhcmFte1Rlcm19KiI7CiAgICB9CgogICAgIyBwcmVwYXJlIG1hcHBpbmcgb2YgZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgbXkgJUF0dHJpYnV0ZU5hbWVNYXBwaW5nID0gKAogICAgICAgIEN1c3RvbWVyVXNlcklEID0+IFsKICAgICAgICAgICAgJ1NlbGVjdGVkQ3VzdG9tZXJVc2VyJywKICAgICAgICBdLAogICAgICAgIFJlc3BvbnNpYmxlSUQgPT4gWwogICAgICAgICAgICAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgXSwKICAgICAgICBPd25lcklEID0+IFsKICAgICAgICAgICAgJ05ld093bmVySUQnLAogICAgICAgICAgICAnTmV3VXNlcklEJywKICAgICAgICBdLAogICAgICAgIFF1ZXVlSUQgPT4gWwogICAgICAgICAgICAnRGVzdCcsCiAgICAgICAgICAgICdOZXdRdWV1ZUlEJywKICAgICAgICBdLAogICAgICAgIFN0YXRlSUQgPT4gWwogICAgICAgICAgICAnTmV3U3RhdGVJRCcsCiAgICAgICAgICAgICdOZXh0U3RhdGVJRCcsCiAgICAgICAgXSwKICAgICAgICBQcmlvcml0eUlEID0+IFsKICAgICAgICAgICAgJ05ld1ByaW9yaXR5SUQnLAogICAgICAgIF0sCiAgICApOwoKICAgICMgaW5jb3Jwb3JhdGUgcmVmZXJlbmNlZmlsdGVybGlzdCBpbnRvIHNlYXJjaCBwYXJhbXMKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKCiAgICAgICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAgICAgRklMVEVSSVRFTToKICAgICAgICBmb3IgbXkgJEZpbHRlckl0ZW0gKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0tPkAqICkgewoKICAgICAgICAgICAgIyBjaGVjayBmaWx0ZXIgY29uZmlnCiAgICAgICAgICAgIG5leHQgRklMVEVSSVRFTSB1bmxlc3MgJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9OwogICAgICAgICAgICBuZXh0IEZJTFRFUklURU0gdW5sZXNzICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IHx8ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSApOwoKICAgICAgICAgICAgIyBtYXAgSUQgdG8gSURzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBteSAkQXR0cmlidXRlTmFtZSA9ICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfTsKICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQXR0cmlidXRlTmFtZSB9IHF3KFF1ZXVlSUQgVHlwZUlEIFN0YXRlSUQgUHJpb3JpdHlJRCBTZXJ2aWNlSUQgU0xBSUQgT3duZXJJRCBSZXNwb25zaWJsZUlEICkgKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSAuPSAncyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgZG9uJ3QgcGVyZm9ybSBzZWFyY2ggaWYgb2JqZWN0IGF0dHJpYnV0ZSB0byBzZWFyY2ggZm9yIGlzIGVtcHR5CiAgICAgICAgICAgICAgICBteSAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte09iamVjdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte09iamVjdH17RHluYW1pY0ZpZWxkfXsgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gLy8gJFBhcmFte09iamVjdH17ICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSB9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICYmICEkRXF1YWxzT2JqZWN0QXR0cmlidXRlICYmICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17Q3VzdG9tZXJVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgJiYgISRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJhbU9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gPX4gL15EeW5hbWljRmllbGRfKD88REZOYW1lPlxTKykvICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkREZOYW1lICAgICAgICAgICAgID0gJCt7REZOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJEZpbHRlckl0ZW1ERkNvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkREZOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUxURVJJVEVNIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRmlsdGVySXRlbURGQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbXtQYXJhbU9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpbHRlckl0ZW1ERkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybURhdGVzICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICYmICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17Q3VzdG9tZXJVc2VySUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBzdGFuZGFyZCB0aWNrZXQgYXR0cmlidXRlIG5hbWVzIHdpdGggZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICBteSBAUGFyYW1OYW1lcyA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtTmFtZXMoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgYXR0cmlidXRlIG5hbWUgaXRzZWxmIGlzIGluIHBhcmFtcwogICAgICAgICAgICAgICAgICAgICAgICAjIE5PVEUgdHJ5aW5nIGF0dHJpYnV0ZSBpdHNlbGYgaXMgY3J1Y2lhbGx5IGltcG9ydGFudCBpbiBjYXNlIG9mIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGJlY2F1c2UgQWdlbnRUaWNrZXRQaG9uZSBkb2VzIG5vdCBwcm92aWRlIFF1ZXVlSUQsIGJ1dCBwdXRzIHRoZSBpZCBpbgogICAgICAgICAgICAgICAgICAgICAgICAjICAgRGVzdCwgYW5kIEFnZW50VGlja2V0RW1haWwgbGVhdmVzIERlc3QgYXMgYSBzdHJpbmcgYnV0IHB1dHMgdGhlIGlkIGluIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFBhcmFtTmFtZSA9IGZpcnN0IHsgJF8gZXEgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gQFBhcmFtTmFtZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCwgdHJ5IHRvIGZpbmQgYSBtYXBwZWQgYXR0cmlidXRlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFBhcmFtTmFtZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG1hcHBlZCBhdHRyaWJ1dGUgbmFtZXMgZXhpc3QgYXQgYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWFwcGVkQXR0cmlidXRlcyA9ICRBdHRyaWJ1dGVOYW1lTWFwcGluZ3sgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkTWFwcGVkQXR0cmlidXRlcyBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBQRURBVFRSSUJVVEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRNYXBwZWRBdHRyaWJ1dGUgKCAkTWFwcGVkQXR0cmlidXRlcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbU5hbWUgPSBmaXJzdCB7ICRfIGVxICRNYXBwZWRBdHRyaWJ1dGUgfSBAUGFyYW1OYW1lczsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgTUFQUEVEQVRUUklCVVRFIGlmICRQYXJhbU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJFBhcmFtTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGVuIGNhbGxlZCBieSBBZ2VudFJlZmVyZW5jZVNlYXJjaCwgRGVzdCBpcyBhIHN0cmluZyBhbmQgd2UgbmVlZCB0byBleHRyYWN0IHRoZSBRdWV1ZUlECiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ0Rlc3QnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRRdWV1ZUlEID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID1+IC9eKFxkezEsMTAwfSlcfFx8Lis/JC8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRdWV1ZUlEID0gJDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUXVldWVJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJJRCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0cnkgaWYgQ3VzdG9tZXJVc2VyIGlzIG9uIHRoZSBtYXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkQ3VzdG9tZXJVc2VySUQgPSAkUGFyYW17UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlbGVjdGVkQ3VzdG9tZXJVc2VyJyApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRDdXN0b21lclVzZXJJRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICVDdXN0b21lclVzZXJEYXRhID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJEN1c3RvbWVyVXNlckRhdGF7Q3VzdG9tZXJJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBuZWl0aGVyIGF0dHJpYnV0ZSBub3IgbWFwcGVkIGFsdGVybmF0aXZlcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBhdHRyaWJ1dGUgJyRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfScgYW5kIGl0cyBhc3NvY2lhdGVkIGFsdGVybmF0aXZlcyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoZSBtYXNrISIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGVuc3VyZSB0aGF0IGZvciBFcXVhbHNPYmplY3RBdHRyaWJ1dGUgVXNlcklEIGFsd2F5cyAkU2VsZi0+e1VzZXJJRH0gaXMgdXNlZCBpbiB0aGUgZW5kCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSBlcSAnVXNlcklEJyApIHsKICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte1VzZXJJRH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICgpIHVubGVzcyAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgcmV0dXJuICgpIGlmICggcmVmICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgZXEgJ0FSUkFZJyAmJiAhJEVxdWFsc09iamVjdEF0dHJpYnV0ZS0+QCogKTsKCiAgICAgICAgICAgICAgICAjIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteQ29ufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZHluYW1pYyBmaWVsZCBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9ID1+IG17XkR5bn1pICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJEVxdWFsc09iamVjdEF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDdXN0b21lclVzZXJMb2dpbn0gPSBbJEVxdWFsc09iamVjdEF0dHJpYnV0ZV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhcnJheSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gWyRFcXVhbHNPYmplY3RBdHRyaWJ1dGVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9ICkgewoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICAjIFRPRE8gY2hlY2sgaWYgdGhpcyBoYXMgdG8gYmUgYWRhcHRlZCBmb3IgdGlja2V0IHNlYXJjaAogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteQ29ufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSBlcSAnQ3VzdG9tZXJVc2VySUQnICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7Q3VzdG9tZXJVc2VyTG9naW59ID0gWyAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30gXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSBbICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU3VwcG9ydCByZXN0cmljdGlvbiBieSBjbGFzcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntDbGFzc0lEc30gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKICAgICAgICBpZiAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NJRHM7CiAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzSUQgfSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoKSB1bmxlc3MgQENsYXNzSURzOwoKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIFN1cHBvcnQgcmVzdHJpY3Rpb24gYnkgZGVwbG95bWVudCBzdGF0ZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntEZXBsU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgaWYgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gKSB7CiAgICAgICAgICAgIG15IEBEZXBsb3ltZW50U3RhdGVJRHM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbG95bWVudFN0YXRlSUQgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbG95bWVudFN0YXRlSUQgfSAkREZEZXRhaWxzLT57RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVwbG95bWVudFN0YXRlSURzLCAkRGVwbG95bWVudFN0YXRlSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoKSB1bmxlc3MgQERlcGxveW1lbnRTdGF0ZUlEczsKCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbG95bWVudFN0YXRlSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gJERGRGV0YWlscy0+e0RlcGxTdGF0ZUlEc307CiAgICAgICAgfQogICAgfQoKICAgICMgcmV0dXJuIGEgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICBMaW1pdCAgID0+ICRQYXJhbXtNYXhSZXN1bHRzfSwKICAgICAgICBSZXN1bHQgID0+ICdBUlJBWScsCiAgICAgICAgU29ydEJ5ICA9PiAnTnVtYmVyJywKICAgICAgICBPcmRlckJ5ID0+ICdEb3duJywKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgKTsKfQoKPWhlYWQyIFZhbHVlRm9yTGVucygpCgpyZXR1cm4gdGhlIGN1cnJlbnQgbGFzdCB2ZXJzaW9uIGlkcyB1c2VkIGluIGR5bmFtaWNfZmllbGRfdmFsdWUuClRoZSBwYXNzZWQgaW4gdmFsdWUgaXMgYSBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcy4gVGhlc2UgSURzIGFyZQp0cmFuc2Zvcm1lZCBpbnRvIHRoZSByZXNwZWN0aXZlIGxhc3QgdmVyc2lvbiBJRHMuCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlRm9yTGVucygKICAgICAgICBWYWx1ZSA9PiBbMTcsMTcsMTksMjBdLAogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUZvckxlbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtWYWx1ZX07CgogICAgaWYgKCByZWYgJFBhcmFte1ZhbHVlfSBuZSAnQVJSQVknICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSBbICRQYXJhbXtWYWx1ZX0gXTsKICAgIH0KCiAgICBteSBATGFzdFZlcnNpb25JRHM7CgogICAgdW5sZXNzICggJFBhcmFte1NldH0gKSB7ICAgICMjIG5vIGNyaXRpYyBxdyhDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRVbmxlc3NCbG9ja3MpCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkUGFyYW17VmFsdWV9LT5AKiApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgU2lsZW50ICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgdmFsaWQgSURzCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgICAgICBuZXh0IENPTkZJR19JVEVNX0lEIHVubGVzcyAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9OwoKICAgICAgICAgICAgcHVzaCBATGFzdFZlcnNpb25JRHMsICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXEBMYXN0VmVyc2lvbklEczsKICAgIH0KCiAgICAjIGZvciBzZXRzIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGZvciBldmVyeSBzZXQgdmFsdWUKICAgIGZvciBteSAkU2V0VmFsdWUgKCAkUGFyYW17VmFsdWV9LT5AKiApIHsKICAgICAgICBpZiAoIHJlZiAkU2V0VmFsdWUgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNldFZhbHVlID0gWyRTZXRWYWx1ZV07CiAgICAgICAgfQoKICAgICAgICBteSBAU2V0VmVyc2lvbklEczsKCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkU2V0VmFsdWUtPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgdmFsaWQgSURzCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgICAgICBuZXh0IENPTkZJR19JVEVNX0lEIHVubGVzcyAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9OwoKICAgICAgICAgICAgcHVzaCBAU2V0VmVyc2lvbklEcywgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQExhc3RWZXJzaW9uSURzLCBcQFNldFZlcnNpb25JRHM7CiAgICB9CgogICAgcmV0dXJuIFxATGFzdFZlcnNpb25JRHM7Cn0KCj1oZWFkMiBJbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnKCkKClRoaXMgc3ViIHBlcmZvcm1zIHRyYW5zbGF0aW9uIGJldHdlZW4gTmFtZSBhbmQgSUQgZm9yIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHN0b3JlZCB3aXRoIElEIGluIHRoZSBmaWVsZCBjb25maWcuIEZvciBleHBvcnQsIHRoZSBOYW1lIGlzIG5lZWRlZCBiZWNhdXNlIElEcyBvZiBvYmplY3RzIG1heSBkaWZmZXIgYmV0d2VlbiBzeXN0ZW1zLiBEdXJpbmcgaW1wb3J0LCB0aGUgTmFtZSBuZWVkcyB0byBiZSB0cmFuc2xhdGVkIGJhY2sgaW50byB0aGUgSUQgZm9yIHRoZSBmaWVsZCB0byB3b3JrIHByb3Blcmx5LgoKICAgIG15IEBPYmplY3RJRHMgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0RXhwb3J0UHJlcGFyZUNvbmZpZygKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywgICMgcmVxdWlyZWQKICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgPT4gJ0ltcG9ydCcsICAgICAgICAgICAgICMgcmVxdWlyZWQ7IEltcG9ydCBvciBFeHBvcnQKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0RXhwb3J0UHJlcGFyZUNvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRHluYW1pY0ZpZWxkQ29uZmlnIERpcmVjdGlvbikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRDSUNsYXNzSUQyTmFtZSAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAkRGVwbFN0YXRlSUQyTmFtZSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIG15ICVBdHRyaWJ1dGVMb29rdXAgPSAoCiAgICAgICAgQ2xhc3NJRHMgPT4gewogICAgICAgICAgICBFeHBvcnQgPT4gJENJQ2xhc3NJRDJOYW1lLAogICAgICAgICAgICBJbXBvcnQgPT4geyByZXZlcnNlICRDSUNsYXNzSUQyTmFtZS0+JSogfSwKICAgICAgICB9LAogICAgICAgIERlcGxTdGF0ZUlEcyA9PiB7CiAgICAgICAgICAgIEV4cG9ydCA9PiAkRGVwbFN0YXRlSUQyTmFtZSwKICAgICAgICAgICAgSW1wb3J0ID0+IHsgcmV2ZXJzZSAkRGVwbFN0YXRlSUQyTmFtZS0+JSogfSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAlUmV0dXJuOwogICAgQVRUUklCVVRFTkFNRToKICAgIGZvciBteSAkQXR0cmlidXRlTmFtZSAoIGtleXMgJUF0dHJpYnV0ZUxvb2t1cCApIHsKICAgICAgICBuZXh0IEFUVFJJQlVURU5BTUUgdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317JEF0dHJpYnV0ZU5hbWV9OwoKICAgICAgICBteSBAVHJhbnNmb3JtZWRDb25maWdWYWx1ZTsKICAgICAgICBmb3IgbXkgJENvbmZpZ1NldHRpbmdWYWx1ZSAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317JEF0dHJpYnV0ZU5hbWV9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFRyYW5zZm9ybWVkVmFsdWUgPSAkQXR0cmlidXRlTG9va3VweyRBdHRyaWJ1dGVOYW1lfXsgJFBhcmFte0RpcmVjdGlvbn0gfXskQ29uZmlnU2V0dGluZ1ZhbHVlfTsKCiAgICAgICAgICAgIGlmICgkVHJhbnNmb3JtZWRWYWx1ZSkgewogICAgICAgICAgICAgICAgcHVzaCBAVHJhbnNmb3JtZWRDb25maWdWYWx1ZSwgJFRyYW5zZm9ybWVkVmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiRHluYW1pYyBmaWVsZCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSAkUGFyYW17RGlyZWN0aW9ufTogTm8gbWF0Y2hpbmcgJEF0dHJpYnV0ZU5hbWUgZm9yICRDb25maWdTZXR0aW5nVmFsdWUgY291bGQgYmUgZm91bmQgb24gdGhlIHN5c3RlbS4iLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBwdXNoIEBUcmFuc2Zvcm1lZENvbmZpZ1ZhbHVlLCAkQ29uZmlnU2V0dGluZ1ZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRSZXR1cm57JEF0dHJpYnV0ZU5hbWV9ID0gXEBUcmFuc2Zvcm1lZENvbmZpZ1ZhbHVlOwogICAgfQoKICAgIHJldHVybiAlUmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/Driver/ConfigItemVersion.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbVZlcnNpb247Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkNvbmZpZ0l0ZW1WZXJzaW9uIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtVmVyc2lvbiBiYWNrZW5kIGZvciB0aGUgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGQuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgppdCBpcyB1c3VhbGx5IG5vdCBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBjcmVhdGUgaW5zdGFuY2VzIG9mIGR5bmFtaWMgZmllbGQgZHJpdmVycy4KSW5zdGFuY2VzIG9mIHRoZSBkcml2ZXJzIGFyZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUKZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdCBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQ+LgoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIFNvbWUgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIHRhYmxlIGF0dHJpYnV0ZSBkeW5hbWljX2ZpZWxkX3ZhbHVlLnZhbHVlX2ludC4KICAgICRTZWxmLT57VmFsdWVUeXBlfSAgICAgID0gJ0ludGVnZXInOwogICAgJFNlbGYtPntWYWx1ZUtleX0gICAgICAgPSAnVmFsdWVJbnQnOwogICAgJFNlbGYtPntUYWJsZUF0dHJpYnV0ZX0gPSAndmFsdWVfaW50JzsKCiAgICAjIFVzZWQgZm9yIGRlY2xhcmluZyBDU1MgY2xhc3NlcwogICAgJFNlbGYtPntGaWVsZENTU0NsYXNzfSA9ICdEeW5hbWljRmllbGRSZWZlcmVuY2UnOwoKICAgICMgc2V0IGZpZWxkIGJlaGF2aW9ycwogICAgJFNlbGYtPntCZWhhdmlvcnN9ID0gewogICAgICAgICdJc0FDTFJlZHVjaWJsZScgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc05vdGlmaWNhdGlvbkV2ZW50Q29uZGl0aW9uJyA9PiAwLAogICAgICAgICdJc1NvcnRhYmxlJyAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc0ZpbHRyYWJsZScgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc1N0YXRzQ29uZGl0aW9uJyAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScgICA9PiAxLAogICAgICAgICdJc0hpZGRlbkluVGlja2V0SW5mb3JtYXRpb24nICA9PiAwLAogICAgICAgICdJc1JlZmVyZW5jZUZpZWxkJyAgICAgICAgICAgICA9PiAxLAogICAgfTsKCiAgICAkU2VsZi0+e1JlZmVyZW5jZWRPYmplY3RUeXBlfSA9ICdJVFNNQ29uZmlnSXRlbVZlcnNpb24nOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEVkaXRGaWVsZFJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdGFrZSBjb25maWcgZnJvbSBmaWVsZCBjb25maWcKICAgIG15ICRERkRldGFpbHMgICAgICAgICA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ307CiAgICBteSAkRmllbGROYW1lICAgICAgICAgPSAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfTsKICAgIG15ICRGaWVsZExhYmVsICAgICAgICA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TGFiZWx9OwogICAgbXkgJEZpZWxkTGFiZWxFc2NhcGVkID0gJFBhcmFte0xheW91dE9iamVjdH0tPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fXtMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmllbGRMYWJlbCksCiAgICApOwoKICAgIG15ICRWYWx1ZSA9ICcnOwoKICAgICMgc2V0IHRoZSBmaWVsZCB2YWx1ZSBvciBkZWZhdWx0CiAgICBpZiAoICRQYXJhbXtVc2VEZWZhdWx0VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRERkRldGFpbHMtPntEZWZhdWx0VmFsdWV9IC8vICcnOwogICAgfQogICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfSAvLyAkVmFsdWU7CgogICAgIyBFeHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0IGFuZCBzZXQgaXQgaWYgcHJlc2VudC4gRG8gdGhpcyBhZnRlcgogICAgIyAgIHN0b3JlZCB2YWx1ZSBpcyByZXRyaWV2ZWQgYW5kIHByb2Nlc3NlZCwgc28gaXQgY2FuIGJlIG92ZXJyaWRkZW4gaWYgZm9ybSBoYXMgcmVmcmVzaGVkIGZvcgogICAgIyAgIHNvbWUgcmVhc29ucyAoaS5lLiBhdHRhY2htZW50IGhhcyBiZWVuIHVwbG9hZGVkKS4gU2VlIGJ1ZyMxMjQ1MyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgIG15ICRGaWVsZFZhbHVlID0gJFNlbGYtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgIyBzZXQgdmFsdWVzIGZyb20gUGFyYW1PYmplY3QgaWYgcHJlc2VudAogICAgaWYgKCBkZWZpbmVkICRGaWVsZFZhbHVlICYmICRGaWVsZFZhbHVlICYmICRGaWVsZFZhbHVlLT5AKiApIHsKICAgICAgICAkVmFsdWUgPSAkRmllbGRWYWx1ZTsKICAgIH0KCiAgICBpZiAoICFyZWYgJFZhbHVlICkgewogICAgICAgICRWYWx1ZSA9IFskVmFsdWVdOwogICAgfQogICAgZWxzaWYgKCAhJFZhbHVlLT5AKiApIHsKICAgICAgICAkVmFsdWUgPSBbdW5kZWZdOwogICAgfQoKICAgICMgY2hlY2sgYW5kIHNldCBjbGFzcyBpZiBuZWNlc3NhcnkKICAgIG15ICRGaWVsZENsYXNzID0gIiRTZWxmLT57RmllbGRDU1NDbGFzc30gRHluYW1pY0ZpZWxkVGV4dCBNb2Rlcm5pemUiOyAgICAjIGZvciBmaWVsZCBzcGVjaWZpYyBKUwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDbGFzc30gJiYgJFBhcmFte0NsYXNzfSBuZSAnJyApIHsKICAgICAgICAkRmllbGRDbGFzcyAuPSAnICcgLiAkUGFyYW17Q2xhc3N9OwogICAgfQoKICAgICMgc2V0IGNsYXNzZXMgYWNjb3JkaW5nIHRvIG1hbmRhdG9yeSBhbmQgYWNsIGhpZGRlbiBwYXJhbXMKICAgIGlmICggJFBhcmFte0FDTEhpZGRlbn0gJiYgJFBhcmFte01hbmRhdG9yeX0gKSB7CiAgICAgICAgJEZpZWxkQ2xhc3MgLj0gJyBWYWxpZGF0ZV9SZXF1aXJlZF9JZlZpc2libGUnOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17TWFuZGF0b3J5fSApIHsKICAgICAgICAkRmllbGRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICAjIHNldCBlcnJvciBjc3MgY2xhc3MKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAkRmllbGRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICBteSAlRmllbGRUZW1wbGF0ZURhdGEgPSAoCiAgICAgICAgRmllbGRDbGFzcyAgICAgID0+ICRGaWVsZENsYXNzLAogICAgICAgIEZpZWxkTGFiZWwgICAgICA9PiAkRmllbGRMYWJlbEVzY2FwZWQsCiAgICAgICAgRm9ybVVwZGF0ZUNsYXNzID0+ICRQYXJhbXtBSkFYVXBkYXRlfSA/ICdGb3JtVXBkYXRlJyA6ICcnLAogICAgICAgIEZpZWxkTmFtZSAgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgIFJlYWRvbmx5ICAgICAgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e1JlYWRvbmx5fSwKICAgICk7CgogICAgbXkgJEZpZWxkVGVtcGxhdGVGaWxlID0gJFBhcmFte0N1c3RvbWVySW50ZXJmYWNlfQogICAgICAgID8KICAgICAgICAnRHluYW1pY0ZpZWxkL0N1c3RvbWVyLycKICAgICAgICA6CiAgICAgICAgJ0R5bmFtaWNGaWVsZC9BZ2VudC8nOwoKICAgIG15ICRQb3NzaWJsZVZhbHVlczsKICAgIG15IEBTZWxlY3Rpb25IVE1MOwogICAgaWYgKCAkREZEZXRhaWxzLT57RWRpdEZpZWxkTW9kZX0gZXEgJ0F1dG9Db21wbGV0ZScgKSB7CiAgICAgICAgJEZpZWxkVGVtcGxhdGVGaWxlIC49ICdSZWZlcmVuY2UnOwoKICAgICAgICAjIEdldCBkZWZhdWx0IGFnZW50IGF1dG9jb21wbGV0ZSBjb25maWcuCiAgICAgICAgbXkgJEF1dG9Db21wbGV0ZUNvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCggJ0F1dG9Db21wbGV0ZTo6JyAuICggJFBhcmFte0N1c3RvbWVySW50ZXJmYWNlfSA/ICdDdXN0b21lcicgOiAnQWdlbnQnICkgKS0+eydEZWZhdWx0J307CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdBdXRvQ29tcGxldGVBY3RpdmUnLAogICAgICAgICAgICBWYWx1ZSA9PiAkQXV0b0NvbXBsZXRlQ29uZmlnLT57QXV0b0NvbXBsZXRlQWN0aXZlfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpZWxkVGVtcGxhdGVGaWxlIC49ICdCYXNlU2VsZWN0JzsKCiAgICAgICAgJFBvc3NpYmxlVmFsdWVzID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgICAgIGlmICggJERGRGV0YWlscy0+e011bHRpVmFsdWV9ICkgewogICAgICAgICAgICBmb3IgbXkgJFZhbHVlSW5kZXggKCAwIC4uICQjeyRWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZS0+WyRWYWx1ZUluZGV4XSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAkRmllbGRJRCA9ICRGaWVsZE5hbWUgLiAnXycgLiAkVmFsdWVJbmRleDsKICAgICAgICAgICAgICAgIHB1c2ggQFNlbGVjdGlvbkhUTUwsICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgIFNvcnQgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZCAgID0+ICRQYXJhbXtSZWFkb25seX0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkVmFsdWUtPlskVmFsdWVJbmRleF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAkRmllbGRDbGFzcyAuICggJFBhcmFte0FKQVhVcGRhdGV9ID8gJyBGb3JtVXBkYXRlJyA6ICcnICksCiAgICAgICAgICAgICAgICAgICAgVHJlZVZpZXcgICA9PiAkREZEZXRhaWxzLT57VHJlZVZpZXd9LAogICAgICAgICAgICAgICAgICAgIEhUTUxRdW90ZSAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15IEBTZWxlY3RlZElEcyA9IGdyZXAgeyRffSAkVmFsdWUtPkAqOwogICAgICAgICAgICBteSAkRGF0YVZhbHVlcyAgPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBcQFNlbGVjdGVkSURzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBTZWxlY3Rpb25IVE1MLCAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgU29ydCAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICAgICAgRGlzYWJsZWQgICA9PiAkUGFyYW17UmVhZG9ubHl9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiBcQFNlbGVjdGVkSURzLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAkRmllbGRDbGFzcyAuICggJFBhcmFte0FKQVhVcGRhdGV9ID8gJyBGb3JtVXBkYXRlJyA6ICcnICksCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgID0+ICRERkRldGFpbHMtPntUcmVlVmlld30sCiAgICAgICAgICAgICAgICBIVE1MUXVvdGUgID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+ICRERkRldGFpbHMtPntNdWx0aXNlbGVjdH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICVFcnJvciA9ICgKICAgICAgICBTZXJ2ZXJFcnJvciA9PiAkUGFyYW17U2VydmVyRXJyb3J9LAogICAgICAgIE1hbmRhdG9yeSAgID0+ICRQYXJhbXtNYW5kYXRvcnl9LAogICAgKTsKICAgIG15IEBSZXN1bHRIVE1MOwogICAgZm9yIG15ICRWYWx1ZUluZGV4ICggMCAuLiAoICRERkRldGFpbHMtPntNdWx0aXNlbGVjdH0gPyAwIDogJCN7JFZhbHVlfSApICkgewogICAgICAgIG15ICRGaWVsZElEID0gJERGRGV0YWlscy0+e011bHRpVmFsdWV9ID8gJEZpZWxkTmFtZSAuICdfJyAuICRWYWx1ZUluZGV4IDogJEZpZWxkTmFtZTsKCiAgICAgICAgaWYgKCAhJFZhbHVlSW5kZXggKSB7CiAgICAgICAgICAgIGlmICggJEVycm9ye1NlcnZlckVycm9yfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcntEaXZJRFNlcnZlckVycm9yfSA9ICIke0ZpZWxkSUR9U2VydmVyRXJyb3IiOwogICAgICAgICAgICAgICAgJEVycm9ye0Vycm9yTWVzc2FnZX0gICAgID0gVHJhbnNsYXRhYmxlKCAkUGFyYW17RXJyb3JNZXNzYWdlfSB8fCAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRXJyb3J7TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgICAgICRFcnJvcntEaXZJRE1hbmRhdG9yeX0gICAgICAgPSAiJHtGaWVsZElEfUVycm9yIjsKICAgICAgICAgICAgICAgICRFcnJvcntGaWVsZFJlcXVpcmVkTWVzc2FnZX0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVGhlIGFjdHVhbCB2YWx1ZSBpcyB0aGUgdGVjaG5pY2FsIElEIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdC4KICAgICAgICAjIFRoaXMgbWlnaHQgYmUgZW1wdHkgZS5nLiBpbiBhIHRpY2tldCBjcmVhdGlvbiBtYXNrLgogICAgICAgIG15ICRWYWx1ZUVzY2FwZWQ7CiAgICAgICAgbXkgJFJlZmVyZW5jZWRPYmplY3RJRCA9ICRWYWx1ZS0+WyRWYWx1ZUluZGV4XTsKICAgICAgICBpZiAoJFJlZmVyZW5jZWRPYmplY3RJRCkgewoKICAgICAgICAgICAgIyBUaGUgdmlzaWJsZSB2YWx1ZSBkZXBlbmRzIG9uIHRoZSByZWZlcmVuY2VkIG9iamVjdAogICAgICAgICAgICBteSAlRGVzY3JpcHRpb24gPSAkU2VsZi0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGRGV0YWlscywKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkUmVmZXJlbmNlZE9iamVjdElELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogd2hhdCBhYm91dCBQZXJtaXNzaW9uIGNoZWNrCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWYWx1ZUVzY2FwZWQgPSAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgIFRleHQgPT4gJERlc2NyaXB0aW9ue0xvbmd9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAUmVzdWx0SFRNTCwgJFBhcmFte0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICRGaWVsZFRlbXBsYXRlRmlsZSwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVGaWVsZFRlbXBsYXRlRGF0YSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgIEZpZWxkSUQgICAgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgID0+ICggJFZhbHVlLT5bJFZhbHVlSW5kZXhdIC8vICcnICksCiAgICAgICAgICAgICAgICBWYWx1ZUVzY2FwZWQgID0+ICggJFZhbHVlRXNjYXBlZCAgICAgICAgIC8vICcnICksCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25IVE1MID0+ICggJERGRGV0YWlscy0+e0VkaXRGaWVsZE1vZGV9IG5lICdBdXRvQ29tcGxldGUnID8gJFNlbGVjdGlvbkhUTUxbJFZhbHVlSW5kZXhdIDogdW5kZWYgKSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRUZW1wbGF0ZUhUTUw7CiAgICBpZiAoICRERkRldGFpbHMtPntNdWx0aVZhbHVlfSAmJiAhJFBhcmFte1JlYWRvbmx5fSApIHsKICAgICAgICAkRmllbGRUZW1wbGF0ZURhdGF7RmllbGRJRH0gPSAkRmllbGROYW1lIC4gJ19UZW1wbGF0ZSc7CgogICAgICAgIG15ICRTZWxlY3Rpb25IVE1MID0gJFBhcmFte0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgPT4gJFBvc3NpYmxlVmFsdWVzIHx8IHt9LAogICAgICAgICAgICBTb3J0ICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgRGlzYWJsZWQgID0+ICRQYXJhbXtSZWFkb25seX0sCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkRmllbGROYW1lLAogICAgICAgICAgICBJRCAgICAgICAgPT4gJEZpZWxkVGVtcGxhdGVEYXRhe0ZpZWxkSUR9LAogICAgICAgICAgICBDbGFzcyAgICAgPT4gJEZpZWxkQ2xhc3MgLiAoICRQYXJhbXtBSkFYVXBkYXRlfSA/ICcgRm9ybVVwZGF0ZScgOiAnJyApLAogICAgICAgICAgICBUcmVlVmlldyAgPT4gJERGRGV0YWlscy0+e1RyZWVWaWV3fSwKICAgICAgICAgICAgSFRNTFF1b3RlID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICA9PiAkREZEZXRhaWxzLT57TXVsdGlzZWxlY3R9LAogICAgICAgICk7CiAgICAgICAgJFRlbXBsYXRlSFRNTCA9ICRQYXJhbXtMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkRmllbGRUZW1wbGF0ZUZpbGUsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlRmllbGRUZW1wbGF0ZURhdGEsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25IVE1MID0+ICggJERGRGV0YWlscy0+e0VkaXRGaWVsZE1vZGV9IG5lICdBdXRvQ29tcGxldGUnID8gJFNlbGVjdGlvbkhUTUwgOiB1bmRlZiApLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyB3cml0ZSByZW5kZXJlZCB2YWx1ZSB0byBGb3JtQ2FjaGUgZm9yIGxhdGVyIHVzYWdlIGluIEVkaXRGaWVsZFZhbHVlVmFsaWRhdGUKICAgIGlmICggJFZhbHVlICYmICEkUGFyYW17U2VydmVyRXJyb3J9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5TZXRGb3JtRGF0YSgKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ1JlbmRlcmVkVmFsdWVfRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICApOwogICAgfQoKICAgICMgY2FsbCBFZGl0TGFiZWxSZW5kZXIgb24gdGhlIGNvbW1vbiBEcml2ZXIKICAgIG15ICRMYWJlbFN0cmluZyA9ICRTZWxmLT5FZGl0TGFiZWxSZW5kZXIoCiAgICAgICAgJVBhcmFtLAogICAgICAgIE1hbmRhdG9yeSA9PiAkUGFyYW17TWFuZGF0b3J5fSB8fCAnMCcsCiAgICAgICAgRmllbGROYW1lID0+ICRERkRldGFpbHMtPntNdWx0aVZhbHVlfSA/ICIke0ZpZWxkTmFtZX1fMCIgOiAkRmllbGROYW1lLAogICAgKTsKCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBMYWJlbCA9PiAkTGFiZWxTdHJpbmcsCiAgICApOwoKICAgICMgZGVjaWRlIHdoaWNoIHN0cnVjdHVyZSB0byByZXR1cm4KICAgIGlmICggJERGRGV0YWlscy0+e011bHRpVmFsdWV9ICkgewogICAgICAgICREYXRhe011bHRpVmFsdWV9ICAgICAgICAgPSBcQFJlc3VsdEhUTUw7CiAgICAgICAgJERhdGF7TXVsdGlWYWx1ZVRlbXBsYXRlfSA9ICRUZW1wbGF0ZUhUTUw7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkRGF0YXtGaWVsZH0gPSAkUmVzdWx0SFRNTFswXTsKICAgIH0KCiAgICByZXR1cm4gXCVEYXRhOwp9CgpzdWIgR2V0RmllbGRUeXBlU2V0dGluZ3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEZpcnN0IGZldGNoIHRoZSBzZXR0aW5ncyBmcm9tIENvbmZpZ0l0ZW0gZHJpdmVyLgogICAgbXkgQEZpZWxkVHlwZVNldHRpbmdzID0gJFNlbGYtPlNVUEVSOjpHZXRGaWVsZFR5cGVTZXR0aW5ncygKICAgICAgICAlUGFyYW0sCiAgICApOwoKICAgICMgY2xlYW4gdXAgc2V0dGluZ3Mgd2hpY2ggd2Ugd2lsbCByZXBsYWNlIGhlcmUKICAgIEBGaWVsZFR5cGVTZXR0aW5ncyA9IGdyZXAgewogICAgICAgICRfLT57Q29uZmlnUGFyYW1OYW1lfSBuZSAnU2VhcmNoQXR0cmlidXRlJwogICAgICAgICAgICAmJiAkXy0+e0NvbmZpZ1BhcmFtTmFtZX0gbmUgJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScKICAgICAgICAgICAgJiYgJF8tPntDb25maWdQYXJhbU5hbWV9IG5lICdEaXNwbGF5VHlwZScKICAgIH0gQEZpZWxkVHlwZVNldHRpbmdzOwoKICAgICMgU3VwcG9ydCBjb25maWd1cmFibGUgc2VhcmNoIGtleQogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ1NlYXJjaEF0dHJpYnV0ZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0F0dHJpYnV0ZSB3aGljaCB3aWxsIGJlIHNlYXJjaGVkIG9uIGF1dG9jb21wbGV0ZScpLAogICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieScpLAogICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiB7CiAgICAgICAgICAgICAgICAnTnVtYmVyJyAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAnTmFtZScgICAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgJ1ZlcnNpb25TdHJpbmcnID0+ICdWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICk7CiAgICBteSAlREZTZWxlY3Rpb25EYXRhID0gbWFwIHsgKCAiRHluYW1pY0ZpZWxkXyRfIiA9PiAiRHluYW1pY0ZpZWxkXyRfIiApIH0gdmFsdWVzICREeW5hbWljRmllbGRzTGlzdC0+JSo7CgogICAgIyBTdXBwb3J0IGNvbmZpZ3VyYWJsZSBpbXBvcnQgc2VhcmNoIGF0dHJpYnV0ZQogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScsCiAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0V4dGVybmFsLXNvdXJjZSBrZXknKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnV2hlbiBzZXQgdmlhIGFuIGV4dGVybmFsIHNvdXJjZSAoZS5nLiB3ZWIgc2VydmljZSBvciBpbXBvcnQgLyBleHBvcnQpLCB0aGUgdmFsdWUgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyB0aGlzIGF0dHJpYnV0ZS4nKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ05hbWUnICAgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICdOdW1iZXInICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICdWZXJzaW9uU3RyaW5nJyA9PiAnVmVyc2lvblN0cmluZycsCiAgICAgICAgICAgICAgICAlREZTZWxlY3Rpb25EYXRhLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgfTsKCiAgICAjIFRyZWVWaWV3IHN1cHBvcnQgKGdyb3VwZWQgYnkgQ29uZmlnSXRlbXMpCiAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnVHJlZVZpZXcnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdUcmVlIFZpZXcnKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgMCA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICAxID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICB9OwoKICAgICMgU3VwcG9ydCB2YXJpb3VzIGRpc3BsYXkgb3B0aW9ucwogICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgewogICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0Rpc3BsYXlUeXBlJywKICAgICAgICAgICAgTGFiZWwgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQXR0cmlidXRlIHdoaWNoIGlzIGRpc3BsYXllZCBmb3IgdmFsdWVzJyksCiAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoJ1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5LicpLAogICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgIFNlbGVjdGlvbkRhdGEgICA9PiB7CiAgICAgICAgICAgICAgICAnVmVyc2lvblN0cmluZycgICAgICAgICAgICAgICAgID0+ICc8VmVyc2lvbiBTdHJpbmc+JywKICAgICAgICAgICAgICAgICdDb25maWdJdGVtTnVtYmVyVmVyc2lvblN0cmluZycgPT4gJzxDb25maWcgSXRlbSBOdW1iZXI+OiA8VmVyc2lvbiBOYW1lPicsCiAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbU5hbWVWZXJzaW9uU3RyaW5nJyAgID0+ICc8Q29uZmlnIEl0ZW0gTmFtZT46IDxWZXJzaW9uIE5hbWU+JywKICAgICAgICAgICAgICAgICdWZXJzaW9uU3RyaW5nQ29uZmlnSXRlbU51bWJlcicgPT4gJzxWZXJzaW9uIE5hbWU+OiA8Q29uZmlnIEl0ZW0gTnVtYmVyPicsCiAgICAgICAgICAgICAgICAnVmVyc2lvblN0cmluZ0NvbmZpZ0l0ZW1OYW1lJyAgID0+ICc8VmVyc2lvbiBOYW1lPjogPENvbmZpZyBJdGVtIE5hbWU+JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgcmV0dXJuIEBGaWVsZFR5cGVTZXR0aW5nczsKfQoKPWhlYWQyIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucy4KCiAgICBteSAlRGVzY3JpcHRpb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm4KCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJDSSMgMTIzNDQ1NSIsCiAgICAgICAgTG9uZyAgID0+ICJDSSMgMTIzNDQ1NTogTmVlZCBhIHNhbXBsZSBjb25maWcgaXRlbSB0aXRsZSIsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBTaWxlbnQgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgTm9ybWFsID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgICAgIExvbmcgICA9PiAiJFBhcmFte09iamVjdElEfSAoZGVsZXRlZCkiLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIFRyZWVWaWV3IHByZWZpeCBpZiBuZWVkZWQKICAgIG15ICRUcmVlVmlld1ByZWZpeCA9ICcnOwogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1RyZWVWaWV3fSApIHsKICAgICAgICAkVHJlZVZpZXdQcmVmaXggPSAiJENvbmZpZ0l0ZW0tPntOYW1lfTo6IjsKICAgIH0KCiAgICBteSAlRGVzY3JpcHRpb25zOwogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSAmJiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0Rpc3BsYXlUeXBlfSApIHsKCiAgICAgICAgIyBwcmVwYXJlIHN0cmluZyBhcyBjb25maWd1cmVkCiAgICAgICAgbXkgJERpc3BsYXlUeXBlID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtEaXNwbGF5VHlwZX07CiAgICAgICAgaWYgKCAkRGlzcGxheVR5cGUgZXEgJ1ZlcnNpb25TdHJpbmcnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAkVHJlZVZpZXdQcmVmaXggLiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OwogICAgICAgICAgICAkRGVzY3JpcHRpb25ze0xvbmd9ICAgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OwogICAgICAgIH0KICAgICAgICBpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU51bWJlclZlcnNpb25TdHJpbmcnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAkVHJlZVZpZXdQcmVmaXggLiAiJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57TnVtYmVyfTogJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERpc3BsYXlUeXBlIGVxICdDb25maWdJdGVtTmFtZVZlcnNpb25TdHJpbmcnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAkVHJlZVZpZXdQcmVmaXggLiAiJENvbmZpZ0l0ZW0tPntOYW1lfTogJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9OiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGlzcGxheVR5cGUgZXEgJ1ZlcnNpb25TdHJpbmdDb25maWdJdGVtTnVtYmVyJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gJFRyZWVWaWV3UHJlZml4IC4gIiRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ306ICRDb25maWdJdGVtLT57TnVtYmVyfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnVmVyc2lvblN0cmluZ0NvbmZpZ0l0ZW1OYW1lJyApIHsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gJFRyZWVWaWV3UHJlZml4IC4gIiRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ306ICRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgICAgICAkRGVzY3JpcHRpb25ze0xvbmd9ICAgPSAiJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfTogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gJFRyZWVWaWV3UHJlZml4IC4gIiRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ30iOwogICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9OiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9IjsKICAgIH0KCiAgICBteSAkTGluazsKICAgIGlmICggJFBhcmFte0xpbmt9ICYmICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9ICkgewogICAgICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gZXEgJ0FnZW50SW50ZXJmYWNlJyApIHsKCiAgICAgICAgICAgICMgVE9ETzogb25seSBzaG93IHRoZSBsaW5rIGlmIHRoZSB1c2VyICRQYXJhbXtVc2VySUR9IGhhcyBwZXJtaXNzaW9ucwogICAgICAgICAgICAkTGluayA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e0Jhc2VsaW5rfSAuICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtWZXJzaW9uSUQ9JFBhcmFte09iamVjdElEfSI7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gZXEgJ0N1c3RvbWVySW50ZXJmYWNlJyApIHsKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07VmVyc2lvbklEPSRQYXJhbXtPYmplY3RJRH0iOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgcmV0dXJuICgKICAgICAgICAlRGVzY3JpcHRpb25zLAogICAgICAgIExpbmsgPT4gJExpbmssCiAgICApOwp9Cgo9aGVhZDIgU2VhcmNoT2JqZWN0cygpCgpUaGlzIGlzIHVzZWQgaW4gYXV0byBjb21wbGV0aW9uIHdoZW4gc2VhcmNoaW5nIGZvciBwb3NzaWJsZSBvYmplY3QgSURzLgoKICAgIG15IEBPYmplY3RJRHMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoT2JqZWN0cygKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkgaWYgZ2l2ZW4sIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBUZXJtCiAgICAgICAgVGVybSAgICAgICAgICAgICAgID0+ICRUZXJtLCAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHRzIHRvIHdpbGRjYXJkIHNlYXJjaCB3aXRoIGVtcHR5IHN0cmluZwogICAgICAgIE1heFJlc3VsdHMgICAgICAgICA9PiAkTWF4UmVzdWx0cywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17VGVybX0gLy89ICcnOwoKICAgIG15ICRERkRldGFpbHMgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9IC8vIHt9OwoKICAgIG15ICVTZWFyY2hQYXJhbXM7CgogICAgaWYgKCAkUGFyYW17T2JqZWN0SUR9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbUlEfSA9ICRQYXJhbXtPYmplY3RJRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gKSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntJbXBvcnRTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9ICIkUGFyYW17VGVybX0iOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9ICIqJFBhcmFte1Rlcm19KiI7CiAgICB9CgogICAgIyBwcmVwYXJlIG1hcHBpbmcgb2YgZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgbXkgJUF0dHJpYnV0ZU5hbWVNYXBwaW5nID0gKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiBbCgogICAgICAgICAgICAjIEFnZW50VGlja2V0RW1haWwKICAgICAgICAgICAgJ0Zyb20nLAoKICAgICAgICAgICAgIyBBZ2VudFRpY2tldFBob25lCiAgICAgICAgICAgICdTZWxlY3RlZEN1c3RvbWVyVXNlcicsCiAgICAgICAgXSwKICAgICAgICBSZXNwb25zaWJsZUlEID0+IFsKICAgICAgICAgICAgJ05ld1Jlc3BvbnNpYmxlSUQnLAogICAgICAgIF0sCiAgICAgICAgT3duZXJJRCA9PiBbCiAgICAgICAgICAgICdOZXdPd25lcklEJywKICAgICAgICAgICAgJ05ld1VzZXJJRCcsCiAgICAgICAgXSwKICAgICAgICBRdWV1ZUlEID0+IFsKICAgICAgICAgICAgJ0Rlc3QnLAogICAgICAgICAgICAnTmV3UXVldWVJRCcsCiAgICAgICAgXSwKICAgICAgICBTdGF0ZUlEID0+IFsKICAgICAgICAgICAgJ05ld1N0YXRlSUQnLAogICAgICAgICAgICAnTmV4dFN0YXRlSUQnLAogICAgICAgIF0sCiAgICAgICAgUHJpb3JpdHlJRCA9PiBbCiAgICAgICAgICAgICdOZXdQcmlvcml0eUlEJywKICAgICAgICBdLAogICAgKTsKCiAgICAjIGluY29ycG9yYXRlIHJlZmVyZW5jZWZpbHRlcmxpc3QgaW50byBzZWFyY2ggcGFyYW1zCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERGRGV0YWlscy0+e1JlZmVyZW5jZUZpbHRlckxpc3R9ICkgJiYgISRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gKSB7CiAgICAgICAgRklMVEVSSVRFTToKICAgICAgICBmb3IgbXkgJEZpbHRlckl0ZW0gKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0tPkAqICkgewoKICAgICAgICAgICAgIyBtYXAgSUQgdG8gSURzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBteSAkQXR0cmlidXRlTmFtZSA9ICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfTsKICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQXR0cmlidXRlTmFtZSB9IHF3KFF1ZXVlSUQgVHlwZUlEIFN0YXRlSUQgUHJpb3JpdHlJRCBTZXJ2aWNlSUQgU0xBSUQgT3duZXJJRCBSZXNwb25zaWJsZUlEICkgKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSAuPSAncyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZmlsdGVyIGNvbmZpZwogICAgICAgICAgICBuZXh0IEZJTFRFUklURU0gdW5sZXNzICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfTsKICAgICAgICAgICAgbmV4dCBGSUxURVJJVEVNIHVubGVzcyAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSB8fCAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30gKTsKCiAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICMgZG9uJ3QgcGVyZm9ybSBzZWFyY2ggaWYgb2JqZWN0IGF0dHJpYnV0ZSB0byBzZWFyY2ggZm9yIGlzIGVtcHR5CiAgICAgICAgICAgICAgICBteSAkRXF1YWxzT2JqZWN0QXR0cmlidXRlOwogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte09iamVjdH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte09iamVjdH17RHluYW1pY0ZpZWxkfXsgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gLy8gJFBhcmFte09iamVjdH17ICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJhbU9iamVjdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gPX4gL15EeW5hbWljRmllbGRfKD88REZOYW1lPlxTKykvICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVySXRlbURGQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICQre0RGTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRklMVEVSSVRFTSB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEZpbHRlckl0ZW1ERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbXtQYXJhbU9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpbHRlckl0ZW1ERkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybURhdGVzICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbWF0Y2ggc3RhbmRhcmQgdGlja2V0IGF0dHJpYnV0ZSBuYW1lcyB3aXRoIGVkaXQgbWFzayBhdHRyaWJ1dGUgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQFBhcmFtTmFtZXMgPSAkUGFyYW17UGFyYW1PYmplY3R9LT5HZXRQYXJhbU5hbWVzOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBhdHRyaWJ1dGUgbmFtZSBpdHNlbGYgaXMgaW4gcGFyYW1zCiAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URSB0cnlpbmcgYXR0cmlidXRlIGl0c2VsZiBpcyBjcnVjaWFsbHkgaW1wb3J0YW50IGluIGNhc2Ugb2YgUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICAjICAgYmVjYXVzZSBBZ2VudFRpY2tldFBob25lIGRvZXMgbm90IHByb3ZpZGUgUXVldWVJRCwgYnV0IHB1dHMgdGhlIGlkIGluCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBEZXN0LCBhbmQgQWdlbnRUaWNrZXRFbWFpbCBsZWF2ZXMgRGVzdCBhcyBhIHN0cmluZyBidXQgcHV0cyB0aGUgaWQgaW4gUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICBteSAoJFBhcmFtTmFtZSkgPSBncmVwIHsgJF8gZXEgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH0gQFBhcmFtTmFtZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGlmIG5vdCwgdHJ5IHRvIGZpbmQgYSBtYXBwZWQgYXR0cmlidXRlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFBhcmFtTmFtZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG1hcHBlZCBhdHRyaWJ1dGUgbmFtZXMgZXhpc3QgYXQgYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWFwcGVkQXR0cmlidXRlcyA9ICRBdHRyaWJ1dGVOYW1lTWFwcGluZ3sgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkTWFwcGVkQXR0cmlidXRlcyBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBQRURBVFRSSUJVVEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRNYXBwZWRBdHRyaWJ1dGUgKCAkTWFwcGVkQXR0cmlidXRlcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkUGFyYW1OYW1lKSA9IGdyZXAgeyAkXyBlcSAkTWFwcGVkQXR0cmlidXRlIH0gQFBhcmFtTmFtZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IE1BUFBFREFUVFJJQlVURSBpZiAkUGFyYW1OYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkUGFyYW1OYW1lOwoKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHdoZW4gY2FsbGVkIGJ5IEFnZW50UmVmZXJlbmNlU2VhcmNoLCBEZXN0IGlzIGEgc3RyaW5nIGFuZCB3ZSBuZWVkIHRvIGV4dHJhY3QgdGhlIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW1OYW1lIGVxICdEZXN0JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRRdWV1ZUlEID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPX4gL14oXGR7MSwxMDB9KVx8XHwuKz8kLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUXVldWVJRCA9ICQxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRRdWV1ZUlEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZW5zdXJlIHRoYXQgZm9yIEVxdWFsc09iamVjdEF0dHJpYnV0ZSBVc2VySUQgYWx3YXlzICRTZWxmLT57VXNlcklEfSBpcyB1c2VkIGluIHRoZSBlbmQKICAgICAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdVc2VySUQnICkgewogICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17VXNlcklEfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdW5sZXNzICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICByZXR1cm4gaWYgKCByZWYgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSBlcSAnQVJSQVknICYmICEkRXF1YWxzT2JqZWN0QXR0cmlidXRlLT5AKiApOwoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15Db259aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9ICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRXF1YWxzT2JqZWN0QXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhcnJheSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gWyRFcXVhbHNPYmplY3RBdHRyaWJ1dGVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9ICkgewoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICAjIFRPRE8gY2hlY2sgaWYgdGhpcyBoYXMgdG8gYmUgYWRhcHRlZCBmb3IgdGlja2V0IHNlYXJjaAogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteQ29ufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSBbICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU3VwcG9ydCByZXN0cmljdGlvbiBieSBjbGFzcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntDbGFzc0lEc30gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKICAgICAgICBpZiAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NJRHM7CiAgICAgICAgICAgIGZvciBteSAkQ2xhc3NJRCAoICRTZWFyY2hQYXJhbXN7Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzSUQgfSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgQENsYXNzSURzOwoKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gPSAkREZEZXRhaWxzLT57Q2xhc3NJRHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIFN1cHBvcnQgcmVzdHJpY3Rpb24gYnkgZGVwbG95bWVudCBzdGF0ZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntEZXBsU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgaWYgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gKSB7CiAgICAgICAgICAgIG15IEBEZXBsb3ltZW50U3RhdGVJRHM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbG95bWVudFN0YXRlSUQgKCAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkRGVwbG95bWVudFN0YXRlSUQgfSAkREZEZXRhaWxzLT57RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVwbG95bWVudFN0YXRlSURzLCAkRGVwbG95bWVudFN0YXRlSUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB1bmxlc3MgQERlcGxveW1lbnRTdGF0ZUlEczsKCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbG95bWVudFN0YXRlSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gJERGRGV0YWlscy0+e0RlcGxTdGF0ZUlEc307CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGEgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkQ29uZmlnSXRlbUlEcyAgICA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uU2VhcmNoKAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFBhcmFte01heFJlc3VsdHN9LAogICAgICAgIFJlc3VsdCAgICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ0Rvd24nXSwKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgKTsKICAgIHJldHVybiB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRDb25maWdJdGVtSURzKTsKCiAgICAjIGFjdHVhbGx5IHN0b3JlIGxhdGVzdCB2ZXJzaW9uIElECiAgICBteSBAVmVyc2lvbklEczsKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggJENvbmZpZ0l0ZW1JRHMtPkAqICkgewogICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFZlcnNpb25MaXN0KSApIHsKICAgICAgICAgICAgcHVzaCBAVmVyc2lvbklEcywgJFZlcnNpb25MaXN0LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBWZXJzaW9uSURzOwp9Cgo9aGVhZDIgVmFsdWVGb3JMZW5zKCkKCnRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHBhc3NlZCB2YWx1ZSB1bmNoYW5nZWQuIEl0IGlzIG9ubHkgaW1wbGVtZW50ZWQgc28gdGhhdAp0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgcGFyZW50IGNsYXNzIEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpJVFNNQ29uZmlnSXRlbVJlZmVyZW5jZT4gaXMgbm90IHVzZWQuCgo9Y3V0CgpzdWIgVmFsdWVGb3JMZW5zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/DynamicField/Event/ITSMConfigItemDefinitionSync.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbURlZmluaXRpb25TeW5jOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KERhdGEgRXZlbnQgQ29uZmlnIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17RGF0YX17TmV3RGF0YX17T2JqZWN0VHlwZX0gbmUgJ0lUU01Db25maWdJdGVtJzsKICAgIHJldHVybiB1bmxlc3MgYW55IHsgJF8gZXEgJFBhcmFte0V2ZW50fSB9IHF3KER5bmFtaWNGaWVsZEFkZCBEeW5hbWljRmllbGRVcGRhdGUgRHluYW1pY0ZpZWxkRGVsZXRlKTsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZDsKCiAgICAjIGlmIHRoZSBfb2xkXyBkeW5hbWljIGZpZWxkIHdhcyBwYXJ0IG9mIGEgc2V0LCBhbnkgY2hhbmdlIHRvIGl0IHdpbGwgYWZmZWN0IHRoZSBleGlzdGluZyBzZXQKICAgICMgYW5kIHRodXMgdGhlIENJCiAgICBpZiAoICRQYXJhbXtEYXRhfXtPbGREYXRhfXtDb25maWd9e1BhcnRPZlNldH0gKSB7CiAgICAgICAgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBJRCA9PiAkUGFyYW17RGF0YX17T2xkRGF0YX17Q29uZmlnfXtQYXJ0T2ZTZXR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmb3IgdGhlIHN0YW5kYXJkIGNhc2UsIHRoZSBmaWVsZCBpcyBkaXJlY3RseSBpbnRlZ3JhdGVkLCB3ZSB0YWtlIHRoZSBfbmV3XyBkYXRhCiAgICAjIC0+IGluIGNhc2Ugb2YgYSBuYW1lIGNoYW5nZSB3ZSBkbyBub3Qgc2V0IGNsYXNzZXMgb3V0IG9mIHN5bmMsIGFzIHdlIHdpbGwgbm90CiAgICAjIGF1dG9tYXRpY2FsbHkgdXBkYXRlIGRlZmluaXRpb24gc3RyaW5ncwogICAgIyBhIG5ldyBmaWVsZCBuYW1lIGhhcyB0byBiZSB1cGRhdGVkIG1hbnVhbGx5IGluIHRoZSBkZWZpbml0aW9uCiAgICBlbHNlIHsKICAgICAgICAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RhdGF9e05ld0RhdGF9OwogICAgfQoKICAgIG15ICVPdXRPZlN5bmNEZWZpbml0aW9uczsKCiAgICAjIExvb3Agb3ZlciBhbGwgY2xhc3NlcyBhbmQgY2hlY2sgd2hldGhlciB0aGV5IGluY2x1ZGUgdGhlIGNoYW5nZWQgZHluYW1pYyBmaWVsZAogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAkQ2xhc3NMaXN0LT4lKiApIHsKICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgdXNlIE9sZERhdGEgdG8gYWNjb3VudCBmb3IgbmFtZSBjaGFuZ2VzCiAgICAgICAgIyAgIGluIGNhc2Ugb2YgRHluYW1pY0ZpZWxkQWRkLCBvbGQgZGF0YSBpcyBub3QgcHJlc2VudCAtIHVzZSBuZXcgZGF0YSBhcyBmYWxsYmFjawogICAgICAgIGlmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkUGFyYW17RGF0YX17T2xkRGF0YX17TmFtZX0gLy8gJFBhcmFte0RhdGF9e05ld0RhdGF9e05hbWV9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQHsgJE91dE9mU3luY0RlZmluaXRpb25zeyRDbGFzc0lEfSB9LCAkRHluYW1pY0ZpZWxkLT57SUR9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQtaW5uZXIgZmllbGRzIGFyZSBub3Qgc3RvcmVkIGluIGRlZmluaXRpb24gZHluYW1pYyBmaWVsZCByZWYKICAgICAgICBlbHNpZiAoICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfXsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQHsgJE91dE9mU3luY0RlZmluaXRpb25zeyRDbGFzc0lEfSB9LCAkRHluYW1pY0ZpZWxkLT57SUR9OwogICAgICAgIH0KICAgIH0KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IFwlT3V0T2ZTeW5jRGVmaW5pdGlvbnMsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbSAtIHN1cHBvcnQgZm9yIElUU01Db25maWdJdGVtIGFzIGFuIG9iamVjdCB0eXBlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkF0dGFjaCBkeW5hbWljIGZpZWxkcyB0byBhbiBJVFNNQ29uZmlnSXRlbS4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKClVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBQcmVWYWx1ZVNldCgpCgpQZXJmb3JtIHNwZWNpZmljIGZ1bmN0aW9ucyBiZWZvcmUgdGhlIHZhbHVlIGlzIHNldCBmb3IgYSBkeW5hbWljIGZpZWxkIGZvciB0aGlzIG9iamVjdCB0eXBlLgoKICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+UHJlVmFsdWVTZXQoCiAgICAgICAgUGFyYW0gICAgICAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwoKVGhpcyBoYW5kbGVyIGNhbiBiZSBza2lwcGVkIGJ5IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZSBDPENvbmZpZ0l0ZW1IYW5kbGVkPiBpbiBDPFBhcmFtPi4KCj1jdXQKCnN1YiBQcmVWYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsIG5lZWRlZCBwYXJhbXMgYXJlIGNoZWNrZWQgYnkgdGhlIGJhY2tlbmQgYmVmb3JlCiAgICBpZiAoICEkUGFyYW17UGFyYW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBQYXJhbSBvZiBiYWNrZW5kISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgd2UgYXJlIGNvbWluZyBmcm9tIFZlcnNpb24ucG0gbm90aGluZyBoYXMgdG8gYmUgY2hhbmdlZAogICAgcmV0dXJuIDEgaWYgJFBhcmFte1BhcmFtfXtDb25maWdJdGVtSGFuZGxlZH07CgogICAgIyB1cGdyYWRlIHZlcnNpb24gb2Ygc3Vic2VxdWVudCBkeW5hbWljIGZpZWxkIGNoYW5nZXMgaWYgYSB2ZXJzaW9uIHdhcyBhZGRlZCBpbiB0aGlzIHJlcXVlc3QKICAgIGlmICggJFNlbGYtPntWZXJzaW9uVXBncmFkZX0gJiYgJFNlbGYtPntWZXJzaW9uVXBncmFkZX17ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9IH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0gPSAkU2VsZi0+e1ZlcnNpb25VcGdyYWRlfXsgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0gfTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgISRQYXJhbXtQYXJhbX17RHluYW1pY0ZpZWxkQ29uZmlnfXtDSUNsYXNzfTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGNoYW5nZWQgZmllbGQgdHJpZ2dlcnMgYSBuZXcgY29uZmlnaXRlbSB2ZXJzaW9uIGFuZCBpZiBzbywgYWRkIGEgbmV3IG9uZQogICAgbXkgJENsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtQYXJhbX17RHluYW1pY0ZpZWxkQ29uZmlnfXtDSUNsYXNzfSwKICAgICk7CiAgICBteSAlVmVyc2lvblRyaWdnZXIgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJENsYXNzUHJlZmVyZW5jZXMtPntWZXJzaW9uVHJpZ2dlcn0gLy8gW10gfTsKCiAgICBpZiAoICRWZXJzaW9uVHJpZ2dlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte1BhcmFtfXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9IH0gKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJE5ld1ZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICBMYXN0VmVyc2lvbklEID0+ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRQYXJhbXtQYXJhbX17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkTmV3VmVyc2lvbklEICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGNyZWF0ZSBuZXcgdmVyc2lvbiBmb3IgTGFzdFZlcnNpb25JRCAkUGFyYW17UGFyYW19e09iamVjdElEfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgb2xkIGFuZCBuZXcgdmVyc2lvbiB0byBuZXcgb25lIHRvIG1ha2Ugc3VyZSwgdGhhdCBsZW5zZXMgY2FuIHdvcmsgd2l0aCBlaXRoZXIKICAgICAgICAkU2VsZi0+e1ZlcnNpb25VcGdyYWRlfXsgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0gfSA9ICROZXdWZXJzaW9uSUQ7CiAgICAgICAgJFNlbGYtPntWZXJzaW9uVXBncmFkZX17JE5ld1ZlcnNpb25JRH0gICAgICAgICAgICAgPSAkTmV3VmVyc2lvbklEOwogICAgICAgICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJE5ld1ZlcnNpb25JRDsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFBvc3RWYWx1ZVNldCgpCgpQZXJmb3JtIHNwZWNpZmljIGZ1bmN0aW9ucyBhZnRlciB0aGUgdmFsdWUgaGFzIGJlZW4gc2V0IGZvciBhIGR5bmFtaWMgZmllbGQgZm9yIHRoaXMgb2JqZWN0IHR5cGUuCgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1IYW5kbGVyT2JqZWN0LT5Qb3N0VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsICAgICAgIyBjb21wbGV0ZSBjb25maWcgb2YgdGhlIER5bmFtaWNGaWVsZAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgICAgICAgICAgICMgSUQgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IHRoYXQgdGhlIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IGJlIGxpbmtlZCB0bywgZS4gZy4gSVRTTUNvbmZpZ0l0ZW1JRAogICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsICAgICAgICAgICAgICAgICAgICMgVmFsdWUgdG8gc3RvcmUsIGRlcGVuZHMgb24gYmFja2VuZCB0eXBlCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEyMywKICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCBza2lwcyB0aGlzIGlmIGhhbmRsZWQgZWxzZXdoZXJlCiAgICApOwoKVGhpcyBoYW5kbGVyIGNhbiBiZSBza2lwcGVkIGJ5IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZSBDPENvbmZpZ0l0ZW1IYW5kbGVkPiBpbiBDPFBhcmFtPi4KCj1jdXQKCnN1YiBQb3N0VmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHdlIGFyZSBjb21pbmcgZnJvbSBWZXJzaW9uLnBtIG5vdGhpbmcgaGFzIHRvIGJlIGNoYW5nZWQKICAgIHJldHVybiAxIGlmICRQYXJhbXtDb25maWdJdGVtSGFuZGxlZH07CgogICAgIyBhbGwgbmVlZGVkIHBhcmFtcyBhcmUgY2hlY2tlZCBieSB0aGUgYmFja2VuZCBiZWZvcmUKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkQ2FjaGVPYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQ29uZmlnSXRlbUlER2V0KCBWZXJzaW9uSUQgPT4gJFBhcmFte09iamVjdElEfSApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRDb25maWdJdGVtT2JqZWN0LT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICdDb25maWdJdGVtR2V0OjpWZXJzaW9uSUQ6OicgLiAkUGFyYW17T2JqZWN0SUR9IC4gJzo6REZEYXRhOjoxJywKICAgICk7CiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRDb25maWdJdGVtT2JqZWN0LT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICdDb25maWdJdGVtR2V0OjpDb25maWdJdGVtSUQ6OicgLiAkQ29uZmlnSXRlbUlEIC4gJzo6REZEYXRhOjoxJywKICAgICk7CgogICAgIyBwcmVwYXJlIHJlYWRhYmxlIHZhbHVlcyBmb3IgdGhlIGhpc3RvcnksCiAgICAjIHRoZSByZXN1bHQgaXMgYSBoYXNocmVmIHdpdGggdGhlIGtleXMgVmFsdWUgYW5kIExhYmVsCiAgICBteSAkUmVhZGFibGVWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfQogICAgKTsKICAgIG15ICRSZWFkYWJsZU9sZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17T2xkVmFsdWV9LAogICAgKTsKCiAgICAjIHRyaWdnZXIgZXZlbnQKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXIoCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1EeW5hbWljRmllbGRVcGRhdGVfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgRmllbGROYW1lICAgICAgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgICAgICBPbGRWYWx1ZSAgICAgICAgID0+ICRQYXJhbXtPbGRWYWx1ZX0sCiAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgICAgPT4gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgIFJlYWRhYmxlT2xkVmFsdWUgPT4gJFJlYWRhYmxlT2xkVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBPYmplY3REYXRhR2V0KCkKCnJldHJpZXZlcyB0aGUgZGF0YSBvZiB0aGUgY3VycmVudCBvYmplY3QuCgogICAgbXkgJU9iamVjdERhdGEgPSAkRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1IYW5kbGVyT2JqZWN0LT5PYmplY3REYXRhR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgICAgICMgY29tcGxldGUgY29uZmlnIG9mIHRoZSBEeW5hbWljRmllbGQKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMTIzLAogICAgKTsKCnJldHVybnM6CgogICAgJU9iamVjdERhdGEgPSAoCiAgICAgICAgT2JqZWN0SUQgPT4gMTIzLAogICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJzIwMTAxMDI3MDAwMDAxJywKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAxNywKICAgICAgICAgICAgLi4uCiAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBPYmplY3REYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRHluYW1pY0ZpZWxkQ29uZmlnIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIER5bmFtaWNGaWVsZENvbmZpZyAoZ2VuZXJhbCkuCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBmaWVsZCBjb25maWd1cmF0aW9uIGlzIGludmFsaWQiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgQ2hlY2sgRHluYW1pY0ZpZWxkQ29uZmlnIChpbnRlcm5hbGx5KS4KICAgIGZvciBteSAkTmVlZGVkIChxdyhJRCBGaWVsZFR5cGUgT2JqZWN0VHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIER5bmFtaWNGaWVsZENvbmZpZyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgVE9ETzogd2h5IGRvZXMgdGhpcyBtZXRob2QgZGVwZW5kIG9uIHRoZSBwYXJhbSBvYmplY3Q/CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSgKICAgICAgICBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkQ29uZmlnSXRlbUlEOwoKICAgIG15ICVDb25maWdJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIHJldHVybiAoCiAgICAgICAgT2JqZWN0SUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBEYXRhICAgICA9PiBcJUNvbmZpZ0l0ZW0sCiAgICApOwp9Cgo9aGVhZDIgR2V0RW50aXR5SURmb3JMaW5raW5nKCkKCnJldHJpZXZlcyBDb25maWdJdGVtSUQgZm9yIGdpdmVuIFZlcnNpb25JRAoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1IYW5kbGVyT2JqZWN0LT5HZXRFbnRpdHlJRGZvckxpbmtpbmcoCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywKICAgICAgICBMaW5rS2V5ID0+ICdTb3VyY2UnLCAgICAgICMgb3IgJ1RhcmdldCcKICAgICAgICBUeXBlTmFtZSA9PiAnQ29uZmlnSXRlbScsICMgb3IgJ0NvbmZpZ0l0ZW1WZXJzaW9uJwogICAgKTsKCj1jdXQKCnN1YiBHZXRFbnRpdHlJRGZvckxpbmtpbmcgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElEICAgICAgID0gJFBhcmFte0lEfTsKICAgIG15ICRMaW5rS2V5ICA9ICRQYXJhbXtMaW5rS2V5fTsKICAgIG15ICRUeXBlTmFtZSA9ICRQYXJhbXtUeXBlTmFtZX07CgogICAgIyBpZiB0aGUga2V5IGlzIGEgJ1RhcmdldCcga2V5IC4uLgogICAgaWYgKCAkTGlua0tleSBlcSAnVGFyZ2V0JyApIHsKCiAgICAgICAgIyAuLi50aGVuIG9ubHkgQ29uZmlnSXRlbVZlcnNpb24gaXRlbXMgd2lsbCBuZWVkIFZlcnNpb25JRCByZXNvbHV0aW9uCiAgICAgICAgaWYgKCAkVHlwZU5hbWUgZXEgJ0NvbmZpZ0l0ZW0nICkgewogICAgICAgICAgICByZXR1cm4gJElEOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgVmVyc2lvbklEICAgICA9PiAkSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9Owp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdygKICAgIEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXIKICAgIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTAogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb24KICAgIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6SGlzdG9yeQogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpMaW5rCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcgogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb24KKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBTdG9yYWJsZSAgICAgICBxdyhkY2xvbmUpOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QgdHJ1ZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlhNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtIC0gbGlicmFyeSBmb3IgSVRTTSBjb25maWcgaXRlbXMuCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBmdW5jdGlvbnMuIE5vdGUgdGhhdCBhZGRpdGlvbmFsIHBhcmVudCBtb2R1bGVzIGFyZSBsb2FkZWQKd2hpY2ggZWZmZWN0aXZlbHkgYWRkIG1vcmUgbWV0aG9kcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgICMgaW5pdCBvZiBldmVudCBoYW5kbGVyCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVySW5pdCgKICAgICAgICBDb25maWcgPT4gJ0lUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QnLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBDb25maWdJdGVtQ291bnQoKQoKY291bnQgYWxsIHByb2R1Y3RpdmUgY29uZmlnIGl0ZW1zIG9mIGEgY29uZmlnIGl0ZW0gY2xhc3MKCiAgICBteSAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNvdW50KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxpc3Qgb2YgcHJvZHVjdGl2ZSBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAwIGlmICEleyRTdGF0ZUxpc3R9OwoKICAgICMgY3JlYXRlIHN0YXRlIHN0cmluZwogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgbXkgKCRDb3VudCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICJTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbSBXSEVSRSBjbGFzc19pZCA9ID8gQU5EICIKICAgICAgICAgICAgLiAiY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkiLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQ7Cn0KCj1oZWFkMiBDb25maWdJdGVtUmVzdWx0TGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFycmF5IGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJENvbmZpZ0l0ZW1MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1SZXN1bHRMaXN0KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgICAgIFN0YXJ0ICAgPT4gMTAwLAogICAgICAgIExpbWl0ICAgPT4gNTAsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1SZXN1bHRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN0YXRlIGxpc3QKICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ3ByZXByb2R1Y3RpdmUnLCAncHJvZHVjdGl2ZScgXSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBzdGF0ZSBzdHJpbmcKICAgIG15ICREZXBsU3RhdGVTdHJpbmcgPSBqb2luIHF7LCB9LCBrZXlzICV7JFN0YXRlTGlzdH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSAiCiAgICAgICAgICAgIC4gIldIRVJFIGNsYXNzX2lkID0gPyBBTkQgY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkgIgogICAgICAgICAgICAuICJPUkRFUiBCWSBjaGFuZ2VfdGltZSBERVNDIiwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICAgICBTdGFydCA9PiAkUGFyYW17U3RhcnR9LAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRExpc3QsICRSb3dbMF07CiAgICB9CgogICAgIyBnZXQgbGFzdCB2ZXJzaW9ucyBkYXRhCiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRExpc3QpIHsKCiAgICAgICAgIyBnZXQgdmVyc2lvbiBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUxpc3QsICRDb25maWdJdGVtOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgQ29uZmlnSXRlbUdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBhcyBhIGhhc2ggcmVmZXJlbmNlLiBUaGUgbGF0ZXN0IHZlcnNpb24gaXMgcmV0cmlldmVkIHdoZW4gQzxDb25maWdJdGVtSUQ+IGlzIHBhc3NlZCBhcyBwYXJhbWV0ZXIuCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMywKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIHNwZWNpZmljIHZlcnNpb24gaXMgcmV0dXJuZWQgd2hlbiB0aGUgQzxWZXJzaW9uSUQ+IGlzIHBhc3NlZC4KCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gMjQzLAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCldoZW4gYm90aCBDPENvbmZpZ0l0ZW1JRD4gYW5kIEM8VmVyc2lvbklEPiBhcmUgcGFzc2VkLCB0aGVuIGEgY29uc2lzdGVuY3kgY2hlY2sgaXMgcGVyZm9ybWVkCmFuZCB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmljIHZlcnNpb24gaXMgcmV0dXJuZWQuCgpFcnJvciBtZXNzYWdlcyBhcmUgc3VwcHJlc3NlZCBpZiB0aGUgcGFyYW1ldGVyIEM8U2lsZW50PiBpcyBwYXNzZWQuCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+IDI0MywKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIGhhc2hyZWYgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgaXMgcmV0dXJuZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBDb25maWdJdGVtSUQKCj1pdGVtIE51bWJlcgoKPWl0ZW0gQ2xhc3NJRAoKPWl0ZW0gQ2xhc3MKCj1pdGVtIExhc3RWZXJzaW9uSUQKCj1pdGVtIEN1ckRlcGxTdGF0ZUlECgo9aXRlbSBDdXJEZXBsU3RhdGUKCj1pdGVtIEN1ckRlcGxTdGF0ZVR5cGUKCj1pdGVtIEN1ckluY2lTdGF0ZUlECgo9aXRlbSBDdXJJbmNpU3RhdGUKCj1pdGVtIEN1ckluY2lTdGF0ZVR5cGUKCj1pdGVtIFZlcnNpb25JRAoKPWl0ZW0gTmFtZQoKPWl0ZW0gVmVyc2lvblN0cmluZwoKPWl0ZW0gRGVzY3JpcHRpb24KCj1pdGVtIERlZmluaXRpb25JRAoKPWl0ZW0gRGVwbFN0YXRlSUQKCj1pdGVtIERlcGxTdGF0ZQoKPWl0ZW0gRGVwbFN0YXRlVHlwZQoKPWl0ZW0gSW5jaVN0YXRlSUQKCj1pdGVtIEluY2lTdGF0ZQoKPWl0ZW0gSW5jaVN0YXRlVHlwZQoKPWl0ZW0gQ3JlYXRlVGltZQoKPWl0ZW0gQ3JlYXRlQnkKCj1pdGVtIENoYW5nZVRpbWUKCj1pdGVtIENoYW5nZUJ5Cgo9YmFjawoKQ2FjaGluZyBjYW4ndCBiZSB0dXJuZWQgb2ZmLgoKV2hlbiB0aGUgcGFyYW1ldGVyIEM8RHluYW1pY0ZpZWxkcz4gaXMgcGFzc2VkIHRoZW4gdGhlIGR5bmFtaWMgZmllbGRzIGFyZSByZXR1cm5lZCBhZGRpdGlvbmFsbHkuCkR5bmFtaWNGaWVsZHMgYXJlIG5vdCBjYWNoZWQgaW4gdGhlIGJhY2tlbmQgdG8gcHJldmVudCBzdGFsZSBsZW5zIHZhbHVlcyBmb3IgcmVmZXJlbmNlZCBpdGVtcy4KCj1jdXQKCnN1YiBDb25maWdJdGVtR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB3aGV0aGVyIHRvIHN1cHByZXNzIGVycm9yIG1lc3NhZ2VzCiAgICBteSAkU2lsZW50ID0gJFBhcmFte1NpbGVudH0gPyAxIDogMDsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gJiYgISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgIGlmICggISRTaWxlbnQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlnbm9yZSBEeW5hbWljRmllbGRzIHBlciBkZWZhdWx0LAogICAgbXkgJERGRGF0YSA9ICRQYXJhbXtEeW5hbWljRmllbGRzfSA/IDEgOiAwOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15IEBDYWNoZUtleUlEID0gJFBhcmFte1ZlcnNpb25JRH0KICAgICAgICA/ICggVmVyc2lvbklEID0+ICRQYXJhbXtWZXJzaW9uSUR9ICkKICAgICAgICA6ICggQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9ICk7CgogICAgbXkgJENhY2hlS2V5QmFzZSAgICA9IGpvaW4gJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLCBAQ2FjaGVLZXlJRDsKICAgIG15ICRDYWNoZUtleUN1cnJlbnQgPSBqb2luICc6OicsICRDYWNoZUtleUJhc2UsIERGRGF0YSA9PiAkREZEYXRhOwoKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIG15ICRDYWNoZUN1cnJlbnQgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleUN1cnJlbnQsCiAgICApOwoKICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGNhY2hlZAogICAgaWYgKCByZWYgJENhY2hlQ3VycmVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBuZSAkQ2FjaGVDdXJyZW50LT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgaWYgKCAhJFNpbGVudCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZlcnNpb25JRCAkUGFyYW17VmVyc2lvbklEfSBpcyBub3QgYSB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRjbG9uZSgkQ2FjaGVDdXJyZW50KTsKICAgIH0KCiAgICBteSAlQ29uZmlnSXRlbTsKCiAgICBteSAkQ2FjaGUgPSAkREZEYXRhID09IDEgPyAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleUJhc2UgLiAnREZEYXRhOjowJywKICAgICkgOiB1bmRlZjsKCiAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICkgewogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb25JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJENhY2hlLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgaWYgKCAhJFNpbGVudCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZlcnNpb25JRCAkUGFyYW17VmVyc2lvbklEfSBpcyBub3QgYSB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJUNvbmZpZ0l0ZW0gPSAleyRDYWNoZX07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGdldCBzcGVjaWZpYyBDb25maWdJdGVtVmVyc2lvbgogICAgICAgICMgVGhlIHBhcmFtZXRlciBWZXJzaW9uSUQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIENvbmZpZ0l0ZW1JRAogICAgICAgIG15IEBSb3c7CiAgICAgICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgICAgIEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBjaS5pZCwgY2kuY29uZmlnaXRlbV9udW1iZXIsIGNpLmNsYXNzX2lkLCBjaS5sYXN0X3ZlcnNpb25faWQsCiAgICBjaS5jdXJfZGVwbF9zdGF0ZV9pZCwgY2kuY3VyX2luY2lfc3RhdGVfaWQsCiAgICB2LmlkLCB2Lm5hbWUsIHYudmVyc2lvbl9zdHJpbmcsIHYuZGVmaW5pdGlvbl9pZCwgdi5kZXBsX3N0YXRlX2lkLCB2LmluY2lfc3RhdGVfaWQsIHYuZGVzY3JpcHRpb24sCiAgICB2LmNyZWF0ZV90aW1lLCB2LmNyZWF0ZV9ieSwgdi5jaGFuZ2VfdGltZSwgdi5jaGFuZ2VfYnkKICBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2CiAgSU5ORVIgSk9JTiBjb25maWdpdGVtIGNpCiAgICBPTiB2LmNvbmZpZ2l0ZW1faWQgPSBjaS5pZAogIFdIRVJFIHYuaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtWZXJzaW9uSUR9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGF0ZXN0IENvbmZpZ0l0ZW1WZXJzaW9uCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgY2kuaWQsIGNpLmNvbmZpZ2l0ZW1fbnVtYmVyLCBjaS5jbGFzc19pZCwgY2kubGFzdF92ZXJzaW9uX2lkLAogICAgY2kuY3VyX2RlcGxfc3RhdGVfaWQsIGNpLmN1cl9pbmNpX3N0YXRlX2lkLAogICAgdi5pZCwgdi5uYW1lLCB2LnZlcnNpb25fc3RyaW5nLCB2LmRlZmluaXRpb25faWQsIHYuZGVwbF9zdGF0ZV9pZCwgdi5pbmNpX3N0YXRlX2lkLCB2LmRlc2NyaXB0aW9uLAogICAgY2kuY3JlYXRlX3RpbWUsIGNpLmNyZWF0ZV9ieSwgY2kuY2hhbmdlX3RpbWUsIGNpLmNoYW5nZV9ieQogIEZST00gY29uZmlnaXRlbSBjaQogIExFRlQgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdgogICAgT04gY2kubGFzdF92ZXJzaW9uX2lkID0gdi5pZAogIFdIRVJFIGNpLmlkID0gPwpFTkRfU1FMCiAgICAgICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgICAgICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0gICA9ICRSb3dbMF07CiAgICAgICAgJENvbmZpZ0l0ZW17TnVtYmVyfSAgICAgICAgID0gJFJvd1sxXTsKICAgICAgICAkQ29uZmlnSXRlbXtDbGFzc0lEfSAgICAgICAgPSAkUm93WzJdOwogICAgICAgICRDb25maWdJdGVte0xhc3RWZXJzaW9uSUR9ICA9ICRSb3dbM107CiAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlSUR9ID0gJFJvd1s0XTsKICAgICAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU3RhdGVJRH0gPSAkUm93WzVdOwogICAgICAgICRDb25maWdJdGVte1ZlcnNpb25JRH0gICAgICA9ICRSb3dbNl07CiAgICAgICAgJENvbmZpZ0l0ZW17TmFtZX0gICAgICAgICAgID0gJFJvd1s3XTsKICAgICAgICAkQ29uZmlnSXRlbXtWZXJzaW9uU3RyaW5nfSAgPSAkUm93WzhdOwogICAgICAgICRDb25maWdJdGVte0RlZmluaXRpb25JRH0gICA9ICRSb3dbOV07CiAgICAgICAgJENvbmZpZ0l0ZW17RGVwbFN0YXRlSUR9ICAgID0gJFJvd1sxMF07CiAgICAgICAgJENvbmZpZ0l0ZW17SW5jaVN0YXRlSUR9ICAgID0gJFJvd1sxMV07CiAgICAgICAgJENvbmZpZ0l0ZW17RGVzY3JpcHRpb259ICAgID0gJFJvd1sxMl07CiAgICAgICAgJENvbmZpZ0l0ZW17Q3JlYXRlVGltZX0gICAgID0gJFJvd1sxM107CiAgICAgICAgJENvbmZpZ0l0ZW17Q3JlYXRlQnl9ICAgICAgID0gJFJvd1sxNF07CiAgICAgICAgJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX0gICAgID0gJFJvd1sxNV07CiAgICAgICAgJENvbmZpZ0l0ZW17Q2hhbmdlQnl9ICAgICAgID0gJFJvd1sxNl07CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW0KICAgICAgICBpZiAoICEkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICAgICBpZiAoICEkU2lsZW50ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBDb25maWdJdGVtSUQgKCRQYXJhbXtDb25maWdJdGVtSUR9KSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICYmICRQYXJhbXtDb25maWdJdGVtSUR9ICYmICRQYXJhbXtDb25maWdJdGVtSUR9IG5lICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgIGlmICggISRTaWxlbnQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJWZXJzaW9uSUQgJFBhcmFte1ZlcnNpb25JRH0gaXMgbm90IGEgdmVyc2lvbiBvZiBDb25maWdJdGVtSUQgJFBhcmFte0NvbmZpZ0l0ZW1JRH0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmV0cmlldmUgYWRkaXRpb25hbCBiYXNlIGF0dHJpYnV0ZXMgZnJvbSBnZW5lcmFsIGNhdGFsb2cKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyBhZGQgdGhlIENsYXNzLCBiYXNlZCBvbiB0aGUgQ2xhc3NJRAogICAgICAgIHsKICAgICAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbXtDbGFzc0lEfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgbW9yZSByZWFkYWJsZSBuYW1lcyBmb3IgdGhlIHZhcmlvdXMgc3RhdGVzLgogICAgICAgICMgQWRkIHRoZSBzdGF0ZSB0eXBlcy4KICAgICAgICBTVEFURToKICAgICAgICBmb3IgbXkgJFN0YXRlIChxdy9EZXBsU3RhdGUgQ3VyRGVwbFN0YXRlIEluY2lTdGF0ZSBDdXJJbmNpU3RhdGUvKSB7CiAgICAgICAgICAgIG5leHQgU1RBVEUgdW5sZXNzICRDb25maWdJdGVteyAkU3RhdGUgLiAnSUQnIH07CgogICAgICAgICAgICBteSAkSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbXsgJFN0YXRlIC4gJ0lEJyB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvbmZpZ0l0ZW17JFN0YXRlfSA9ICRJdGVtLT57TmFtZX07CiAgICAgICAgICAgICRDb25maWdJdGVteyAkU3RhdGUgLiAnVHlwZScgfSA9ICRJdGVtLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CiAgICAgICAgfQoKICAgICAgICAjIGNhY2hlCiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleUJhc2UgLiAnREZEYXRhOjowJywKICAgICAgICAgICAgVmFsdWUgPT4gZGNsb25lKCBcJUNvbmZpZ0l0ZW0gKSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgbmVlZCB0byByZXR1cm4gRHluYW1pY0ZpZWxkcwogICAgaWYgKCAkREZEYXRhICYmICRDb25maWdJdGVte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW17RGVmaW5pdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKCiAgICAgICAgICAgICMgdmFsaWRhdGUgZWFjaCBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAjIGdldCB0aGUgY3VycmVudCB2YWx1ZSBmb3IgZWFjaCBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aGUgZHluYW1pYyBmaWVsZCBuYW1lIGFuZCB2YWx1ZSBpbnRvIHRoZSBjb25maWcgaXRlbSBoYXNoCiAgICAgICAgICAgICRDb25maWdJdGVteyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWx1ZTsKICAgICAgICB9CgogICAgICAgICMgY2FjaGUgdGhlIGZ1bGwgcmVzdWx0IGluIG1lbW9yeSBvbmx5CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgICAgICAgICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgICAgICAgICAgID0+ICRDYWNoZUtleUJhc2UgLiAnREZEYXRhOjoxJywKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgPT4gZGNsb25lKCBcJUNvbmZpZ0l0ZW0gKSwKICAgICAgICAgICAgQ2FjaGVJbk1lbW9yeSAgPT4gMSwKICAgICAgICAgICAgQ2FjaGVJbkJhY2tlbmQgPT4gMCwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBcJUNvbmZpZ0l0ZW07Cn0KCj1oZWFkMiBDb25maWdJdGVtQWRkKCkKCmFkZCBhIG5ldyBjb25maWcgaXRlbS4gVGhpcyBpbXBsaWVzIHRoYXQgYW4gaW5pdGlhbCB2ZXJzaW9uIGlzIGNyZWF0ZWQgYXMgd2VsbC4KCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCAgICAgICAgPT4gMTIzLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdOYW1lJywgICAgIyBvcHRpb25hbCB3aGVuIGEgbmFtZSBtb2R1bGUgaXMgY29uZmlndXJlZCBmb3IgdGhlIGNsYXNzCiAgICAgICAgVmVyc2lvblN0cmluZyAgPT4gJ1ZlcnNpb24nLCAjIG9wdGlvbmFsIHdoZW4gYSB2ZXJzaW9uIG51bWJlciBtb2R1bGUgaXMgY29uZmlndXJlZCBmb3IgdGhlIGNsYXNzCiAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gMywKICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAyLAogICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdBQkNEJywKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgIE51bWJlciAgICAgICAgID0+ICcxMTEnLCAgICAjIG9wdGlvbmFsLCBhIG51bWJlciB3aWxsIGdlbmVyYXRlZCB3aGVuIG5vIG51bWJlciBpcyBwYXNzZWQKICAgICAgICBEeW5hbWljRmllbGRfWCA9PiAkVmFsdWUsICAgIyBvcHRpb25hbAogICAgKTsKCk5vIGNvbmZpZyBpdGVtIHdpbGwgYmUgY3JlYXRlZCB3aGVuIGFuIGFscmVhZHkgZXhpc3RpbmcgTnVtYmVyIGlzIHBhc3NlZC4KCj1jdXQKCnN1YiBDb25maWdJdGVtQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENsYXNzSUQgVXNlcklEIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJENsYXNzTGlzdCBlcSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgY2xhc3MgaWQKICAgIGlmICggISRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyB2YWxpZCBjbGFzcyBpZCBnaXZlbiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkRGVwbFN0YXRlTGlzdDsKICAgIHJldHVybiB1bmxlc3MgcmVmICREZXBsU3RhdGVMaXN0IGVxICdIQVNIJzsKCiAgICAjIGNoZWNrIHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICBpZiAoICEkRGVwbFN0YXRlTGlzdC0+eyAkUGFyYW17RGVwbFN0YXRlSUR9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyB2YWxpZCBkZXBsb3ltZW50IHN0YXRlIGlkIGdpdmVuIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJEluY2lTdGF0ZUxpc3Q7CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkSW5jaVN0YXRlTGlzdCBlcSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgaW5jaWRlbnQgc3RhdGUgaWQKICAgIGlmICggISRJbmNpU3RhdGVMaXN0LT57ICRQYXJhbXtJbmNpU3RhdGVJRH0gfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05vIHZhbGlkIGluY2lkZW50IHN0YXRlIGlkIGdpdmVuIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICApOwoKICAgICMgY3JlYXRlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgaWYgKCAkUGFyYW17TnVtYmVyfSApIHsKCiAgICAgICAgIyBmaW5kIGV4aXN0aW5nIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgIG15ICRFeGlzdHMgPSAkU2VsZi0+Q29uZmlnSXRlbU51bWJlckxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17TnVtYmVyfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4aXN0cykgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnIGl0ZW0gbnVtYmVyIGFscmVhZHkgZXhpc3RzIScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgIG15ICROdW1iZXJNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOdW1iZXJNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TnVtYmVyTW9kdWxlfVswXSA6ICdBdXRvSW5jcmVtZW50JzsKCiAgICAgICAgIyBjcmVhdGUgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICAgICAgJFBhcmFte051bWJlcn0gPSAkU2VsZi0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OiROdW1iZXJNb2R1bGUiLAogICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICROYW1lTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCROYW1lTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBtb2R1bGUgZXhpc3RzCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOYW1lOjokTmFtZU1vZHVsZSIpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBuYW1lIG1vZHVsZSBmb3IgY2xhc3MgJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKSApIHsKCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlcyA9ICRTZWxmLT5VbmlxdWVOYW1lQ2hlY2soCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05FVycsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RvcCBwcm9jZXNzaW5nIGlmIHRoZSBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkRHVwbGljYXRlcyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZiBJSQogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBOYW1lISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaW5zZXJ0IG5ldyBjb25maWcgaXRlbQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbSAoJwogICAgICAgICAgICAuICdjb25maWdpdGVtX251bWJlciwgY3VyX2RlcGxfc3RhdGVfaWQsIGN1cl9pbmNpX3N0YXRlX2lkJwogICAgICAgICAgICAuICcsIGNsYXNzX2lkLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5JwogICAgICAgICAgICAuICcpIFZBTFVFUyAoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TnVtYmVyfSwgXCRQYXJhbXtEZXBsU3RhdGVJRH0sIFwkUGFyYW17SW5jaVN0YXRlSUR9LCBcJFBhcmFte0NsYXNzSUR9LCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICAjIGZpbmQgaWQgb2YgbmV3IGl0ZW0KICAgICMgVE9ETzogd2hhdCBhYm91dCBjb25jdXJyZW50IElOU0VSVHMgPz8/CiAgICBteSAoJENvbmZpZ0l0ZW1JRCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgaWQKICBGUk9NIGNvbmZpZ2l0ZW0KICBXSEVSRSBjb25maWdpdGVtX251bWJlciA9ID8KICAgIEFORCBjbGFzc19pZCA9ID8KICBPUkRFUiBCWSBpZCBERVNDCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOdW1iZXJ9LCBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICApOwoKICAgICMgdHJpZ2dlciBDb25maWdJdGVtQ3JlYXRlCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJENvbmZpZ0l0ZW1JRCAuICclJScgLiAkUGFyYW17TnVtYmVyfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBhZGQgdGhlIGZpcnN0IHZlcnNpb24KICAgIG15ICRWZXJzaW9uSUQgPSAkU2VsZi0+VmVyc2lvbkFkZCgKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnJywKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmICggISRWZXJzaW9uSUQgKSB7CgogICAgICAgICMgZGVsZXRlIGhpc3RvcnkgZW50cmllcwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9oaXN0b3J5IFdIRVJFIGNvbmZpZ2l0ZW1faWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ29uZmlnSXRlbUlEIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgY29uZmlnIGl0ZW0gaWYgbm8gdmVyc2lvbiBjb3VsZCBiZSBjcmVhdGVkCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CgogICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBjcmVhdGUgdmVyc2lvbiEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1EZWxldGUoKQoKZGVsZXRlIGFuIGV4aXN0aW5nIGNvbmZpZyBpdGVtCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENvbmZpZ0l0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJlbWVtYmVyIGNvbmZpZyBpdGVtIGRhdGEgYmVmb3JlIGRlbGV0ZQogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgICMgZGVsZXRlIGFsbCBsaW5rcyB0byB0aGlzIGNvbmZpZyBpdGVtIGJlZm9yZSBkZWxldGluZyB0aGUgdmVyc2lvbnMuCiAgICAjIExpbmtEZWxldGVBbGwoKSBjYWxscyBMaW5rRGVsZXRlKCkgaW50ZXJuYWxseS4gVGhpcyBtZWFucyB0aGF0CiAgICAjIHRoZSBldmVudCBoYW5kbGVycyBhcmUgaG9ub3JlZC4gVGhpcyBtZWFucyB0aGF0IHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsKICAgICMgaXMgYWxzbyBwdXJnZWQuCiAgICByZXR1cm4gdW5sZXNzICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtEZWxldGVBbGwoCiAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgZHluYW1pYyBsaW5rIHRhYmxlIGVudHJpZXMsIGlmIGFueQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgc291cmNlX2NvbmZpZ2l0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgaWYgdGhlcmUgYXJlIHN0YXRpYyAodmVyc2lvbmVkKSBsaW5rcywgZGVsZXRlIGFsbCBvZiB0aGVtCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkU2VsZi0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICBmb3IgbXkgJFZlcnNpb25JRCAoQCRWZXJzaW9uTGlzdFJlZikgewogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluayBXSEVSRSBzb3VyY2VfY29uZmlnaXRlbV92ZXJzaW9uX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZlcnNpb25JRCBdLAogICAgICAgICk7CiAgICAgICAgJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rIFdIRVJFIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkVmVyc2lvbklEIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBleGlzdGluZyB2ZXJzaW9ucwogICAgJFNlbGYtPlZlcnNpb25EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBhdHRhY2htZW50cwogICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkU2VsZi0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIEZJTEVOQU1FOgogICAgZm9yIG15ICRGaWxlbmFtZSAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGF0dGFjaG1lbnQKICAgICAgICBteSAkRGVsZXRpb25TdWNjZXNzID0gJFNlbGYtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRGVsZXRpb25TdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5rbm93biBwcm9ibGVtIHdoZW4gZGVsZXRpbmcgYXR0YWNobWVudCAkRmlsZW5hbWUgb2YgQ29uZmlnSXRlbSAiCiAgICAgICAgICAgICAgICAgICAgLiAiJFBhcmFte0NvbmZpZ0l0ZW1JRH0uIFBsZWFzZSBjaGVjayB0aGUgVmlydHVhbEZTIGJhY2tlbmQgZm9yIHN0YWxlICIKICAgICAgICAgICAgICAgICAgICAuICJmaWxlcyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbURhdGEtPntDbGFzc0lEfSwKICAgICk7CiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOYW1lOjokTmFtZU1vZHVsZSIpICkgewoKICAgICAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICAgICBteSAkTmFtZU1vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJE5hbWVNb2R1bGUpOwoKICAgICAgICAgICAgaWYgKCAkTmFtZU1vZHVsZU9iamVjdC0+Y2FuKCdDb25maWdJdGVtTmFtZURlbGV0ZScpICkgewogICAgICAgICAgICAgICAgJE5hbWVNb2R1bGVPYmplY3QtPkNvbmZpZ0l0ZW1OYW1lRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJENvbmZpZ0l0ZW1EYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBuYW1lIG1vZHVsZSBmb3IgY2xhc3MgJENvbmZpZ0l0ZW1EYXRhLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJpZ2dlciBDb25maWdJdGVtRGVsZXRlIGV2ZW50CiAgICAjIHRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBkZWxldGluZyB0aGUgY29uZmlnIGl0ZW0gZnJvbSB0aGUgZGF0YWJhc2UsCiAgICAjIGJlY2F1c2Ugb2YgYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGluIHRoZSBjb25maWdpdGVtX2hpc3RvcnkgdGFibGUKICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbURhdGEtPntOdW1iZXJ9LAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLT57Q2xhc3N9LAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gJENvbmZpZ0l0ZW1EYXRhLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGRlbGV0ZSBjb25maWcgaXRlbQogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW0gV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZGVsZXRlIHRoZSBjYWNoZQogICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5EZWxldGUoCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBERkRhdGEgICAgICAgPT4gJERGRGF0YQogICAgICAgICAgICApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbVVwZGF0ZSgpCgp1cGRhdGUgYSBjb25maWcgaXRlbS4gQSBuZXcgdmVyc2lvbiB3aWxsIGJlIGNyZWF0ZWQgb25seSB3aGVuIGEgdmVyc2lvbiB0cmlnZ2VyIGFwcGxpZXMuCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICBDb25maWdJdGVtSUQgICA9PiAyNywKICAgICAgICBOdW1iZXIgICAgICAgICA9PiAnMTExJywgICAgIyBJRCBvciBOdW1iZXIgaXMgcmVxdWlyZWQKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdOYW1lJywgICAjIG9wdGlvbmFsCiAgICAgICAgRGVmaW5pdGlvbklEICAgPT4gMTIzLCAgICAgICMgb3B0aW9uYWwKICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAzLCAgICAgICAgIyBvcHRpb25hbAogICAgICAgIEluY2lTdGF0ZUlEICAgID0+IDIsICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJ0FCQ0QnLCAgICMgb3B0aW9uYWwKICAgICAgICBEeW5hbWljRmllbGRfWCA9PiAkVmFsdWUsICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBsb29rdXAKICAgICRQYXJhbXtDb25maWdJdGVtSUR9IC8vPSAkU2VsZi0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRQYXJhbXtOdW1iZXJ9LAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbWV0ZXJzCiAgICBmb3IgbXkgJEtleSAocXcvQ29uZmlnSXRlbUlEIFVzZXJJRC8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICIgLiAoICRLZXkgZXEgJ0NvbmZpZ0l0ZW1JRCcgPyAnQ29uZmlnSXRlbUlEIG9yIE51bWJlcicgOiAkS2V5ICksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGR5bmFtaWMgZmllbGQga2V5cwogICAgbXkgQER5bmFtaWNGaWVsZE5hbWVzID0gbWFwCiAgICAgICAge20vXkR5bmFtaWNGaWVsZF8oLispL30KICAgICAgICBzb3J0IGtleXMgJVBhcmFtOwoKICAgICMgZ2V0IGN1cnJlbnQgY29uZmlnIGl0ZW0sIGluY2x1ZGluZyBpbmZvIGZyb20gdGhlIGxhc3QgdmVyc2lvbgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKICAgIG15ICRDbGFzcyA9ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSB9OwoKICAgIGlmICggISRDbGFzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIGNsYXNzIGZvdW5kIGZvciBpZCAnJENvbmZpZ0l0ZW0tPntDbGFzc0lEfScgKENvbmZpZ0l0ZW0jJENvbmZpZ0l0ZW0tPntOdW1iZXJ9KSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlnbm9yZSB0aGUgcGFzc2VkIGluIG5hbWUgd2hlbiBhIG5hbWUgbW9kdWxlIGlzIGFjdGl2ZQogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICk7CgogICAgIyBleGVjdXRlIG5hbWUgY2hlY2sgb25seSBpZiBuYW1lIGhhcyBjaGFuZ2VkCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJE5hbWVNb2R1bGUpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBuYW1lIG1vZHVsZSBmb3IgY2xhc3MgJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgZGVsZXRlICRQYXJhbXtOYW1lfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte05hbWV9ICYmICRQYXJhbXtOYW1lfSBuZSAkQ29uZmlnSXRlbS0+e05hbWV9ICkgewoKICAgICAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKSApIHsKCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlcyA9ICRTZWxmLT5VbmlxdWVOYW1lQ2hlY2soCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RvcCBwcm9jZXNzaW5nIGlmIHRoZSBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkRHVwbGljYXRlcyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAlVmVyc2lvblRyaWdnZXIgPSBtYXAKICAgICAgICB7ICRfID0+IDEgfQogICAgICAgICggJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblRyaWdnZXJ9IC8vIFtdICktPkAqOwoKICAgIG15ICVDaGFuZ2VkOyAgICAgICAgICAgICAgIyB0cmFjayBjaGFuZ2VkIHZhbHVlcyBmb3IgdGhlIEV2ZW50IGhhbmRsZXIsIGUuZy4gZm9yIHdyaXRpbmcgaGlzdG9yeQogICAgbXkgJEFkZFZlcnNpb24gICAgPSAwOyAgICAjIGZsYWcgZm9yIGRlY2lkaW5nIHdoZXRoZXIgYSBuZXcgdmVyc2lvbiBpcyBjcmVhdGVkCiAgICBteSAkVXBkYXRlVmVyc2lvbiA9IDA7ICAgICMgZmxhZyBmb3IgZGVjaWRpbmcgd2hldGhlciB0aGUgY3VycmVudCB2ZXJzaW9uIG5lZWRzIGFuIHVwZGF0ZQoKICAgICMgY2hlY2sgbmFtZSwgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc3RhdGUsIGFzIHdlbGwgYXMgRGVzY3JpcHRpb24KICAgIEFUVFI6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcvTmFtZSBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbi8pIHsKICAgICAgICBuZXh0IEFUVFIgdW5sZXNzIGRlZmluZWQgJFBhcmFteyRBdHRyaWJ1dGV9OwogICAgICAgIG5leHQgQVRUUiBpZiAkUGFyYW17JEF0dHJpYnV0ZX0gZXEgJENvbmZpZ0l0ZW0tPnskQXR0cmlidXRlfTsKCiAgICAgICAgJENoYW5nZWR7JEF0dHJpYnV0ZX0gPSB7CiAgICAgICAgICAgIE9sZCA9PiAkQ29uZmlnSXRlbS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICBOZXcgPT4gJFBhcmFteyRBdHRyaWJ1dGV9LAogICAgICAgIH07CgogICAgICAgICRVcGRhdGVWZXJzaW9uID0gMTsKCiAgICAgICAgaWYgKCAkVmVyc2lvblRyaWdnZXJ7JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRBZGRWZXJzaW9uID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGF0ZXN0IGRlZmluaXRpb24gZm9yIHRoZSBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICVTa2lwRm9yVXBkYXRlREZzOwoKICAgICMgY2hlY2sgZm9yIGNoYW5nZWQgZHluYW1pYyBmaWVsZHMgdG8gdHJpZ2dlciB2ZXJzaW9ucyBhbmQgZmlsdGVyIGhpc3RvcnkgZW50cmllcwogICAgaWYgKEBEeW5hbWljRmllbGROYW1lcykgewogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIGR5bmFtaWMgZmllbGRzCiAgICAgICAgTkFNRToKICAgICAgICBmb3IgbXkgJE5hbWUgKEBEeW5hbWljRmllbGROYW1lcykgewogICAgICAgICAgICBuZXh0IE5BTUUgdW5sZXNzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX07CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgTmFtZSA9PiAkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICEkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVJc0RpZmZlcmVudCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICBWYWx1ZTEgICAgICAgICAgICAgPT4gJFBhcmFteyJEeW5hbWljRmllbGRfJE5hbWUifSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZTIgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyROYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+ICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0sCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICMgZG8gbm90IHBhc3MgdW5jaGFuZ2VkIGR5bmFtaWMgZmllbGRzIHRvIFZlcnNpb25VcGRhdGUoKQogICAgICAgICAgICAgICAgIyBzdG9yZSB0aGVtIGZvciBWZXJzaW9uQWRkKCkgYmVjYXVzZSBvZiBwb3RlbnRpYWwgZGlmZmVyZW5jZSBmcm9tIEV4dGVybmFsU291cmNlCiAgICAgICAgICAgICAgICAkU2tpcEZvclVwZGF0ZURGc3siRHluYW1pY0ZpZWxkXyROYW1lIn0gPSBkZWxldGUgJFBhcmFteyJEeW5hbWljRmllbGRfJE5hbWUifTsKCiAgICAgICAgICAgICAgICBuZXh0IE5BTUU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRVcGRhdGVWZXJzaW9uID0gMTsKCiAgICAgICAgICAgIGlmICggJFZlcnNpb25UcmlnZ2VyeyJEeW5hbWljRmllbGRfJE5hbWUifSApIHsKICAgICAgICAgICAgICAgICRBZGRWZXJzaW9uID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJEFkZFZlcnNpb24pIHsKICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5WZXJzaW9uQWRkKAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufSAvLyAnJywKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlU2tpcEZvclVwZGF0ZURGcywKICAgICAgICAgICAgTGFzdFZlcnNpb24gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gdW5sZXNzICRTdWNjZXNzOwogICAgfQogICAgZWxzaWYgKCRVcGRhdGVWZXJzaW9uKSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+VmVyc2lvblVwZGF0ZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBWZXJzaW9uID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgIH0KCiAgICBteSAlRXZlbnRzID0gKAogICAgICAgIE5hbWUgICAgICAgID0+ICdOYW1lVXBkYXRlJywKICAgICAgICBEZXBsU3RhdGVJRCA9PiAnRGVwbG95bWVudFN0YXRlVXBkYXRlJywKICAgICAgICBJbmNpU3RhdGVJRCA9PiAnSW5jaWRlbnRTdGF0ZVVwZGF0ZScsCiAgICApOwoKICAgIENIQU5HRToKICAgIGZvciBteSAkS2V5ICgga2V5cyAlQ2hhbmdlZCApIHsKICAgICAgICBuZXh0IENIQU5HRSBpZiAhJEV2ZW50c3skS2V5fTsKCiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJEV2ZW50c3skS2V5fSwKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ2hhbmdlZHskS2V5fXtOZXd9IC4gJyUlJyAuICRDaGFuZ2VkeyRLZXl9e09sZH0sCiAgICAgICAgICAgICAgICBPbGQgICAgICAgICAgPT4gJENoYW5nZWR7JEtleX17T2xkfSwKICAgICAgICAgICAgICAgIE5ldyAgICAgICAgICA9PiAkQ2hhbmdlZHskS2V5fXtOZXd9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbVVwZGF0ZSBidXQgb25seSBpZiB0aGVyZSB3ZXJlIHVwZGF0ZXMKICAgIGlmICggJEFkZFZlcnNpb24gfHwgJFVwZGF0ZVZlcnNpb24gfHwgJUNoYW5nZWQgKSB7CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAuICclJScgLiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBPbGREZXBsU3RhdGUgPT4gJENoYW5nZWR7RGVwbFN0YXRlSUR9e09sZH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoKQoKYWRkcyBhbiBhdHRhY2htZW50IHRvIGEgY29uZmlnIGl0ZW0KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gMSwKICAgICAgICBGaWxlbmFtZSAgICAgICAgPT4gJ2ZpbGVuYW1lJywKICAgICAgICBDb250ZW50ICAgICAgICAgPT4gJ2NvbnRlbnQnLAogICAgICAgIENvbnRlbnRUeXBlICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUgQ29udGVudCBDb250ZW50VHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgd3JpdGUgdG8gdmlydHVhbCBmcwogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPldyaXRlKAogICAgICAgIEZpbGVuYW1lICAgID0+ICJDb25maWdJdGVtLyRQYXJhbXtDb25maWdJdGVtSUR9LyRQYXJhbXtGaWxlbmFtZX0iLAogICAgICAgIE1vZGUgICAgICAgID0+ICdiaW5hcnknLAogICAgICAgIENvbnRlbnQgICAgID0+IFwkUGFyYW17Q29udGVudH0sCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBDb250ZW50SUQgICAgPT4gJFBhcmFte0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlICA9PiAkUGFyYW17Q29udGVudFR5cGV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICMgdHJpZ2dlciBBdHRhY2htZW50QWRkLUV2ZW50CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0F0dGFjaG1lbnRBZGRQb3N0JywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0F0dGFjaG1lbnRBZGQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGFkZCBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkUGFyYW17Q29uZmlnSXRlbUlEfSIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoKQoKRGVsZXRlIHRoZSBnaXZlbiBmaWxlIGZyb20gdGhlIHZpcnR1YWwgZmlsZXN5c3RlbS4KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLCAgICAgICAgICAgICAgICMgdXNlZCBpbiBldmVudCBoYW5kbGluZywgZS5nLiBmb3IgbG9nZ2luZyB0aGUgaGlzdG9yeQogICAgICAgIEZpbGVuYW1lICAgICA9PiAnUHJvamVjdHBsYW4ucGRmJywgIyBpZGVudGlmaWVzIHRoZSBhdHRhY2htZW50ICh0b2dldGhlciB3aXRoIHRoZSBDb25maWdJdGVtSUQpCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCBwcmVmaXgKICAgIG15ICRGaWxlbmFtZSA9ICdDb25maWdJdGVtLycgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICcvJyAuICRQYXJhbXtGaWxlbmFtZX07CgogICAgIyBkZWxldGUgZmlsZQogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkRlbGV0ZSgKICAgICAgICBGaWxlbmFtZSA9PiAkRmlsZW5hbWUsCiAgICApOwoKICAgICMgY2hlY2sgZm9yIGVycm9yCiAgICBpZiAoJFN1Y2Nlc3MpIHsKCiAgICAgICAgIyB0cmlnZ2VyIEF0dGFjaG1lbnREZWxldGVQb3N0LUV2ZW50CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0F0dGFjaG1lbnREZWxldGVQb3N0JywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0F0dGFjaG1lbnREZWxldGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGRlbGV0ZSBhdHRhY2htZW50ICRGaWxlbmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBDb25maWdJdGVtQXR0YWNobWVudEdldCgpCgpUaGlzIG1ldGhvZCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IG9uZSBzcGVjaWZpYyBhdHRhY2htZW50LgoKICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiA0LAogICAgICAgIEZpbGVuYW1lICAgICA9PiAndGVzdC50eHQnLAogICAgKTsKCnJldHVybnMKCiAgICB7CiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBBbGxQcmVmZXJlbmNlcyA9PiAndGVzdCcsCiAgICAgICAgfSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAndGVzdC50eHQnLAogICAgICAgIENvbnRlbnQgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgRmlsZXNpemUgICAgPT4gMTIzNDg0MDksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgfQoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENvbmZpZ0l0ZW1JRCBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbS8nIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gLiAnLycgLiAkUGFyYW17RmlsZW5hbWV9OwoKICAgICMgZmluZCBhbGwgYXR0YWNobWVudHMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgQEF0dGFjaG1lbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJldHVybiBlcnJvciBpZiBmaWxlIGRvZXMgbm90IGV4aXN0CiAgICBpZiAoICFAQXR0YWNobWVudHMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkhIiwKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICBteSAlQXR0YWNobWVudERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPlJlYWQoCiAgICAgICAgRmlsZW5hbWUgPT4gJEZpbGVuYW1lLAogICAgICAgIE1vZGUgICAgID0+ICdiaW5hcnknLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudEluZm8gPSB7CiAgICAgICAgJUF0dGFjaG1lbnREYXRhLAogICAgICAgIEZpbGVuYW1lICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJHsgJEF0dGFjaG1lbnREYXRhe0NvbnRlbnR9IH0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJEF0dGFjaG1lbnREYXRhe1ByZWZlcmVuY2VzfXtDb250ZW50VHlwZX0sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgIEZpbGVzaXplICAgID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc317RmlsZXNpemVSYXd9LAogICAgfTsKCiAgICByZXR1cm4gJEF0dGFjaG1lbnRJbmZvOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KCkKClJldHVybnMgYW4gYXJyYXkgd2l0aCBhbGwgYXR0YWNobWVudHMgb2YgdGhlIGdpdmVuIGNvbmZpZyBpdGVtLgoKICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgQEF0dGFjaG1lbnRzID0gKAogICAgICAgICdmaWxlbmFtZS50eHQnLAogICAgICAgICdvdGhlcl9maWxlLnBkZicsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZmluZCBhbGwgYXR0YWNobWVudHMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgQEF0dGFjaG1lbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIH0sCiAgICApOwoKICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50cykgewoKICAgICAgICAjIHJlbW92ZSBleHRyYSBpbmZvcm1hdGlvbiBmcm9tIGZpbGVuYW1lCiAgICAgICAgJEZpbGVuYW1lID1+IHN7IFxBIENvbmZpZ0l0ZW0gLyBcZCsgLyB9e314bXM7CiAgICB9CgogICAgcmV0dXJuIEBBdHRhY2htZW50czsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50RXhpc3RzKCkKCkNoZWNrcyBpZiBhIGZpbGUgd2l0aCBhIGdpdmVuIGZpbGVuYW1lIGV4aXN0cy4KCiAgICBteSAkRXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RXhpc3RzKAogICAgICAgIEZpbGVuYW1lID0+ICd0ZXN0LnR4dCcsCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRmlsZW5hbWUgQ29uZmlnSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkZpbmQoCiAgICAgICAgRmlsZW5hbWUgPT4gJ0NvbmZpZ0l0ZW0vJyAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb25maWdJdGVtTG9va3VwKCkKClRoaXMgbWV0aG9kIGRvZXMgYSBsb29rdXAgZm9yIGEgY29uZmlnLWl0ZW0uIElmIGEgY29uZmlnLWl0ZW0gaWQgaXMgZ2l2ZW4sCml0IHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgY29uZmlnLWl0ZW0uIElmIGEgY29uZmlnLWl0ZW0gbnVtYmVyIGlzIGdpdmVuLAp0aGUgYXBwcm9wcmlhdGUgaWQgaXMgcmV0dXJuZWQuCgogICAgbXkgJE51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjM0LAogICAgKTsKCm9yCgogICAgbXkgJElEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAxMDAwMDAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgKCRLZXkpID0gZmlyc3QgeyAkUGFyYW17JF99IH0gcXcoQ29uZmlnSXRlbUlEIENvbmZpZ0l0ZW1OdW1iZXIpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEtleSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbUlEIG9yIENvbmZpZ0l0ZW1OdW1iZXIhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpZiByZXN1bHQgaXMgY2FjaGVkIHJldHVybiB0aGF0IHJlc3VsdAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9e0NvbmZpZ0l0ZW1Mb29rdXB9eyRLZXl9eyAkUGFyYW17JEtleX0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9e0NvbmZpZ0l0ZW1Mb29rdXB9eyRLZXl9eyAkUGFyYW17JEtleX0gfTsKCiAgICAjIHNldCB0aGUgYXBwcm9wcmlhdGUgU1FMIHN0YXRlbWVudAogICAgbXkgJFNRTCA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1OdW1iZXInCiAgICAgICAgPwogICAgICAgICdTRUxFQ1QgaWQgICAgICAgICAgICAgICAgRlJPTSBjb25maWdpdGVtIFdIRVJFIGNvbmZpZ2l0ZW1fbnVtYmVyID0gPycKICAgICAgICA6CiAgICAgICAgJ1NFTEVDVCBjb25maWdpdGVtX251bWJlciBGUk9NIGNvbmZpZ2l0ZW0gV0hFUkUgaWQgPSA/JzsKCiAgICAjIGZldGNoIHRoZSByZXF1ZXN0ZWQgdmFsdWUKICAgIHJldHVybiB1bmxlc3MgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17JEtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkVmFsdWU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRWYWx1ZSA9ICRSb3dbMF07CiAgICB9CgogICAgJFNlbGYtPntDYWNoZX17Q29uZmlnSXRlbUxvb2t1cH17JEtleX17ICRQYXJhbXskS2V5fSB9ID0gJFZhbHVlOwoKICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBVbmlxdWVOYW1lQ2hlY2soKQoKVGhpcyBtZXRob2QgY2hlY2tzIGFsbCBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcywgd2hldGhlciB0aGUgZ2l2ZW4gbmFtZSBkb2VzIGFscmVhZHkgZXhpc3QKd2l0aGluIHRoZSBzYW1lIGNvbmZpZyBpdGVtIGNsYXNzIG9yIGFtb25nIGFsbCBjbGFzc2VzLCBkZXBlbmRpbmcgb24gdGhlIFN5c0NvbmZpZyB2YWx1ZSBvZgpVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIChDbGFzcyBvciBHbG9iYWwpLgoKVGhpcyBtZXRob2QgcmVxdWlyZXMgMyBwYXJhbWV0ZXJzOiBDb25maWdJdGVtSUQsIE5hbWUgYW5kIENsYXNzCiJDb25maWdJdGVtSUQiICBpcyB0aGUgSUQgb2YgdGhlIENvbmZpZ0l0ZW0sIHdoaWNoIGlzIHRvIGJlIGNoZWNrZWQgZm9yIHVuaXF1ZW5lc3MKIk5hbWUiICAgICAgICAgIGlzIHRoZSBjb25maWcgaXRlbSBuYW1lIHRvIGJlIGNoZWNrZWQgZm9yIHVuaXF1ZW5lc3MKIkNsYXNzSUQiICAgICAgIGlzIHRoZSBJRCBvZiB0aGUgY29uZmlnIGl0ZW0ncyBjbGFzcwoKQWxsIHBhcmFtZXRlcnMgYXJlIG1hbmRhdG9yeS4KCiAgICBteSAkRHVwbGljYXRlTmFtZXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAnNzMnCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdQQyMwMDUnLAogICAgICAgIENsYXNzSUQgICAgICA9PiAnMzInLAogICAgKTsKClRoZSBnaXZlbiBuYW1lIGlzIG5vdCB1bmlxdWUKCiAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSBbIDUsIDM1LCA0OCwgXTsgICAgIyBJRHMgb2YgQ29uZmlnSXRlbXMgd2l0aCB0aGUgc2FtZSBuYW1lCgpUaGUgZ2l2ZW4gbmFtZSBpcyB1bmlxdWUKCiAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSBbXTsKCj1jdXQKCnN1YiBVbmlxdWVOYW1lQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGZvciBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgTmFtZSBDbGFzc0lEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk1pc3NpbmcgcGFyYW1ldGVyICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIENvbmZpZ0l0ZW1JRCBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoCiAgICAgICAgIUlzSW50ZWdlciggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKQogICAgICAgICYmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBuZSAnTkVXJyApCiAgICAgICAgKQogICAgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIENvbmZpZ0l0ZW1JRCBwYXJhbWV0ZXIgbmVlZHMgdG8gYmUgYW4gaW50ZWdlciBvciAnTkVXJyIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBOYW1lIHBhcmFtIGZvciB2YWxpZCBmb3JtYXQKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtOYW1lfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIE5hbWUgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGEgc3RyaW5nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBDbGFzc0lEIHBhcmFtIGZvciB2YWxpZCBmb3JtYXQKICAgIGlmICggIUlzSW50ZWdlciggJFBhcmFte0NsYXNzSUR9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgQ2xhc3NJRCBwYXJhbWV0ZXIgbmVlZHMgdG8gYmUgYW4gaW50ZWdlciIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGNsYXNzIGxpc3QgZm9yIHZhbGlkaXR5CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQ2xhc3NMaXN0KSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVuYWJsZSB0byByZXRyaWV2ZSBhIHZhbGlkIGNsYXNzIGxpc3QhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB0aGUgY2xhc3MgbmFtZSBmcm9tIHRoZSBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3MgPSAkQ2xhc3NMaXN0LT57ICRQYXJhbXtDbGFzc0lEfSB9OwoKICAgICMgY2hlY2sgY2xhc3MgZm9yIHZhbGlkaXR5CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCRDbGFzcykgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmFibGUgdG8gZGV0ZXJtaW5lIGEgY29uZmlnIGl0ZW0gY2xhc3MgdXNpbmcgdGhlIGdpdmVuIENsYXNzSUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGVsc2lmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJSZXNvbHZlZCBDbGFzc0lEICRQYXJhbXtDbGFzc0lEfSB0byBjbGFzcyAkQ2xhc3MiLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdGhlIHVuaXF1ZW5lc3Mgc2NvcGUgZnJvbSBTeXNDb25maWcKICAgIG15ICRTY29wZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScpOwoKICAgICMgY2hlY2sgc2NvcGUgZm9yIHZhbGlkaXR5CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCRTY29wZSkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgY29uZmlndXJhdGlvbiBvZiBVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIGlzIGludmFsaWQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkU2NvcGUgbmUgJ2dsb2JhbCcgJiYgJFNjb3BlIG5lICdjbGFzcycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIGlzICRTY29wZSwgYnV0IG11c3QgYmUgZWl0aGVyICIKICAgICAgICAgICAgICAgIC4gIidnbG9iYWwnIG9yICdjbGFzcychIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT57RGVidWd9ID4gMCApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBzY29wZSBmb3IgY2hlY2tpbmcgdGhlIHVuaXF1ZW5lc3MgaXMgJFNjb3BlIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICVTZWFyY2hDcml0ZXJpYTsKCiAgICAjIGFkZCB0aGUgY29uZmlnIGl0ZW0gY2xhc3MgdG8gdGhlIHNlYXJjaCBjcml0ZXJpYSBpZiB0aGUgdW5pcXVlbmVzcyBzY29wZSBpcyBub3QgZ2xvYmFsCiAgICBpZiAoICRTY29wZSBuZSAnZ2xvYmFsJyApIHsKICAgICAgICAkU2VhcmNoQ3JpdGVyaWF7Q2xhc3NJRHN9ID0gWyAkUGFyYW17Q2xhc3NJRH0gXTsKICAgIH0KCiAgICAkU2VhcmNoQ3JpdGVyaWF7TmFtZX0gPSAkUGFyYW17TmFtZX07CgogICAgIyBzZWFyY2ggZm9yIGEgY29uZmlnIGl0ZW0gbWF0Y2hpbmcgdGhlIGdpdmVuIG5hbWUKICAgIG15IEBDb25maWdJdGVtSURzID0gJFNlbGYtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgJVNlYXJjaENyaXRlcmlhLAogICAgICAgIFJlc3VsdCA9PiAnQVJSQVknCiAgICApOwoKICAgICMgcmVtb3ZlIHRoZSBwcm92aWRlZCBDb25maWdJdGVtSUQgZnJvbSB0aGUgcmVzdWx0cywgb3RoZXJ3aXNlIHRoZSBkdXBsaWNhdGUgY2hlY2sgd291bGQgZmFpbAogICAgIyBiZWNhdXNlIHRoZSBDb25maWdJdGVtIGl0c2VsZiBpcyBmb3VuZCBhcyBkdXBsaWNhdGUKICAgIG15IEBEdXBsaWNhdGVzID0gZ3JlcCB7ICRfIG5lICRQYXJhbXtDb25maWdJdGVtSUR9IH0gQENvbmZpZ0l0ZW1JRHM7CgogICAgIyBpZiBhIGNvbmZpZyBpdGVtIHdhcyBmb3VuZCwgdGhlIGdpdmVuIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgIyBpZiBubyBjb25maWcgaXRlbSB3YXMgZm91bmQsIHRoZSBnaXZlbiBuYW1lIGlzIHVuaXF1ZQoKICAgICMgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBmb3IgZHVwbGljYXRlcwogICAgcmV0dXJuIFxARHVwbGljYXRlczsKfQoKPWhlYWQyIEN1ckluY2lTdGF0ZVJlY2FsYygpCgpyZWNhbGN1bGF0ZXMgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSBhbmQgb2YgY29uZmlnIGl0ZW1zCnRoYXQgYXJlIGxpbmtlZCB0byBpdC4gT25seSBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcyBhcmUgY29uc2lkZXJlZCBoZXJlLiBMaW5rcyB0bwpvciBmcm9tIGNvbmZpZyBpdGVtIHZlcnNpb25zIGFyZSBpZ25vcmVkLgoKVGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgZGVwZW5kcyBvbiB0aGUgaW5jaWRlbnQgc3RhdGVzIHRoYXQgdGhpcyBjb25maWcgaXRlbSBkZXBlbmRzIG9uLgpBIGNoYW5nZSBvZiB0aGUgaW5jaWRlbnQgc3RhdGUgbWlnaHQgaGF2ZSByZXBlcmN1c3Npb25zIG9uIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlCm9mIHRoZSBjb25maWcgaXRlbXMgdGhhdCBkZXBlbmQgb24gdGhpcyBjb25maWcgaXRlbS4KCkl0IGlzIGEgY29tbW9uIHVzZSBjYXNlIHRoYXQgQzxDdXJJbmNpU3RhdGVSZWNhbGMoKT4gaXMgY2FsbGVkIGluIGEgbG9vcCBvdmVyIGEgbGlzdCBvZiBjb25maWcgaXRlbXMuCkV4YW1wbGVzIGFyZSB0aGUgY29uc29sZSBjb21tYW5kIEM8QWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlPiBvciB3aGVuIHRoZSBsaW5raW5nCm9mIHRoZSBjb25maWcgaXRlbXMgaGFzIGNoYW5nZWQuIEZvciBvcHRpbWl6aW5nIHRoYXQgY2FzZSB0aGVyZSBhcmUgdGhlIHBhcmFtZXRlcnMKQzxOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZT4gYW5kIEM8U2Nhbm5lZENvbmZpZ0l0ZW1JRHM+IHdoaWNoIGNhcnJ5IHN0YXRlIGJldHdlZW4KaW52b2NhdGlvbnMgb2YgdGhpcyBtZXRob2QuIFRoZXkgcHJvdmlkZSBjYWNoaW5nIGFuZCBwcmV2ZW50IGluZmluaXRlIGxvb3BzLgoKQ2hhbmdpbmcgdGhlIGluY2lkZW50IHN0YXRlIG9mIGNvbmZpZyBpdGVtcyBoYXMgcmVwZXJjdXNzaW9ucyBvbiBzZXJ2aWNlcy4gVGhlc2UgZWZmZWN0cwphcmUgaGFuZGxlZCBpbiB0aGlzIG1ldGhvZCBhcyB3ZWxsLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUgPT4gJE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLCAgIyBvcHRpb25hbCwgaW5jaWRlbnQgc3RhdGVzIG9mIGFscmVhZHkgY2hlY2tlZCBDSXMKICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiAkU2Nhbm5lZENvbmZpZ0l0ZW1JRHMsICAgICAgICAjIG9wdGlvbmFsLCBJRHMgYW5kIGluY2lkZW50IHN0YXRlcyBvZiBhbHJlYWR5IGNoZWNrZWQgQ0lzCiAgICApOwoKRm9yIGFzeW5jaHJvbm91cyBleGVjdXRpb24gaXQgaXMgY29udmVuaWVudCB0byBwYXNzIGEgbGlzdCBvZiBjb25maWcgaXRlbXMgdG8gQzxDdXJJbmNpU3RhdGVSZWNhbGMoKT4uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRHMgICAgICAgICAgICAgID0+IFsgMTIzLCAxMjQsIDEyNSBdLAogICAgKTsKCkluIHRoYXQgY2FzZSB0aGUgbG9vcCBpcyBkaXNjb250aW51ZWQgd2hlbiBhbiBpdGVyYXRpb24gcmVwb3J0ZWQgYSBmYWlsdXJlLgoKPWN1dAoKc3ViIEN1ckluY2lTdGF0ZVJlY2FsYyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdXNlZnVsIGZvciBhc3luYyBleGVjdXRpb24KICAgICMgYWxsIG90aGVyIHBhcmFtZXRlcnMgd2lsbCBiZSBpZ25vcmVkCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSURzfSApIHsKCiAgICAgICAgIyB0aGVzZSBoYXNoZXMgd2lsbCBiZSBmaWxsZWQgaW4gdGhlIGNhbGxzIHRvIEN1ckluY2lTdGF0ZVJlY2FsYwogICAgICAgIG15ICggJU5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLCAlU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgKTsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkUGFyYW17Q29uZmlnSXRlbUlEc30tPkAqICkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUgPT4gXCVOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzICAgICAgID0+IFwlU2Nhbm5lZENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gdW5sZXNzICRTdWNjZXNzOwogICAgICAgIH0KCiAgICAgICAgIyBhbGwgZmluZQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCByZWYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdUaGUgcGFyYW1ldGVyIENvbmZpZ0l0ZW1JRCBtdXN0IGJlIGEgcGxhaW4gc2NhbGFyIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IGxpbmsgdHlwZXMgYW5kIGRpcmVjdGlvbnMgZnJvbSBjb25maWcuIEUuZy4KICAgICMgeyBEZXBlbmRzT24gPT4gJ0JvdGgnLCBMb2NhdGlvbk9mID0+ICdTb3VyY2UnIH0KICAgIG15ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgogICAgIyAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9IGhvbGRzIHRoZSBkZXRlcm1pbmVkIGluY2lkZW50IHN0YXRlcyBvZiB0aGUgY29uc2lkZXJlZCBjb25maWcgaXRlbXMuCiAgICAjIEl0IG1heSBjb250YWluIGNvbnRhaW4gY29udGVudCBmcm9tIHByZXZpb3VzIGNhbGxzIG9mIEN1ckluY2lTdGF0ZVJlY2FsYygpIHNvIHRoYXQgdW5uZWNlc3Nhcnkgd29yawogICAgIyBjYW4gYmUgc2tpcHBlZC4KICAgICMgTmV3IGluY2lkZW50IHN0YXRlcyBhcmUgY2FsY3VsYXRlZCBmcm9tIGFsbCBpbmNpZGVudCBsaW5rIHR5cGVzLgogICAgIyBUaGUgbmV3bHkgZGV0ZXJtaW5lZCBpbmNpZGVudCBzdGF0ZXMgYXJlIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgogICAgIyBjYW4gcGFzcyBpdCB0byB0aGUgbmV4dCBpdGVyYXRpb24uCiAgICAjIEluY29ycG9yYXRlIGRhdGEgZnJvbSBwcmV2aW91cyBydW4ocykgYW5kIHJlbWVtYmVyIGtub3duIGRhdGEuCiAgICAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9IC8vPSB7fTsKICAgIG15ICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0gZGNsb25lKCAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9ICk7CgogICAgIyBSZW1lbWJlciB0aGUgc2Nhbm5lZCBjb25maWcgaXRlbXMKICAgICMgSW5jb3Jwb3JhdGUgZGF0YSBmcm9tIHByZXZpb3VzIHJ1bihzKSBhbmQgcmVtZW1iZXIga25vd24gZGF0YS4KICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gLy89IHt9OwogICAgbXkgJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPSBkY2xvbmUoICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gKTsKCiAgICAjIEZpbmQgZGVlcGx5IGNvbm5lY3RlZCBjb25maWcgaXRlbXMgd2l0aCBhbiBpbmNpZGVudCBzdGF0ZS4KICAgICMgVGhlIGRpcmVjdGlvbiBpbiAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbiBpcyBpZ25vcmVkIGhlcmUgYmVjYXVzZSBkZXBlbmRlZCBvbiBpdGVtcyBjb3VsZCBjaGFuZ2UKICAgICMgdGhlIGluY2lkZW50IHN0YXRlIG9mIHRoZSBjdXJyZW50IGNvbmZpZyBpdGVtLiBPciBjaGFuZ2VzIGluCiAgICAjIHRoZSBjdXJyZW50IGNvbmZpZyBpdGVtIGNvdWxkIGNoYW5nZSBkb3duc3RyZWFtIGNvbmZpZyBpdGVtcy4KICAgICRTZWxmLT5fRmluZEluY2lDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBJbmNpZGVudExpbmtUeXBlcyAgICA9PiBbIGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqIF0sCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgcmVsYXRpb24gYmV0d2VlbiBzZXJ2aWNlcyBhbmQgbGlua2VkIENJcwogICAgIyBUaGUgaW5mbyB3aWxsIGJlIHVzZWQgZm9yIHVwZGF0aW5nIHRoZSBzZXJ2aWNlcy4KICAgIG15ICVTZXJ2aWNlQ0lSZWxhdGlvbjsKCiAgICAjIGNhbGN1bGF0ZSB0aGUgbmV3IENJIGluY2lkZW50IHN0YXRlIGZvciBlYWNoIGNvbmZpZ3VyZWQgbGlua3R5cGUKICAgIExJTktUWVBFOgogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbi0+JSogKSB7CgogICAgICAgICMgZ2V0IHRoZSBkaXJlY3Rpb24KICAgICAgICBteSAkTGlua0RpcmVjdGlvbiA9ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT57JExpbmtUeXBlfTsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBhbGwgY29uZmlnIGl0ZW1zIHdpdGggYSB3YXJuaW5nIHN0YXRlCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gfSApIHsKCiAgICAgICAgICAgICMgU2tpcCBjb25maWcgaXRlbXMga25vd24gZnJvbSBwcmV2aW91cyBleGVjdXRpb24ocykuCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRLbm93blNjYW5uZWRDb25maWdJdGVtSURzLT57JENvbmZpZ0l0ZW1JRH17VHlwZX0gKQogICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgICAgICRLbm93blNjYW5uZWRDb25maWdJdGVtSURzLT57JENvbmZpZ0l0ZW1JRH17VHlwZX0gZXEgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpbnZlc3RpZ2F0ZSBvbmx5IGNvbmZpZyBpdGVtcyB3aXRoIGFuIGluY2lkZW50IHN0YXRlCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIHVubGVzcyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9IGVxICdpbmNpZGVudCc7CgogICAgICAgICAgICAjIGFubm90YXRlIGxpbmtlZCBjb25maWcgaXRlbXMgd2l0aCBhIHdhcm5pbmcKICAgICAgICAgICAgJFNlbGYtPl9GaW5kV2FybkNvbmZpZ0l0ZW1zKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICAgICAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgICAgID0+ICRMaW5rRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgTnVtYmVyT2ZMaW5rVHlwZXMgICAgPT4gc2NhbGFyIGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqLAogICAgICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IH0gKSB7CgogICAgICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9ICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9IGVxICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZXh0cmFjdCBpbmNpZGVudCBzdGF0ZSB0eXBlCiAgICAgICAgICAgIG15ICRJbmNpU3RhdGVUeXBlID0gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfTsKCiAgICAgICAgICAgICMgRmluZCBhbGwgbGlua2VkIHNlcnZpY2VzIG9mIHRoaXMgY29uZmlnIGl0ZW0uCiAgICAgICAgICAgICMgVGhlc2Uga2luZCBvZiBsaW5rcyBhcmUgbm90IGF2YWlsYWJsZSBmcm9tIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsKICAgICAgICAgICAgbXkgJUxpbmtlZFNlcnZpY2VJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgICAgIE9iamVjdDEgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgS2V5MSAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBPYmplY3QyICAgPT4gJ1NlcnZpY2UnLAogICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRGlyZWN0aW9uID0+ICRMaW5rRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBTRVJWSUNFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVMaW5rZWRTZXJ2aWNlSURzICkgewoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhlIENJcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGlzIHNlcnZpY2UKICAgICAgICAgICAgICAgICRTZXJ2aWNlQ0lSZWxhdGlvbnskU2VydmljZUlEfSAvLz0gW107CiAgICAgICAgICAgICAgICBwdXNoICRTZXJ2aWNlQ0lSZWxhdGlvbnskU2VydmljZUlEfS0+QCosICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRJbmNpU3RhdGVUeXBlIGVxICdpbmNpZGVudCc7CgogICAgICAgICAgICAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9eyRDb25maWdJdGVtSUR9ID0gJEluY2lTdGF0ZVR5cGU7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBsaXN0IG9mIHdhcm5pbmdzCiAgICBteSAkV2FyblN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+ICd3YXJuaW5nJywKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICFkZWZpbmVkICRXYXJuU3RhdGVMaXN0ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZSBXYXJuaW5nIGNhbm5vdCBiZSBpbnZhbGlkLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlUmV2ZXJzZVdhcm5TdGF0ZUxpc3QgPSByZXZlcnNlICV7JFdhcm5TdGF0ZUxpc3R9OwogICAgbXkgQFNvcnRlZFdhcm5MaXN0ICAgICAgID0gc29ydCBrZXlzICVSZXZlcnNlV2FyblN0YXRlTGlzdDsKICAgIG15ICRXYXJuaW5nU3RhdGVJRCAgICAgICA9ICRSZXZlcnNlV2FyblN0YXRlTGlzdHtXYXJuaW5nfSB8fCAkUmV2ZXJzZVdhcm5TdGF0ZUxpc3R7ICRTb3J0ZWRXYXJuTGlzdFswXSB9OwogICAgbXkgJENhY2hlT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBzZXQgdGhlIG5ldyBjdXJyZW50IGluY2lkZW50IHN0YXRlIGZvciBDSXMKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICRQYXJhbXtOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZX0tPiUqICkgewoKICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgIGlmICgKICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJEtub3duTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUtPnskQ29uZmlnSXRlbUlEfSApCiAgICAgICAgICAgICYmICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLT57JENvbmZpZ0l0ZW1JRH0gZXEgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfXskQ29uZmlnSXRlbUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG5ldyBpbmNpZGVudCBzdGF0ZSB0eXBlIChjYW4gb25seSBiZSAnb3BlcmF0aW9uYWwnIG9yICd3YXJuaW5nJykKICAgICAgICBteSAkSW5jaVN0YXRlVHlwZSA9ICRQYXJhbXtOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZX17JENvbmZpZ0l0ZW1JRH07CgogICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbgogICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICApOwoKICAgICAgICBteSAkQ3VySW5jaVN0YXRlSUQ7CiAgICAgICAgaWYgKCAkSW5jaVN0YXRlVHlwZSBlcSAnd2FybmluZycgKSB7CgogICAgICAgICAgICAjIGNoZWNrIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgaXMgaW4gJ2luY2lkZW50JwogICAgICAgICAgICAjIHRoZW4gd2UgZG8gbm90IHdhbnQgdG8gY2hhbmdlIGl0IHRvIHdhcm5pbmcKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJExhc3RWZXJzaW9uLT57SW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JzsKCiAgICAgICAgICAgICRDdXJJbmNpU3RhdGVJRCA9ICRXYXJuaW5nU3RhdGVJRDsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkSW5jaVN0YXRlVHlwZSBlcSAnb3BlcmF0aW9uYWwnICkgewogICAgICAgICAgICAkQ3VySW5jaVN0YXRlSUQgPSAkTGFzdFZlcnNpb24tPntJbmNpU3RhdGVJRH07CiAgICAgICAgfQoKICAgICAgICAjIE5vIHVwZGF0ZSBuZWNlc3NhcnkgaWYgaW5jaWRlbnQgc3RhdGUgaWQgb2YgdmVyc2lvbiBhbmQgY29uZmlnIGl0ZW0gbWF0Y2guCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJExhc3RWZXJzaW9uLT57Q3VySW5jaVN0YXRlSUR9IGVxICRDdXJJbmNpU3RhdGVJRDsKCiAgICAgICAgIyB1cGRhdGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMICA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW0gU0VUIGN1cl9pbmNpX3N0YXRlX2lkID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDdXJJbmNpU3RhdGVJRCwgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIFRPRE86IEFsc28gdGhlIFZlcnNpb25JRC1jYWNoZXMgaGF2ZSB0byBiZSBjb25zaWRlcmVkLCB0aGV5IGFsc28gY29udGFpbiBDdXJJbmNpU3RhdGUKICAgICAgICAjIGRlbGV0ZSB0aGUgY2FjaGUKICAgICAgICBmb3IgbXkgJERGRGF0YSAoIDAsIDEgKSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAkREZEYXRhCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGZvciBlYWNoIHNlcnZpY2UgKGluZmx1ZW5jZWQgYnkgbGlua2VkIENJcykKICAgIFNFUlZJQ0VJRDoKICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVTZXJ2aWNlQ0lSZWxhdGlvbiApIHsKCiAgICAgICAgIyBzZXQgZGVmYXVsdCBpbmNpZGVudCBzdGF0ZSB0eXBlCiAgICAgICAgbXkgJEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzID0gJ29wZXJhdGlvbmFsJzsKCiAgICAgICAgIyBnZXQgdGhlIHVuaXF1ZSBjb25maWcgaXRlbSBpZHMgd2hpY2ggYXJlIGRpcmVjdGx5IGxpbmtlZCB0byB0aGlzIHNlcnZpY2UKICAgICAgICBteSAlVW5pcXVlQ29uZmlnSXRlbUlEcyA9IG1hcCB7ICRfID0+IDEgfSAkU2VydmljZUNJUmVsYXRpb257JFNlcnZpY2VJRH0tPkAqOwoKICAgICAgICAjIGludmVzdGlnYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIGVhY2ggY29uZmlnIGl0ZW0KICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJVVuaXF1ZUNvbmZpZ0l0ZW1JRHMgKSB7CgogICAgICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBDYWNoZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRDb25maWdJdGVtRGF0YS0+e0N1ckRlcGxTdGF0ZVR5cGV9IG5lICdwcm9kdWN0aXZlJzsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ29wZXJhdGlvbmFsJzsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgc2VydmljZSBtdXN0IGJlIHNldCB0byAnd2FybmluZycKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbURhdGEtPntDdXJJbmNpU3RhdGVUeXBlfSBlcSAnd2FybmluZycgKSB7CiAgICAgICAgICAgICAgICAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMgPSAnd2FybmluZyc7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgc2VydmljZSBtdXN0IGJlIHNldCB0byAnaW5jaWRlbnQnCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JyApIHsKICAgICAgICAgICAgICAgICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcyA9ICdpbmNpZGVudCc7CgogICAgICAgICAgICAgICAgbGFzdCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2UKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcywKICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIE9iamVjdEF0dHJpYnV0ZXNHZXQoKQoKcmV0dXJucyB0aGUgYXR0cmlidXRlcyBhIGNvbmZpZyBpdGVtIGNhbiBoYXZlIG9uIHRoZSBzeXN0ZW0uCgogICAgbXkgJUF0dHJpYnV0ZXMgPSAkVGlja2V0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gKDB8MSksICAgICAgICAgIyAob3B0aW9uYWwpIGlmIGR5bmFtaWMgZmllbGQgbmFtZXMgYXJlIGluY2x1ZGVkLCBkZWZhdWx0IDAKICAgICAgICBWZXJzaW9uICAgICAgID0+ICgwfDEpLCAgICAgICAgICMgKG9wdGlvbmFsKSBpZiB2ZXJzaW9uIGluZm9ybWF0aW9uIGlzIGluY2x1ZGVkLCBkZWZhdWx0IDEKICAgICAgICBFZGl0TWFzayAgICAgID0+ICgwfDEpLCAgICAgICAgICMgKG9wdGlvbmFsKSBpZiBlZGl0IG1hc2sgYXR0cmlidXRlcyBhcmUgcmV0dXJuZWQgaW5zdGVhZCBvZiBiYWNrZW5kIGF0dHJpYnV0ZXMsIGRlZmF1bHQgMAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RBdHRyaWJ1dGVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte1ZlcnNpb259IC8vPSAxOwoKICAgIG15ICVDb25maWdJdGVtQXR0cmlidXRlczsKCiAgICBpZiAoICRQYXJhbXtFZGl0TWFza30gKSB7CiAgICAgICAgJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzID0gKAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAxLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVDb25maWdJdGVtQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gMSwKICAgICAgICAgICAgTnVtYmVyICAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ2xhc3NlcyAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgQ3VyRGVwbFN0YXRlcyAgPT4gMSwKICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgQ3VySW5jaVN0YXRlcyAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGlmIHJlcXVlc3RlZCwgc2V0IHZlcnNpb24gYXR0cmlidXRlcwogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb259ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbUF0dHJpYnV0ZXMgPSAoCiAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUF0dHJpYnV0ZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+IDEsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgID0+IDEsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZHluYW1pYyBmaWVsZHMgbmVlZCB0byBiZSBhZGRlZAogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkc30gKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIHZhbHVlcyAkRHluYW1pY0ZpZWxkcy0+JSogKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtQXR0cmlidXRlc3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlQ29uZmlnSXRlbUF0dHJpYnV0ZXM7Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfRmluZEluY2lDb25maWdJdGVtcygpCgpmaW5kIGNvbm5lY3RlZCBjb25maWcgaXRlbXMgd2l0aCBhbiBpbmNpZGVudCBzdGF0ZS4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+X0ZpbmRJbmNpQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBJbmNpZGVudExpbmtUeXBlcyAgICA9PiBbIGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqIF0sCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gXCVTY2FubmVkQ29uZmlnSXRlbUlEcywKICAgICk7CgpUaGUgc2Nhbm5lZCBjb25maWcgaXRlbXMgd2lsbCBiZSBlbnRlcmVkIGluIHRoZSBDPFNjYW5uZWRDb25maWdJdGVtSURzPiBoYXNocmVmLiBFYWNoIGNvbmZpZyBpdGVtIHdpbGwgYmUgc2Nhbm5lZCBvbmx5IG9uY2UuClRoZSBhdHRyaWJ1dGUgQzxUeXBlPiB3aWxsIGJlIGVpdGhlciAnb3BlcmF0aW9uYWwnIG9yICdpbmNpZGVudCcuCgpUaGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgd2l0aCBpbmNpZGVudHMgcmVjdXJzZXMgaW50byB0aGUgZ3JhcGggb2YgbGlua2VkIGNvbmZpZyBpdGVtcy4gVGhlIGRpcmVjdGx5CmxpbmtlZCBpdGVtcyB3aWxsIGFsd2F5cyBiZSBjaGVja2VkLiBSZWN1cnNpb24gc3RvcHMgb25jZSBhbiBpbmNpZGVudCBoYXMgYmVlbiBmb3VuZC4KClRoaXMgbWV0aG9kIG9ubHkgY29sbGVjdHMgZGF0YSwgbm8gY3VycmVudCBpbmNpZGVudCBzdGF0ZXMgd2lsbCBiZSBhbHRlcmVkLgoKPWN1dAoKc3ViIF9GaW5kSW5jaUNvbmZpZ0l0ZW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgIyBpZ25vcmUgYWxyZWFkeSBzY2FubmVkIGlkcyAoaW5maW5pdGUgbG9vcCBwcm90ZWN0aW9uKQogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfTsKCiAgICAjIHNldCBhIGRlZmF1bHQgc28gdGhlIENvbmZpZ0l0ZW0gd29uJ3QgYmUgc2Nhbm5lZCBhZ2FpbgogICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfSA9IHt9OwogICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e1R5cGV9ID0gJ29wZXJhdGlvbmFsJzsKCiAgICAjIGFkZCBvd24gY29uZmlnIGl0ZW0gaWQgdG8gbGlzdCBvZiBsaW5rZWQgY29uZmlnIGl0ZW1zCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgICMgZmluZCB0aGUgZGlyZWN0bHkgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgewogICAgICAgICMgRGlyZWN0aW9uIG11c3QgQUxXQVlTIGJlICdCb3RoJyBoZXJlIGFzIHdlIG5lZWQgdG8gaW5jbHVkZQogICAgICAgICMgYWxsIGxpbmtlZCBDSXMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcyBvbmUhCiAgICAgICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJFNlbGYtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFR5cGVzICAgICAgICA9PiAkUGFyYW17SW5jaWRlbnRMaW5rVHlwZXN9LAogICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ0JvdGgnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHJlbWVtYmVyIG9ubHkgdGhlIGxpbmtlZCBjb25maWcgaXRlbSBpZHMsIGlnbm9yZSB0aGUgY29uZmlnIGl0ZW0gdmVyc2lvbnMKICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLAogICAgICAgICAgICBncmVwIHtkZWZpbmVkfQogICAgICAgICAgICBtYXAgIHsgJF8tPntDb25maWdJdGVtSUR9IH0KICAgICAgICAgICAgJExpbmtlZENvbmZpZ0l0ZW1zLT5AKjsKICAgIH0KCiAgICAjIExvb3Agb3ZlciB0aGUgcmVxdWVzdGVkIGNvbmZpZyBpdGVtIGFuZCB0aGUgZGlyZWN0bHkgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBDb25maWdJdGVtSURzICkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENhY2hlICAgICAgICA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgV2hlbiBhbiBpbmNpZGVudCB3YXMgZm91bmQsIG1hcmsgdGhlIGNvbmZpZyBpdGVtIGFuZCBzdG9wIHJlY3Vyc2luZwogICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSBlcSAnaW5jaWRlbnQnICkgewogICAgICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9ID0gJ2luY2lkZW50JzsKCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgIH0KCiAgICAgICAgIyBubyBpbmNpZGVudCB3YXMgZW5jb3VudGVyZWQsIGNvbnRpbnVlIHdpdGggcmVjdXJzaW9uCiAgICAgICAgIyBfRmluZEluY2lDb25maWdJdGVtcygpIG1pZ2h0IGJlIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50ICRQYXJhbXtDb25maWdJdGVtSUR9LgogICAgICAgICMgQnV0IHRoYXQgY2FsbCB3aWxsIGRvIG5vdGhpbmcuCiAgICAgICAgJFNlbGYtPl9GaW5kSW5jaUNvbmZpZ0l0ZW1zKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBJbmNpZGVudExpbmtUeXBlcyAgICA9PiAkUGFyYW17SW5jaWRlbnRMaW5rVHlwZXN9LAogICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cgo9aGVhZDIgX0ZpbmRXYXJuQ29uZmlnSXRlbXMoKQoKVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZvciBjb25maWcgaXRlbSB0aGF0IGFyZSBpbiBhIGluY2lkZW50IG9yIHdhcm5pbmcgc3RhdGUuCkZpbmQgY29ubmVjdGVkIGNvbmZpZyBpdGVtcyBhbmQgYW5ub3RhdGUgdGhlbSB3aXRoIGEgd2FybmluZyBpbiBDPFNjYW5uZWRDb25maWdJdGVtSURzPi4gUHJvcGFnYXRlIHRoZSB3YXJuaW5nLgoKICAgICRDb25maWdJdGVtT2JqZWN0LT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIExpbmtUeXBlICAgICAgICAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgICA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICBOdW1iZXJPZkxpbmtUeXBlcyAgICA9PiAyLCAgICAgICAgICAgICAgICAgICAgICMganVzdCBmb3IgaW5maW5pdGUgbG9vcCBwcm90ZWN0aW9uCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFNjYW5uZWRDb25maWdJdGVtSURzLAogICAgKTsKCj1jdXQKCnN1YiBfRmluZFdhcm5Db25maWdJdGVtcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgICMgSW5maW5pdGUgbG9vcCBwcm90ZWN0aW9uLgogICAgIyBJZ25vcmUgYWxyZWFkeSBzY2FubmVkIGlkcy4KICAgICMgSXQgaXMgb2sgdGhhdCBhIGNvbmZpZyBpdGVtIGlzIGludmVzdGlnYXRlZCBhcyBtYW55IHRpbWVzIGFzIHRoZXJlIGFyZSBjb25maWd1cmVkIGxpbmsgdHlwZXMgKiBudW1iZXIgb2YgaW5jaWRlbnQgY29uZmlnIGl0ZWVtcwogICAgbXkgJEluY2lkZW50Q291bnQgPSB0cnVlIHsgKCAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRffXtUeXBlfSB8fCAnJyApIGVxICdpbmNpZGVudCcgfQogICAga2V5cyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LT4lKjsKICAgIGlmICgKICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9LT57RmluZFdhcm59CiAgICAgICAgJiYKICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9LT57RmluZFdhcm59ID49ICggJFBhcmFte051bWJlck9mTGlua1R5cGVzfSAqICRJbmNpZGVudENvdW50ICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaW5jcmVhc2UgdGhlIHZpc2l0IGNvdW50ZXIKICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH0tPntGaW5kV2Fybn0rKzsKCiAgICAjIGZpbmQgY29uZmlnIGl0ZW1zIHRvIHdoaWNoIHRoZSBpbmNpZGVudCBvciB3YXJuaW5nIG11c3QgYmUgcHJvcGFnYXRlZAogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJFNlbGYtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBUeXBlcyAgICAgICAgPT4gWyAkUGFyYW17TGlua1R5cGV9IF0sCiAgICAgICAgRGlyZWN0aW9uICAgID0+ICRQYXJhbXtEaXJlY3Rpb259LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG15IEBMaW5rZWRDb25maWdJdGVtSURzID0gbWFwIHsgJF8tPntDb25maWdJdGVtSUR9IH0gJExpbmtlZENvbmZpZ0l0ZW1zLT5AKjsKCiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQgQExpbmtlZENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgJFNlbGYtPl9GaW5kV2FybkNvbmZpZ0l0ZW1zKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkUGFyYW17TGlua1R5cGV9LAogICAgICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgICA9PiAkUGFyYW17RGlyZWN0aW9ufSwKICAgICAgICAgICAgTnVtYmVyT2ZMaW5rVHlwZXMgICAgPT4gJFBhcmFte051bWJlck9mTGlua1R5cGVzfSwKICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAoICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0gfHwgJycgKSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAjIHNldCB3YXJuaW5nIHN0YXRlCiAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfSA9ICd3YXJuaW5nJzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9QcmVwYXJlTGlrZVN0cmluZygpCgppbnRlcm5hbCBmdW5jdGlvbiB0byBwcmVwYXJlIGxpa2Ugc3RyaW5ncwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5fUHJlcGFyZUxpa2VTdHJpbmcoICRTdHJpbmdSZWYgKTsKCj1jdXQKCnN1YiBfUHJlcGFyZUxpa2VTdHJpbmcgewogICAgbXkgKCAkU2VsZiwgJFZhbHVlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRWYWx1ZTsKICAgIHJldHVybiBpZiByZWYgJFZhbHVlIG5lICdTQ0FMQVInOwoKICAgICMgUXVvdGUKICAgICR7JFZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJHskVmFsdWV9LCAnTGlrZScgKTsKCiAgICAjIHJlcGxhY2UgKiB3aXRoICUKICAgICR7JFZhbHVlfSA9fiBzeyBcKisgfXslfXhtc2c7CgogICAgcmV0dXJuOwp9Cgo9aGVhZDEgSVRTTSBDb25maWcgSXRlbSBldmVudHM6CgpDb25maWdJdGVtQ3JlYXRlLCBDb25maWdJdGVtVXBkYXRlLCBWZXJzaW9uQ3JlYXRlLCBWZXJzaW9uVXBkYXRlLCBEZXBsb3ltZW50U3RhdGVVcGRhdGUsIEluY2lkZW50U3RhdGVVcGRhdGUsCkNvbmZpZ0l0ZW1EZWxldGUsIExpbmtBZGQsIExpbmtEZWxldGUsIERlZmluaXRpb25VcGRhdGUsIE5hbWVVcGRhdGUsIERlZmluaXRpb25DcmVhdGUsIFZlcnNpb25EZWxldGUKCj1jdXQKCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/ColumnFilter.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlciAtIENvbHVtbiBGaWx0ZXIgbGlicmFyeQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgZnVuY3Rpb25zIGZvciBDb2x1bW4gRmlsdGVycy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCkRvbid0IHVzZSB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHksIHVzZSB0aGUgT2JqZWN0TWFuYWdlciBpbnN0ZWFkOgoKICAgIG15ICRJVFNNQ29uZmlnSXRlbUNvbHVtbkZpbHRlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIENsYXNzRmlsdGVyVmFsdWVzR2V0KCkKCmdldCBhIGxpc3Qgb2YgYWxsIGNvbmZpZyBpdGVtIGNsYXNzZXMKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+Q2xhc3NGaWx0ZXJWYWx1ZXNHZXQoKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICAyMiA9PiAnQ29tcHV0ZXInLAogICAgICAgIDIzID0+ICdIYXJkd2FyZScsCiAgICAgICAgMjQgPT4gJ0xvY2F0aW9uJywKICAgICAgICAyNSA9PiAnTmV0d29yaycsCiAgICAgICAgMjYgPT4gJ1NvZnR3YXJlJywKICAgIH07Cgo9Y3V0CgpzdWIgQ2xhc3NGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7Cn0KCj1oZWFkMiBEZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgZGVwbG95bWVudCBzdGF0ZXMKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+RGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgMjcgPT4gIkV4cGlyZWQiLAogICAgICAgIDI4ID0+ICJJbmFjdGl2ZSIsCiAgICAgICAgMjkgPT4gIk1haW50ZW5hbmNlIiwKICAgICAgICAzMCA9PiAiUGlsb3QiLAogICAgICAgIDMxID0+ICJQbGFubmVkIiwKICAgICAgICAzMiA9PiAiUHJvZHVjdGlvbiIsCiAgICAgICAgMzMgPT4gIlJlcGFpciIsCiAgICAgICAgMzQgPT4gIlJldGlyZWQiLAogICAgICAgIDM1ID0+ICJSZXZpZXciLAogICAgICAgIDM2ID0+ICJUZXN0L1FBIiwKICAgIH07Cgo9Y3V0CgpzdWIgRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKfQoKPWhlYWQyIEN1ckRlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBjdXJyZW50IGRlcGxveW1lbnQgc3RhdGVzIC0gd3JhcHMgZm9yIERlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgogICAgbXkgJFZhbHVlcyA9ICRDb2x1bW5GaWx0ZXJPYmplY3QtPkN1ckRlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDI3ID0+ICJFeHBpcmVkIiwKICAgICAgICAyOCA9PiAiSW5hY3RpdmUiLAogICAgICAgIDI5ID0+ICJNYWludGVuYW5jZSIsCiAgICAgICAgMzAgPT4gIlBpbG90IiwKICAgICAgICAzMSA9PiAiUGxhbm5lZCIsCiAgICAgICAgMzIgPT4gIlByb2R1Y3Rpb24iLAogICAgICAgIDMzID0+ICJSZXBhaXIiLAogICAgICAgIDM0ID0+ICJSZXRpcmVkIiwKICAgICAgICAzNSA9PiAiUmV2aWV3IiwKICAgICAgICAzNiA9PiAiVGVzdC9RQSIsCiAgICB9OwoKPWN1dAoKc3ViIEN1ckRlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+RGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCVQYXJhbSk7Cn0KCj1oZWFkMiBJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgaW5jaWRlbnQgc3RhdGVzCgogICAgbXkgJFZhbHVlcyA9ICRDb2x1bW5GaWx0ZXJPYmplY3QtPkluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDEgPT4gIk9wZXJhdGlvbmFsIiwKICAgICAgICAyID0+ICJXYXJuaW5nIiwKICAgICAgICAzID0+ICJJbmNpZGVudCIKICAgIH07Cgo9Y3V0CgpzdWIgSW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7Cn0KCj1oZWFkMiBDdXJJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgY3VycmVudCBpbmNpZGVudCBzdGF0ZXMgLSB3cmFwcyBJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKQoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5DdXJJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICAxID0+ICJPcGVyYXRpb25hbCIsCiAgICAgICAgMiA9PiAiV2FybmluZyIsCiAgICAgICAgMyA9PiAiSW5jaWRlbnQiCiAgICB9OwoKPWN1dAoKc3ViIEN1ckluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+SW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0KCVQYXJhbSk7Cn0KCj1oZWFkMiBEeW5hbWljRmllbGRGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhIHNwZWNpZmljIGNvbmZpZyBpdGVtIGR5bmFtaWMgZmllbGQgdmFsdWVzIHdpdGhpbiB0aGUgZ2l2ZW4gY29uZmlnIGl0ZW1zIGxpc3QKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+RHluYW1pY0ZpZWxkRmlsdGVyVmFsdWVzR2V0KAogICAgICAgIElUU01Db25maWdJdGVtSURzID0+IFsyMywgMSwgNTYsIDc0XSwgICAgIyBhcnJheSByZWYgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgICAgICBWYWx1ZVR5cGUgPT4gJ1RleHQnLCAgICAgICAgICAgICAjIFRleHQgfCBJbnRlZ2VyIHwgRGF0ZQogICAgICAgIEZpZWxkSUQgICA9PiAkRmllbGRJRCwgICAgICAgICAgICMgSUQgb2YgdGhlIGR5bmFtaWMgZmllbGQKICAgICk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgVmFsdWVBID0+ICdWYWx1ZUEnLAogICAgICAgIFZhbHVlQiA9PiAnVmFsdWVCJywKICAgICAgICBWYWx1ZUMgPT4gJ1ZhbHVlQycKICAgIH07Cgo9Y3V0CgpzdWIgRHluYW1pY0ZpZWxkRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhJVFNNQ29uZmlnSXRlbUlEcyBWYWx1ZVR5cGUgRmllbGRJRCkpIHsKCiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJElUU01Db25maWdJdGVtSURTdHJpbmcgPSAkU2VsZi0+X0lUU01Db25maWdJdGVtSURTdHJpbmdHZXQoCiAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte0lUU01Db25maWdJdGVtSURzfSwKICAgICAgICBDb2x1bW5OYW1lICAgICAgICA9PiAnb2JqZWN0X2lkJywKICAgICk7CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17SVRTTUNvbmZpZ0l0ZW1JRHN9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJVFNNQ29uZmlnSXRlbUlEcyBtdXN0IGJlIGFuIGFycmF5IHJlZiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWx1ZVR5cGUgPSAndmFsdWVfdGV4dCc7CiAgICBpZiAoICRQYXJhbXtWYWx1ZVR5cGV9ICYmICRQYXJhbXtWYWx1ZVR5cGV9IGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgJFZhbHVlVHlwZSA9ICd2YWx1ZV9kYXRlJzsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1ZhbHVlVHlwZX0gJiYgJFBhcmFte1ZhbHVlVHlwZX0gZXEgJ0ludGVnZXInICkgewogICAgICAgICRWYWx1ZVR5cGUgPSAndmFsdWVfaW50JzsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PgogICAgICAgICAgICAiU0VMRUNUIERJU1RJTkNUKCRWYWx1ZVR5cGUpIgogICAgICAgICAgICAuICcgRlJPTSBkeW5hbWljX2ZpZWxkX3ZhbHVlJwogICAgICAgICAgICAuICcgV0hFUkUgZmllbGRfaWQgPSA/JwogICAgICAgICAgICAuICRJVFNNQ29uZmlnSXRlbUlEU3RyaW5nCiAgICAgICAgICAgIC4gIiBPUkRFUiBCWSAkVmFsdWVUeXBlIERFU0MiLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0ZpZWxkSUR9IF0sCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICMgY2hlY2sgaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgc3RvcmVkCiAgICAgICAgaWYgKAogICAgICAgICAgICBkZWZpbmVkICRSb3dbMF0KICAgICAgICAgICAgJiYgJFJvd1swXSBuZSAnJwogICAgICAgICAgICAmJiAhJERhdGF7ICRSb3dbMF0gfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgaWYgKCAkVmFsdWVUeXBlIGVxICdEYXRlJyApIHsKCiAgICAgICAgICAgICAgICAjIGNsZWFudXAgdGltZSBzdGFtcHMgKHNvbWUgZGF0YWJhc2VzIGFyZSB1c2luZyBlLiBnLiAyMDA4LTAyLTI1IDIyOjAzOjAwLjAwMDAwMAogICAgICAgICAgICAgICAgIyBhbmQgMDAwMC0wMC0wMCAwMDowMDowMCB0aW1lIHN0YW1wcykKICAgICAgICAgICAgICAgIGlmICggJFJvd1swXSBlcSAnMDAwMC0wMC0wMCAwMDowMDowMCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFJvd1swXSA9IHVuZGVmOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFJvd1swXSA9fiBzL14oXGRcZFxkXGQtXGRcZC1cZFxkXHNcZFxkOlxkXGQ6XGRcZClcLi4rPyQvJDEvOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHN0b3JlIHRoZSByZXN1bHRzCiAgICAgICAgICAgICREYXRheyAkUm93WzBdIH0gPSAkUm93WzBdOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVEYXRhOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcobm9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1BQ0wgLSBjb25maWcgaXRlbSBBQ0wgbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBBQ0wgZnVuY3Rpb25zLgoKCj1oZWFkMiBDb25maWdJdGVtQWNsKCkKClJlc3RyaWN0cyB0aGUgRGF0YSBwYXJhbWV0ZXIgc2VudCB0byBhIHN1YnNldCBvZiBpdCwgZGVwZW5kaW5nIG9uIGEgZ3JvdXAgb2YgdXNlciBkZWZpZWQgcnVsZXMKY2FsbGVkIEFDTHMuIFRoZSByZWR1Y2VkIHN1YnNldCBjYW4gYmUgYWNjZXNzIGZyb20gQ29uZmlnSXRlbUFDTERhdGEoKSBpZiBSZXR1cm5UeXBlIHBhcmFtZXRlciBpcyBzZXQKdG86IENvbmZpZ0l0ZW0sIG9yIGluIENvbmZpZ0l0ZW1BQ0xBY3Rpb25EYXRhKCksIGlmIFJldHVyblR5cGUgQWN0aW9uIGlzIHVzZWQuCgpFYWNoIEFDTCBjYW4gY29udGFpbiBkaWZmZXJlbnQgcmVzdHJpY3Rpb25zIGZvciBkaWZmZXJlbnQgb2JqZWN0cyB0aGUgUmV0dXJuVHlwZSBwYXJhbWV0ZXIgZGVmaW5lcwp3aGljaCBvYmplY3QgaXMgY29uc2lkZXJlZCBmb3IgdGhpcyByZXN0cmljdGlvbnMsIGluIHRoZSBjYXNlIG9mIHRoZSBDb25maWcgSXRlbSBvYmplY3QgYSBzZWNvbmQKcGFyYW1ldGVyIGNhbGxlZCBSZXR1cm5TdWJ0eXBlIGlzIG5lZWRlZCwgdG8gc3BlY2lmeSB0aGUgY29uZmlnIGl0ZW0gYXR0cmlidXRlIHRvIGJlIHJlc3RyaWN0ZWQsIGxpa2U6CkM8IlRCRCI+LCBldGMuIFdoaWxlIGZvciB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0cyBhICItIiB2YWx1ZSBtdXN0IGJlIHNldC4gVGhlIFJldHVyblR5cGUKYW5kIFJldHVyblN1YlR5cGUgbXVzdCBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBEYXRhIHBhcmFtZXRlciBzZW50LgoKVGhlIHJlc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZGVmaW5lIHRoZSBtYXRjaGluZyBvcHRpb25zIGZvciB0aGUgQUNMIHJ1bGVzLgoKRXhhbXBsZSB0byByZXN0cmljdCBjb25maWcgaXRlbSBhY3Rpb25zOgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVmFsdWVzIHRvIHJlc3RyaWN0CiAgICAgICAgICAgIDEgPT4gQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQsCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKCiAgICAgICAgQWN0aW9uICAgICAgICA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQnLCAgICMgT3B0aW9uYWwKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgIER5bmFtaWNGaWVsZCAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9OYW1lWCA9PiAxMjMsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9OYW1lWiA9PiAnc29tZSB2YWx1ZScsCiAgICAgICAgfSwKCiAgICAgICAgUmV0dXJuVHlwZSAgICAgPT4gJ0FjdGlvbicsICAgICAgICAgICAgICAgICAgICMgVG8gbWF0Y2ggUG9zc2libGUsIFBvc3NpYmxlQWRkIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBQb3NzaWJsZU5vdCBrZXkgaW4gQUNMCiAgICAgICAgUmV0dXJuU3ViVHlwZSAgPT4gJy0nLCAgICAgICAgICAgICAgICAgICAgICAgICMgVG8gbWF0Y2ggUG9zc2libGUsIFBvc3NpYmxlQWRkIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBQb3NzaWJsZU5vdCBzdWIta2V5IGluIEFDTAoKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VySUQgPT4gMSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBmdW5jdGlvbgogICAgKTsKCm9yIHRvIHJlc3RyaWN0IGNvbmZpZyBpdGVtIHN0YXRlczoKCiAgICAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAxID0+ICduZXcnLAogICAgICAgICAgICAyID0+ICdvcGVuJywKICAgICAgICAgICAgIyAuLi4KICAgICAgICB9LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ1N0YXRlJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEyMywKICAgICk7CgpyZXR1cm5zOgogICAgJFN1Y2Nlc3MgPSAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGFuIEFDTCBtYXRjaGVzLCBvciBmYWxzZSBvdGhlcndpc2UuCgpJZiBBQ0wgbW9kdWxlcyBhcmUgY29uZmlndXJlZCBpbiB0aGUgQzxJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGU+IGNvbmZpZyBrZXksIHRoZXkgYXJlIGludm9rZWQKZHVyaW5nIHRoZSBjYWxsIHRvIEM8Q29uZmlnSXRlbUFjbD4uIFRoZSBjb25maWd1cmF0aW9uIG9mIGEgbW9kdWxlIGxvb2tzIGxpa2UgdGhpczoKCiAgICAgJENvbmZpZ09iamVjdC0+eydJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUnfS0+eydUaGVOYW1lJ30gPSB7CiAgICAgICAgIE1vZHVsZSA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpBY2w6OlRoZUFjbE1vZHVsZScsCiAgICAgICAgIENoZWNrcyA9PiBbJ1RCRCddLAogICAgICAgICBSZXR1cm5UeXBlID0+ICdDb25maWdJdGVtJywKICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiBbJ1RCRCddLAogICAgIH07CgpFYWNoIHRpbWUgdGhlIEM8UmV0dXJuVHlwZT4gYW5kIG9uZSBvZiB0aGUgQzxSZXR1cm5TdWJUeXBlPiBlbnRyaWVzIGlzIGlkZW50aWNhbCB0byB0aGUgc2FtZQphcmd1bWVudHMgcGFzc2VkIHRvIEM8Q29uZmlnSXRlbUFjbD4sIHRoZSBtb2R1bGUgb2YgdGhlIG5hbWUgaW4gQzxNb2R1bGU+IGlzIGxvYWRlZCwgdGhlIEM8bmV3PiBtZXRob2QKaXMgY2FsbGVkIG9uIGl0LCBhbmQgdGhlbiB0aGUgQzxSdW4+IG1ldGhvZCBpcyBjYWxsZWQuCgpUaGUgQzxDaGVja3M+IGFycmF5IHJlZmVyZW5jZSBpbiB0aGUgY29uZmlndXJhdGlvbiBjb250cm9scyB3aGF0IGFyZ3VtZW50cyBhcmUgcGFzc2VkLiB0byB0aGUKQzxSdW4+IG1ldGhvZC4KVmFsaWQga2V5cyBhcmUgQzxGcm9udGVuZD4gYW5kIEM8Q29uZmlnSXRlbT4uCklmIGFueSBvZiB0aG9zZSBhcmUgcHJlc2VudCwgdGhlIEM8Q2hlY2tzPiBhcmd1bWVudCBwYXNzZWQgdG8gQzxSdW4+IGNvbnRhaW5zIGFuIGVudHJ5IHdpdGggdGhlIHNhbWUKbmFtZSwgYW5kIGFzIGEgdmFsdWUgdGhlIGFzc29jaWF0ZWQgZGF0YS4KClRoZSBDPFJ1bj4gbWV0aG9kIGNhbiBhZGQgZW50cmllcyB0byB0aGUgQzxBY2w+IHBhcmFtIGhhc2gsIHdoaWNoIGFyZSB0aGVuIGV2YWx1YXRlZCBhbG9uZyB3aXRoIGFsbApvdGhlciBBQ0wuIEl0IHNob3VsZCBvbmx5IGFkZCBlbnRyaWVzIHdob3NlIGNvbmRpdGlvbmFscyBjYW4gYmUgY2hlY2tlZCB3aXRoIHRoZSBkYXRhIHNwZWNpZmllZCBpbgp0aGUgQzxDaGVja3M+IGNvbmZpZ3VyYXRpb24gZW50cnkuCgpUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBDPFJ1bj4gbWV0aG9kIGlzIGlnbm9yZWQuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFjbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSAmJiAhJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIG9yIEN1c3RvbWVyVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhSZXR1cm5TdWJUeXBlIFJldHVyblR5cGUgRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRvIG5vdCBleGVjdXRlIEFDTHMgaWYgVXNlcklEIDEgaXMgdXNlZAogICAgcmV0dXJuIGlmICRQYXJhbXtVc2VySUR9ICYmICRQYXJhbXtVc2VySUR9ID09IDE7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEFDTHMgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0NvbmZpZ0l0ZW1BY2wnKTsKICAgIG15ICRBY2xNb2R1bGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUnKTsKCiAgICAjIGRvIG5vdCBleGVjdXRlIEFDTHMgaWYgbmVpdGhlciBDb25maWdJdGVtQWNsIG5vciBJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUgaXMgY29uZmlndXJlZAogICAgaWYgKCAhJEFDTHMgJiYgISRBY2xNb2R1bGVzICkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGZpbmQgb3V0IHdoaWNoIGRhdGEgd2UgYWN0dWFsbHkgbmVlZAogICAgbXkgJUFwcGxpY2FibGVBY2xNb2R1bGVzOwogICAgbXkgJVJlcXVpcmVkQ2hlY2tzOwogICAgbXkgJENoZWNrQWxsID0gMDsKCiAgICBNT0RVTEVOQU1FOgogICAgZm9yIG15ICRNb2R1bGVOYW1lICggc29ydCBrZXlzICV7ICRBY2xNb2R1bGVzIC8vIHt9IH0gKSB7CiAgICAgICAgbXkgJE1vZHVsZSA9ICRBY2xNb2R1bGVzLT57JE1vZHVsZU5hbWV9OwoKICAgICAgICBpZiAoICRNb2R1bGUtPntSZXR1cm5UeXBlfSAmJiAkTW9kdWxlLT57UmV0dXJuVHlwZX0gbmUgJFBhcmFte1JldHVyblR5cGV9ICkgewogICAgICAgICAgICBuZXh0IE1PRFVMRU5BTUU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSApIHsKCiAgICAgICAgICAgICMgVE9ETzogdGhpcyBsb29rcyBicm9rZW4uICRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSBpcyBhIGhhc2hyZWYsIHlldCB0aGUgdmFsdWUgaXMgZGVyZWZlcmVuY2VkIGFzIGFuIGFycmF5CiAgICAgICAgICAgIGlmICggcmVmKCAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBuZXh0IE1PRFVMRU5BTUUgaWYgbm9uZSB7ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSBlcSAkXyB9CiAgICAgICAgICAgICAgICAgICAgQHsgJE1vZHVsZS0+e1JldHVyblN1YlR5cGV9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBhIHNjYWxhciwgd2UgaG9wZSwgYnV0IGl0IGNvdWxkIGFsc28gYmUgYW4gYXJyYXkKICAgICAgICAgICAgICAgICMgVE9ETzogdGhpcyBmaWx0ZXIgbG9va3MgYnJva2VuCiAgICAgICAgICAgICAgICAjICEkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gaXMgZWl0aGVyIHF7fSBvciAxLCAob3IgISEwLCBhbmQgISExKQogICAgICAgICAgICAgICAgIyBzbyBpdCBpcyB1bmxpa2VseSB0aGF0IGEgc3RyaW5nIGNvbXBhcmlzb24gd291bGQgZ2l2ZSBhIHRydWUgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTU9EVUxFTkFNRSBpZiAoICEkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gKSBlcSAkUGFyYW17UmV0dXJuU3ViVHlwZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaGVyZSBvbmx5IG1vZHVsZXMgYXBwbGljYWJsZSB0byB0aGlzIEFDTCBpbnZvY2F0aW9uIHJlbWFpbgogICAgICAgICRBcHBsaWNhYmxlQWNsTW9kdWxlc3skTW9kdWxlTmFtZX0gPSAkTW9kdWxlOwoKICAgICAgICBpZiAoICRNb2R1bGUtPntDaGVja3N9ICYmIHJlZiggJE1vZHVsZS0+e0NoZWNrc30gKSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkUmVxdWlyZWRDaGVja3N7JF99ID0gMSBmb3IgQHsgJE1vZHVsZS0+e0NoZWNrc30gfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTW9kdWxlLT57Q2hlY2tzfSApIHsKICAgICAgICAgICAgJFJlcXVpcmVkQ2hlY2tzeyAkTW9kdWxlLT57Q2hlY2tzfSB9ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDaGVja0FsbCA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJUFwcGxpY2FibGVBY2xNb2R1bGVzICYmICEkQUNMcyAmJiAhJENoZWNrQWxsOwoKICAgIGZvciBteSAkQUNMICggdmFsdWVzICV7ICRBQ0xzIC8vIHt9IH0gKSB7CiAgICAgICAgZm9yIG15ICRTb3VyY2UgKHF3LyBQcm9wZXJ0aWVzIFByb3BlcnRpZXNEYXRhYmFzZS8pIHsKICAgICAgICAgICAgZm9yIG15ICRDaGVjayAoIHNvcnQga2V5cyAleyAkQUNMLT57JFNvdXJjZX0gfSApIHsKICAgICAgICAgICAgICAgIG15ICRDbGVhbmVkVXAgPSAkQ2hlY2s7CiAgICAgICAgICAgICAgICAkQ2xlYW5lZFVwID1+IHMvKD86SUR8TmFtZXxMb2dpbikkLy87CiAgICAgICAgICAgICAgICAkQ2xlYW5lZFVwID1+IHMvXig/Ok5leHR8TmV3fE9sZCkvLzsKICAgICAgICAgICAgICAgICRSZXF1aXJlZENoZWNrc3skQ2xlYW5lZFVwfSA9IDE7CiAgICAgICAgICAgICAgICBpZiAoICRDaGVjayBlcSAnQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYoICRBQ0wtPntQcm9wZXJ0aWVzfXskQ2hlY2t9ICkgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyQ2hlY2sgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRTb3VyY2V9eyRDaGVja30gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJbm5lckNoZWNrID1+IHMvKD86SUR8TmFtZXxMb2dpbikkLy87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5uZXJDaGVjayA9fiBzL14oPzpOZXh0fE5ld3xPbGQpLy87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmVxdWlyZWRDaGVja3N7JElubmVyQ2hlY2t9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdhdGhlciBhbGwgcmVxdWlyZWQgZGF0YSB0byBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBBQ0xzCiAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+X0dldENoZWNrcygKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ2hlY2tBbGwgICAgICAgPT4gJENoZWNrQWxsLAogICAgICAgIFJlcXVpcmVkQ2hlY2tzID0+IFwlUmVxdWlyZWRDaGVja3MsCiAgICApOwogICAgbXkgJUNoZWNrcyAgICAgICAgID0gJXsgJENoZWNrUmVzdWx0LT57Q2hlY2tzfSAgICAgICAgIHx8IHt9IH07CiAgICBteSAlQ2hlY2tzRGF0YWJhc2UgPSAleyAkQ2hlY2tSZXN1bHQtPntDaGVja3NEYXRhYmFzZX0gfHwge30gfTsKCiAgICAjIG5vdGUgdGhhdCAlQWNscyBpcyBqdXN0IHRoZSBkZXJlZmVyZW5jZWQgJEFDTHMKICAgIG15ICVBY2xzOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0NvbmZpZ0l0ZW1BY2wnKSApIHsKICAgICAgICAlQWNscyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFjbCcpIH07CiAgICB9CgogICAgIyBjaGVjayBBQ0wgbW9kdWxlCiAgICBNT0RVTEU6CiAgICBmb3IgbXkgJE1vZHVsZU5hbWUgKCBzb3J0IGtleXMgJUFwcGxpY2FibGVBY2xNb2R1bGVzICkgewoKICAgICAgICBteSAkTW9kdWxlID0gJEFwcGxpY2FibGVBY2xNb2R1bGVzeyRNb2R1bGVOYW1lfTsKCiAgICAgICAgbmV4dCBNT0RVTEUgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNb2R1bGUtPntNb2R1bGV9ICk7CgogICAgICAgIG15ICRHZW5lcmljID0gJE1vZHVsZS0+e01vZHVsZX0tPm5ldygpOwoKICAgICAgICAkR2VuZXJpYy0+UnVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjbCAgICA9PiBcJUFjbHMsCiAgICAgICAgICAgIENoZWNrcyA9PiBcJUNoZWNrcywKICAgICAgICAgICAgQ29uZmlnID0+ICRNb2R1bGUsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VkIGRhdGEKICAgIG15ICVEYXRhOwogICAgaWYgKCByZWYgJFBhcmFte0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJFBhcmFte0RhdGF9IH07CiAgICB9CgogICAgbXkgJU5ld0RhdGE7CiAgICBteSAkVXNlTmV3TWFzdGVyUGFyYW1zID0gMDsKCiAgICBpZiAoICRQYXJhbXtSZXR1cm5UeXBlfSBlcSAnQWN0aW9uJyApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfSApICkgewoKICAgICAgICAgICAgIyB1c2UgRGF0YSBpZiBpcyBhIHN0cmluZyBhbmQgaXQgaXMgbm90ICctJwogICAgICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtEYXRhfSApICYmICRQYXJhbXtEYXRhfSBuZSAnLScgKSB7CiAgICAgICAgICAgICAgICAlRGF0YSA9ICggMSA9PiAkUGFyYW17RGF0YX0gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgdXNlIHRoZSBwYXJhbSBBY3Rpb24KICAgICAgICAgICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17QWN0aW9ufSApICkgewogICAgICAgICAgICAgICAgJURhdGEgPSAoIDEgPT4gJFBhcmFte0FjdGlvbn0gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJU5ld0FjdGlvbkRhdGEgPSAlRGF0YTsKCiAgICAgICAgIyBjYWxjdWxhdGUgZGVmYXVsdCBjb25maWcgaXRlbSBhY3Rpb24gQUNMIGRhdGEKICAgICAgICBteSBAQWN0aW9uc1RvRGVsZXRlOwogICAgICAgIG15ICREZWZhdWx0QWN0aW9uRGF0YSA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW1BQ0w6OkRlZmF1bHQ6OkFjdGlvbicpIHx8IHt9OwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREZWZhdWx0QWN0aW9uRGF0YSkgKSB7CgogICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggc29ydCBrZXlzICVOZXdBY3Rpb25EYXRhICkgewoKICAgICAgICAgICAgICAgIG15ICRBY3Rpb24gPSAkTmV3QWN0aW9uRGF0YXskSW5kZXh9OwogICAgICAgICAgICAgICAgaWYgKCAhJERlZmF1bHRBY3Rpb25EYXRhLT57JEluZGV4fSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBBY3Rpb25zVG9EZWxldGUsICRBY3Rpb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT57RGVmYXVsdENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhfSA9IFwlTmV3QWN0aW9uRGF0YTsKCiAgICAgICAgZm9yIG15ICRBY3Rpb24gKEBBY3Rpb25zVG9EZWxldGUpIHsKICAgICAgICAgICAgZGVsZXRlICRTZWxmLT57RGVmYXVsdENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhfS0+eyRBY3Rpb259OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBOZXdUbXBEYXRhIGFmdGVyIFBvc3NpYmxlIERhdGEgcmVjYWxjdWxhdGlvbiBvbiBSZXR1cm5UeXBlIEFjdGlvbgogICAgbXkgJU5ld1RtcERhdGEgPSAlRGF0YTsKCiAgICAjIGdldCB0aGUgZGVidWcgcGFyYW1ldGVycwogICAgJFNlbGYtPntBQ0xEZWJ1Z30gICAgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW1BQ0w6OkRlYnVnOjpFbmFibGVkJykgICAgIHx8IDA7CiAgICAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVidWc6OkxvZ1ByaW9yaXR5JykgfHwgJ2RlYnVnJzsKCiAgICBteSAkQUNMRGVidWdDb25maWdGaWx0ZXJzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVidWc6OkZpbHRlcicpIHx8IHt9OwogICAgZm9yIG15ICRGaWx0ZXJOYW1lICggc29ydCBrZXlzICV7JEFDTERlYnVnQ29uZmlnRmlsdGVyc30gKSB7CiAgICAgICAgbXkgJUZpbHRlciA9ICV7ICRBQ0xEZWJ1Z0NvbmZpZ0ZpbHRlcnMtPnskRmlsdGVyTmFtZX0gfTsKICAgICAgICBmb3IgbXkgJEZpbHRlckl0ZW0gKCBzb3J0IGtleXMgJUZpbHRlciApIHsKICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57JEZpbHRlckl0ZW19ID0gJEZpbHRlcnskRmlsdGVySXRlbX07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZGVidWcgZmlsdGVycyBhcHBseSAoY29uZmlnIGl0ZW0pCiAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewoKICAgICAgICBERUJVR0ZJTFRFUjoKICAgICAgICBmb3IgbXkgJERlYnVnRmlsdGVyICggc29ydCBrZXlzICV7ICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfSB9ICkgewogICAgICAgICAgICBuZXh0IERFQlVHRklMVEVSIGlmICREZWJ1Z0ZpbHRlciBlcSAnQUNMTmFtZSc7CiAgICAgICAgICAgIG5leHQgREVCVUdGSUxURVIgaWYgISRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eyREZWJ1Z0ZpbHRlcn07CgogICAgICAgICAgICBpZiAoICREZWJ1Z0ZpbHRlciA9fiBtezxPVE9CT19JVFNNQ09ORklHSVRFTV8oW14+XSspPn1tc3ggKSB7CiAgICAgICAgICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1QYXJhbSA9ICQxOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRJVFNNQ29uZmlnSXRlbVBhcmFtfQogICAgICAgICAgICAgICAgICAgICYmICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRJVFNNQ29uZmlnSXRlbVBhcmFtfQogICAgICAgICAgICAgICAgICAgICYmICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eyREZWJ1Z0ZpbHRlcn0gbmUKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPnskSVRTTUNvbmZpZ0l0ZW1QYXJhbX0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z30gPSAwOwogICAgICAgICAgICAgICAgICAgIGxhc3QgREVCVUdGSUxURVI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyByZW1lbWJlciBsYXN0IEFDTERlYnVnIHN0YXRlIChiZWZvcmUgQUNMcyBsb29wKQogICAgJFNlbGYtPntBQ0xEZWJ1Z1JlY292ZXJ5fSA9ICRTZWxmLT57QUNMRGVidWd9OwoKICAgIEFDTFJVTEVTOgogICAgZm9yIG15ICRBY2wgKCBzb3J0IGtleXMgJUFjbHMgKSB7CgogICAgICAgICMgY2hlY2sgaWYgZGVidWcgZmlsdGVycyBhcHBseSAoQUNMKSAob25seSBpZiBBQ0xEZWJ1ZyBpcyBhY3RpdmUpCiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnUmVjb3Zlcnl9CiAgICAgICAgICAgICYmIGRlZmluZWQgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57J0FDTE5hbWUnfQogICAgICAgICAgICAmJiAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnsnQUNMTmFtZSd9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICMgaWYgbm90IG1hdGNoIGN1cnJlbnQgQUNMIGRpc2FibGUgQUNMRGVidWcKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnsnQUNMTmFtZSd9IG5lICRBY2wgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnfSA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVlbmFibGUgb3RoZXJ3aXNlICh3ZSBhcmUgc3VyZSBpdCB3YXMgZW5hYmxlZCBiZWZvcmUpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z30gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU3RlcCA9ICV7ICRBY2xzeyRBY2x9IH07CgogICAgICAgICMgY2hlY2sgZm9yY2UgbWF0Y2gKICAgICAgICBteSAkRm9yY2VNYXRjaDsKICAgICAgICBpZiAoCiAgICAgICAgICAgICFJc0hhc2hSZWZXaXRoRGF0YSggJFN0ZXB7UHJvcGVydGllc30gKQogICAgICAgICAgICAmJiAhSXNIYXNoUmVmV2l0aERhdGEoICRTdGVwe1Byb3BlcnRpZXNEYXRhYmFzZX0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9yY2VNYXRjaCA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSAkUHJvcGVydGllc01hdGNoOwogICAgICAgIG15ICRQcm9wZXJ0aWVzTWF0Y2hUcnk7CiAgICAgICAgbXkgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoOwogICAgICAgIG15ICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeTsKICAgICAgICBteSAkVXNlTmV3UGFyYW1zID0gMDsKCiAgICAgICAgZm9yIG15ICRQcm9wZXJ0aWVzSGFzaCAocXcoUHJvcGVydGllcyBQcm9wZXJ0aWVzRGF0YWJhc2UpKSB7CgogICAgICAgICAgICBteSAlVXNlZENoZWNrcyA9ICVDaGVja3M7CiAgICAgICAgICAgIGlmICggJFByb3BlcnRpZXNIYXNoIGVxICdQcm9wZXJ0aWVzRGF0YWJhc2UnICkgewogICAgICAgICAgICAgICAgJVVzZWRDaGVja3MgPSAlQ2hlY2tzRGF0YWJhc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IG1hdGNoIHBhcmFtcwogICAgICAgICAgICBteSAkTWF0Y2ggICAgPSAxOwogICAgICAgICAgICBteSAkTWF0Y2hUcnkgPSAwOwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU3RlcHskUHJvcGVydGllc0hhc2h9IH0gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJERhdGEgKCBzb3J0IGtleXMgJXsgJFN0ZXB7JFByb3BlcnRpZXNIYXNofS0+eyRLZXl9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUHJvcGVydHkgPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRTdGVweyRQcm9wZXJ0aWVzSGFzaH0tPnskS2V5fS0+eyREYXRhfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkVXNlZENoZWNrc3skS2V5fS0+eyREYXRhfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoSXRlbSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN1YnN0ciggJEl0ZW0sIDAsIGxlbmd0aCAnW05vdCcgKSBlcSAnW05vdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoSXRlbSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hlZEFycmF5RGF0YUl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWURBVEFJVEVNOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBcnJheURhdGFJdGVtICggQHsgJFVzZWRDaGVja3N7JEtleX0tPnskRGF0YX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hlZEFycmF5RGF0YUl0ZW0gPSAkQXJyYXlEYXRhSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTG9vcE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkQXJyYXlEYXRhSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJExvb3BNYXRjaFJlc3VsdC0+e1NraXB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaEl0ZW0gPSAkTG9vcE1hdGNoUmVzdWx0LT57TWF0Y2h9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEFSUkFZREFUQUlURU07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRNYXRjaEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hQcm9wZXJ0eSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgJFByb3BlcnRpZXNIYXNoOickS2V5LT4kRGF0YScgTWF0Y2hlZEFSUkFZICgkSXRlbSBlcSAkTWF0Y2hlZEFycmF5RGF0YUl0ZW0pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhSXRlbSAgICA9ICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGFJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hQcm9wZXJ0eSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVidWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyAkUHJvcGVydGllc0hhc2g6JyRLZXktPiREYXRhJyBNYXRjaGVkICgkSXRlbSBlcSAkVXNlZENoZWNrc3skS2V5fS0+eyREYXRhfSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICEkTWF0Y2hQcm9wZXJ0eSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJE1hdGNoVHJ5ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBmb3JjZSBvcHRpb24KICAgICAgICAgICAgaWYgKCRGb3JjZU1hdGNoKSB7CiAgICAgICAgICAgICAgICAkTWF0Y2ggICAgPSAxOwogICAgICAgICAgICAgICAgJE1hdGNoVHJ5ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUHJvcGVydGllc0hhc2ggZXEgJ1Byb3BlcnRpZXMnICkgewogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaCAgICA9ICRNYXRjaDsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzTWF0Y2hUcnkgPSAkTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2ggICAgPSAkTWF0Y2g7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnkgPSAkTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgcHJvcGVydGllcyBpcyBtaXNzaW5nCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RlcHtQcm9wZXJ0aWVzfSApICkgewogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaCAgICA9ICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaDsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzTWF0Y2hUcnkgPSAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgcHJvcGVydGllcyBkYXRhYmFzZSBpcyBtaXNzaW5nCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RlcHtQcm9wZXJ0aWVzRGF0YWJhc2V9ICkgKSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2ggICAgPSAkUHJvcGVydGllc01hdGNoOwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoVHJ5ID0gJFByb3BlcnRpZXNNYXRjaFRyeTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB0aGUgZm9sbG93aW5nIGxvZ2ljIHNob3VsZCBiZSBhcHBsaWVkIHRvIGNhbGN1bGF0ZSBpZiBhbiBBQ0wgbWF0Y2hlczoKICAgICAgICAjIGlmIGJvdGggUHJvcGVydGllcyBhbmQgUHJvcGVydGllc0RhdGFiYXNlIG1hdGNoID0+IG1hdGNoCiAgICAgICAgIyBpZiBQcm9wZXJ0aWVzIG1hdGNoZXMsIGFuZCBQcm9wZXJ0aWVzRGF0YWJhc2UgZG9lcyBub3QgbWF0Y2ggPT4gbm8gbWF0Y2gKICAgICAgICAjIGlmIFByb3BlcnRpZXNEYXRhYmFzZSBtYXRjaGVzLCBidXQgUHJvcGVydGllcyBkb2VzIG5vdCBtYXRjaCA9PiBubyBtYXRjaAogICAgICAgICMgaWYgUHJvcGVydGllc0RhdGFiYXNlIG1hdGNoZXMsIGFuZCBQcm9wZXJ0aWVzIGlzIG1pc3NpbmcgPT4gbWF0Y2gKICAgICAgICAjIGlmIFByb3BlcnRpZXMgbWF0Y2hlcywgYW5kIFByb3BlcnRpZXNEYXRhYmFzZSBpcyBtaXNzaW5nID0+IG1hdGNoLgogICAgICAgIG15ICRNYXRjaDsKICAgICAgICBpZiAoICRQcm9wZXJ0aWVzTWF0Y2ggJiYgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoICkgewogICAgICAgICAgICAkTWF0Y2ggPSAxOwogICAgICAgIH0KCiAgICAgICAgbXkgJE1hdGNoVHJ5OwogICAgICAgIGlmICggJFByb3BlcnRpZXNNYXRjaFRyeSAmJiAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnkgKSB7CiAgICAgICAgICAgICRNYXRjaFRyeSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGRlYnVnIGxvZwogICAgICAgIGlmICggJE1hdGNoICYmICRNYXRjaFRyeSApIHsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIE1hdGNoZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU3BlY2lhbFJldHVyblR5cGVzID0gKAogICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAxLAogICAgICAgICAgICBQcm9jZXNzICAgICAgICA9PiAxLAogICAgICAgICAgICBBY3Rpdml0eURpYWxvZyA9PiAxLAogICAgICAgICAgICBGb3JtICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBGb3JtU3RkICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggJFNwZWNpYWxSZXR1cm5UeXBlc3sgJFBhcmFte1JldHVyblR5cGV9IH0gKSB7CgogICAgICAgICAgICAjIGJ1aWxkIG5ldyBTcGVjaWFsIFJldHVyblR5cGUgZGF0YSBoYXNoIChQcm9jZXNzTWFuYWdlbWVudCkKICAgICAgICAgICAgIyBmb3IgU3BlY2lhbCBSZXR1cm5UeXBlIFN0ZXB7UG9zc2libGV9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfQogICAgICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RlcHtQb3NzaWJsZX0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlc2V0IHJldHVybiBkYXRhIGFzIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGgganVzdCB0aGUgUG9zc2libGUgSXRlbXMgZXhjbHVkZWQgdGhlCiAgICAgICAgICAgICAgICAjICAgIG9uZXMgdGhhdCBhcmUgbm90IGluIHRoZSBwb3NzaWJsZSBzZWN0aW9uLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHJlbW92ZSBhbGwKICAgICAgICAgICAgICAgICMgICAgbWlzc2luZyBpdGVtcyBmcm9tIHRoZSBvcmlnaW5hbCBkYXRhCiAgICAgICAgICAgICAgICAlTmV3VG1wRGF0YSA9ICgpOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUmVzZXQgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nJyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGV9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWF0Y2hSZXN1bHQtPntNYXRjaH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3VG1wRGF0YXskSUR9ID0gJERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGUgcGFyYW0gJyREYXRheyRJRH0nIGFkZGVkIHRvIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGUgcGFyYW0gJyREYXRheyRJRH0nIHNraXBwZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZm9yIFNwZWNpYWwgUmV0dXJuVHlwZSBTdGVwe1Bvc3NpYmxlQWRkfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZUFkZH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0KICAgICAgICAgICAgICAgICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFN0ZXB7UG9zc2libGVBZGR9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZUFkZDonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwb3NzaWJsZSBhZGQgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZUFkZH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBmb3IgU3BlY2lhbCBTdGVwe1Bvc3NpYmxlTm90fQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZU5vdH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0KICAgICAgICAgICAgICAgICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFN0ZXB7UG9zc2libGVOb3R9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZU5vdDonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBub3QgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGVOb3R9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMb29wTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJExvb3BNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJE1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIHJlbW92ZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdUbXBEYXRheyRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld1RtcERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlTm90IHBhcmFtICckRGF0YXskSUR9JyBsZWF2ZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICRQYXJhbXtSZXR1cm5UeXBlfSBlcSAnQ29uZmlnSXRlbScgKSB7CgogICAgICAgICAgICAjIGJ1aWxkIG5ldyBjb25maWcgaXRlbSBkYXRhIGhhc2gKICAgICAgICAgICAgIyBTdGVwIENvbmZpZ0l0ZW0gUG9zc2libGUgKFJlc2V0cyBXaGl0ZSBsaXN0KQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZX0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlc2V0IHJldHVybiBkYXRhIGFzIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGgganVzdCB0aGUgUG9zc2libGUgSXRlbXMgZXhjbHVkZWQgdGhlIG9uZXMKICAgICAgICAgICAgICAgICMgdGhhdCBhcmUgbm90IGluIHRoZSBwb3NzaWJsZSBzZWN0aW9uLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHJlbW92ZSBhbGwgbWlzc2luZyBpdGVtcyBmcm9tCiAgICAgICAgICAgICAgICAjIHRoZSBvcmlnaW5hbCBkYXRhCiAgICAgICAgICAgICAgICAlTmV3VG1wRGF0YSA9ICgpOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUmVzZXQgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nJyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGV9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTdGVwIENvbmZpZ0l0ZW0gUG9zc2libGVBZGQgKEFkZCBuZXcgb3B0aW9ucyB0byB0aGUgd2hpdGUgbGlzdCkKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCAlQ2hlY2tzIHx8ICVDaGVja3NEYXRhYmFzZSApCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2gKICAgICAgICAgICAgICAgICYmICRNYXRjaFRyeQogICAgICAgICAgICAgICAgJiYgJFN0ZXB7UG9zc2libGVBZGR9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFVzZU5ld1BhcmFtcyA9IDE7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlQWRkOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICVEYXRhICkgewoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ldyAoIEB7ICRTdGVwe1Bvc3NpYmxlQWRkfS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWF0Y2hSZXN1bHQtPntNYXRjaH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3VG1wRGF0YXskSUR9ID0gJERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVBZGQgcGFyYW0gJyREYXRheyRJRH0nIGFkZGVkIHRvIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVBZGQgcGFyYW0gJyREYXRheyRJRH0nIHNraXBwZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU3RlcCBDb25maWdJdGVtIFBvc3NpYmxlTm90IChyZW1vdmVzIG9wdGlvbnMgZnJvbSB3aGl0ZSBsaXN0KQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZU5vdH0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIGRlYnVnIGxvZwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBVc2VkIHdpdGggUG9zc2libGVOb3Q6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgbm90IHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoID0gMTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ldyAoIEB7ICRTdGVwe1Bvc3NpYmxlTm90fS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMb29wTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJExvb3BNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJE1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIHJlbW92ZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdUbXBEYXRheyRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld1RtcERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlTm90IHBhcmFtICckRGF0YXskSUR9JyBsZWF2ZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRvIG5ldyBwYXJhbXMgaWYgZ2l2ZW4KICAgICAgICBpZiAoJFVzZU5ld1BhcmFtcykgewogICAgICAgICAgICAlTmV3RGF0YSAgICAgICAgICAgID0gJU5ld1RtcERhdGE7CiAgICAgICAgICAgICRVc2VOZXdNYXN0ZXJQYXJhbXMgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyByZXR1cm4gbmV3IHBhcmFtcyBpZiBzdG9wIGFmdGVyIHRoaXMgc3RlcAogICAgICAgIGlmICggJFVzZU5ld1BhcmFtcyAmJiAkU3RlcHtTdG9wQWZ0ZXJNYXRjaH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9ID0gXCVOZXdEYXRhOwoKICAgICAgICAgICAgIyBpZiB3ZSBzdG9wIGFmdGVyIHRoZSBmaXJzdCBtYXRjaAogICAgICAgICAgICAjIGV4aXQgdGhlIEFDTFJVTEVTIGxvb3AKICAgICAgICAgICAgbGFzdCBBQ0xSVUxFUzsKICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gaWYgbm8gbmV3IHBhcmFtIGV4aXN0cwogICAgcmV0dXJuIGlmICEkVXNlTmV3TWFzdGVyUGFyYW1zOwoKICAgICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9ID0gXCVOZXdEYXRhOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUFjbERhdGEoKQoKcmV0dXJuIHRoZSBjdXJyZW50IEFDTCBkYXRhIGhhc2ggYWZ0ZXIgQ29uZmlnSXRlbUFjbCgpCgogICAgbXkgJUFjbCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BY2xEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICV7ICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9IHx8IHt9IH07Cn0KCj1oZWFkMiBDb25maWdJdGVtQWNsQWN0aW9uRGF0YSgpCgpyZXR1cm4gdGhlIGN1cnJlbnQgQUNMIGFjdGlvbiBkYXRhIGhhc2ggYWZ0ZXIgQ29uZmlnSXRlbUFjbCgpCgogICAgbXkgJUFjbEFjdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsQWN0aW9uRGF0YSgpOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1BY2xEYXRhfSApIHsKICAgICAgICByZXR1cm4gJXsgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gfTsKICAgIH0KICAgIHJldHVybiAleyAkU2VsZi0+e0RlZmF1bHRDb25maWdJdGVtQWN0aW9uRGF0YX0gfHwge30gfTsKfQoKPWJlZ2luIEludGVybmFsOgoKPWN1dAoKPWhlYWQyIF9HZXRDaGVja3MoKQoKY3JlYXRlcyB0d28gY2hlY2sgaGFzaGVzIChvbmUgZm9yIGN1cnJlbnQgZGF0YSB1cGRhdGFibGUgdmlhIEFKQVggcmVmcmVzaGVzIGFuZCBhbm90aGVyIGZvcgpzdGF0aWMgY29uZmlnIGl0ZW0gZGF0YSBzdG9yZWQgaW4gdGhlIERCKSB3aXRoIHRoZSByZXF1aXJlZCBkYXRhIHRvIHVzZSBhcyBhIGJhc2lzIHRvIG1hdGNoIHRoZSBBQ0xzCgogICAgbXkgJENoZWNrUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9HZXRDaGVja3MoCiAgICAgICAgQ2hlY2tBbGwgPT4gJzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICBSZXF1aXJlZENoZWNrcyA9PiAkUmVxdWlyZWRDaGVja0hhc2hSZWYsICAgICAgIyBPcHRpb25hbCBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgYXR0cmlidXRlcyB0byBnYXRoZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZS4gZy4gVXNlciA9PiAxLCB3aWxsIGZldGNoIGFsbCB1c2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UsIHRoaXMgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIHdpbGwgYmUgdHJpZWQgdG8gbWF0Y2ggd2l0aCBjdXJyZW50IEFDTHMKICAgICAgICBBY3Rpb24gICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtWm9vbScsICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+IDEyMywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVaID0+ICdzb21lIHZhbHVlJywKICAgICAgICB9LAoKICAgICAgICBSZXNwb25zaWJsZUlEICAgID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCBSZXNwb25zaWJsZUlEIG9yIE5ld1Jlc3BvbnNpYmxlSUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGNhbiBiZSB1c2VkIGFuZCB0aGV5IGJvdGggcmVmZXJzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIFJlc3BvbnNpYmxlSUQKICAgICAgICBSZXNwb25zaWJsZSAgICAgID0+ICdzb21lIHVzZXIgbG9naW4nICAgICAgICAgIyBPcHRpb25hbAoKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VySUQgPT4gMSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBmdW5jdGlvbgogICAgKTsKCnJldHVybnM6CiAgICAkQ2hlY2tzUmVzdWx0ID0gewogICAgICAgIENoZWNrcyA9PiB7CiAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKICAgICAgICBDaGVja3NEYXRhYmFzZSA9PgogICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICB9LAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIF9HZXRDaGVja3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2hlY2tBbGwgICAgICAgPSAkUGFyYW17Q2hlY2tBbGx9OwogICAgbXkgJVJlcXVpcmVkQ2hlY2tzID0gJXsgJFBhcmFte1JlcXVpcmVkQ2hlY2tzfSB9OwoKICAgICMgZ2V0IHVzZWQgaW50ZXJmYWNlIGZvciBwcm9jZXNzIG1hbmFnZW1lbnQgY2hlY2tzCiAgICBteSAkSW50ZXJmYWNlID0gJ0FnZW50SW50ZXJmYWNlJzsKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRJbnRlcmZhY2UgPSAnQ3VzdG9tZXJJbnRlcmZhY2UnOwogICAgfQoKICAgIG15ICVDaGVja3M7CiAgICBteSAlQ2hlY2tzRGF0YWJhc2U7CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSApIHsKICAgICAgICAkQ2hlY2tze0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICAgICAgJENoZWNrc0RhdGFiYXNle0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyB1c2UgY29uZmlnIGl0ZW0gZGF0YSBpZiBjb25maWcgaXRlbSBpZCBpcyBnaXZlbgogICAgIyBkbyB0aGF0IGFsd2F5cywgZXZlbiBpZiAkUmVxdWlyZWRDaGVja3N7Q29uZmlnSXRlbX0gaXMgbm90IHRoYXQKICAgICMgKGJlY2F1c2UgdG9vIG11Y2ggc3R1ZmYgZGVwZW5kcyBvbiBpdCkKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0gPSAkQ29uZmlnSXRlbTsKCiAgICAgICAgIyBrZWVwIGRhdGFiYXNlIGNvbmZpZyBpdGVtIGRhdGEgc2VwYXJhdGVkIHNpbmNlIHRoZSByZWZlcmVuY2UgaXMgYWZmZWN0ZWQgYmVsb3cKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0gPSBcJXskQ29uZmlnSXRlbX07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBtYWtlIGEgcmVhc29uYWJsZSBhdHRlbXB0IHRvIGZpbGwgQ2xhc3MgYmFzZWQgb24gQ2xhc3NJRAogICAgICAgIGlmICggJFBhcmFte0NsYXNzfSAmJiAkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0gPSB7CiAgICAgICAgICAgICAgICBDbGFzcyAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgICAgIG15ICRDbGFzc0RhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19ID0gewogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAkQ2xhc3NEYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhZGRpdGlvbmFsIGRhdGEgZm9yIHN0YW5kYXJkIGF0dHJpYnV0ZXMgbmVlZHMgdG8gYmUgZmV0Y2hlZCBhbmQgaWYsIGRvIHNvCiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVJRH0gKSB7CiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17RGVwbFN0YXRlSUR9LAogICAgICAgICk7CiAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfXtEZXBsU3RhdGV9ICAgPSAkRGVwbFN0YXRlRGF0YS0+e05hbWV9OwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX17RGVwbFN0YXRlSUR9ID0gJFBhcmFte0RlcGxTdGF0ZUlEfTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgbXkgJEluY2lTdGF0ZURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SW5jaVN0YXRlSUR9LAogICAgICAgICk7CiAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfXtJbmNpU3RhdGV9ICAgPSAkSW5jaVN0YXRlRGF0YS0+e05hbWV9OwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX17SW5jaVN0YXRlSUR9ID0gJFBhcmFte0luY2lTdGF0ZUlEfTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBkeW5hbWljIGZpZWxkcwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZH0gKSApIHsKICAgICAgICAkQ2hlY2tze0R5bmFtaWNGaWVsZH0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKCiAgICAgICAgIyB1cGRhdGUgb3IgYWRkIGR5bmFtaWMgZmllbGRzIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHNvcnQga2V5cyAleyAkUGFyYW17RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JER5bmFtaWNGaWVsZE5hbWV9ID0gJFBhcmFte0R5bmFtaWNGaWVsZH0tPnskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgfQogICAgfQoKICAgICMgYWx3YXlzIGdldCBpbmZvIGZyb20gY29uZmlnIGl0ZW0gdG9vIGFuZCBzZXQgaXQgdG8gdGhlIER5bmFtaWMgRmllbGQgY2hlY2sgaGFzaCBpZiB0aGUgaW5mbyBpcwogICAgIyBkaWZmZXJlbnQuIHRoaXMgY2FuIGJlIGRvbmUgYmVjYXVzZSBpbiB0aGUgcHJldmlvdXMgc3RlcCBjb25maWcgaXRlbSBpbmZvIHdhcyB1cGRhdGVkLiBidXQgbWF5YmUKICAgICMgY29uZmlnIGl0ZW0gaGFzIG1vcmUgaW5mb3JtYXRpb24gc3RvcmVkIHRoYW4gaW4gdGhlIER5bmFtaWNGaWVsZCBwYXJhbWV0ZXIuCiAgICBJVFNNQ09ORklHSVRFTUFUVFJJQlVURToKICAgIGZvciBteSAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkQ2hlY2tze0NvbmZpZ0l0ZW19IC8vIHt9IH0gKSB7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhJENvbmZpZ0l0ZW1BdHRyaWJ1dGU7CgogICAgICAgICMgY2hlY2sgaWYgaXMgYSBkeW5hbWljIGZpZWxkIHdpdGggZGF0YQogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9c214OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWRlZmluZWQgJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFIGlmICFsZW5ndGggJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICByZWYgJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRDaGVja3N7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFOwogICAgICAgIH0KCiAgICAgICAgIyBjb21wYXJlIGlmIGRhdGEgaXMgZGlmZmVyZW50IGFuZCBza2lwIG9uIHNhbWUgZGF0YQogICAgICAgIGlmICgKICAgICAgICAgICAgJENoZWNrc3tEeW5hbWljRmllbGR9LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9CiAgICAgICAgICAgICYmICFEYXRhSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICBEYXRhMSA9PiAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgRGF0YTIgPT4gJENoZWNrc3tEeW5hbWljRmllbGR9LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9LAogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU7CiAgICAgICAgfQoKICAgICAgICAkQ2hlY2tze0R5bmFtaWNGaWVsZH0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0gPSAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgfQoKICAgICMgYWxzbyBjb3B5IHRoZSBkYXRhYmFzZSBpbmZvcm1hdGlvbiB0byB0aGUgYXBwcm9wcmlhdGUgaGFzaAogICAgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXsgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19IH0gKSB7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhJENvbmZpZ0l0ZW1BdHRyaWJ1dGU7CgogICAgICAgICMgY2hlY2sgaWYgaXMgYSBkeW5hbWljIGZpZWxkIHdpdGggZGF0YQogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9c214OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWRlZmluZWQgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWxlbmd0aCAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX07CgogICAgICAgIGlmICgKICAgICAgICAgICAgcmVmICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU7CiAgICAgICAgfQoKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7RHluYW1pY0ZpZWxkfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSA9ICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKICAgIH0KCiAgICAjIHVzZSB1c2VyIGRhdGEKICAgIGlmICggKCAkQ2hlY2tBbGwgfHwgJFJlcXVpcmVkQ2hlY2tze1VzZXJ9ICkgJiYgJFBhcmFte1VzZXJJRH0gKSB7CgogICAgICAgIG15ICVVc2VyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgZm9yIG15ICRUeXBlICggQHsgJENvbmZpZ09iamVjdC0+R2V0KCdTeXN0ZW06OlBlcm1pc3Npb24nKSB9ICkgewoKICAgICAgICAgICAgbXkgJUdyb3VwcyA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFR5cGUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAR3JvdXBOYW1lcyA9IHNvcnQgdmFsdWVzICVHcm91cHM7CgogICAgICAgICAgICAkVXNlcnsiR3JvdXBfJFR5cGUifSA9IFxAR3JvdXBOYW1lczsKICAgICAgICB9CgogICAgICAgIG15ICVSb2xlSURzID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uVXNlclJvbGVHZXQoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSBAUm9sZU5hbWVzID0gc29ydCB2YWx1ZXMgJVJvbGVJRHM7CgogICAgICAgICRVc2Vye1JvbGV9ICAgICAgICAgICA9IFxAUm9sZU5hbWVzOwogICAgICAgICRDaGVja3N7VXNlcn0gICAgICAgICA9IFwlVXNlcjsKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7VXNlcn0gPSBcJVVzZXI7CiAgICB9CgogICAgIyB1c2UgdHlwZSBkYXRhIChpZiBnaXZlbikKICAgIGlmICggJENoZWNrQWxsIHx8ICRSZXF1aXJlZENoZWNrc3tUeXBlfSApIHsKCiAgICAgICAgIyBnZXQgdHlwZSBvYmplY3QKICAgICAgICBteSAkVHlwZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyk7CgogICAgICAgIGlmICggJFBhcmFte1R5cGVJRH0gKSB7CiAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJFBhcmFte1R5cGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENoZWNrc3tUeXBlfSA9IFwlVHlwZTsKCiAgICAgICAgICAgICMgdXBkYXRlIG9yIGFkZCBjb25maWcgaXRlbSB0eXBlIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZX0gICA9ICRDaGVja3N7VHlwZX0tPntOYW1lfTsKICAgICAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGVJRH0gPSAkQ2hlY2tze1R5cGV9LT57SUR9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtUeXBlfSApIHsKCiAgICAgICAgICAgICMgVE9ETyBBdHRlbnRpb24hCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBUaGUgcGFyYW1ldGVyIHR5cGUgY2FuIGNvbnRhaW4gbm90IG9ubHkgdGhlIHdhbnRlZCBjb25maWcgaXRlbSB0eXBlLCBiZWNhdXNlIGFsc28KICAgICAgICAgICAgIyBzb21lIG90aGVyIGZ1bmN0aW9ucyBpbiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtLnBtIHVzZSBhIHR5cGUgcGFyYW1ldGVyLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAjIE1vdmVMaXN0KCkgZXRjLi4uIFRoZXNlIGZ1bmN0aW9ucyBjb3VsZCBiZSByZXdyaXR0ZW4gdG8gbm90CiAgICAgICAgICAgICMgdXNlIGEgVHlwZSBwYXJhbWV0ZXIsIG9yIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIENvbmZpZ0l0ZW1BY2woKSBjb3VsZCBiZSBtb2RpZmllZCB0bwogICAgICAgICAgICAjIG5vdCBqdXN0IHBhc3MgdGhlIGNvbXBsZXRlIFBhcmFtLUhhc2gsIGJ1dCBpbnN0ZWFkIGEgbmV3IHBhcmFtZXRlciwgbGlrZSBGcm9udEVuZFBhcmFtZXRlci4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIEFzIGEgd29ya2Fyb3VuZCB3ZSBsb29rdXAgdGhlIFR5cGVMaXN0IGZpcnN0LCBhbmQgY29tcGFyZSBpZiB0aGUgdHlwZSBwYXJhbWV0ZXIKICAgICAgICAgICAgIyBpcyBmb3VuZCBpbiB0aGUgbGlzdCwgc28gd2UgY2FuIGJlIG1vcmUgc3VyZSB0aGF0IGl0IGlzIHRoZSB0eXBlIHRoYXQgd2Ugd2FudCBoZXJlLgoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIHR5cGUgbGlzdCAod29ya2Fyb3VuZCBmb3IgZGVzY3JpYmVkIHByb2JsZW0pCiAgICAgICAgICAgIG15ICVUeXBlTGlzdCA9IHJldmVyc2UgJFR5cGVPYmplY3QtPlR5cGVMaXN0KCk7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHR5cGUgaXMgaW4gdGhlIHR5cGUgbGlzdCAod29ya2Fyb3VuZCBmb3IgZGVzY3JpYmVkIHByb2JsZW0pCiAgICAgICAgICAgIGlmICggJFR5cGVMaXN0eyAkUGFyYW17VHlwZX0gfSApIHsKICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkQ2hlY2tze1R5cGV9ID0gXCVUeXBlOwoKICAgICAgICAgICAgICAgICMgdXBkYXRlIG9yIGFkZCBjb25maWcgaXRlbSB0eXBlIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgICAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGV9ICAgPSAkQ2hlY2tze1R5cGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZUlEfSA9ICRDaGVja3N7VHlwZX0tPntJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhJFBhcmFte1R5cGVJRH0gJiYgISRQYXJhbXtUeXBlfSApIHsKICAgICAgICAgICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGVJRH0gKSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0eXBlIGRhdGEgZnJvbSB0aGUgY29uZmlnIGl0ZW0KICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgSUQgICAgID0+ICRDaGVja3N7Q29uZmlnSXRlbX0tPntUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDaGVja3N7VHlwZX0gPSBcJVR5cGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGhhc2ggd2l0aCB0aGUgY29uZmlnIGl0ZW0gaW5mb3JtYXRpb24gc3RvcmVkIGluIHRoZSBkYXRhYmFzZQogICAgICAgIGlmICggSXNQb3NpdGl2ZUludGVnZXIoICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+e1R5cGVJRH0gKSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgZGF0YWJhc2UgZGF0YSBtYXRjaGVzIGN1cnJlbnQgZGF0YSAocGVyZm9ybWFuY2UpCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIGRlZmluZWQgJENoZWNrc3tUeXBlfS0+e0lEfQogICAgICAgICAgICAgICAgJiYgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57VHlwZUlEfSBlcSAkQ2hlY2tze1R5cGV9LT57SUR9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRDaGVja3NEYXRhYmFzZXtUeXBlfSA9ICRDaGVja3N7VHlwZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIGNvbXBsZXRlIHRoZSBkYXRhIHF1ZXJ5aW5nIHRoZSBkYXRhYmFzZSBhZ2FpbgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgSUQgICAgID0+ICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+e1R5cGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENoZWNrc0RhdGFiYXNle1R5cGV9ID0gXCVUeXBlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgd2l0aGluIHRoaXMgZnVuY3Rpb24gJVBhcmFtIGlzIG1vZGlmaWVkIGJ5IHJlcGxhY2VtZW50cyBsaWtlOgogICAgIyAgICAkUGFyYW17UHJpb3JpdHlJRH0gPSAkUGFyYW17TmV3UHJpb3JpdHlJRH0KICAgICMgICAgYXBwYXJlbnRseSB0aGlzIGNoYW5nZXMgYXJlIG5vdCBsb25nZXIgbmVlZGVkIG91dHNpZGUgdGhpcyBmdW5jdGlvbiBhbmQgaXQgaXMgbm90IG5lY2Vzc2FyeQogICAgIyAgICB0byByZXR1cm4gc3VjaCByZXBsYWNlbWVudHMKCiAgICByZXR1cm4gewogICAgICAgIENoZWNrcyAgICAgICAgID0+IFwlQ2hlY2tzLAogICAgICAgIENoZWNrc0RhdGFiYXNlID0+IFwlQ2hlY2tzRGF0YWJhc2UsCiAgICB9Owp9Cgo9aGVhZDIgX0NvbXBhcmVNYXRjaFdpdGhEYXRhKCkKCkNvbXBhcmVzIGEgcHJvcGVydGllcyBlbGVtZW50IHdpdGggdGhlIGRhdGEgc2VudCB0byB0aGUgQUNMLCB0aGUgY29tcGFyZSByZXN1bHRzIHZhcmllcyBvbiBob3cgdGhlCkFDTCBwcm9wZXJ0aWVzIHdoZXJlIGRlZmluZWQgaW5jbHVkaW5nIG5vcm1hbCwgbmVnYXRlZCwgcmVndWxhciBleHByZXNzaW9uIGFuZCBuZWdhdGVkIHJlZ3VsYXIKZXhwcmVzc2lvbiBjb21wYXJpc29ucy4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICBNYXRjaCA9PiAnYSB2YWx1ZScsICAgICAgICAgIyBvciAnW05vdF1hIHZhbHVlJywgb3IgJ1tSZWdFeHBddmFsJyBvciAnW05vdFJlZ0V4cF12YWwnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgb3IgJ1tOb3RyZWdleHBddmFsJyBvciAnW05vdHJlZ2V4cF0nCiAgICAgICAgRGF0YSA9PiAnYSB2YWx1ZScsCiAgICAgICAgU2luZ2xlSXRlbSA9PiAxLCAgICAgICAgICAgICMgb3IgMCwgb3B0aW9uYWwsIGRlZmF1bHQgMAogICAgKTsKClJldHVybnM6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsICAgICAgICAgICAgICAgIyBvciBmYWxzZQogICAgICAgIE1hdGNoICAgPT4gMSwgICAgICAgICAgICAgICAjIG9yIGZhbHNlCiAgICAgICAgU2tpcCAgICA9PiAxLCAgICAgICAgICAgICAgICMgb3IgZmFsc2UgKGluIGNlcnRhaW4gY2FzZXMgd2hlcmUgU2luZ2xlSXRlbSBpcyBzZXQpCiAgICB9OwoKPWN1dAoKc3ViIF9Db21wYXJlTWF0Y2hXaXRoRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTWF0Y2ggRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkTWF0Y2ggPSAkUGFyYW17TWF0Y2h9OwogICAgbXkgJERhdGEgID0gJFBhcmFte0RhdGF9OwoKICAgICMgTmVnYXRlZCBtYXRjaGVzIHJlcXVpcmVzIGEgZGlmZmVyZW50IGxvZ2ljLgogICAgaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbTm90JyApIGVxICdbTm90JyApIHsKCiAgICAgICAgIyBOb3QgZXF1YWwgbWF0Y2gKICAgICAgICBpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tOb3RdJyApIGVxICdbTm90XScgKSB7CiAgICAgICAgICAgIG15ICROb3RWYWx1ZSA9IHN1YnN0ciAkTWF0Y2gsIGxlbmd0aCAnW05vdF0nOwogICAgICAgICAgICBpZiAoICROb3RWYWx1ZSBlcSAkRGF0YSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTm90IHJlZy1leHAgbWF0Y2ggY2FzZS1zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbTm90UmVnRXhwXScgKSBlcSAnW05vdFJlZ0V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbTm90UmVnRXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBOb3QgcmVnLWV4cCBtYXRjaCBjYXNlLWluc2Vuc2l0aXZlLgogICAgICAgIGVsc2lmICggc3Vic3RyKCAkTWF0Y2gsIDAsIGxlbmd0aCAnW05vdHJlZ2V4cF0nICkgZXEgJ1tOb3RyZWdleHBdJyApIHsKICAgICAgICAgICAgbXkgJFJlZ0V4cCA9IHN1YnN0ciAkTWF0Y2gsIGxlbmd0aCAnW05vdHJlZ2V4cF0nOwogICAgICAgICAgICBpZiAoICREYXRhID1+IC8kUmVnRXhwL2kgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDAsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYXJhbXtTaW5nbGVJdGVtfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgICAgIFNraXAgICAgPT4gMCwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDEsCiAgICAgICAgICAgICAgICBTa2lwICAgID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgRXF1YWwgbWF0Y2guCiAgICAgICAgaWYgKCAkTWF0Y2ggZXEgJERhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIFJlZy1leHAgbWF0Y2ggY2FzZS1zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbUmVnRXhwXScgKSBlcSAnW1JlZ0V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbUmVnRXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAxLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBSZWctZXhwIG1hdGNoIGNhc2UtaW5zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbcmVnZXhwXScgKSBlcSAnW3JlZ2V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbcmVnZXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvaSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte1NpbmdsZUl0ZW19ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgU2tpcCAgICA9PiAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMCwKICAgICAgICAgICAgICAgIFNraXAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9Cn0KCj1lbmQgSW50ZXJuYWw6Cgo9Y3V0CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2g7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0gZm9yIGNvbmZpZyBpdGVtIHNlYXJjaAoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29uZmlnIGl0ZW0gc2VhcmNoIGZ1bmN0aW9ucy4gVGhlIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHZpYSB0aGUgQzxLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0+IG9iamVjdC4KCj1oZWFkMiBDb25maWdJdGVtU2VhcmNoKCkKClRvIGZpbmQgY29uZmlnIGl0ZW1zIGluIHlvdXIgc3lzdGVtLgoKICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgIyByZXN1bHQgKG9wdGlvbmFsLCBkZWZhdWx0IGlzICdIQVNIJykKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJyB8fCAnSEFTSCcgfHwgJ0NPVU5UJywKCiAgICAgICAgIyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwMDApCiAgICAgICAgTGltaXQgPT4gMTAwLAoKICAgICAgICAjIFVzZSBDb25maWdJdGVtU2VhcmNoIGFzIGEgY29uZmlnIGl0ZW0gZmlsdGVyIG9uIGEgc2luZ2xlIGNvbmZpZyBpdGVtLAogICAgICAgICMgb3IgYSBwcmVkZWZpbmVkIGNvbmZpZyBpdGVtIGxpc3QKICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IDEyMzQsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiBbMTIzNCwgMTIzNV0sCgogICAgICAgICMgY29uZmlnIGl0ZW0gbnVtYmVyIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgTnVtYmVyID0+ICclMTIzNTQ2JScsCiAgICAgICAgTnVtYmVyID0+IFsnJTEyMzU0NiUnLCAnJTEyMzY2NiUnXSwKCiAgICAgICAgIyBjb25maWcgaXRlbSBuYW1lIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgIyBXaGVuIENvbmRpdGlvbklubGluZSBpcyBzZXQgdGhlbiByZW1haW5pbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSAmJiBjb25kaXRpb24gYW5kCiAgICAgICAgIyBhbmQgdGhlIHNldHRpbmdzIG9mIENvbnRlbnRTZWFyY2hQcmVmaXggYW5kIENvbnRlbnRTZWFyY2hTdWZmaXggd2lsbCBiZSBob25vcmVkLgogICAgICAgIE5hbWUgPT4gJyVTb21lVGV4dCUnLAogICAgICAgIE5hbWUgPT4gWyclU29tZVRlc3QxJScsICclU29tZVRlc3QyJSddLAoKICAgICAgICBDbGFzc2VzICAgICAgICAgPT4gWydDb21wdXRlcicsICdOZXR3b3JrJ10gICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgICAgPT4gWzksIDgsIDcsIDZdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgRGVwbFN0YXRlcyAgICAgID0+IFsnUHJvZHVjdGlvbiddICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzICAgID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIEN1ckRlcGxTdGF0ZXMgICA9PiBbJ1Byb2R1Y3Rpb24nXSAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEN1ckRlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBJbmNpU3RhdGVzICAgICAgPT4gWydXYXJuaW5nJ10gICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gWzEsIDIsIDMsIDRdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3VySW5jaVN0YXRlcyAgID0+IFsnV2FybmluZyddICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VySW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIENyZWF0ZUJ5ICAgICAgICA9PiBbMSwgMiwgM10sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENoYW5nZUJ5ICAgICAgICA9PiBbMywgMiwgMV0sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVtcHR5ICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIHdpbGwgcmV0dXJuIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgYSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXQgdG8gMCB0byBzZWFyY2ggZmllbGRzIHdpdGggYSB2YWx1ZSBwcmVzZW50CiAgICAgICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTGlrZSAgICAgICAgICAgICAgPT4gJ3ZhbHVlKicsICAgICAgICAgICAgICAgICMgImVxdWFscyIgb3BlcmF0b3Igd2l0aCB3aWxkY2FyZCBzdXBwb3J0CiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICcyMDAxLTAxLTAxIDAxOjAxOjAxJywKICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJzIwMDEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnMjAwMi0wMi0wMiAwMjowMjowMicsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+ICcyMDAyLTAyLTAyIDAyOjAyOjAyJywKICAgICAgICB9CgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY3JlYXRlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoY29uZmlnIGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoY29uZmlnIGl0ZW0gb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNoYW5nZWQgdGltZSBhZnRlciAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIE9yZGVyQnkgKG9wdGlvbmFsLCBkZWZhdWx0IGlzICdEb3duJykKICAgICAgICBPcmRlckJ5ID0+ICdEb3duJywgICMgRG93bnxVcAoKICAgICAgICAjIFNvcnRCeSAob3B0aW9uYWwsIGRlZmF1bHQgaXMgJ051bWJlcicpCiAgICAgICAgU29ydEJ5ICA9PiAnTmFtZScsCgogICAgICAgICMgT3JkZXJCeSBhbmQgU29ydEJ5IGFzIEFSUkFZIGZvciBzdWIgc29ydGluZyAob3B0aW9uYWwpCiAgICAgICAgT3JkZXJCeSA9PiBbJ0Rvd24nLCAnVXAnXSwKICAgICAgICBTb3J0QnkgID0+IFsnQ29uZmlnSXRlbUlEJywgJ051bWJlciddLAoKICAgICAgICAjIHVzZXIgc2VhcmNoCiAgICAgICAgVXNlcklEICAgICA9PiAxMjMsICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBQZXJtaXNzaW9uID0+ICdybycgfHwgJ3J3JywgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAncm8nCgogICAgICAgICMgQ2FjaGVUVEwsIGNhY2hlIHNlYXJjaCByZXN1bHQgaW4gc2Vjb25kcyAob3B0aW9uYWwsIHRoZSBkZWZhdWx0IGlzIGZvdXIgbWludXRlcykKICAgICAgICBDYWNoZVRUTCA9PiA2MCAqIDE1LAoKICAgICAgICAjIEVuLSBvciBkaXNhYmxlIHVzYWdlIG9mIFF1ZXJ5Q29uZGl0aW9uOyBjb250cm9sbGluZyB0aGUgZXZhbHVhdGlvbiBvZiBzb21lIHNwZWNpYWwgY2hhcmFjdGVycywgZS5nLiAnKycsIGFzIHNlYXJjaCBvcGVyYXRvcnMKICAgICAgICAjIGRlZmF1bHQgMQogICAgICAgIFF1ZXJ5Q29uZGl0aW9uID0+ICgxfDApLAogICAgKTsKClJldHVybnMgZm9yIEM8UmVzdWx0ID0+ICdBUlJBWSc+OgoKICAgIEBDb25maWdJdGVtSURzID0gKCAxLCAyLCAzICk7CgpSZXR1cm5zIGZvciBDPFJlc3VsdCA9PiAnSEFTSCc+IG9yIHdoZW4gbm8gcmVzdWx0IHR5cGUgaXMgc3BlY2lmaWVkOgoKICAgICVDb25maWdJdGVtSURzID0gKAogICAgICAgIDEgPT4gJzIwMTAxMDI3MDAwMDEnLAogICAgICAgIDIgPT4gJzIwMTAxMDI3MDAwMDInLAogICAgICAgIDMgPT4gJzIwMTAxMDI3MDAwMDMnLAogICAgKTsKClJldHVybnMgZm9yIEM8UmVzdWx0ID0+ICdDT1VOVCc+OgoKICAgICROdW1Db25maWdJdGVtSURzID0gMzsgIyB0aHJlZSByZXN1bHRzCgo9Y3V0CgojIFRPRE86IENoZWNrIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhpcyBpcyBjYWxsZWQuIENoYW5nZSBEeW5hbWljRmllbGRzLCBPcmRlckJ5IC0+IFNvcnRCeSwgT3JkZXJCeURpcmVjdGlvbiAtPiBPcmRlckJ5LCBSZXR1cm4gPT4gQVJSQVkgcmV0dXJucyBub3QgYSByZWYKc3ViIENvbmZpZ0l0ZW1TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlZmF1bHQgdmFsdWVzCiAgICBteSAkUmVzdWx0ICAgICAgICAgPSAkUGFyYW17UmVzdWx0fSAgfHwgJ0hBU0gnOwogICAgbXkgJE9yZGVyQnkgICAgICAgID0gJFBhcmFte09yZGVyQnl9IHx8ICdEb3duJzsKICAgIG15ICRTb3J0QnkgICAgICAgICA9ICRQYXJhbXtTb3J0Qnl9ICB8fCAnTnVtYmVyJzsKICAgIG15ICRMaW1pdCAgICAgICAgICA9ICRQYXJhbXtMaW1pdH0gICB8fCAxMDAwMDsKICAgIG15ICRRdWVyeUNvbmRpdGlvbiA9ICRQYXJhbXtRdWVyeUNvbmRpdGlvbn0gLy8gMTsKCiAgICBteSAlU29ydE9wdGlvbnMgPSAoCiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTnVtYmVyICAgICAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICd2Lm5hbWUnLAogICAgICAgIERlcGxTdGF0ZSAgICA9PiAnZ2NfZGVwbC5uYW1lJywKICAgICAgICBJbmNpU3RhdGUgICAgPT4gJ2djX2luY2kubmFtZScsCiAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdnY19jZGVwbC5uYW1lJywKICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ2djX2NpbmNpLm5hbWUnLAogICAgICAgIEFnZSAgICAgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENyZWF0ZWQgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENoYW5nZWQgICAgICA9PiAnY2kuY2hhbmdlX3RpbWUnLAogICAgKTsKCiAgICAjIGNoZWNrIHR5cGVzIG9mIGdpdmVuIGFyZ3VtZW50cwogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgICAgICBDbGFzc0lEcyBEZXBsU3RhdGVJRHMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZUlEcyBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIG5leHQgS0VZIGlmICEkUGFyYW17JEtleX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoeSBubyBzZWFyY2ggZm9yICcwJyA/Pz8KICAgICAgICBuZXh0IEtFWSBpZiByZWYgJFBhcmFteyRLZXl9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFteyRLZXl9IH07CgogICAgICAgICMgbG9nIGVycm9yCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZ2l2ZW4gcGFyYW0gJyRLZXknIGlzIGludmFsaWQgb3IgYW4gZW1wdHkgYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IG9iamVjdHMKICAgIG15ICREQk9iamVjdCAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBxdW90ZSBpZCBhcnJheSBlbGVtZW50cwogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEtleSAoCiAgICAgICAgcXcoCiAgICAgICAgICAgIENsYXNzSURzIERlcGxTdGF0ZUlEcyBDdXJEZXBsU3RhdGVJRHMgSW5jaVN0YXRlSURzIEN1ckluY2lTdGF0ZUlEcyBDcmVhdGVCeSBDaGFuZ2VCeQogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAhJFBhcmFteyRLZXl9OwoKICAgICAgICAjIHF1b3RlIGVsZW1lbnRzCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggQHsgJFBhcmFteyRLZXl9IH0gKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJERCT2JqZWN0LT5RdW90ZSggJEVsZW1lbnQsICdJbnRlZ2VyJyApICkgewoKICAgICAgICAgICAgICAgICMgbG9nIGVycm9yCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZ2l2ZW4gcGFyYW0gJyRFbGVtZW50JyBpbiAnJEtleScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHNvcnQvb3JkZXIgYnkgb3B0aW9ucwogICAgbXkgQFNvcnRCeUFycmF5ICA9IHJlZiAkU29ydEJ5IGVxICdBUlJBWScgID8gJFNvcnRCeS0+QCogIDogJFNvcnRCeTsKICAgIG15IEBPcmRlckJ5QXJyYXkgPSByZWYgJE9yZGVyQnkgZXEgJ0FSUkFZJyA/ICRPcmRlckJ5LT5AKiA6ICRPcmRlckJ5OwoKICAgIGZvciBteSAkQ291bnQgKCAwIC4uICQjU29ydEJ5QXJyYXkgKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFNvcnRPcHRpb25zeyAkU29ydEJ5QXJyYXlbJENvdW50XSB9CiAgICAgICAgICAgICYmICRTb3J0QnlBcnJheVskQ291bnRdICF+IC9eRHluYW1pY0ZpZWxkXy8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdmFsaWQgU29ydEJ5ICgnIC4gJFNvcnRCeUFycmF5WyRDb3VudF0gLiAnKSEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBUT0RPOiBmYWxsIGJhY2sgdG8gYSBkZWZhdWx0IG9mICdVcCcKICAgICAgICBpZiAoICRPcmRlckJ5QXJyYXlbJENvdW50XSBuZSAnRG93bicgJiYgJE9yZGVyQnlBcnJheVskQ291bnRdIG5lICdVcCcgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHZhbGlkIE9yZGVyQnkgKCcgLiAkT3JkZXJCeUFycmF5WyRDb3VudF0gLiAnKSEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBzcWwKICAgIG15ICRTUUxTZWxlY3Q7CgogICAgIyBUT0RPOiBhZGQgdmVyc2lvbiBzZWFyY2gKICAgIGlmICggJFJlc3VsdCBlcSAnQ09VTlQnICkgewogICAgICAgICRTUUxTZWxlY3QgPSAnU0VMRUNUIENPVU5UKERJU1RJTkNUKGNpLmlkKSknOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNRTFNlbGVjdCA9ICdTRUxFQ1QgRElTVElOQ1QgY2kuaWQsIGNpLmNvbmZpZ2l0ZW1fbnVtYmVyJzsKICAgIH0KCiAgICBteSAkU1FMRnJvbSA9ICcgRlJPTSBjb25maWdpdGVtIGNpJzsKCiAgICAjIGNoZWNrIGZvciBuZWVkZWQgdmVyc2lvbiBzZWFyY2ggaW5kZXggdGFibGUgam9pbgogICAgbXkgJFZlcnNpb25UYWJsZUpvaW5lZDsKICAgIGlmICggJFNlbGYtPl9WZXJzaW9uU2VhcmNoSW5kZXhTUUxKb2luTmVlZGVkKCBTZWFyY2hQYXJhbXMgPT4gXCVQYXJhbSApICkgewogICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdiBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkJzsKICAgICAgICAkVmVyc2lvblRhYmxlSm9pbmVkID0gMTsKICAgIH0KCiAgICBteSAkU1FMRXh0ID0gJyBXSEVSRSAxID0gMSc7CgogICAgIyBMaW1pdCB0aGUgc2VhcmNoIHRvIGp1c3Qgb25lIChvciBhIGxpc3QpIENvbmZpZ0l0ZW1JRAogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSApIHsKCiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdjaS5pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiByZWYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gZXEgJ0FSUkFZJyA/ICRQYXJhbXtDb25maWdJdGVtSUR9IDogWyAkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBjbGFzc2VzCiAgICBpZiAoICRQYXJhbXtDbGFzc2VzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICkgLy8ge30KICAgICAgICB9OwoKICAgICAgICBmb3IgbXkgJENsYXNzICggQHsgJFBhcmFte0NsYXNzZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkQ2xhc3NMb29rdXB7JENsYXNzfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIElEIGZvciAkQ2xhc3MgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtDbGFzc0lEc30gfSwgJENsYXNzTG9va3VweyRDbGFzc307CiAgICAgICAgfQogICAgfQoKICAgICMgcGVybWlzc2lvbnMgYXJlIGhhbmRsZWQgdmlhIGNsYXNzZXMKICAgIGlmICggJFBhcmFte1VzZXJJRH0gJiYgJFBhcmFte1VzZXJJRH0gIT0gMSApIHsKCiAgICAgICAgbXkgQENsYXNzSURzID0gJFBhcmFte0NsYXNzSURzfSA/ICRQYXJhbXtDbGFzc0lEc30tPkAqIDoKICAgICAgICAgICAga2V5cyAlewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgKSAvLyB7fQogICAgICAgICAgICB9OwoKICAgICAgICBteSBAQWxsb3dlZENsYXNzSURzOwoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKEBDbGFzc0lEcykgewogICAgICAgICAgICBteSAkSGFzQWNjZXNzID0gJFNlbGYtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJFBhcmFte1Blcm1pc3Npb259IC8vICdybycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJEhhc0FjY2VzcykgewogICAgICAgICAgICAgICAgcHVzaCBAQWxsb3dlZENsYXNzSURzLCAkQ2xhc3NJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGlmICFAQWxsb3dlZENsYXNzSURzOwoKICAgICAgICAkUGFyYW17Q2xhc3NJRHN9ID0gXEBBbGxvd2VkQ2xhc3NJRHM7CiAgICB9CgogICAgIyBjbGFzcyBpZHMKICAgIGlmICggJFBhcmFte0NsYXNzSURzfSApIHsKICAgICAgICBteSAkU1FMUXVlcnlJbkNvbmRpdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ2NpLmNsYXNzX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtDbGFzc0lEc30sCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoICcgLiAkU1FMUXVlcnlJbkNvbmRpdGlvbiAuICcgKSAnOwogICAgfQoKICAgICMgbG9va3VwIGRlcGxveW1lbnQgc3RhdGVzCiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVEZXBsU3RhdGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgKSAvLyB7fQogICAgICAgIH07CgogICAgICAgIGZvciBteSAkRGVwbFN0YXRlICggQHsgJFBhcmFte0RlcGxTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkRGVwbFN0YXRlTG9va3VweyREZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gSUQgZm9yICREZXBsU3RhdGUgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtEZXBsU3RhdGVJRHN9IH0sICREZXBsU3RhdGVMb29rdXB7JERlcGxTdGF0ZX07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVwbG95bWVudCBzdGF0ZSBpZHMKICAgIGlmICggJFBhcmFte0RlcGxTdGF0ZUlEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICd2LmRlcGxfc3RhdGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gJFBhcmFte0RlcGxTdGF0ZUlEc30sCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoICcgLiAkU1FMUXVlcnlJbkNvbmRpdGlvbiAuICcgKSAnOwogICAgfQoKICAgICMgbG9va3VwIGN1cnJlbnQgZGVwbG95bWVudCBzdGF0ZXMKICAgIGlmICggJFBhcmFte0N1ckRlcGxTdGF0ZXN9ICkgewoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJUN1ckRlcGxTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRDdXJEZXBsU3RhdGUgKCBAeyAkUGFyYW17Q3VyRGVwbFN0YXRlc30gfSApIHsKCiAgICAgICAgICAgIGlmICggISRDdXJEZXBsU3RhdGVMb29rdXB7JEN1ckRlcGxTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJEN1ckRlcGxTdGF0ZSBmb3VuZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0N1ckRlcGxTdGF0ZUlEc30gfSwgJEN1ckRlcGxTdGF0ZUxvb2t1cHskQ3VyRGVwbFN0YXRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjdXJyZW50IGRlcGxveW1lbnQgc3RhdGUgaWRzCiAgICBpZiAoICRQYXJhbXtDdXJEZXBsU3RhdGVJRHN9ICkgewogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnY2kuY3VyX2RlcGxfc3RhdGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gJFBhcmFte0N1ckRlcGxTdGF0ZUlEc30sCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoICcgLiAkU1FMUXVlcnlJbkNvbmRpdGlvbiAuICcgKSAnOwogICAgfQoKICAgICMgbG9va3VwIGluY2lkZW50IHN0YXRlcwogICAgaWYgKCAkUGFyYW17SW5jaVN0YXRlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlSW5jaVN0YXRlTG9va3VwID0gcmV2ZXJzZSAlewogICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRJbmNpU3RhdGUgKCBAeyAkUGFyYW17SW5jaVN0YXRlc30gfSApIHsKCiAgICAgICAgICAgIGlmICggISRJbmNpU3RhdGVMb29rdXB7JEluY2lTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJEluY2lTdGF0ZSBmb3VuZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0luY2lTdGF0ZUlEc30gfSwgJEluY2lTdGF0ZUxvb2t1cHskSW5jaVN0YXRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBpbmNpZGVudCBzdGF0ZSBpZHMKICAgIGlmICggJFBhcmFte0luY2lTdGF0ZUlEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICd2LmluY2lfc3RhdGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gJFBhcmFte0luY2lTdGF0ZUlEc30sCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CiAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoICcgLiAkU1FMUXVlcnlJbkNvbmRpdGlvbiAuICcgKSAnOwogICAgfQoKICAgICMgbG9va3VwIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGVzCiAgICBpZiAoICRQYXJhbXtDdXJJbmNpU3RhdGVzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVDdXJJbmNpU3RhdGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgICkgLy8ge30KICAgICAgICB9OwoKICAgICAgICBmb3IgbXkgJEN1ckluY2lTdGF0ZSAoIEB7ICRQYXJhbXtDdXJJbmNpU3RhdGVzfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJEN1ckluY2lTdGF0ZUxvb2t1cHskQ3VySW5jaVN0YXRlfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIElEIGZvciAkQ3VySW5jaVN0YXRlIGZvdW5kISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17Q3VySW5jaVN0YXRlSURzfSB9LCAkQ3VySW5jaVN0YXRlTG9va3VweyRDdXJJbmNpU3RhdGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGluY2lkZW50IHN0YXRlIGlkcwogICAgaWYgKCAkUGFyYW17Q3VySW5jaVN0YXRlSURzfSApIHsKICAgICAgICBteSAkU1FMUXVlcnlJbkNvbmRpdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ2NpLmN1cl9pbmNpX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtDdXJJbmNpU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIG90aGVyIGNvbmZpZyBpdGVtIHN0dWZmCiAgICBteSAlRmllbGRTUUxNYXAgPSAoCiAgICAgICAgTnVtYmVyICAgPT4gJ2NpLmNvbmZpZ2l0ZW1fbnVtYmVyJywKICAgICAgICBOYW1lICAgICA9PiAndi5uYW1lJywKICAgICAgICBDcmVhdGVCeSA9PiAnY2kuY3JlYXRlX2J5JywKICAgICAgICBDaGFuZ2VCeSA9PiAnY2kuY2hhbmdlX2J5JywKICAgICk7CgogICAgQVRUUklCVVRFOgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUZpZWxkU1FMTWFwICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICFkZWZpbmVkICRQYXJhbXskS2V5fTsKCiAgICAgICAgIyBpZiBpdCdzIG5vIHJlZiwgcHV0IGl0IHRvIGFycmF5IHJlZgogICAgICAgIGlmICggcmVmICRQYXJhbXskS2V5fSBlcSAnJyApIHsKICAgICAgICAgICAgJFBhcmFteyRLZXl9ID0gWyAkUGFyYW17JEtleX0gXTsKICAgICAgICB9CgogICAgICAgICMgcHJvY2VzcyBhcnJheSByZWYKICAgICAgICBteSAkVXNlZCA9IDA7CgogICAgICAgIFZBTFVFOgogICAgICAgIGZvciBteSAkVmFsdWUgKCBAeyAkUGFyYW17JEtleX0gfSApIHsKICAgICAgICAgICAgbmV4dCBWQUxVRSBpZiAhZGVmaW5lZCAkVmFsdWUgfHwgIWxlbmd0aCAkVmFsdWU7CgogICAgICAgICAgICAkVmFsdWUgPX4gcy9cKi8lL2dpOwoKICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPX4gL15cJXsxLDN9JC87CgogICAgICAgICAgICBpZiAoICEkVXNlZCApIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCc7CiAgICAgICAgICAgICAgICAkVXNlZCA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcgT1IgJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRRdWVyeUNvbmRpdGlvbikgewoKICAgICAgICAgICAgICAgICMgdXNlIHNlYXJjaCBjb25kaXRpb24gZXh0ZW5zaW9uCiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICREQk9iamVjdC0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEZpZWxkU1FMTWFweyRLZXl9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICRGaWVsZFNRTE1hcHskS2V5fSAuICIgPSAnIiAuICREQk9iamVjdC0+UXVvdGUoJFZhbHVlKSAuICInIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRVc2VkKSB7CiAgICAgICAgICAgICRTUUxFeHQgLj0gJyknOwogICAgICAgIH0KICAgIH0KCiAgICAjIFJlbWVtYmVyIGFscmVhZHkgam9pbmVkIHRhYmxlcyBmb3Igc29ydGluZy4KICAgIG15ICVEeW5hbWljRmllbGRKb2luVGFibGVzOwogICAgbXkgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyID0gMTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICRQYXJhbU5hbWUgKCBrZXlzICVQYXJhbSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBhcmFtTmFtZSA9fiBtL15EeW5hbWljRmllbGRfKC4rKS87CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZC0+JSogKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IHFxW05vIHN1Y2ggZHluYW1pYyBmaWVsZCAiJDEiIChvciBpdCBpcyBpbmFjdGl2ZSldLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNlYXJjaFBhcmFtID0gZGVsZXRlICRQYXJhbXsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGQtPntOYW1lfSJ9OwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlYXJjaFBhcmFtOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyByZWYgJFNlYXJjaFBhcmFtIGVxICdIQVNIJzsKCiAgICAgICAgbXkgJE5lZWRKb2luOwogICAgICAgIG15ICRRdWVyeUZvckVtcHR5VmFsdWVzID0gMDsKCiAgICAgICAgZm9yIG15ICRPcGVyYXRvciAoIHNvcnQga2V5cyAkU2VhcmNoUGFyYW0tPiUqICkgewoKICAgICAgICAgICAgbXkgQFNlYXJjaFBhcmFtcyA9ICggcmVmICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gZXEgJ0FSUkFZJyApCiAgICAgICAgICAgICAgICA/IEB7ICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gfQogICAgICAgICAgICAgICAgOiAoICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gKTsKCiAgICAgICAgICAgIG15ICRTUUxFeHRTdWIgPSAnIEFORCAoJzsKICAgICAgICAgICAgbXkgJENvdW50ZXIgICA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIHVubGVzcyBkZWZpbmVkICRUZXh0OwogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICRUZXh0IGVxICcnOwoKICAgICAgICAgICAgICAgICRUZXh0ID1+IHMvXCovJS9naTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHNlYXJjaCBhdHRyaWJ1dGUsIHdlIGRvIG5vdCBuZWVkIHRvIHNlYXJjaCBmb3IgKgogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICRUZXh0ID1+IC9eXCV7MSwzfSQvOwoKICAgICAgICAgICAgICAgICMgc2tpcCB2YWxpZGF0aW9uIGZvciBlbXB0eSB2YWx1ZXMKICAgICAgICAgICAgICAgIGlmICggJE9wZXJhdG9yIG5lICdFbXB0eScgKSB7CgogICAgICAgICAgICAgICAgICAgICMgdmFsaWRhdGUgZGF0YSB0eXBlCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbGlkYXRlU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBOb1ZhbGlkYXRlUmVnZXggICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9IHx8IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVmFsaWRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHZhbHVlICciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkVGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIicgb24gZmllbGQgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGQtPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIichIiwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJENvdW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcgT1IgJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIEVtcHR5ID0+IDEgcmVxdWlyZXMgYSBMRUZUIEpPSU4uCiAgICAgICAgICAgICAgICBpZiAoICRPcGVyYXRvciBlcSAnRW1wdHknICYmICRUZXh0ICkgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaFNRTEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAiZGZ2RW1wdHkkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRvciAgICAgICAgICAgPT4gJE9wZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBTZWFyY2hUZXJtICAgICAgICAgPT4gJFRleHQsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkUXVlcnlGb3JFbXB0eVZhbHVlcyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hTUUxHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICBUYWJsZUFsaWFzICAgICAgICAgPT4gImRmdiREeW5hbWljRmllbGRKb2luQ291bnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9yICAgICAgICAgICA9PiAkT3BlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFRlcm0gICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnKSc7CiAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAkU1FMRXh0U3ViOwogICAgICAgICAgICAgICAgJE5lZWRKb2luID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCROZWVkSm9pbikgewoKICAgICAgICAgICAgaWYgKCAhJFZlcnNpb25UYWJsZUpvaW5lZCApIHsKICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdiBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkJzsKICAgICAgICAgICAgICAgICRWZXJzaW9uVGFibGVKb2luZWQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFF1ZXJ5Rm9yRW1wdHlWYWx1ZXMpIHsKCiAgICAgICAgICAgICAgICAjIFVzZSBMRUZUIEpPSU4gdG8gYWxsb3cgZm9yIG51bGwgdmFsdWVzLgogICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gIiBMRUZUIEpPSU4gZHluYW1pY19maWVsZF92YWx1ZSBkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlcgogICAgICAgICAgICAgICAgICAgIE9OICh2LmlkID0gZGZ2RW1wdHkkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIub2JqZWN0X2lkCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlci5maWVsZF9pZCA9ICIgLgogICAgICAgICAgICAgICAgICAgICREQk9iamVjdC0+UXVvdGUoICREeW5hbWljRmllbGQtPntJRH0sICdJbnRlZ2VyJyApIC4gIikgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICIgSU5ORVIgSk9JTiBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlcgogICAgICAgICAgICAgICAgICAgIE9OICh2LmlkID0gZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgICAgICBBTkQgZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLmZpZWxkX2lkID0gIiAuCiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5RdW90ZSggJER5bmFtaWNGaWVsZC0+e0lEfSwgJ0ludGVnZXInICkgLiAiKSAiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aW1lIG9iamVjdAogICAgIyByZW1lbWJlciBjdXJyZW50IHRpbWUgdG8gcHJldmVudCBzZWFyY2hlcyBmb3IgZnV0dXJlIHRpbWVzdGFtcHMKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG9sZGVyL25ld2VyIHRoYW4geCBtaW51dGVzCiAgICBteSAlQ29uZmlnSXRlbVRpbWUgPSAoCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWUgPT4gJ2NpLmNyZWF0ZV90aW1lJywKICAgICk7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVRpbWUgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXsgJEtleSAuICdPbGRlck1pbnV0ZXMnIH0gKSB7CgogICAgICAgICAgICAkUGFyYW17ICRLZXkgLiAnT2xkZXJNaW51dGVzJyB9IHx8PSAwOwoKICAgICAgICAgICAgbXkgJFRpbWUgPSAkRGF0ZVRpbWVPYmplY3QtPkNsb25lKCk7CiAgICAgICAgICAgICRUaW1lLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17ICRLZXkgLiAnT2xkZXJNaW51dGVzJyB9ICk7CgogICAgICAgICAgICBteSAkVGFyZ2V0VGltZSA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lJyA/ICRUaW1lLT5Ub1N0cmluZygpIDogJFRpbWUtPlRvRXBvY2goKTsKCiAgICAgICAgICAgICRTUUxFeHQgLj0gc3ByaW50ZiggIiBBTkQgKCAlcyA8PSAnJXMnICkiLCAkQ29uZmlnSXRlbVRpbWV7JEtleX0sICRUYXJnZXRUaW1lICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjb25maWcgaXRlbXMgY3JlYXRlZCBuZXdlciB0aGFuIHggbWludXRlcwogICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17ICRLZXkgLiAnTmV3ZXJNaW51dGVzJyB9ICkgewoKICAgICAgICAgICAgJFBhcmFteyAkS2V5IC4gJ05ld2VyTWludXRlcycgfSB8fD0gMDsKCiAgICAgICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgICAgICRUaW1lLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17ICRLZXkgLiAnTmV3ZXJNaW51dGVzJyB9ICk7CgogICAgICAgICAgICBteSAkVGFyZ2V0VGltZSA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lJyA/ICRUaW1lLT5Ub1N0cmluZygpIDogJFRpbWUtPlRvRXBvY2goKTsKCiAgICAgICAgICAgICRTUUxFeHQgLj0gc3ByaW50ZiggIiBBTkQgKCAlcyA+PSAnJXMnICkiLCAkQ29uZmlnSXRlbVRpbWV7JEtleX0sICRUYXJnZXRUaW1lICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG9sZGVyL25ld2VyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVRpbWUgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICAgICAgbXkgJENvbXBhcmVPbGRlck5ld2VyRGF0ZTsKICAgICAgICBpZiAoICRQYXJhbXsgJEtleSAuICdPbGRlckRhdGUnIH0gKSB7CgogICAgICAgICAgICAjIGNoZWNrIHRpbWUgZm9ybWF0CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRQYXJhbXsgJEtleSAuICdPbGRlckRhdGUnIH0KICAgICAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICciIC4gJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXsgJEtleSAuICdPbGRlckRhdGUnIH0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb21wYXJlT2xkZXJOZXdlckRhdGUgPSAkVGltZTsKCiAgICAgICAgICAgIG15ICRUYXJnZXRUaW1lID0gJEtleSBlcSAnQ29uZmlnSXRlbUNyZWF0ZVRpbWUnID8gJFRpbWUtPlRvU3RyaW5nKCkgOiAkVGltZS0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgJFNRTEV4dCAuPSBzcHJpbnRmKCAiIEFORCAoICVzIDw9ICclcycgKSIsICRDb25maWdJdGVtVGltZXskS2V5fSwgJFRhcmdldFRpbWUgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG5ld2VyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICAgICAgaWYgKCAkUGFyYW17ICRLZXkgLiAnTmV3ZXJEYXRlJyB9ICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17ICRLZXkgLiAnTmV3ZXJEYXRlJyB9CiAgICAgICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnIiAuICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0gLiAiJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17ICRLZXkgLiAnTmV3ZXJEYXRlJyB9LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0gLiAiJyEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgbmV3ZXIgZGF0ZSBpcyBhZnRlciBjdXJyZW50IGRhdGUKICAgICAgICAgICAgcmV0dXJuIGlmICRUaW1lID4gJERhdGVUaW1lT2JqZWN0OwoKICAgICAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgb2xkZXIvbmV3ZXIgZGF0ZSByZXN0cmljdGlvbiBzaG93IG5vdyB2YWxpZCB0aW1lZnJhbWUKICAgICAgICAgICAgcmV0dXJuIGlmICRDb21wYXJlT2xkZXJOZXdlckRhdGUgJiYgJFRpbWUgPiAkQ29tcGFyZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAgICAgbXkgJFRhcmdldFRpbWUgPSAkS2V5IGVxICdDb25maWdJdGVtQ3JlYXRlVGltZScgPyAkVGltZS0+VG9TdHJpbmcoKSA6ICRUaW1lLT5Ub0Vwb2NoKCk7CgogICAgICAgICAgICAkU1FMRXh0IC49IHNwcmludGYoICIgQU5EICggJXMgPj0gJyVzJyApIiwgJENvbmZpZ0l0ZW1UaW1leyRLZXl9LCAkVGFyZ2V0VGltZSApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbXMgY2hhbmdlZCBvbGRlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICREYXRlVGltZU9iamVjdC0+Q2xvbmUoKTsKICAgICAgICAkVGltZVN0YW1wLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSApOwoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJEYXRlfSA9ICRUaW1lU3RhbXAtPlRvU3RyaW5nKCk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSApIHsKCiAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICRUaW1lU3RhbXAgPSAkRGF0ZVRpbWVPYmplY3QtPkNsb25lKCk7CiAgICAgICAgJFRpbWVTdGFtcC0+U3VidHJhY3QoIE1pbnV0ZXMgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyTWludXRlc30gKTsKCiAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0gPSAkVGltZVN0YW1wLT5Ub1N0cmluZygpOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBteSAkQ29tcGFyZUxhc3RDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9ICkgewoKICAgICAgICAjIGNoZWNrIHRpbWUgZm9ybWF0CiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9JyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRDb21wYXJlTGFzdENoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAkU1FMRXh0IC49ICIgQU5EIGNpLmNoYW5nZV90aW1lIDw9ICciIC4gJFRpbWUtPlRvU3RyaW5nKCkgLiAiJyI7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0gKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGV9JyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGV9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBuZXdlciBkYXRlIGlzIGFmdGVyIGN1cnJlbnQgZGF0ZQogICAgICAgIHJldHVybiBpZiAkVGltZSA+ICREYXRlVGltZU9iamVjdDsKCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgb2xkZXIvbmV3ZXIgZGF0ZSByZXN0cmljdGlvbiBzaG93IG5vdyB2YWxpZCB0aW1lZnJhbWUKICAgICAgICByZXR1cm4KICAgICAgICAgICAgaWYgJENvbXBhcmVMYXN0Q2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlICYmICRUaW1lID4gJENvbXBhcmVMYXN0Q2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAkU1FMRXh0IC49ICIgQU5EIGNpLmNoYW5nZV90aW1lID49ICciIC4gJFRpbWUtPlRvU3RyaW5nKCkgLiAiJyI7CiAgICB9CgogICAgIyBkYXRhYmFzZSBxdWVyeSBmb3Igc29ydC9vcmRlciBieSBvcHRpb24KICAgIGlmICggJFJlc3VsdCBuZSAnQ09VTlQnICkgewogICAgICAgICRTUUxFeHQgLj0gJyBPUkRFUiBCWSc7CgogICAgICAgIG15ICVKb2luZWRUYWJsZXM7CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDAgLi4gJCNTb3J0QnlBcnJheSApIHsKICAgICAgICAgICAgaWYgKCAkQ291bnQgPiAwICkgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAnLCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc29ydCBieSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIGlmICggJFNvcnRCeUFycmF5WyRDb3VudF0gPX4gL15EeW5hbWljRmllbGRfKC4qKS8gKSB7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICQxOwogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCAgICAgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZCApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdmFsaWQgU29ydEJ5ICgnIC4gJFNvcnRCeUFycmF5WyRDb3VudF0gLiAnKSEnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIElmIHRoZSB0YWJsZSB3YXMgYWxyZWFkeSBqb2luZWQgZm9yIHNlYXJjaGluZywgd2UgcmV1c2UgaXQuCiAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3skRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWZXJzaW9uVGFibGVKb2luZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdiBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFZlcnNpb25UYWJsZUpvaW5lZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkU1FMRnJvbQogICAgICAgICAgICAgICAgICAgICAgICAuPSAiIExFRlQgT1VURVIgSk9JTiBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlcgogICAgICAgICAgICAgICAgICAgICAgICBPTiAodi5pZCA9IGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5vYmplY3RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5RdW90ZSggJER5bmFtaWNGaWVsZC0+e0lEfSwgJ0ludGVnZXInICkgLiAiKSAiOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIjsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJFNRTE9yZGVyRmllbGQgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMT3JkZXJGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICBUYWJsZUFsaWFzICAgICAgICAgPT4gJER5bmFtaWNGaWVsZEpvaW5UYWJsZXN7JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkU1FMU2VsZWN0IC49ICIsICRTUUxPcmRlckZpZWxkICI7CiAgICAgICAgICAgICAgICAkU1FMRXh0ICAgIC49ICIgJFNRTE9yZGVyRmllbGQgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGpvaW4gdGhlIGdlbmVyYWwgY2F0YWxvZyBmb3Igc29ydGluZwogICAgICAgICAgICAgICAgaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSBlcSAnRGVwbFN0YXRlJyAmJiAhJEpvaW5lZFRhYmxlc3tEZXBsU3RhdGV9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGdlbmVyYWxfY2F0YWxvZyBnY19kZXBsIE9OICh2LmRlcGxfc3RhdGVfaWQgPSBnY19kZXBsLmlkKSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRTb3J0QnlBcnJheVskQ291bnRdIGVxICdJbmNpU3RhdGUnICYmICEkSm9pbmVkVGFibGVze0luY2lTdGF0ZX0rKyApIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRnJvbSAuPSAnIElOTkVSIEpPSU4gZ2VuZXJhbF9jYXRhbG9nIGdjX2luY2kgT04gKHYuaW5jaV9zdGF0ZV9pZCA9IGdjX2luY2kuaWQpJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNvcnRCeUFycmF5WyRDb3VudF0gZXEgJ0N1ckRlcGxTdGF0ZScgJiYgISRKb2luZWRUYWJsZXN7Q3VyRGVwbFN0YXRlfSsrICkgewogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBnZW5lcmFsX2NhdGFsb2cgZ2NfY2RlcGwgT04gKGNpLmN1cl9kZXBsX3N0YXRlX2lkID0gZ2NfY2RlcGwuaWQpJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNvcnRCeUFycmF5WyRDb3VudF0gZXEgJ0N1ckluY2lTdGF0ZScgJiYgISRKb2luZWRUYWJsZXN7Q3VySW5jaVN0YXRlfSsrICkgewogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBnZW5lcmFsX2NhdGFsb2cgZ2NfY2luY2kgT04gKGNpLmN1cl9pbmNpX3N0YXRlX2lkID0gZ2NfY2luY2kuaWQpJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIFJlZ3VsYXIgc29ydC4KICAgICAgICAgICAgICAgICRTUUxTZWxlY3QgLj0gJywgJyAuICRTb3J0T3B0aW9uc3sgJFNvcnRCeUFycmF5WyRDb3VudF0gfTsKICAgICAgICAgICAgICAgICRTUUxFeHQgICAgLj0gJyAnIC4gJFNvcnRPcHRpb25zeyAkU29ydEJ5QXJyYXlbJENvdW50XSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRPcmRlckJ5QXJyYXlbJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAnIEFTQyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcgREVTQyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlT2JqZWN0OwoKICAgIGlmICggJFBhcmFte0NhY2hlVFRMfSApIHsKICAgICAgICAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgICAgICBteSAkQ2FjaGVEYXRhID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBLZXkgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQgLiAkUmVzdWx0IC4gJExpbWl0LAogICAgICAgICk7CgogICAgICAgIGlmICggZGVmaW5lZCAkQ2FjaGVEYXRhICkgewogICAgICAgICAgICBpZiAoIHJlZiAkQ2FjaGVEYXRhIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAleyRDYWNoZURhdGF9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcmVmICRDYWNoZURhdGEgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiBAeyRDYWNoZURhdGF9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcmVmICRDYWNoZURhdGEgZXEgJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJENhY2hlRGF0YTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnSW52YWxpZCByZWYgJyAuIHJlZigkQ2FjaGVEYXRhKSAuICchJwogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGF0YWJhc2UgcXVlcnkKICAgIG15ICVDb25maWdJdGVtczsKICAgIG15IEBDb25maWdJdGVtSURzOwogICAgbXkgJENvdW50OwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQsCiAgICAgICAgTGltaXQgPT4gJExpbWl0CiAgICApOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudCA9ICRSb3dbMF07CiAgICAgICAgJENvbmZpZ0l0ZW1zeyAkUm93WzBdIH0gPSAkUm93WzFdOwogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRSb3dbMF07CiAgICB9CgogICAgIyByZXR1cm4gQ09VTlQKICAgIGlmICggJFJlc3VsdCBlcSAnQ09VTlQnICkgewogICAgICAgIGlmICgkQ2FjaGVPYmplY3QpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU1FMU2VsZWN0IC4gJFNRTEZyb20gLiAkU1FMRXh0IC4gJFJlc3VsdCAuICRMaW1pdCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRDb3VudCwKICAgICAgICAgICAgICAgIFRUTCAgID0+ICRQYXJhbXtDYWNoZVRUTH0gfHwgNjAgKiA0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJENvdW50OwogICAgfQoKICAgICMgcmV0dXJuIEhBU0gKICAgIGVsc2lmICggJFJlc3VsdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgaWYgKCRDYWNoZU9iamVjdCkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQgLiAkUmVzdWx0IC4gJExpbWl0LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gXCVDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIFRUTCAgID0+ICRQYXJhbXtDYWNoZVRUTH0gfHwgNjAgKiA0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJUNvbmZpZ0l0ZW1zOwogICAgfQoKICAgICMgcmV0dXJuIEFSUkFZCiAgICBlbHNlIHsKICAgICAgICBpZiAoJENhY2hlT2JqZWN0KSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCAuICRSZXN1bHQgLiAkTGltaXQsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcQENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICBUVEwgICA9PiAkUGFyYW17Q2FjaGVUVEx9IHx8IDYwICogNCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEBDb25maWdJdGVtSURzOwogICAgfQp9CgpzdWIgX1ZlcnNpb25TZWFyY2hJbmRleFNRTEpvaW5OZWVkZWQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcvTmFtZSBEZXBsU3RhdGVzIEluY2lTdGF0ZXMgRGVwbFN0YXRlSURzIEluY2lTdGF0ZUlEcy8pIHsKICAgICAgICByZXR1cm4gMSBpZiAkUGFyYW17U2VhcmNoUGFyYW1zfXskQXR0cmlidXRlfTsKICAgIH0KCiAgICBmb3IgbXkgJEtleSAoIGtleXMgJFBhcmFte1NlYXJjaFBhcmFtc30tPiUqICkgewogICAgICAgIHJldHVybiAxIGlmICRLZXkgPX4gL15EeW5hbWljRmllbGRfLzsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Definition.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RGVmaW5pdGlvbjsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb24gLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGRlZmluaXRpb24gb2YgY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgcm9sZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgbm9uZSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMiBEZWZpbml0aW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgY2xhc3MgYXMgYW4gYXJyYXktaGFzaCByZWZlcmVuY2UuIFRoZSBsaXN0CmlzIHNvcnRlZCBieSB2ZXJzaW9uLgoKICAgIG15ICREZWZpbml0aW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gWwogICAgICAgICAgewogICAgICAgICAgICAnVmVyc2lvbicgICAgICA9PiAnMScsCiAgICAgICAgICAgICdDcmVhdGVUaW1lJyAgID0+ICcyMDEyLTA2LTEyIDE0OjA5OjQzJywKICAgICAgICAgICAgJ0RlZmluaXRpb25JRCcgPT4gJzEnLAogICAgICAgICAgICAnQ3JlYXRlQnknICAgICA9PiAnMTIzJywKICAgICAgICAgICAgJ0RlZmluaXRpb24nICAgPT4gJy0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKCi0gS2V5OiBEZXNjcmlwdGlvbgogIE5hbWU6IERlc2NyaXB0aW9uCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dEFyZWEKCi0gS2V5OiBUeXBlCiAgTmFtZTogVHlwZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAtIFR5cGU6IFRleHRBcmVhCiAgLSBUeXBlOiBHZW5lcmFsQ2F0YWxvZ1wKICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpDb21wdXRlcjo6VHlwZQogICAgVHJhbnNsYXRpb246IDEKIyAuLi4gZXRjIC4uLgonLAogICAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNrIGRhdGFiYXNlCiAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieQogIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgV0hFUkUgY2xhc3NfaWQgPSA/CiAgT1JERVIgQlkgdmVyc2lvbgpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRSb3dzOwoKICAgIG15IEBEZWZpbml0aW9uTGlzdDsKICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0gPSAkUm93LT5bMF07CiAgICAgICAgJERlZmluaXRpb257RGVmaW5pdGlvbn0gICA9ICRSb3ctPlsxXSB8fCAiLS0tIHt9IjsKICAgICAgICAkRGVmaW5pdGlvbntWZXJzaW9ufSAgICAgID0gJFJvdy0+WzJdOwogICAgICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ICAgPSAkUm93LT5bM107CiAgICAgICAgJERlZmluaXRpb257Q3JlYXRlQnl9ICAgICA9ICRSb3ctPls0XTsKCiAgICAgICAgIyBDaGVjayBpZiBkZWZpbml0aW9uIGNvZGUgaXMgbm90IGEgWUFNTCBzdHJpbmcuCiAgICAgICAgaWYgKCBzdWJzdHIoICREZWZpbml0aW9ue0RlZmluaXRpb259LCAwLCAzICkgbmUgJy0tLScgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkRlZmluaXRpb25JRDogJERlZmluaXRpb257RGVmaW5pdGlvbklEfSIKICAgICAgICAgICAgICAgICAgICAuICIgQ2xhc3NJRDogJFBhcmFte0NsYXNzSUR9IgogICAgICAgICAgICAgICAgICAgIC4gIiBmb3VuZCBpbiBsZWdhY3kgUGVybCBjb2RlIGZvcm1hdCwgY2FuIG5vdCBjb250aW51ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSA9ICItLS0ge30iOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBARGVmaW5pdGlvbkxpc3QsIFwlRGVmaW5pdGlvbjsKICAgIH0KCiAgICByZXR1cm4gXEBEZWZpbml0aW9uTGlzdDsKfQoKPWhlYWQyIFJvbGVEZWZpbml0aW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgcm9sZSBhcyBhbiBhcnJheS1oYXNoIHJlZmVyZW5jZS4gVGhlIGxpc3QKaXMgc29ydGVkIGJ5IHZlcnNpb24uIFRoaXMgdGhlIHNhbWUgYXMgQzxEZWZpbml0aW9uTGlzdD4sIGJ1dCB0aGUgcGFyYW1ldGVyIEM8Um9sZUlEPiBpcwp1c2VkIGluc3RlYWQgb2YgQzxDbGFzc0lEPi4KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJlbmFtZSB0aGUgcGFyYW1ldGVyCiAgICAkUGFyYW17Q2xhc3NJRH0gPSBkZWxldGUgJFBhcmFte1JvbGVJRH07CgogICAgcmV0dXJuICRTZWxmLT5EZWZpbml0aW9uTGlzdCglUGFyYW0pOwp9Cgo9aGVhZDIgRGVmaW5pdGlvbkdldCgpCgpyZXR1cm5zIGEgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+IDEyMywKICAgICk7CgpvcgoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0KICAgICREZWZpbml0aW9uLT57Q2xhc3NJRH0KICAgICREZWZpbml0aW9uLT57Q2xhc3N9ICAgICAgICAgICAgICAgIyBOYW1lIG9mIHRoZSBjbGFzcwogICAgJERlZmluaXRpb24tPntEZWZpbml0aW9ufQogICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfQogICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9CiAgICAkRGVmaW5pdGlvbi0+e1ZlcnNpb259CiAgICAkRGVmaW5pdGlvbi0+e0NyZWF0ZVRpbWV9CiAgICAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fQoKPWN1dAoKc3ViIERlZmluaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb25JRH0gJiYgISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvbklEIG9yIENsYXNzSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQFJvdzsKICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJFBhcmFte0RlZmluaXRpb25JRH0gfQogICAgICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0RlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH07CgogICAgICAgICMgYXNrIGRhdGFiYXNlIGZvciB0aGUgc3BlY2lmaWVkIGRlZmluaXRpb24gdmVyc2lvbgogICAgICAgIEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCBkeW5hbWljZmllbGRfZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtEZWZpbml0aW9uSUR9IF0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGFzayBkYXRhYmFzZSBmb3IgdGhlIG5ld2VzdCB2ZXJzaW9uIGZvciB0aGUgY2xhc3MKICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgY2xhc3NfaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24sIHZlcnNpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkgJwogICAgICAgICAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgY2xhc3NfaWQgPSA/IE9SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEZWZpbml0aW9uOwogICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAkRGVmaW5pdGlvbntDbGFzc0lEfSAgICAgID0gJFJvd1sxXTsKICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICctLS0ge30nOyAgICAjIGEgWUFNTCBzdHJpbmcKICAgIG15ICREeW5hbWljRmllbGRzID0gJFJvd1szXSB8fCAnLS0tIHt9JzsgICAgICAgICAgICAjIGEgWUFNTCBzdHJpbmcKICAgICREZWZpbml0aW9ue1ZlcnNpb259ICAgID0gJFJvd1s0XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ID0gJFJvd1s1XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgID0gJFJvd1s2XTsKCiAgICByZXR1cm4ge30gdW5sZXNzICREZWZpbml0aW9ue0RlZmluaXRpb25JRH07CgogICAgIyBDaGVjayBpZiBkZWZpbml0aW9uIGNvZGUgaXMgbm90IGEgWUFNTCBzdHJpbmcuCiAgICBpZiAoIHN1YnN0ciggJERlZmluaXRpb257RGVmaW5pdGlvbn0sIDAsIDMgKSBuZSAnLS0tJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEZWZpbml0aW9uSUQ6ICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0iCiAgICAgICAgICAgICAgICAuICIgQ2xhc3NJRDogJERlZmluaXRpb257Q2xhc3NJRH0iCiAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSB7fSI7CiAgICB9CgogICAgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgdGhpcyBjYW4gYmUgY2hhbmdlcyB0byBwcm9kdWNlIGFuIGVycm9yIHNvbWV3aGVuCiAgICAjIGN1cnJlbnRseSAoMTEuMCkgd2Ugd2lsbCBoYXZlIHRvIGRlYWwgd2l0aCBsZWdhY3kgZGVmaW5pdGlvbnMgaW4gdGhlIHN5c3RlbQogICAgaWYgKCByZWYgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gbmUgJ0hBU0gnICkgewogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0ge307CiAgICB9CgogICAgJERlZmluaXRpb257RHluYW1pY0ZpZWxkUmVmfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkRHluYW1pY0ZpZWxkcywKICAgICk7CgogICAgIyBtZXJnZSB0aGUgcm9sZXMgaW50byB0aGUgRGVmaW5pdGlvblJlZiwgdGhlIHBhc3NlZCBpbiByZWZlcmVuY2UgaXMgbW9kaWZpZWQgaW4gcGxhY2UKICAgICRTZWxmLT5fUHJvY2Vzc1JvbGVzKAogICAgICAgIERlZmluaXRpb25SZWYgPT4gJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0sCiAgICApOwoKICAgICMgcHJlcGFyZSBkZWZpbml0aW9uCiAgICAjIFRPRE86IFJld29yaz8KICAgICNpZiAoICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ICYmIHJlZiAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSBlcSAnQVJSQVknICkgewogICAgIyAgICAkU2VsZi0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgIyAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSwKICAgICMgICAgKTsKICAgICN9CiAgICAjZWxzZSB7CiAgICAjICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0gJyc7CiAgICAjfQoKICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSBjb25maWcgaXRlbSBjbGFzcyB0byB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJElEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb257Q2xhc3N9ID0gJElEMk5hbWUtPnsgJERlZmluaXRpb257Q2xhc3NJRH0gfTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBSb2xlRGVmaW5pdGlvbkdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSByb2xlIGRlZmluaXRpb24gYXMgaGFzaCByZWZlcmVuY2UuIFRoZSByb2xlIGRlZmluaXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlCnRhYmxlIEk8Y29uZmlnaXRlbV9kZWZpbml0aW9uPiwganVzdCBsaWtlIHRoZSBjb25maWcgaXRlbSBkZWZpbml0aW9ucy4KCkdldCBhIHNwZWNpZmljIHZlcnNpb24gd2hlbiB0aGUgdGVjaG5pY2FsIElEIGlzIGtub3duOgoKICAgIG15ICRSb2xlRGVmaW5pdGlvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIsCiAgICApOwoKT3IgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbjoKCiAgICBteSAkUm9sZURlZmluaXRpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25HZXQoCiAgICAgICAgUm9sZUlEID0+IDEyMywgIyBhbmFsb2dvdXMgdG8gQ2xhc3NJRCBpbiBEZWZpbml0aW9uR2V0KCkKICAgICk7CgpPciBnZXQgYSBzcGVjaWZpYyB2ZXJzaW9uIHdoZW4gdGhlIHZlcnNpb24gaXMga25vd24uCgogICAgbXkgJFJvbGVEZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uR2V0KAogICAgICAgIFJvbGVJRCAgPT4gMTIzLAogICAgICAgIFZlcnNpb24gPT4gMiwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfQogICAgJERlZmluaXRpb24tPntSb2xlSUR9ICAgICAgICAgICAgICAgICAjIGFuYWxvZ291cyB0byBDbGFzc0lEIGluIERlZmluaXRpb25HZXQoKQogICAgJERlZmluaXRpb24tPntSb2xlfSAgICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIHJvbGUsIGFuYWxvZ291cyB0byBDbGFzcyBpbiBEZWZpbml0aW9uR2V0KCkKICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0KICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0KICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfQogICAgJERlZmluaXRpb24tPntWZXJzaW9ufQogICAgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfQogICAgJERlZmluaXRpb24tPntDcmVhdGVCeX0KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvbklEfSAmJiAhJFBhcmFte1JvbGVJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb25JRCBvciBSb2xlSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBTUUwKICAgIG15ICggQFdoZXJlLCBAQmluZHMgKTsKICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Um9sZURlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH0KICAgICAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntSb2xlRGVmaW5pdGlvbkdldH0tPnsgJFBhcmFte0RlZmluaXRpb25JRH0gfTsKCiAgICAgICAgcHVzaCBAV2hlcmUsICdpZCA9ID8nOwogICAgICAgIHB1c2ggQEJpbmRzLCBcJFBhcmFte0RlZmluaXRpb25JRH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGFzayBkYXRhYmFzZSBmb3IgdGhlIG5ld2VzdCB2ZXJzaW9uIGZvciB0aGUgY2xhc3MKICAgICAgICBwdXNoIEBXaGVyZSwgJ2NsYXNzX2lkID0gPyc7CiAgICAgICAgcHVzaCBAQmluZHMsIFwkUGFyYW17Um9sZUlEfTsKCiAgICAgICAgIyBvciByZXF1ZXN0IGEgc3BlY2lmaWMgdmVyc2lvbgogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb259ICkgewogICAgICAgICAgICBwdXNoIEBXaGVyZSwgJ3ZlcnNpb24gPSA/JzsKICAgICAgICAgICAgcHVzaCBAQmluZHMsIFwkUGFyYW17VmVyc2lvbn07CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTUUwgPSBzcHJpbnRmIDw8J0VORF9TUUwnLCBqb2luKCAnIEFORCAnLCBAV2hlcmUgKTsKU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5CiAgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24KICBXSEVSRSAlcwogIE9SREVSIEJZIHZlcnNpb24gREVTQwpFTkRfU1FMCgogICAgbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBcQEJpbmRzLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEZWZpbml0aW9uOwogICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAkRGVmaW5pdGlvbntSb2xlSUR9ICAgICAgID0gJFJvd1sxXTsKICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICItLS0ge30iOwogICAgJERlZmluaXRpb257VmVyc2lvbn0gICAgICA9ICRSb3dbM107CiAgICAkRGVmaW5pdGlvbntDcmVhdGVUaW1lfSAgID0gJFJvd1s0XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgICAgPSAkUm93WzVdOwoKICAgIHJldHVybiB7fSB1bmxlc3MgJERlZmluaXRpb257RGVmaW5pdGlvbklEfTsKCiAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gY29kZSBpcyBub3QgYSBZQU1MIHN0cmluZy4KICAgIGlmICggc3Vic3RyKCAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSwgMCwgMyApIG5lICctLS0nICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkRlZmluaXRpb25JRDogJERlZmluaXRpb257RGVmaW5pdGlvbklEfSIKICAgICAgICAgICAgICAgIC4gIiBSb2xlSUQ6ICREZWZpbml0aW9ue1JvbGVJRH0iCiAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSB7fSI7CiAgICB9CgogICAgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIHRoZSByb2xlIGRlZmluaXRpb24KICAgIHsKICAgICAgICBteSAkSUQyTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue1JvbGV9ID0gJElEMk5hbWUtPnsgJERlZmluaXRpb257Um9sZUlEfSB9OwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZX0tPntSb2xlRGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBEZWZpbml0aW9uQWRkKCkKCmFkZHMgYSBuZXcgY29uZmlnIGl0ZW0gY2xhc3MgZGVmaW5pdGlvbi4gVGhpcyBjYW4gYmUgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiBhIGNsYXNzIGRlZmluaXRpb24gb3IgYQpjaGFuZ2Ugb2YgYW4gZXhpc3RpbmcgY2xhc3MgZGVmaW5pdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAxMjMsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAndGhlIGRlZmluaXRpb24gY29kZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgIEZvcmNlICAgICAgPT4gMSwgICAgIyBvcHRpb25hbCwgZm9yIGludGVybmFsIHVzZSwgZm9yY2UgYWRkIGV2ZW4gaWYgZGVmaW5pdGlvbiBpcyB1bmNoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKHVzZWQgaWYgZHluYW1pYyBmaWVsZHMgY2hhbmdlZCwgb3IgYSBkeW5hbWljIHJvbGUgY2hhbmdlZCkKICAgICk7CgpSZXR1cm5zIGluIHRoZSBjYXNlIG9mIHN1Y2Nlc3M6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIzLAogICAgfTsKClJldHVybnMgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgY2FzZSBvZiBmYWlsdXJlOgoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICAgICAgRXJyb3IgICAgID0+ICJOZWVkICVzISIsCiAgICAgICAgRXJyb3JBcmdzID0+IFsgJ0RlZmluaXRpb24nIF0sCiAgICB9OwoKT25seSB0d28gYXJndW1lbnRzIG9mIHRoZSBlcnJvciBtZXNzYWdlIGFyZSBzdXBwb3J0ZWQuCgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIERlZmluaXRpb24gVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICBteSAkTWVzc2FnZSA9ICJOZWVkICVzISI7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYoICRNZXNzYWdlLCAkQXJndW1lbnQgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yICAgICA9PiAkTWVzc2FnZSwKICAgICAgICAgICAgICAgIEVycm9yQXJncyA9PiBbJEFyZ3VtZW50XSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzYW5pdHkgb2YgdGhlIGRlZmluaXRpb24KICAgIHsKICAgICAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+RGVmaW5pdGlvbkNoZWNrKAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJENoZWNrUmVzdWx0IHVubGVzcyAkQ2hlY2tSZXN1bHQtPntTdWNjZXNzfTsKICAgIH0KCiAgICAjIGdldCBsYXN0IGRlZmluaXRpb24KICAgIG15ICRMYXN0RGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaXRzZWxmIG9yIHRoZSBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZWQKICAgIG15ICREZWZpbml0aW9uQ2hhbmdlZCA9CiAgICAgICAgKCAhJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApCiAgICAgICAgfHwKICAgICAgICAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb259IG5lICRQYXJhbXtEZWZpbml0aW9ufSApOwoKICAgICMgVE9ETzogJFBhcmFte0ZvcmNlfSB8fCAkU2VsZi0+X0NoZWNrRHluYW1pY0ZpZWxkQ2hhbmdlKCk7IGNhbiBiZSB0YWtlbiBvdXQgb2YgX0RlZmluaXRpb25TeW5jKCkgd2l0aCBhIGxpdHRsZSBhZGFwdGlvbgogICAgJERlZmluaXRpb25DaGFuZ2VkIHx8PSAkUGFyYW17Rm9yY2V9OwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICEkRGVmaW5pdGlvbkNoYW5nZWQgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBhZGQgZHluYW1pYyBmaWVsZCBpbmZvLCByb2xlcyBhcmUgYWxyZWFkeSBjb25zaWRlcmVkIGluIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0CiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbiA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAlUGFyYW0sCiAgICApIHx8ICctLS0ge30nOwoKICAgICMgaW5jcmVtZW50IHZlcnNpb24sIHN0YXJ0IHdpdGggdmVyc2lvbiAxIGZvciBjb21wbGV0ZWx5IG5ldyBjbGFzcyBkZWZpbml0aW9ucwogICAgbXkgJFZlcnNpb24gPSAoICRMYXN0RGVmaW5pdGlvbi0+e1ZlcnNpb259IHx8IDAgKSArIDE7CgogICAgIyBpbnNlcnQgbmV3IGRlZmluaXRpb24KICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9kZWZpbml0aW9uICcKICAgICAgICAgICAgLiAnKGNsYXNzX2lkLCBjb25maWdpdGVtX2RlZmluaXRpb24sIGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtEZWZpbml0aW9ufSwgXCREeW5hbWljRmllbGREZWZpbml0aW9uLCBcJFZlcnNpb24sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgICAgICBFcnJvciAgID0+ICdJbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uIHdhcyBub3Qgc3VjY2Vzc2Z1bCcsCiAgICB9IHVubGVzcyAkU3VjY2VzczsKCiAgICAjIGdldCBpZCBvZiBuZXcgZGVmaW5pdGlvbgogICAgbXkgKCREZWZpbml0aW9uSUQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uIFdIRVJFICcKICAgICAgICAgICAgLiAnY2xhc3NfaWQgPSA/IEFORCB2ZXJzaW9uID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFZlcnNpb24gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGFyZSBzeW5jZWQKICAgICRTZWxmLT5EZWZpbml0aW9uU2V0U3luY2VkKAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIHRyaWdnZXIgRGVmaW5pdGlvbkNyZWF0ZSBldmVudAogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnRGVmaW5pdGlvbkNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIE9sZERlZmluaXRpb24gPT4gJExhc3REZWZpbml0aW9uLAogICAgICAgICAgICBDbGFzc0lEICAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIFZlcnNpb24gICAgICA9PiAkVmVyc2lvbiwKICAgIH07Cn0KCj1oZWFkMiBSb2xlRGVmaW5pdGlvbkFkZCgpCgphZGRzIGEgbmV3IHJvbGUgZGVmaW5pdGlvbi4gVGhpcyBjYW4gYmUgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiBhIHJvbGUgb3IgYQpjaGFuZ2Ugb2YgYW4gZXhpc3Rpbmcgcm9sZS4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgIFJvbGVJRCAgICAgPT4gMTIzLAogICAgICAgIERlZmluaXRpb24gPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICBGb3JjZSAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGZvciB1c2UgZHVyaW5nIGltcG9ydCBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcwogICAgKTsKClJldHVybnMgaW4gdGhlIGNhc2Ugb2Ygc3VjY2VzczoKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAxMjMsICMgZXZlbiB0aG91Z2ggaXQgaXMgYSByb2xlCiAgICAgICAgVmVyc2lvbiAgICAgID0+IDQsCiAgICB9OwoKUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjYXNlIG9mIGZhaWx1cmU6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICBFcnJvciAgICAgPT4gIk5lZWQgJXMhIiwKICAgICAgICBFcnJvckFyZ3MgPT4gWyAnRGVmaW5pdGlvbicgXSwKICAgIH07CgpPbmx5IHR3byBhcmd1bWVudHMgb2YgdGhlIGVycm9yIG1lc3NhZ2UgYXJlIHN1cHBvcnRlZC4KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhSb2xlSUQgRGVmaW5pdGlvbiBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgIG15ICRNZXNzYWdlID0gIk5lZWQgJXMhIjsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiggJE1lc3NhZ2UsICRBcmd1bWVudCApLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3IgICAgID0+ICRNZXNzYWdlLAogICAgICAgICAgICAgICAgRXJyb3JBcmdzID0+IFskQXJndW1lbnRdLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHNhbml0eSBvZiB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJENoZWNrUmVzdWx0ID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uQ2hlY2soCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkQ2hlY2tSZXN1bHQgdW5sZXNzICRDaGVja1Jlc3VsdC0+e1N1Y2Nlc3N9OwogICAgfQoKICAgICMgZ2V0IGxhc3QgZGVmaW5pdGlvbiwgZXZlbiB0aG91Z2ggdGhpcyBpcyByb2xlCiAgICBteSAkTGFzdERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtSb2xlSUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaXRzZWxmIG9yIHRoZSBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZWQKICAgIG15ICREZWZpbml0aW9uQ2hhbmdlZCA9CiAgICAgICAgJFBhcmFte0ZvcmNlfQogICAgICAgIHx8CiAgICAgICAgKCAhJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApCiAgICAgICAgfHwKICAgICAgICAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb259IG5lICRQYXJhbXtEZWZpbml0aW9ufSApOwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICEkRGVmaW5pdGlvbkNoYW5nZWQgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBpbmNyZW1lbnQgdmVyc2lvbiwgc3RhcnRpbmcgd2l0aCAxIGZvciB0aGUgaW5pdGlhbCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbiA9ICggJExhc3REZWZpbml0aW9uLT57VmVyc2lvbn0gfHwgMCApICsgMTsKCiAgICAjIGluc2VydCBuZXcgZGVmaW5pdGlvbiB3aXRob3V0IGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiAnCiAgICAgICAgICAgIC4gJyhjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCggJFBhcmFte1JvbGVJRH0sICRQYXJhbXtEZWZpbml0aW9ufSwgJFZlcnNpb24sICRQYXJhbXtVc2VySUR9ICkgXSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgRXJyb3IgICA9PiAnSW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiB3YXMgbm90IHN1Y2Nlc3NmdWwnLAogICAgfSB1bmxlc3MgJFN1Y2Nlc3M7CgogICAgIyBnZXQgaWQgb2YgbmV3IGRlZmluaXRpb24KICAgIG15ICgkTmV3Um9sZURlZmluaXRpb25JRCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gV0hFUkUgJwogICAgICAgICAgICAuICdjbGFzc19pZCA9ID8gQU5EIHZlcnNpb24gPSA/ICcKICAgICAgICAgICAgLiAnT1JERVIgQlkgdmVyc2lvbiBERVNDJywKICAgICAgICBCaW5kICA9PiBbIFwoICRQYXJhbXtSb2xlSUR9LCAkVmVyc2lvbiApIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBUaGVyZSBpcyBub3cgYW4gaW5pdGlhbCBvciBzdWJzZXF1ZW50IHZlcnNpb24gb2YgYSByb2xlIGRlZmluaXRpb24uIFRoaXMgbmV3IGRlZmluaXRpb24KICAgICMgbWlnaHQgaGF2ZSBhZGRlZCBvciByZW1vdmVkIGR5bmFtaWMgZmllbGRzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzZWQgdGhhdAogICAgIyBpbmNsdWRlIHRoZSByb2xlIGR5bmFtaWNhbGx5IG11c3QgYmUgdXBkYXRlZCB0b28uCiAgICAkU2VsZi0+X0RlZmluaXRpb25DcmVhdGVBZnRlclJvbGVDcmVhdGUoCiAgICAgICAgUm9sZUlEID0+ICRQYXJhbXtSb2xlSUR9LAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkTmV3Um9sZURlZmluaXRpb25JRCwKICAgICAgICBWZXJzaW9uICAgICAgPT4gJFZlcnNpb24sCiAgICB9Owp9Cgo9aGVhZDIgRGVmaW5pdGlvbkNoZWNrKCkKCmNoZWNrcyB0aGUgc3ludGF4IG9mIGEgbmV3IGRlZmluaXRpb24uIEJvdGggY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgY2FuIGJlIGNoZWNrZWQKd2l0aCB0aGlzIG1ldGhvZC4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25DaGVjaygKICAgICAgICBEZWZpbml0aW9uICAgICAgPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIENoZWNrU3ViRWxlbWVudCA9PiAxLCAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAwLCB0byBjaGVjayBzdWIgZWxlbWVudHMgcmVjdXJzaXZlbHkpCiAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdDbGFzcycsICAgICAgICAgICAjIG9wdGlvbmFsLCBkZWZhdWx0IGlzICdDbGFzcycsIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ0NsYXNzJyBhbmQgJ1JvbGUnCiAgICApOwoKUmV0dXJucyBpbiB0aGUgY2FzZSBvZiBhIHZhbGlkIGRlZmluaXRpb246CgogICAgbXkgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9OwoKSW5kaWNhdGVzIHRoZSBmaXJzdCBmb3VuZCBwcm9ibGVtIGluIHRoZSBjYXNlIG9mIGFuIGludmFsaWQgZGVmaW5pdGlvbjoKCiAgICBteSAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgIEVycm9yICAgICA9PiBxeyVzIGlzIG1pc3NpbmcuIFBsZWFzZSBwcm92aWRlIGRhdGEgZm9yICVzIGluIHRoZSBkZWZpbml0aW9uLn0sCiAgICAgICAgRXJyb3JBcmdzID0+IFsgJ1NlY3Rpb25zJywgJ1NlY3Rpb25zJyBdLAogICAgfTsKCk5vdGUgdGhhdCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBzcGxpdCB1cCBpbiBjb25zdGFudCBhbmQgdmFyaWFibGUgcGFydHMuIFRoaXMgYWxsb3dzIHRyYW5zbGF0aW9uIGluIHRoZSB1c2VyIGludGVyZmFjZS4KCj1jdXQKCnN1YiBEZWZpbml0aW9uQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb259ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igcm9sZXMgYW5kIGNsYXNzZXMKICAgIG15ICRUeXBlID0gJFBhcmFte1R5cGV9IC8vICdDbGFzcyc7CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJFJldHVybkVycm9yID0gc3ViIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgRXJyb3IgICAgID0+ICRfWzBdLAogICAgICAgICAgICBFcnJvckFyZ3MgPT4gWyAoICRfWzFdIC8vICcnICksICggJF9bMl0gLy8gJycgKSBdLCAgICAjIG9ubHkgdHdvIGFyZ3MgYXJlIHN1cHBvcnRlZAogICAgICAgIH07CiAgICB9OwoKICAgICMgc2ltcGxlIFlBTUwgcGFyc2luZywgd2l0aG91dCB1c2luZyBZQU1MIHRhZ3MKICAgIG15ICREZWZpbml0aW9uUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICk7CgogICAgIyBZQU1MIGludmFsaWQKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREZWZpbml0aW9uUmVmKSApIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZSgnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0LicpCiAgICAgICAgKTsKICAgIH0KCiAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gc3RhcnRzIHdpdGggJy0tLScKICAgICMgVGhpcyBpcyBhIGxhc3QgY2hlY2sgZm9yIGxlZ2FjeSBsZWdhY3kgRGVmaW5pdGlvbnMgKHByZSBPVFJTNikgd2hpY2ggd2hlcmUgbm90IFlBTUwKICAgICMgV2UgY2FuIHJlbW92ZSB0aGlzIHRvZ2V0aGVyIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBpbiBEZWZpbml0aW9uR2V0KCkgZXRjLiB3aXRoIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UgYWZ0ZXIgMTEuMAogICAgaWYgKCBzdWJzdHIoICRQYXJhbXtEZWZpbml0aW9ufSwgMCwgMyApIG5lICctLS0nICkgewogICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLicpCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE1lcmdlIHRoZSByb2xlcyBpbnRvIHRoZSBEZWZpbml0aW9uUmVmLiBUaGUgcGFzc2VkIGluIHJlZmVyZW5jZSBpcyBtb2RpZmllZCBpbiBwbGFjZS4KICAgICMgVGhpcyBtaWdodCBjcmVhdGVzIHRoZSAnU2VjdGlvbnMnIGF0dHJpYnV0ZSB3aGVuIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KICAgIGlmICggJFR5cGUgZXEgJ0NsYXNzJyApIHsKICAgICAgICBteSAkUmVzdWx0ID0gJFNlbGYtPl9Qcm9jZXNzUm9sZXMoCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgPT4gJERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIEltcG9ydFJvbGVzICAgPT4gJFBhcmFte0ltcG9ydFJvbGVzfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJFJlc3VsdCB1bmxlc3MgJFJlc3VsdC0+e1N1Y2Nlc3N9OwogICAgfQoKICAgICMgY2hlY2sgdGhlIGRhdGEgc3RydWN0dXJlcyBvZiB0aGUgdG9wIGxldmVsIGF0dHJpYnV0ZXMKICAgIG15ICVFeHBlY3RlZEZvcm1hdCA9ICgKICAgICAgICBTZWN0aW9ucyA9PiAnSGFzaCcsCiAgICApOwogICAgaWYgKCAkVHlwZSBlcSAnQ2xhc3MnICkgewogICAgICAgICRFeHBlY3RlZEZvcm1hdHtQYWdlc30gPSAnQXJyYXknOwogICAgfQogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUV4cGVjdGVkRm9ybWF0ICkgewoKICAgICAgICAjIGVpdGhlciBwYWdlcyBvciBzZWN0aW9ucyBkYXRhIGludmFsaWQKICAgICAgICBpZiAoICEkRGVmaW5pdGlvblJlZi0+eyRLZXl9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXslcyBpcyBtaXNzaW5nLiBQbGVhc2UgcHJvdmlkZSBkYXRhIGZvciAlcyBpbiB0aGUgZGVmaW5pdGlvbi59KSwKICAgICAgICAgICAgICAgICRLZXksCiAgICAgICAgICAgICAgICAkS2V5LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBUT0RPOiB0aGlzIGlzIG5vdCB0cmFuc2xhdGFibGUKICAgICAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZi0+eyRLZXl9IG5lIHVjKCAkRXhwZWN0ZWRGb3JtYXR7JEtleX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJXMgaXMgbm90IGEgJXMuIFBsZWFzZSBjb3JyZWN0IHRoZSBzeW50YXgufSksCiAgICAgICAgICAgICAgICAkS2V5LAogICAgICAgICAgICAgICAgJEV4cGVjdGVkRm9ybWF0eyRLZXl9CiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVmFsaWRhdGVGdW5jdGlvblJlZiA9IFwmeyJLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjazo6SXMkRXhwZWN0ZWRGb3JtYXR7JEtleX1SZWZXaXRoRGF0YSJ9OwogICAgICAgIGlmICggISRWYWxpZGF0ZUZ1bmN0aW9uUmVmLT4oICREZWZpbml0aW9uUmVmLT57JEtleX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJXMgaXMgZW1wdHkuIFBsZWFzZSBwcm92aWRlIGRhdGEgZm9yICVzIGluIHRoZSBkZWZpbml0aW9uLn0pLAogICAgICAgICAgICAgICAgJEtleSwKICAgICAgICAgICAgICAgICRLZXksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgc2Vjb25kIGxldmVsIGRhdGEgZm9ybWF0CiAgICBteSAlU2VjdGlvbklzTWlzc2luZzsKCiAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlcwogICAgaWYgKCAkRXhwZWN0ZWRGb3JtYXR7UGFnZXN9ICkgewogICAgICAgIGZvciBteSAkUGFnZUluZGV4ICggMCAuLiAkI3sgJERlZmluaXRpb25SZWYtPntQYWdlc30gfSApIHsKICAgICAgICAgICAgbXkgJFBhZ2UgPSAkRGVmaW5pdGlvblJlZi0+e1BhZ2VzfS0+WyRQYWdlSW5kZXhdOwogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBDb250ZW50KSkgewogICAgICAgICAgICAgICAgaWYgKCAhJFBhZ2UtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAnJXMnIGlzIG1pc3NpbmcgaW4gdGhlIGRlZmluaXRpb24gb2YgcGFnZSAlcy59KSwKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlIGNvbnRlbnQgZGF0YQogICAgICAgICAgICBpZiAoIHJlZiAkUGFnZS0+e0NvbnRlbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGZvciBwYWdlICVzIGlzIG5vdCBhbiBBcnJheS59KSwKICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcsCiAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFnZS0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGZvciBwYWdlICVzIGlzIGVtcHR5Ln0pLAogICAgICAgICAgICAgICAgICAgICdDb250ZW50JywKICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlIGNvbnRlbnQgc2VjdGlvbnMKICAgICAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkluZGV4ICggMCAuLiAkI3sgJFBhZ2UtPntDb250ZW50fSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJFBhZ2UtPntDb250ZW50fS0+WyRTZWN0aW9uSW5kZXhdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU2VjdGlvbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QSBzZWN0aW9uIGluIHBhZ2UgJXMgaXMgaW52YWxpZC4gUGxlYXNlIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24gb3IgcmVtb3ZlIGl0Ln0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCByZWYgJFNlY3Rpb24gbmUgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEYXRhIGZvciBhIHNlY3Rpb24gaW4gcGFnZSAlcyBpcyBub3QgYSBIYXNoLiBQbGVhc2UgY29ycmVjdCB0aGUgc3ludGF4Ln0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJFNlY3Rpb24tPiUqICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEYXRhIGZvciBhIHNlY3Rpb24gaW4gcGFnZSAlcyBpcyBlbXB0eS4gUGxlYXNlIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24ufSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFNlY3Rpb24tPntTZWN0aW9ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QSBzZWN0aW9uIGluIHBhZ2UgJXMgaXMgbWlzc2luZyB0aGUga2V5ICdTZWN0aW9uJywgd2hpY2ggaGFzIHRvIGJlIGZpbGxlZCB3aXRoIHRoZSBzZWN0aW9uIG5hbWUufSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgc2VjdGlvbiBuYW1lIGZvciBjaGVja2luZyBkYXRhIGludGVncml0eSBsYXRlciBvbgogICAgICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbklzTWlzc2luZ3sgJFNlY3Rpb24tPntTZWN0aW9ufSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIHRoZSBvcHRpb25hbCBhcnJheSByZWZlcmVuY2VzCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KEludGVyZmFjZXMgR3JvdXBzKSkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRQYWdlLT57JEtleX07ICAgICAgICAgICAgICAgIyBpcyBvcHRpb25hbAogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgcmVmICRQYWdlLT57JEtleX0gZXEgJ0FSUkFZJzsgICAgIyBtdXN0IGJlIGFycmF5cmVmIHdoZW4gaXQgZXhpc3RzCgogICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAlcyBmb3IgcGFnZSAlcyBpcyBub3QgYW4gQXJyYXkufSksCiAgICAgICAgICAgICAgICAgICAgJEtleSwKICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAlRGVmaW5lZER5bmFtaWNGaWVsZHM7CiAgICBteSBATmVlZGVkQ29udGVudEVudHJ5ID0gcXcvREYgR3JpZCBIZWFkZXIvOwoKICAgICMgc2VjdGlvbnMgZGF0YSBpbiBwYWdlcyBjb250ZW50IGFyZSB2YWxpZCwgZ28gb24gY2hlY2tpbmcKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb25OYW1lICgga2V5cyAleyAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLyB7fSB9ICkgewoKICAgICAgICAjIHJlbW92ZSBkZWZpbmVkIHNlY3Rpb25zIHRvIGxhdGVyIGlkZW50aWZ5IHVuZGVmaW5lZCBvbmVzCiAgICAgICAgZGVsZXRlICRTZWN0aW9uSXNNaXNzaW5neyRTZWN0aW9uTmFtZX07CgogICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb25SZWYtPntTZWN0aW9uc317JFNlY3Rpb25OYW1lfTsKCiAgICAgICAgaWYgKCAhJFNlY3Rpb24gfHwgIUlzSGFzaFJlZldpdGhEYXRhKCRTZWN0aW9uKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RWl0aGVyIHRoZSBjb250ZW50IG9mIHNlY3Rpb24gJXMgaXMgZW50aXJlbHkgbWlzc2luZyBvciBub3QgYSBoYXNoLn0pLAogICAgICAgICAgICAgICAgJFNlY3Rpb25OYW1lLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VjdGlvbi0+e01vZHVsZX0gKSB7CiAgICAgICAgICAgIG15ICRNb2R1bGUgPSAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpTZWN0aW9uOjonIC4gJFNlY3Rpb24tPntNb2R1bGV9OwoKICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkTW9kdWxlKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtDYW5ub3QgbG9hZCBNb2R1bGUgaW4gc2VjdGlvbiAlcy59KSwKICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbk5hbWUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgfQoKICAgICAgICAjIHNraXAgZGVzY3JpcHRpb24gc2VjdGlvbnMKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IGVxICdEZXNjcmlwdGlvbic7CgogICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgaWYgKCAhYW55IHsgJFNlY3Rpb24tPntUeXBlfSBlcSAkXyB9IHF3L0NvbmZpZ0l0ZW1MaW5rcyBEZXNjcmlwdGlvbiBSZWZlcmVuY2VkU2VjdGlvbi8gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7SW52YWxpZCB0eXBlIGluIHNlY3Rpb24gJXMufSksCiAgICAgICAgICAgICAgICAgICAgJFNlY3Rpb25OYW1lLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICEkU2VjdGlvbi0+e0NvbnRlbnR9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJ0NvbnRlbnQnIGlzIG1pc3NpbmcgaW4gc2VjdGlvbiAlcy59KSwKICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkU2VjdGlvbi0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0RhdGEgZm9yICdDb250ZW50JyBpbiBzZWN0aW9uICVzIGlzIG5vdCBhbiBhcnJheS59KSwKICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQEdyaWRzOwogICAgICAgIGZvciBteSAkQ29udGVudEl0ZW0gKCAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKiApIHsKCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb250ZW50SXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QW4gZWxlbWVudCBvZiAnQ29udGVudCcgaW4gc2VjdGlvbiAlcyBkb2VzIG5vdCBjb250YWluIGtleSB2YWx1ZSBwYWlycy59KSwKICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbk5hbWUKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggIWFueSB7ICRDb250ZW50SXRlbS0+eyRffSB9IEBOZWVkZWRDb250ZW50RW50cnkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7U2VjdGlvbiAlcyBoYXMgY29udGVudCB3aGljaCBkb2Vzbid0IHByb3ZpZGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgZW50cmllcyA8JXM+Ln0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZSwKICAgICAgICAgICAgICAgICAgICAiQE5lZWRlZENvbnRlbnRFbnRyeSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJENvbnRlbnRJdGVtLT57REZ9ICkgewogICAgICAgICAgICAgICAgJERlZmluZWREeW5hbWljRmllbGRzeyAkQ29udGVudEl0ZW0tPntERn0gfSA9ICRTZWN0aW9uTmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb250ZW50SXRlbS0+e0dyaWR9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAR3JpZHMsICRDb250ZW50SXRlbS0+e0dyaWR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJEdyaWRJdGVtIChAR3JpZHMpIHsKCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRHcmlkSXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgbWlzY29uZmlndXJlZCBncmlkLn0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJEdyaWRJdGVtLT57Um93c30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgZ3JpZCB3aXRob3V0IGFueSByb3dzLn0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUT0RPIHNvbWUgbW9yZSBiYXNpYyBjaGVja3MKICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkR3JpZEl0ZW0tPntSb3dzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJENlbGwgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ2VsbC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgZ3JpZCB3aXRob3V0IERGIGluIGEgY2VsbC59KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkRGVmaW5lZER5bmFtaWNGaWVsZHN7ICRDZWxsLT57REZ9IH0gPSAkU2VjdGlvbk5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzZWN0aW9ucyBvZiByb2xlcyB3aGljaCBhcmUgb25seSBhYm91dCB0byBiZSBpbXBvcnRlZCBhcmUgbm90IGRlZmluZWQgeWV0CiAgICBteSAlSW1wb3J0Um9sZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0ltcG9ydFJvbGVzfSAvLyBbXSB9OwoKICAgIGZvciBteSAkU2VjdGlvbk5hbWUgKCBrZXlzICVTZWN0aW9uSXNNaXNzaW5nICkgewogICAgICAgIGlmICggJUltcG9ydFJvbGVzICYmICRTZWN0aW9uTmFtZSA9fiAvOjovICkgewogICAgICAgICAgICBST0xFOgogICAgICAgICAgICBmb3IgbXkgJFJvbGUgKCBrZXlzICV7ICREZWZpbml0aW9uUmVmLT57Um9sZXN9IC8vIHt9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFJPTEUgaWYgISRJbXBvcnRSb2xlc3skUm9sZX07CgogICAgICAgICAgICAgICAgIyB0aGlzIHNlY3Rpb24gd2lsbCBiZSBpbXBvcnRlZCBhbmQgY2hlY2tlZCB3aXRoIHRoZSBzcGVjaWZpYyByb2xlCiAgICAgICAgICAgICAgICBkZWxldGUgJFNlY3Rpb25Jc01pc3Npbmd7JFNlY3Rpb25OYW1lfSBpZiAkU2VjdGlvbk5hbWUgPX4gLyREZWZpbml0aW9uUmVmLT57Um9sZXN9eyRSb2xlfXtOYW1lfTo6LzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJVNlY3Rpb25Jc01pc3NpbmcpIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgYXJlIHVzZWQgaW4gcGFnZXMsIGJ1dCBhcmUgbm90IGRlZmluZWQ6ICVzfSksCiAgICAgICAgICAgIGpvaW4oICcsICcsIHNvcnQga2V5cyAlU2VjdGlvbklzTWlzc2luZyApCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGFsbCB1c2VkIGR5bmFtaWMgZmllbGRzIGFyZSB2YWxpZAogICAgbXkgJERGSUQyTmFtZUxpc3RSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgKTsKCiAgICBteSAlREZOYW1lMklETGlzdCA9IHJldmVyc2UgJERGSUQyTmFtZUxpc3RSZWYtPiUqOwoKICAgIGZvciBteSAkRGVmaW5lZEZpZWxkTmFtZSAoIGtleXMgJURlZmluZWREeW5hbWljRmllbGRzICkgewoKICAgICAgICAjIGNoZWNrIHdpdGggZHluYW1pYyBmaWVsZCBsaXN0CiAgICAgICAgaWYgKCAhJERGTmFtZTJJRExpc3R7JERlZmluZWRGaWVsZE5hbWV9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEeW5hbWljIGZpZWxkICVzIGlzIHVzZWQgaW4gc2VjdGlvbiAlcywgYnV0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBzeXN0ZW0uIFBlcmhhcHMgeW91IGZvcmdvdCB0byBjcmVhdGUgaXQgb3IgbWlzc3BlbGxlZCBpdHMgbmFtZT99KSwKICAgICAgICAgICAgICAgICREZWZpbmVkRmllbGROYW1lLAogICAgICAgICAgICAgICAgJERlZmluZWREeW5hbWljRmllbGRzeyREZWZpbmVkRmllbGROYW1lfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgUm9sZURlZmluaXRpb25DaGVjaygpCgpjaGVja3MgdGhlIHN5bnRheCBhbmQgdGhlIHNhbml0eSBvZiBhIG5ldyByb2xlIGRlZmluaXRpb24uCgpUaGlzIG1ldGhvZCBjdXJyZW50bHkgb25seSBmYWxscyBiYWNrIHRvIHRoZSBtZXRob2QgQzxEZWZpbml0aW9uQ2hlY2soKT4uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25DaGVjaygKICAgICAgICBEZWZpbml0aW9uICAgICAgPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIENoZWNrU3ViRWxlbWVudCA9PiAxLCAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCwgdG8gY2hlY2sgc3ViIGVsZW1lbnRzIHJlY3Vyc2l2ZWx5KQogICAgKTsKCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5EZWZpbml0aW9uQ2hlY2soICVQYXJhbSwgVHlwZSA9PiAnUm9sZScgKTsKfQoKPWhlYWQyIERlZmluaXRpb25OZWVkU3luYygpCgpyZXR1cm4gYSBoYXNoIG9mIGNsYXNzIGlkcyB3aXRoIGN1cnJlbnQgZGVmaW5pdGlvbnMgd2l0aCBkeW5hbWljIGZpZWxkcyBub3Qgc3luY2VkCgogICAgbXkgJURlZmluaXRpb25zT3V0T2ZTeW5jID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25OZWVkU3luYygpOwoKUmV0dXJuCgogICAgJURlZmluaXRpb25zT3V0T2ZTeW5jID0gKAogICAgICAgIENsYXNzSUQxID0+IFsgRHluYW1pY0ZpZWxkSUQxLCBEeW5hbWljRmllbGRJRDIgXSwKICAgICAgICBDbGFzc0lEMiA9PiBbIER5bmFtaWNGaWVsZElEMSwgRHluYW1pY0ZpZWxkSUQzIF0sCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25OZWVkU3luYyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRDYWNoZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbURlZmluaXRpb24nLAogICAgICAgIEtleSAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgKTsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRDYWNoZSkgKSB7CiAgICAgICAgcmV0dXJuICRDYWNoZS0+JSo7CiAgICB9CgogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNsYXNzX2lkLCBmaWVsZF9pZCBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9zeW5jJywKICAgICk7CgogICAgbXkgJU91dE9mU3luYzsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQHsgJE91dE9mU3luY3sgJFJvd1swXSB9IH0sICRSb3dbMV07CiAgICB9CgogICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtRGVmaW5pdGlvbicsCiAgICAgICAgS2V5ICAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgICAgIFZhbHVlID0+IFwlT3V0T2ZTeW5jLAogICAgICAgIFRUTCAgID0+IDcyMDAwLCAgICAgICAgICAgICAgICAgICAgIyAyMCBkCiAgICApOwoKICAgIHJldHVybiAlT3V0T2ZTeW5jOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblNldE91dE9mU3luYygpCgpEZWNsYXJlIGN1cnJlbnQgY2xhc3MgZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMgd2l0aCB0aGVpciBkeW5hbWljIGZpZWxkcwoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TZXRPdXRPZlN5bmMoCiAgICAgICAgQ2xhc3NlcyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQxID0+IFsgRHluYW1pY0ZpZWxkSUQxLCBEeW5hbWljRmllbGRJRDIgXSwKICAgICAgICAgICAgQ2xhc3NJRDIgPT4gWyBEeW5hbWljRmllbGRJRDEsIER5bmFtaWNGaWVsZElEMyBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25TZXRPdXRPZlN5bmMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgaWYgKCAhJFBhcmFte0NsYXNzZXN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc2VzIGhhc2ghJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUN1cnJlbnQgPSAkU2VsZi0+RGVmaW5pdGlvbk5lZWRTeW5jKCk7CiAgICBteSAlTmV3OwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAkUGFyYW17Q2xhc3Nlc30tPiUqICkgewogICAgICAgIGlmICggISRDdXJyZW50eyRDbGFzc0lEfSApIHsKICAgICAgICAgICAgJE5ld3skQ2xhc3NJRH0gPSAkUGFyYW17Q2xhc3Nlc317JENsYXNzSUR9OwoKICAgICAgICAgICAgbmV4dCBDTEFTUzsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkRmllbGRJRCAoICRQYXJhbXtDbGFzc2VzfXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICBpZiAoIG5vbmUgeyAkXyA9PSAkRmllbGRJRCB9ICRDdXJyZW50eyRDbGFzc0lEfS0+QCogKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICROZXd7JENsYXNzSUR9IH0sICRGaWVsZElEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIHVubGVzcyAlTmV3OwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRTdWNjZXNzID0gMTsKICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJU5ldyApIHsKICAgICAgICBmb3IgbXkgJEZpZWxkSUQgKCAkTmV3eyRDbGFzc0lEfS0+QCogKSB7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgb3V0IG9mIHN5bmMgcmVsYXRpb25zCiAgICAgICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCAgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9zeW5jIChjbGFzc19pZCwgZmllbGRfaWQpIFZBTFVFUyAoPywgPyknLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkQ2xhc3NJRCwgXCRGaWVsZElEIF0sCiAgICAgICAgICAgICkgPyAkU3VjY2VzcyA6IDA7CiAgICAgICAgfQogICAgfQoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbURlZmluaXRpb24nLAogICAgICAgIEtleSAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgKTsKCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBEZWZpbml0aW9uU2V0U3luY2VkKCkKCkRlY2xhcmUgY3VycmVudCBjbGFzcyBkZWZpbml0aW9uIGFzIGluIHN5bmMgd2l0aCBpdHMgZHluYW1pYyBmaWVsZHMKCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0U3luY2VkKAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBEZWZpbml0aW9uU2V0U3luY2VkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb25fc3luYyBXSEVSRSBjbGFzc19pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICApOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbURlZmluaXRpb24nLAogICAgICAgIEtleSAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgKTsKCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBEZWZpbml0aW9uU3luYygpCgpBZGQgbmV3IGRlZmluaXRpb25zIGZvciBhbGwgY2xhc3NlcyB3aGVyZSBkeW5hbWljIGZpZWxkIGNvbnRlbnRzIGNoYW5nZWQgY29tcGFyZWQgdG8gdGhlIGN1cnJlbnQgZGVmaW5pdGlvbgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvblN5bmMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlT3V0T2ZTeW5jID0gJFNlbGYtPkRlZmluaXRpb25OZWVkU3luYygpOwoKICAgIHJldHVybiAxIHVubGVzcyAlT3V0T2ZTeW5jOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgbXkgQENsYXNzSURzID0ga2V5cyAlT3V0T2ZTeW5jOwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzc0lEIChAQ2xhc3NJRHMpIHsKCiAgICAgICAgIyBjaGVjayB3aGV0aGVyIG1lYW5pbmdmdWwgY29udGVudCBpcyAoc3RpbGwpIGFmZmVjdGVkCiAgICAgICAgbXkgJE5lZWRzU3luYyAgPSAwOwogICAgICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbjsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRmllbGRJRCAoICRPdXRPZlN5bmN7JENsYXNzSUR9LT5AKiApIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJE9sZER5bmFtaWNGaWVsZCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CiAgICAgICAgICAgIGlmICggISRPbGREeW5hbWljRmllbGQgfHwgJE9sZER5bmFtaWNGaWVsZC0+e0lEfSBuZSAkRHluYW1pY0ZpZWxkLT57SUR9ICkgewoKICAgICAgICAgICAgICAgICMgY29uc2lkZXIgbmFtZSBjaGFuZ2VzCiAgICAgICAgICAgICAgICAkTmVlZHNTeW5jID0gMTsKCiAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkT2xkRHluYW1pY0ZpZWxkLT57TGFiZWx9IG5lICREeW5hbWljRmllbGQtPntMYWJlbH0gKSB7CgogICAgICAgICAgICAgICAgIyBkaWZmZXJlbnQgbGFiZWxzIGNhbiBiZSBkdWUgdG8gdGhlIHNlY3Rpb24gZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZERlZmluaXRpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZERlZmluaXRpb25ZQU1MID0gJFNlbGYtPl9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgKSB8fCAnLS0tIHt9JzsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICREeW5hbWljRmllbGREZWZpbml0aW9uWUFNTCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJE9sZER5bmFtaWNGaWVsZC0+e0xhYmVsfSBuZSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbi0+eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfXtMYWJlbH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5lZWRzU3luYyA9IDE7CgogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBEYXRhSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICAgICAgRGF0YTEgPT4gJE9sZER5bmFtaWNGaWVsZC0+e0NvbmZpZ30sCiAgICAgICAgICAgICAgICAgICAgRGF0YTIgPT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ30sCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICROZWVkc1N5bmMgPSAxOwoKICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkTmVlZHNTeW5jICkgewogICAgICAgICAgICAkU2VsZi0+RGVmaW5pdGlvblNldFN5bmNlZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENMQVNTIHVubGVzcyAkTmVlZHNTeW5jOwogICAgICAgIH0KCiAgICAgICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gc3ByaW50ZiAkUmVzdWx0LT57RXJyb3J9LCAkUmVzdWx0LT57RXJyb3JBcmdzfS0+QCo7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRFcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ2xhc3NJbXBvcnQoKQoKSW1wb3J0IGNvbmZpZyBpdGVtIGNsYXNzIGluY2x1ZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgbmFtZXNwYWNlcywgYmFzZWQgb24gY2xhc3MgZGVmaW5pdGlvbgoKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gIihFUlJPUnxJR05PUkV8VVBEQVRFKSIgICAjIChvcHRpb25hbCkgaG93IHRvIGhhbmRsZSBpbXBvcnQgb2YgYWxyZWFkeSBleGlzdGluZyBjbGFzc2VzLCBkZWZhdWx0IEVSUk9SCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkUmVzdWx0ID0gKAogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAoMXwwKSwgICAgICAgICAgICAgICMgU3RhdGUKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ1NvbWUgTWVzc2FnZScsICAgICAjIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiBmYWlsdXJlCiAgICApOwoKPWN1dAoKc3ViIENsYXNzSW1wb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0NsYXNzRXhpc3RzfSB8fD0gJ0VSUk9SJzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgIyBleHBlY3QgYXJyYXkgcmVmIG9mIGRlZmluaXRpb25zCiAgICBteSAkRGVmaW5pdGlvbkxpc3QgPSAkUGFyYW17Q29udGVudH07CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJERlZmluaXRpb25MaXN0KSApIHsKCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUGFyYW0gRGVmaW5pdGlvbkxpc3QgaXMgZW1wdHkgb3Igbm90IGFuIGFycmF5IHJlZmVyZW5jZS4nLAogICAgICAgIH07CiAgICB9CgogICAgIyBpbml0aWFsaXplIG5lZWRlZCB2YXJpYWJsZXMKICAgIG15ICVDbGFzc0RlZmluaXRpb25zOwogICAgbXkgJVJvbGVEZWZpbml0aW9uczsKICAgIG15IEBDbGFzc0NhdGVnb3JpZXM7CiAgICBteSAlRHluYW1pY0ZpZWxkczsKICAgIG15ICVOYW1lc3BhY2VzOwogICAgbXkgJVNldERGczsKICAgIG15ICVDbGFzc05hbWUySUQgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApIC8vIHt9CiAgICB9OwogICAgbXkgJUR5bmFtaWNGaWVsZExvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgICAgICkgfHwge30KICAgIH07CiAgICBteSAlUm9sZU5hbWUySUQgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICkgLy8ge30KICAgIH07CgogICAgIyAwLiBwZXJmb3JtIHNhbml0eSBjaGVja3MgSSAtIGdldCByb2xlcyBhbmQgY2xhc3NlcwogICAgbXkgJUltcG9ydFJvbGVzOwogICAgbXkgJUltcG9ydENsYXNzZXM7CiAgICBmb3IgbXkgJERlZmluaXRpb25JdGVtICggJERlZmluaXRpb25MaXN0LT5AKiApIHsKICAgICAgICBpZiAoICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfSAmJiAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc317TmFtZX0gKSB7CiAgICAgICAgICAgICRJbXBvcnRDbGFzc2VzeyAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc317TmFtZX0gfSA9ICREZWZpbml0aW9uSXRlbTsKCiAgICAgICAgICAgIGlmICggJENsYXNzTmFtZTJJRHsgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9IH0gJiYgJFBhcmFte0NsYXNzRXhpc3RzfSBlcSAnRVJST1InICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkNsYXNzICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtOYW1lfSBhbHJlYWR5IGV4aXN0cy4iLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREZWZpbml0aW9uSXRlbS0+e1JvbGVOYW1lfSApIHsKICAgICAgICAgICAgJEltcG9ydFJvbGVzeyAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gfSA9ICREZWZpbml0aW9uSXRlbTsKCiAgICAgICAgICAgIGlmICggJFJvbGVOYW1lMklEeyAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gfSAmJiAkUGFyYW17Q2xhc3NFeGlzdHN9IGVxICdFUlJPUicgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUm9sZSAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gYWxyZWFkeSBleGlzdHMuIiwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiTmVlZCBDbGFzcyBvciBSb2xlTmFtZSBpbiBEZWZpbml0aW9uLiIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgcGVyZm9ybSBzYW5pdHkgY2hlY2tzIElJIC0gbW9yZSBjbGFzcyBhbmQgcm9sZSBzcGVjaWZpY3M7IGNvbGxlY3QgY2F0ZWdvcnkgYW5kIGRmIGRhdGEKICAgIGZvciBteSAkRGVmaW5pdGlvbkl0ZW0gKCAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb25JdGVtLT57RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkRGVmaW5pdGlvblJlZiApIHsKICAgICAgICAgICAgbXkgJE5hbWUgPSAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gfHwgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9OwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJJdGVtICckTmFtZScgaGFzIG5vdCBhIHZhbGlkIFlBTUwgZGVmaW5pdGlvbiBmaWVsZC4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBmb3IgbXkgJERlZmluaXRpb25LZXkgKCBrZXlzICV7JERlZmluaXRpb25SZWZ9ICkgewogICAgICAgICAgICAkRGVmaW5pdGlvbkl0ZW0tPnskRGVmaW5pdGlvbktleX0gPSAkRGVmaW5pdGlvblJlZi0+eyREZWZpbml0aW9uS2V5fTsKICAgICAgICB9CgogICAgICAgICMgICAgICAgIG15ICRUeXBlID0gJERlZmluaXRpb25JdGVtLT57Q2xhc3N9ID8gJ0NsYXNzJyA6ICdSb2xlJzsKICAgICAgICAjCiAgICAgICAgIyBUT0RPOiBBZGQgYSBwcmVsaW1pbmFyeSBjaGVjawogICAgICAgICMgICAgICAgICMgY2hlY2sgZGVmaW5pdGlvbiBmb3IgdmFsaWRpdHkKICAgICAgICAjICAgICAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+RGVmaW5pdGlvbkNoZWNrKAogICAgICAgICMgICAgICAgICAgICBEZWZpbml0aW9uICA9PiAkRGVmaW5pdGlvbkl0ZW0tPntEZWZpbml0aW9ufSwKICAgICAgICAjICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgIyAgICAgICAgICAgIEltcG9ydFJvbGVzID0+IFsga2V5cyAlSW1wb3J0Um9sZXMgXSwKICAgICAgICAjICAgICAgICApOwogICAgICAgICMKICAgICAgICAjICAgICAgICBpZiAoICEkQ2hlY2tSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAjICAgICAgICAgICAgbXkgJE5hbWUgPSAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gfHwgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9OwogICAgICAgICMKICAgICAgICAjICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAjICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICMgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJJdGVtICckTmFtZScgZmFpbGVkIGluaXRpYWwgZGVmaW5pdGlvbiBjaGVjay4iLAogICAgICAgICMgICAgICAgICAgICB9OwogICAgICAgICMgICAgICAgIH0KCiAgICAgICAgIyBjb2xsZWN0IGNsYXNzIHRhZ3MKICAgICAgICBpZiAoICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfSApIHsKICAgICAgICAgICAgQENsYXNzQ2F0ZWdvcmllcyA9IHVuaXEoIEBDbGFzc0NhdGVnb3JpZXMsICggJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e0NhdGVnb3JpZXN9IC8vIFtdICktPkAqICk7CiAgICAgICAgfQoKICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZHMgKGlmIHRoZXkgZXhpc3QpCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbkl0ZW0tPntEeW5hbWljRmllbGRzfSApIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgICAgICREZWZpbml0aW9uSXRlbS0+e0R5bmFtaWNGaWVsZHN9LT4lKiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBmZXRjaCBleGlzdGluZyBjYXRlZ29yaWVzIHRvIGNoZWNrIGZvciBkdXBsaWNhdGVzCiAgICBteSAkRXhpc3RpbmdDYXRlZ29yaWVzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5JywKICAgICAgICBWYWxpZCA9PiAwLAogICAgKSAvLyB7fTsKCiAgICAjIGhhbmRsZSBjcmVhdGlvbiBvZiBjb25maWcgaXRlbSBjbGFzcyBjYXRlZ29yaWVzCiAgICBDQVRFR09SWToKICAgIGZvciBteSAkQ2F0ZWdvcnkgKEBDbGFzc0NhdGVnb3JpZXMpIHsKCiAgICAgICAgbmV4dCBDQVRFR09SWSBpZiBhbnkgeyAkXyBlcSAkQ2F0ZWdvcnkgfSB2YWx1ZXMgJEV4aXN0aW5nQ2F0ZWdvcmllcy0+JSo7CgogICAgICAgIG15ICRTdWNjZXNzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzczo6Q2F0ZWdvcnknLAogICAgICAgICAgICBOYW1lICAgID0+ICRDYXRlZ29yeSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZG4ndCBhZGQgY29uZmlnIGl0ZW0gY2xhc3MgY2F0ZWdvcnkgJENhdGVnb3J5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIGlubmVyIGZpZWxkcyBvZiBzZXQgREZzIHRvIGhhc2gKICAgIGZvciBteSAkRmllbGQgKCBrZXlzICVEeW5hbWljRmllbGRzICkgewogICAgICAgIGlmICggJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICBteSAlU2V0RmllbGRzID0gbWFwIHsgJF8tPntERn0gPT4gJF8tPntEZWZpbml0aW9ufSB9ICREeW5hbWljRmllbGRzeyRGaWVsZH17Q29uZmlnfXtJbmNsdWRlfS0+QCo7CgogICAgICAgICAgICBpZiAoICElU2V0RmllbGRzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb25lb3VzIGNvbmZpZ3VyYXRpb24gb2YgU2V0ICRGaWVsZC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJVNldERGcyA9ICgKICAgICAgICAgICAgICAgICVTZXRERnMsCiAgICAgICAgICAgICAgICAlU2V0RmllbGRzLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGRzCiAgICBteSAlQWxsRmllbGRzID0gKCAlRHluYW1pY0ZpZWxkcywgJVNldERGcyApOwogICAgZm9yIG15ICRGaWVsZCAoIGtleXMgJUFsbEZpZWxkcyApIHsKICAgICAgICBpZiAoICREeW5hbWljRmllbGRMb29rdXB7JEZpZWxkfSApIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBuZSAkQWxsRmllbGRzeyRGaWVsZH17RmllbGRUeXBlfSB8fCAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0gbmUgJ0lUU01Db25maWdJdGVtJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEeW5hbWljRmllbGQgJEZpZWxkIGV4aXN0cyBidXQgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWlyZWQgT2JqZWN0LSBhbmQvb3IgRmllbGRUeXBlLiIsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntNdWx0aVZhbHVlfSB4b3IgJEFsbEZpZWxkc3skRmllbGR9e011bHRpVmFsdWV9ICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkR5bmFtaWNGaWVsZCAkRmllbGQgZXhpc3RzIGJ1dCBkb2VzIG5vdCBtYXRjaCB0aGUgbXVsdGl2YWx1ZSBzZXR0aW5nLiIsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRGaWVsZCAhfiBteyBcQSBbYS16QS1aXGRcLV0rIFx6IH14bXMgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSW52YWxpZCBEeW5hbWljRmllbGQgbmFtZSAnJEZpZWxkJy4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmllbGQgPX4gL14oW14tXSspLS8gKSB7CiAgICAgICAgICAgICROYW1lc3BhY2VzeyQxfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgMS4gY3JlYXRlIGFsbCBjbGFzc2VzCiAgICBDTEFTU0RFRklOSVRJT046CiAgICBmb3IgbXkgJENsYXNzRGVmaW5pdGlvbiAoIGdyZXAgeyAkXy0+e0NsYXNzfSB9ICREZWZpbml0aW9uTGlzdC0+QCogKSB7CgogICAgICAgIG15ICVDbGFzc0RhdGEgPSAleyBkZWxldGUgJENsYXNzRGVmaW5pdGlvbi0+e0NsYXNzfSB9OwoKICAgICAgICAjIGhhbmRsZSBkdXBsaWNhdGlvbnMgYWNjb3JkaW5nIHBhcmFtIENsYXNzRXhpc3RzCiAgICAgICAgbXkgJENsYXNzSUQ7CiAgICAgICAgaWYgKCAkQ2xhc3NOYW1lMklEeyAkQ2xhc3NEYXRhe05hbWV9IH0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte0NsYXNzRXhpc3RzfSBlcSAnVVBEQVRFJyApIHsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgPT4gJENsYXNzTmFtZTJJRHsgJENsYXNzRGF0YXtOYW1lfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJENsYXNzRGF0YXtOYW1lfSwKICAgICAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkNvdWxkIG5vdCB1cGRhdGUgY2xhc3MgJENsYXNzRGF0YXtOYW1lfS4iLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkQ2xhc3NJRCA9ICRDbGFzc05hbWUySUR7ICRDbGFzc0RhdGF7TmFtZX0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG5leHQgQ0xBU1NERUZJTklUSU9OOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJENsYXNzRGF0YXtOYW1lfSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRDbGFzc0lEICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkNvdWxkIG5vdCBhZGQgY2xhc3MgJENsYXNzRGF0YXtOYW1lfS4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgY2xhc3MgcHJlZmVyZW5jZXMKICAgICAgICBQUkVGRVJFTkNFS0VZOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZUtleSAocXcoTmFtZU1vZHVsZSBOdW1iZXJNb2R1bGUgVmVyc2lvblN0cmluZ01vZHVsZSBQZXJtaXNzaW9uIENhdGVnb3JpZXMgVmVyc2lvblRyaWdnZXIpKSB7CgogICAgICAgICAgICAjIHRyYW5zaXRpb246IHByZWZlcmVuY2UgUGVybWlzc2lvbiBpcyBuYW1lZCBQZXJtaXNzaW9uR3JvdXAgaW4gZGVmaW5pdGlvbiBzeW50YXgKICAgICAgICAgICAgbXkgJFByZWZlcmVuY2VWYWx1ZTsKICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZUtleSBlcSAnUGVybWlzc2lvbicgKSB7CgogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFS0VZIHVubGVzcyAkQ2xhc3NEYXRhe1Blcm1pc3Npb25Hcm91cH07CgogICAgICAgICAgICAgICAgJFByZWZlcmVuY2VWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgICAgICAgICBHcm91cCA9PiAkQ2xhc3NEYXRhe1Blcm1pc3Npb25Hcm91cH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFByZWZlcmVuY2VWYWx1ZSA9ICRDbGFzc0RhdGF7JFByZWZlcmVuY2VLZXl9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0VLRVkgdW5sZXNzICRQcmVmZXJlbmNlVmFsdWU7CgogICAgICAgICAgICBpZiAoICFyZWYgJFByZWZlcmVuY2VWYWx1ZSApIHsKICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlVmFsdWUgPSBbJFByZWZlcmVuY2VWYWx1ZV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRUtFWSB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRQcmVmZXJlbmNlVmFsdWUpOwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFByZWZlcmVuY2VLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFByZWZlcmVuY2VWYWx1ZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGRuJ3QgdXBkYXRlIHByZWZlcmVuY2UgJFByZWZlcmVuY2VLZXkgZm9yIGNvbmZpZyBpdGVtIGNsYXNzICRDbGFzc0lELiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbGxlY3QgZGVmaW5pdGlvbgogICAgICAgICRDbGFzc0RlZmluaXRpb25zeyRDbGFzc0lEfSA9ICRDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9ufTsKICAgIH0KCiAgICAjIDIuIGNyZWF0ZSBhbGwgcm9sZXMKICAgIFJPTEVERUZJTklUSU9OOgogICAgZm9yIG15ICRSb2xlRGVmaW5pdGlvbiAoIGdyZXAgeyAkXy0+e1JvbGVOYW1lfSB9ICREZWZpbml0aW9uTGlzdC0+QCogKSB7CgogICAgICAgIG15ICRSb2xlTmFtZSA9IGRlbGV0ZSAkUm9sZURlZmluaXRpb24tPntSb2xlTmFtZX07CgogICAgICAgICMgaGFuZGxlIGR1cGxpY2F0aW9ucyBhY2NvcmRpbmcgcGFyYW0gQ2xhc3NFeGlzdHMKICAgICAgICBteSAkUm9sZUlEOwogICAgICAgIGlmICggJFJvbGVOYW1lMklEeyRSb2xlTmFtZX0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte0NsYXNzRXhpc3RzfSBlcSAnVVBEQVRFJyApIHsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgPT4gJFJvbGVOYW1lMklEeyRSb2xlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkUm9sZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgcm9sZSAkUm9sZU5hbWUuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRSb2xlSUQgPSAkUm9sZU5hbWUySUR7JFJvbGVOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG5leHQgUk9MRURFRklOSVRJT047CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRSb2xlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICAgICAgICAgICAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFJvbGVJRCApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb3VsZCBub3QgYWRkIHJvbGUgJFJvbGVOYW1lLiIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIGNvbGxlY3QgZGVmaW5pdGlvbgogICAgICAgICRSb2xlRGVmaW5pdGlvbnN7JFJvbGVJRH0gPSAkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9ufTsKICAgIH0KCiAgICAjIG5hbWVzcGFjZSBoYW5kbGluZwogICAgaWYgKCVOYW1lc3BhY2VzKSB7CgogICAgICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgICAgICMgR2V0IGN1cnJlbnQgc2V0dGluZyB2YWx1ZS4KICAgICAgICBteSAlU2V0dGluZyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ05hbWVzcGFjZXMjIyNEeW5hbWljRmllbGQnLAogICAgICAgICk7CgogICAgICAgICMgZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCB1bml0IHRlc3RzCiAgICAgICAgbXkgQEV4aXN0aW5nTmFtZXNwYWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpOYW1lc3BhY2UnKS0+TmFtZXNwYWNlc0xpc3QoCiAgICAgICAgICAgIFNjb3BlID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICk7CiAgICAgICAgbXkgJUFsbE5hbWVzcGFjZXMgPSAoCiAgICAgICAgICAgICggbWFwIHsgJF8gPT4gMSB9IEBFeGlzdGluZ05hbWVzcGFjZXMgKSwKICAgICAgICAgICAgJU5hbWVzcGFjZXMsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lc3BhY2VzIG5lZWQgdG8gYmUgY2hhbmdlZAogICAgICAgIG15ICRVcGRhdGVOYW1lc3BhY2VzID0gMDsKICAgICAgICBORVdOQU1FU1BBQ0U6CiAgICAgICAgZm9yIG15ICROZXdOYW1lc3BhY2UgKCBrZXlzICVBbGxOYW1lc3BhY2VzICkgewogICAgICAgICAgICBpZiAoIG5vbmUgeyAkTmV3TmFtZXNwYWNlIGVxICRfIH0gQEV4aXN0aW5nTmFtZXNwYWNlcyApIHsKICAgICAgICAgICAgICAgICRVcGRhdGVOYW1lc3BhY2VzID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgTkVXTkFNRVNQQUNFOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkVXBkYXRlTmFtZXNwYWNlcykgewoKICAgICAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgICAgIEZvcmNlICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFVwZGF0ZSBzZXR0aW5nIHdpdGggbW9kaWZpZWQgZGF0YQogICAgICAgICAgICBteSAlUmVzdWx0ID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICdOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSAgICA9PiBbIGtleXMgJUFsbE5hbWVzcGFjZXMgXSwKICAgICAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHVwZGF0ZSBzZXR0aW5nIE5hbWVzcGFjZXMjIyNEeW5hbWljRmllbGQuJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvdWxkIG5vdCB1bmxvY2sgc2V0dGluZyBOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkLicsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAlRGVwbG95bWVudFJlc3VsdCA9ICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICAgICAgICAgICAgICBDb21tZW50cyAgICAgID0+ICJDbGFzc0ltcG9ydCB1cGRhdGluZyBOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEZvcmNlICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIERpcnR5U2V0dGluZ3MgPT4gWydOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkJ10sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkRGVwbG95bWVudFJlc3VsdHtTdWNjZXNzfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdEZXBsb3ltZW50IGZhaWxlZCEnLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNwbGl0IGR5bmFtaWMgZmllbGRzIGluIHRocmVlIHNlcGFyYXRlIGdyb3VwcwogICAgbXkgQE5vcm1hbEZpZWxkcyAgICAgPSBncmVwIHsgJF8tPntGaWVsZFR5cGV9IG5lICdMZW5zJyAmJiAkXy0+e0ZpZWxkVHlwZX0gbmUgJ1NldCcgfSB2YWx1ZXMgJUFsbEZpZWxkczsKICAgIG15IEBEZXBlbmRlbmN5RmllbGRzID0gZ3JlcCB7ICRfLT57RmllbGRUeXBlfSBlcSAnTGVucycgfHwgJF8tPntGaWVsZFR5cGV9IGVxICdTZXQnIH0gdmFsdWVzICVBbGxGaWVsZHM7CiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoKTsKCiAgICBteSBAU29ydGVkRGVwZW5kZW5jeUZpZWxkczsKICAgIG15IEBMZWZ0b3ZlckZpZWxkcyAgICA9IEBEZXBlbmRlbmN5RmllbGRzOwogICAgbXkgJUF2YWlsYWJsZUZpZWxkcyAgID0gbWFwIHsgJF8tPntOYW1lfSA9PiAxIH0gKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCosIEBOb3JtYWxGaWVsZHMgKTsKICAgIG15ICRQcmV2aW91c0FycmF5U2l6ZSA9IC0xOwogICAgd2hpbGUgKCBATGVmdG92ZXJGaWVsZHMgJiYgKCAkUHJldmlvdXNBcnJheVNpemUgPCBzY2FsYXIgQFNvcnRlZERlcGVuZGVuY3lGaWVsZHMgKSApIHsKICAgICAgICBteSBAQ3VycmVudExlZnRvdmVyRmllbGRzID0gKCk7CiAgICAgICAgJFByZXZpb3VzQXJyYXlTaXplID0gc2NhbGFyIEBTb3J0ZWREZXBlbmRlbmN5RmllbGRzOwogICAgICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoQExlZnRvdmVyRmllbGRzKSB7CiAgICAgICAgICAgIG15ICREZXBlbmRlbmNpZXNGdWxmaWxsZWQgPSAkU2VsZi0+X0NoZWNrREZEZXBlbmRlbmNpZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEF2YWlsYWJsZURGcyAgICAgICA9PiBcJUF2YWlsYWJsZUZpZWxkcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCREZXBlbmRlbmNpZXNGdWxmaWxsZWQpIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNvcnRlZERlcGVuZGVuY3lGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICAkQXZhaWxhYmxlRmllbGRzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDdXJyZW50TGVmdG92ZXJGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQExlZnRvdmVyRmllbGRzID0gQEN1cnJlbnRMZWZ0b3ZlckZpZWxkczsKICAgIH0KICAgIGlmIChATGVmdG92ZXJGaWVsZHMpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAnVGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIGZvbGxvd2luZyBkeW5hbWljIGZpZWxkcyBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICVzLiBQbGVhc2UgbWFrZSBzdXJlIGFsbCBmaWVsZCBkZXBlbmRlbmNpZXMgYXJlIHByZXNlbnQgaW4gdGhlIGltcG9ydCBvciBvbiB0aGUgc3lzdGVtIGFuZCB0aGF0IHRoZXkgZG8gbm90IGNvbnRhaW4gY2lyY3VsYXIgcmVmZXJlbmNlcyB0byBlYWNoIG90aGVyLicsCiAgICAgICAgICAgIFBsYWNlaG9sZGVyRGF0YSA9PiBbIGpvaW4oICcsICcsIEBMZWZ0b3ZlckZpZWxkcyApIF0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIDMuIGNyZWF0ZSBkeW5hbWljIGZpZWxkcwogICAgbXkgJE9yZGVyID0gc2NhbGFyKCBrZXlzICVEeW5hbWljRmllbGRMb29rdXAgKTsKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZENvbmZpZyAoIEBOb3JtYWxGaWVsZHMsIEBTb3J0ZWREZXBlbmRlbmN5RmllbGRzICkgewogICAgICAgIG5leHQgRklFTEQgaWYgJER5bmFtaWNGaWVsZExvb2t1cHsgJEZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgbXkgJVNldENvbmZpZzsKICAgICAgICBpZiAoICRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgIG15IEBJbmNsdWRlZCA9IG1hcCB7IHsgREYgPT4gJF8tPntERn0gfSB9ICRGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0tPkAqOwogICAgICAgICAgICAlU2V0Q29uZmlnID0gKAogICAgICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntDb25maWd9LT4lKiwKICAgICAgICAgICAgICAgICAgICBJbmNsdWRlID0+IFxASW5jbHVkZWQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBuZWVkZWQsIHBlcmZvcm0gbmVjZXNzYXJ5IHRyYW5zZm9ybWF0aW9ucwogICAgICAgICRGaWVsZENvbmZpZyA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0ltcG9ydCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZpZWxkSUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgICAgICRGaWVsZENvbmZpZy0+JSosCiAgICAgICAgICAgICVTZXRDb25maWcsCiAgICAgICAgICAgIEZpZWxkT3JkZXIgPT4gKyskT3JkZXIsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgUmVvcmRlciAgICA9PiAwLAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmllbGRJRCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBhZGQgZHluYW1pYyBmaWVsZCAkRmllbGRDb25maWctPntOYW1lfS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJElzU2NyaXB0RmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAgICAgJEZpZWxkQ29uZmlnLT4lKiwKICAgICAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICAgICB9LAogICAgICAgICAgICBCZWhhdmlvciA9PiAnSXNTY3JpcHRGaWVsZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgZXZlbnRzIGZvciBzY3JpcHQgZmllbGRzCiAgICAgICAgaWYgKCAkSXNTY3JpcHRGaWVsZCAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRGaWVsZENvbmZpZy0+e0NvbmZpZ317VXBkYXRlRXZlbnRzfSApICkgewogICAgICAgICAgICBteSAkQ29uZmlnID0gJEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSA/ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHJpdmVyJyktPnsgJEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSB9IDoge307CgogICAgICAgICAgICAjIENoZWNrIG1vZHVsZSB2YWxpZGl0eQogICAgICAgICAgICBpZiAoICEkQ29uZmlnLT57TW9kdWxlfSB8fCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJENvbmZpZy0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHJpdmVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCggJENvbmZpZy0+e01vZHVsZX0gKTsKCiAgICAgICAgICAgICMgdmFsaWRhdGUgdXBkYXRlIGV2ZW50cyBhZ2FpbnN0IHBvc3NpYmxlIGV2ZW50cwogICAgICAgICAgICBteSAkUG9zc2libGVDb25kaXRpb25zID0gJERyaXZlck9iamVjdC0+R2V0UG9zc2libGVFeGVjdXRpb25Db25kaXRpb25zKAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkRmllbGRDb25maWctPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgIEZpZWxkSUQgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBARmlsdGVyZWRVcGRhdGVFdmVudHM7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUG9zc2libGVDb25kaXRpb25zLT57UG9zc2libGVVcGRhdGVFdmVudHN9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAlUG9zc2libGVVcGRhdGVFdmVudHMgPSBtYXAgeyAkXyA9PiAkXyB9ICRQb3NzaWJsZUNvbmRpdGlvbnMtPntQb3NzaWJsZVVwZGF0ZUV2ZW50c30tPkAqOwogICAgICAgICAgICAgICAgQEZpbHRlcmVkVXBkYXRlRXZlbnRzID0gZ3JlcCB7ICRQb3NzaWJsZVVwZGF0ZUV2ZW50c3skX30gfSAkRmllbGRDb25maWctPntDb25maWd9e1VwZGF0ZUV2ZW50c30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoQEZpbHRlcmVkVXBkYXRlRXZlbnRzKSB7CiAgICAgICAgICAgICAgICAkRHJpdmVyT2JqZWN0LT5TZXRVcGRhdGVFdmVudHMoCiAgICAgICAgICAgICAgICAgICAgRmllbGRJRCA9PiAkRmllbGRJRCwKICAgICAgICAgICAgICAgICAgICBFdmVudHMgID0+IFxARmlsdGVyZWRVcGRhdGVFdmVudHMsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgdHJpZ2dlciBkeW5hbWljIGZpZWxkIGV2ZW50cwogICAgIyAgIHRoaXMgaXMgZG9uZSBiZWNhdXNlIFNldC1pbm5lciBkeW5hbWljIGZpZWxkcyBhcmUgdXBkYXRlZCBhZnRlcndhcmRzIHZpYQogICAgIyAgIGFuIGV2ZW50LCBjYXVzaW5nIHRoZSBkYXRhIGluIHRoZSBjb25maWcgaXRlbSBkZWZpbml0aW9ucyB0byBiZWNvbWUgb3V0ZGF0ZWQKICAgICREeW5hbWljRmllbGRPYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgIyA0LiBhZGQgZGVmaW5pdGlvbnMKICAgIGZvciBteSAkUm9sZUlEICgga2V5cyAlUm9sZURlZmluaXRpb25zICkgewogICAgICAgIG15ICRSZXR1cm4gPSAkU2VsZi0+Um9sZURlZmluaXRpb25BZGQoCiAgICAgICAgICAgIFJvbGVJRCAgICAgPT4gJFJvbGVJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkUm9sZURlZmluaXRpb25zeyRSb2xlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIEZvcmNlICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUmV0dXJuLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHN0b3JlIGRlZmluaXRpb24uJywKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBmb3IgbXkgJENsYXNzSUQgKCBrZXlzICVDbGFzc0RlZmluaXRpb25zICkgewogICAgICAgIG15ICRSZXR1cm4gPSAkU2VsZi0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkQ2xhc3NEZWZpbml0aW9uc3skQ2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRSZXR1cm4tPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3Qgc3RvcmUgZGVmaW5pdGlvbi4nLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfTsKfQoKPWhlYWQyIENsYXNzRXhwb3J0KCkKCkV4cG9ydCBjb25maWcgaXRlbSBjbGFzc2VzLCBpbmNsdWRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIG5hbWVzcGFjZXMsIGludG8gYSBZQU1MIHN0cmluZwoKICAgIG15ICRZQU1MU3RyaW5nID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzRXhwb3J0KAogICAgICAgIEl0ZW1JRExpc3QgPT4gW0NsYXNzSUQxLCBDbGFzc0lEMiwgQ2xhc3NJRDMsIC4uLl0sICAgICAgIyBsaXN0IG9mIGNsYXNzIG9yIC8gYW5kIHJvbGUgSURzIHRvIGV4cG9ydAogICAgKTsKCkluIGNhc2Ugb2YgYSBmYWlsdXJlIEM8dW5kZWY+IGlzIHJldHVybmVkLgoKPWN1dAoKc3ViIENsYXNzRXhwb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgIG15ICRBbGxFeHBvcnRlZENsYXNzZXNSZWY7CgogICAgZm9yIG15ICRFeHBvcnRJdGVtSUQgKCBAeyAkUGFyYW17SXRlbUlETGlzdH0gfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBpdGVtIGlzIHJvbGUgb3IgY2xhc3MKICAgICAgICBteSAkSXRlbURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRXhwb3J0SXRlbUlELAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklEICRFeHBvcnRJdGVtSUQgaXMgaW52YWxpZCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRJdGVtRGF0YS0+e0NsYXNzfSBuZSAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnICYmICRJdGVtRGF0YS0+e0NsYXNzfSBuZSAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJdGVtIHdpdGggSUQgJEV4cG9ydEl0ZW1JRCBpcyBuZWl0aGVyIGEgY29uZmlnIGl0ZW0gY2xhc3Mgbm9yIGEgY29uZmlnIGl0ZW0gcm9sZSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUV4cG9ydEl0ZW07CiAgICAgICAgbXkgJERlZmluaXRpb25SZWY7CiAgICAgICAgaWYgKCAkSXRlbURhdGEtPntDbGFzc30gZXEgJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApIHsKCiAgICAgICAgICAgICMgZmV0Y2ggY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAkRGVmaW5pdGlvblJlZiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRFeHBvcnRJdGVtSUQgKTsKICAgICAgICAgICAgJEV4cG9ydEl0ZW17Q2xhc3N9e05hbWV9ID0gJERlZmluaXRpb25SZWYtPntDbGFzc307CgogICAgICAgICAgICAjIGZldGNoIGNsYXNzIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRFeHBvcnRJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISVDbGFzc1ByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBnZXQgcHJlZmVyZW5jZSBkYXRhIGZvciBjbGFzcyAkRGVmaW5pdGlvblJlZi0+e0NsYXNzfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgUFJFRkVSRU5DRVNLRVk6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZUtleSAoIGtleXMgJUNsYXNzUHJlZmVyZW5jZXMgKSB7CgogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFU0tFWSB1bmxlc3MgJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFU0tFWSB1bmxlc3MgJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9WzBdOwoKICAgICAgICAgICAgICAgICMgdHJhbnNpdGlvbiBvZiBQZXJtaXNzaW9uIHRvIFBlcm1pc3Npb25Hcm91cAogICAgICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZUtleSBlcSAnUGVybWlzc2lvbicgKSB7CgogICAgICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIGdyb3VwIGlkIGludG8gZ3JvdXAgbmFtZQogICAgICAgICAgICAgICAgICAgIG15ICRQcmVmZXJlbmNlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9WzBdLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXtQZXJtaXNzaW9uR3JvdXB9ID0gJFByZWZlcmVuY2VWYWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNpbmdsZS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBlbHNpZiAoIGFueSB7ICRfIGVxICRQcmVmZXJlbmNlS2V5IH0gcXcoTmFtZU1vZHVsZSBOdW1iZXJNb2R1bGUgVmVyc2lvblN0cmluZ01vZHVsZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJEV4cG9ydEl0ZW17Q2xhc3N9eyRQcmVmZXJlbmNlS2V5fSA9ICRDbGFzc1ByZWZlcmVuY2VzeyRQcmVmZXJlbmNlS2V5fVswXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG11bHRpLXZhbHVlIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgIGVsc2lmICggYW55IHsgJF8gZXEgJFByZWZlcmVuY2VLZXkgfSBxdyhDYXRlZ29yaWVzIFZlcnNpb25UcmlnZ2VyKSApIHsKICAgICAgICAgICAgICAgICAgICAkRXhwb3J0SXRlbXtDbGFzc317JFByZWZlcmVuY2VLZXl9ID0gJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEl0ZW1EYXRhLT57Q2xhc3N9IGVxICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJyApIHsKCiAgICAgICAgICAgICMgZmV0Y2ggcm9sZSBkZWZpbml0aW9uCiAgICAgICAgICAgICREZWZpbml0aW9uUmVmID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uR2V0KCBSb2xlSUQgPT4gJEV4cG9ydEl0ZW1JRCApOwogICAgICAgICAgICAkRXhwb3J0SXRlbXtSb2xlTmFtZX0gPSAkRGVmaW5pdGlvblJlZi0+e1JvbGV9OwogICAgICAgIH0KCiAgICAgICAgIyBwZXJmb3JtIGR5bmFtaWMgZmllbGQgdHJhbnNmb3JtYXRpb24KICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBrZXlzICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgICAgIG15ICRUcmFuc2Zvcm1lZERGQ29uZmlnID0gJFNlbGYtPl9EeW5hbWljRmllbGRDb25maWdUcmFuc2Zvcm0oCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnRXhwb3J0JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEV4cG9ydEl0ZW17RHluYW1pY0ZpZWxkc317JER5bmFtaWNGaWVsZE5hbWV9ID0gJFRyYW5zZm9ybWVkREZDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIGV4cG9ydCB0aGUgc3ViLXlhbWwgZGVmaW5pdGlvbiBmaWVsZCBhcyBhIHN0cmluZyBmaWVsZAogICAgICAgICRFeHBvcnRJdGVte0RlZmluaXRpb259ID0gJERlZmluaXRpb25SZWYtPntEZWZpbml0aW9ufTsKCiAgICAgICAgcHVzaCBAeyRBbGxFeHBvcnRlZENsYXNzZXNSZWZ9LCBcJUV4cG9ydEl0ZW07CiAgICB9CgogICAgbXkgJEFsbEV4cG9ydGVkQ2xhc3Nlc1N0ciA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gJEFsbEV4cG9ydGVkQ2xhc3Nlc1JlZgogICAgKTsKCiAgICByZXR1cm4gJEFsbEV4cG9ydGVkQ2xhc3Nlc1N0cjsKfQoKPWJlZ2luIEludGVybmFsOgoKPWhlYWQyIF9Qcm9jZXNzUm9sZXMKCkZvciBjb252ZW5pZW5jZSB0aGUgWUFNTCBmb3IgYSBjb25maWcgaXRlbSBjbGFzcyBtYXkgY29udGFpbiBhIHN1YnRyZWUgY2FsbGVkIFJvbGVzLiBVc3VhbGx5IHRoZXNlIFJvbGVzCmxvYWQgb3RoZXIgWUFNTCBkb2N1bWVudHMgd2hpY2ggY29udGFpbiBhIFNlY3Rpb24gaGFzaC4gVGhlc2Ugc2VjdGlvbiBhIG1lcmdlZCBpbnRvIHRoZSB0b3AtbGV2ZWwgU2VjdGlvbiBoYXNoLgpUaGUga2V5cyBvZiB0aGUgbWVyZ2VkIGluIHNlY3Rpb25zIGFyZSB0aGUgUm9sZSBrZXkgam9pbmVkIHdpdGggdGhlIGxvYWRlZCBzZWN0aW9uIG5hbWUuIFRoZSBqb2luIG1hcmtlciBpcyBDPDo6Pi4KClRoZSBwYXNzZWQgaW4gaGFzaCByZWZlcmVuY2UgaXMgbW9kaWZpZWQgaW4gcGxhY2UuCgo9Y3V0CgpzdWIgX1Byb2Nlc3NSb2xlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgZGVmaW5pdGlvbgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb25SZWZ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uUmVmIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcm9sZXMgYXJlIG9wdGlvbmFsCiAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRQYXJhbXtEZWZpbml0aW9uUmVmfTsKICAgIG15ICRSb2xlcyAgICAgICAgID0gJERlZmluaXRpb25SZWYtPntSb2xlc307CgogICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH0gdW5sZXNzICRSb2xlczsKCiAgICAjIGp1c3QgZm9yIGNvbnZlbmllbmNlCiAgICBteSAkUmV0dXJuRXJyb3IgPSBzdWIgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgICAgICBFcnJvciAgICAgPT4gJF9bMF0sCiAgICAgICAgICAgIEVycm9yQXJncyA9PiBbICggJF9bMV0gLy8gJycgKSwgKCAkX1syXSAvLyAnJyApIF0sICAgICMgb25seSB0d28gYXJncyBhcmUgc3VwcG9ydGVkCiAgICAgICAgfTsKICAgIH07CgogICAgaWYgKCByZWYgJFJvbGVzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAlcyBpcyBub3QgYSBIYXNoLn0pLAogICAgICAgICAgICAnUm9sZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBub3RoaW5nIHRvIGRvCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfSB1bmxlc3MgJFJvbGVzLT4lKjsKCiAgICAjIGdldCByb2xlIGxpc3QgZm9yIG1hcHBpbmcgbmFtZSB0byBJRAogICAgbXkgJVJvbGVOYW1lMklEOwogICAgewogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRSb2xlTGlzdCAgICAgICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICApOwogICAgICAgICVSb2xlTmFtZTJJRCA9IHJldmVyc2UgJFJvbGVMaXN0LT4lKjsKICAgIH0KCiAgICBteSAlSW1wb3J0Um9sZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0ltcG9ydFJvbGVzfSAvLyBbXSB9OwoKICAgICMgb3ZlcndyaXRlIHdpdGhvdXQgbWVyY3kKICAgIFJPTEVfS0VZOgogICAgZm9yIG15ICRSb2xlS2V5ICgga2V5cyAkUm9sZXMtPiUqICkgewogICAgICAgIG15ICRSb2xlU291cmNlID0gJFJvbGVzLT57JFJvbGVLZXl9OwoKICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSByb2xlIGlzIHBlciBkZWZhdWx0IHRoZSBrZXkgaW4gdGhlIFJvbGVzIGhhc2gsCiAgICAgICAgIyBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYW4gZXhwbGljaXQgYXR0cmlidXRlICdOYW1lJy4KICAgICAgICAjIFRoaXMgYWxsb3dzIHRvIHVzZSBhIG1vcmUgY29udmVuaWVudCBuYW1lIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgogICAgICAgIG15ICRSb2xlTmFtZSA9ICRSb2xlU291cmNlLT57TmFtZX0gLy8gJFJvbGVLZXk7CgogICAgICAgICMgVGhlIGF0dHJpYnV0ZSBWZXJzaW9uIGlzIG5vdCByZXF1aXJlZCBpbiB0aGUgWUFNTC4KICAgICAgICAjIFdoZW4gbm8gVmVyc2lvbiBpcyBwYXNzZWQgdGhlbiB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHJvbGUgaXMgdXNlZC4KICAgICAgICAjaWYgKCAhJFJvbGVTb3VyY2UtPntWZXJzaW9ufSApIHsKICAgICAgICAjICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAjICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJXMgaXMgbWlzc2luZyBmb3IgdGhlIHJvbGUgJXN9KSwKICAgICAgICAjICAgICAgICAnVmVyc2lvbicsCiAgICAgICAgIyAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICMgICAgKTsKICAgICAgICAjfQoKICAgICAgICAjIHRoZSBmZXRjaGluZyBpcyBkb25lIHZpYSB0aGUgSUQKICAgICAgICBteSAkUm9sZUlEID0gJFJvbGVOYW1lMklEeyRSb2xlTmFtZX07CgogICAgICAgIGlmICggISRSb2xlSUQgJiYgISRJbXBvcnRSb2xlc3skUm9sZU5hbWV9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3YXMgbm90IGZvdW5kLn0pLAogICAgICAgICAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBkbyBub3QgY2hlY2sgYW55IGZ1cnRoZXIsIGlmIHRoZSByb2xlIGlzIG9ubHkgYWJvdXQgdG8gYmUgaW1wb3J0ZWQKICAgICAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfSBpZiAkSW1wb3J0Um9sZXN7JFJvbGVOYW1lfTsKCiAgICAgICAgIyBUaGlzIGFscmVhZHkgcGFyc2VzIHRoZSBZQU1MCiAgICAgICAgbXkgJFJvbGVEZWZpbml0aW9uID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uR2V0KAogICAgICAgICAgICBSb2xlSUQgID0+ICRSb2xlSUQsCiAgICAgICAgICAgIFZlcnNpb24gPT4gJFJvbGVTb3VyY2UtPntWZXJzaW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUm9sZURlZmluaXRpb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe1RoZSByb2xlICVzIHdpdGggdmVyc2lvbiAlcyB3YXMgbm90IGZvdW5kLn0pLAogICAgICAgICAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgJFJvbGVTb3VyY2UtPntWZXJzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRSb2xlRGVmaW5pdGlvbiBuZSAnSEFTSCcgKSB7CiAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe1RoZSByb2xlICVzIHdpdGggdmVyc2lvbiAlcyBpcyBub3QgYSBoYXNoLn0pLAogICAgICAgICAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgJFJvbGVTb3VyY2UtPntWZXJzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgISRSb2xlRGVmaW5pdGlvbi0+e0RlZmluaXRpb259CiAgICAgICAgICAgIHx8CiAgICAgICAgICAgICEkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfQogICAgICAgICAgICB8fAogICAgICAgICAgICAhJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntTZWN0aW9uc30KICAgICAgICAgICAgfHwKICAgICAgICAgICAgcmVmICRSb2xlRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LT57U2VjdGlvbnN9IG5lICdIQVNIJwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3aXRoIHZlcnNpb24gJXMgaXMgbm90IHZhbGlkLn0pLAogICAgICAgICAgICAgICAgJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgJFJvbGVTb3VyY2UtPntWZXJzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQWRkIHRoZSBzZWN0aW9ucyBmcm9tIHRoZSBSb2xlIHRvIHRoZSBTZWN0aW9ucyBvZiB0aGUgY2xhc3MuCiAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGNvbnZlbmllbnQgbmFtZSBmcm9tIHRoZSBjbGFzcyBkZWZpbml0aW9uIGlzIHVzZWQgaGVyZQogICAgICAgIG15ICRSb2xlU2VjdGlvbnMgPSAkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfS0+e1NlY3Rpb25zfTsKICAgICAgICBmb3IgbXkgJFJvbGVTZWN0aW9uS2V5ICgga2V5cyAkUm9sZVNlY3Rpb25zLT4lKiApIHsKCiAgICAgICAgICAgICMgaWYgYSBjbGFzcyBoYXMgdmFsaWQgcm9sZXMsIHRoZW4gU2VjdGlvbnMgaXMgbm90IHJlcXVpcmVkCiAgICAgICAgICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9IC8vPSB7fTsKCiAgICAgICAgICAgIG15ICRTZWN0aW9uTmFtZSA9IGpvaW4gJzo6JywgJFJvbGVLZXksICRSb2xlU2VjdGlvbktleTsKICAgICAgICAgICAgJERlZmluaXRpb25SZWYtPntTZWN0aW9uc30tPnskU2VjdGlvbk5hbWV9ID0gJFJvbGVTZWN0aW9ucy0+eyRSb2xlU2VjdGlvbktleX07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB7IFN1Y2Nlc3MgPT4gMSB9Owp9Cgo9aGVhZDIgX0RlZmluaXRpb25QcmVwYXJlKCkKClByZXBhcmUgdGhlIHN5bnRheCBvZiBhIG5ldyBkZWZpbml0aW9uLgoKICAgIG15ICRUcnVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9EZWZpbml0aW9uUHJlcGFyZSgKICAgICAgICBEZWZpbml0aW9uUmVmID0+ICRBcnJheVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgX0RlZmluaXRpb25QcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPOiB0aGUgbWV0aG9kIGlzIHVudXNlZC4gRWl0aGVyIHJlbW92ZSBpdCBvciBhY3R1YWxseSB1c2UgaXQuCiAgICAjIGNoZWNrIGRlZmluaXRpb24KICAgIGlmICggISRQYXJhbXtEZWZpbml0aW9uUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvblJlZiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtEZWZpbml0aW9uUmVmfSB9ICkgewoKICAgICAgICAjIHNldCBDb3VudE1pbgogICAgICAgICRJdGVtLT57Q291bnRNaW59IC8vPSAxOwoKICAgICAgICAjIHNldCBDb3VudE1heAogICAgICAgICRJdGVtLT57Q291bnRNYXh9IHx8PSAxOwoKICAgICAgICAjIHNldCBDb3VudE1pbgogICAgICAgIGlmICggJEl0ZW0tPntDb3VudE1pbn0gPiAkSXRlbS0+e0NvdW50TWF4fSApIHsKICAgICAgICAgICAgJEl0ZW0tPntDb3VudE1pbn0gPSAkSXRlbS0+e0NvdW50TWF4fTsKICAgICAgICB9CgogICAgICAgICMgc2V0IENvdW50RGVmYXVsdAogICAgICAgICRJdGVtLT57Q291bnREZWZhdWx0fSAvLz0gMTsKICAgICAgICBpZiAoICRJdGVtLT57Q291bnREZWZhdWx0fSA8ICRJdGVtLT57Q291bnRNaW59ICkgewogICAgICAgICAgICAkSXRlbS0+e0NvdW50RGVmYXVsdH0gPSAkSXRlbS0+e0NvdW50TWlufTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkSXRlbS0+e0NvdW50RGVmYXVsdH0gPiAkSXRlbS0+e0NvdW50TWF4fSApIHsKICAgICAgICAgICAgJEl0ZW0tPntDb3VudERlZmF1bHR9ID0gJEl0ZW0tPntDb3VudE1heH07CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgaXMgZGVmaW5lZC4KICAgICAgICBpZiAoICRJdGVtLT57U3VifSAmJiByZWYgJEl0ZW0tPntTdWJ9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICRTZWxmLT5fRGVmaW5pdGlvblByZXBhcmUoCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uUmVmID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSXRlbS0+e1N1Yn07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoKQoKQ3JlYXRlIGEgWUFNTCBzdHJpbmcgY29udGFpbmluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZHluYW1pYyBmaWVsZHMgcmVsZXZhbnQgZm9yIHRoaXMgY29uZmlnIGl0ZW0uClRoZSBkZWZpbml0aW9uIGNhbiBiZSBwYXNzZWQgaW4gZWl0aGVyIGFzIGEgWUFNTCBzdHJpbmcgb3IgYXMgYSBQZXJsIGRhdGEgc3RydWN0dXJlLgoKICAgIG15ICREeW5hbWljRmllbGREZWZpbml0aW9uWUFNTCA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICk7CgpvcgoKICAgIG15ICREeW5hbWljRmllbGREZWZpbml0aW9uWUFNTCA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICk7Cgo9Y3V0CgpzdWIgX0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSXNJbml0aWFsQ2FsbCA9IGRlZmluZWQgJFBhcmFte0RlZmluaXRpb259OyAgICAjIHRoZSBZQU1MIGRlZmluaXRpb24KCiAgICAjIEluIHRoZSBpbml0aWFsIGNhbGwgdGhlIERlZmluaXRpb24gaXMgcGFzc2VkIGFzIFlBTUwuCiAgICAjIEluIHRoZSBzdWJzZXF1ZW50IHJlY3Vyc2l2ZSBjYWxscyBEZWZpbml0aW9uUGVybCBpcyBwYXNzZWQgYXMgYSBQZXJsIGRhdGEgc3RydWN0dXJlLgogICAgaWYgKCRJc0luaXRpYWxDYWxsKSB7CiAgICAgICAgJFBhcmFte0RlZmluaXRpb25QZXJsfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgICMgbWVyZ2UgdGhlIHJvbGVzIGludG8gdGhlIERlZmluaXRpb25SZWYsIHRoZSBwYXNzZWQgaW4gcmVmZXJlbmNlIGlzIG1vZGlmaWVkIGluIHBsYWNlCiAgICAgICAgJFNlbGYtPl9Qcm9jZXNzUm9sZXMoCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgPT4gJFBhcmFte0RlZmluaXRpb25QZXJsfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVDb250ZW50SGFzaCAgPSByZWYgJFBhcmFte0RlZmluaXRpb25QZXJsfSBlcSAnSEFTSCcgID8gJFBhcmFte0RlZmluaXRpb25QZXJsfS0+JSogOiAoKTsKICAgIG15IEBDb250ZW50QXJyYXkgPSByZWYgJFBhcmFte0RlZmluaXRpb25QZXJsfSBlcSAnQVJSQVknID8gJFBhcmFte0RlZmluaXRpb25QZXJsfS0+QCogOiAoKTsKCiAgICAjIGxvZywgZXZlbiB3aGVuIGVtcHR5IGFycmF5cyBvciBoYXNoZXMgYXJlIGFsbG93ZWQKICAgIGlmICggISVDb250ZW50SGFzaCAmJiAhQENvbnRlbnRBcnJheSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvbiBvciBEZWZpbml0aW9uUGVybCBhcyBoYXNoIG9yIGFycmF5IScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcmVjdXJzaXZlbHkgY29sbGVjdCB0aGUgZHluYW1pYyBmaWVsZHMKICAgIG15ICVEeW5hbWljRmllbGRzOwoKICAgICMgVE9ETzogc3BlY2lmeSB0aGUgcGF0aCB3aGVyZSBERiBmaWVsZHMgYXJlIGV4cGVjdGVkLCBtYXliZSB3aXRoIEpTT046OlBhdGgKICAgIEtFWToKICAgIGZvciBteSAkS2V5ICgga2V5cyAlQ29udGVudEhhc2ggKSB7CiAgICAgICAgaWYgKCAkS2V5IGVxICdERicgKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRzeyAkQ29udGVudEhhc2h7JEtleX0gfSA9IFwlQ29udGVudEhhc2g7CgogICAgICAgICAgICBuZXh0IEtFWTsKICAgICAgICB9CgogICAgICAgICMgZG8gbm90IGRlc2NlbmQgaW50byBJbnRlcmZhY2VzIGFuZCBHcm91cHMsCiAgICAgICAgIyBhcyB0aGVzZSBtYXkgYmUgZW1wdHkgYW5kIHdvdWxkIGJlIGxvZ2dlZCBhcyBlcnJvcnMKICAgICAgICAjIFRPRE86IGFyZSBJbnRlcmZhY2VzIGFuZCBHcm91cHMgc3RpbGwgdXNlZCA/CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnSW50ZXJmYWNlcyc7CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnR3JvdXBzJzsKICAgICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdQYWdlcyc7CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnUm9sZXMnOwoKICAgICAgICBuZXh0IEtFWSB1bmxlc3MgcmVmICRDb250ZW50SGFzaHskS2V5fTsKCiAgICAgICAgIyBkZXNjZW5kCiAgICAgICAgJUR5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgICAgICVEeW5hbWljRmllbGRzLAogICAgICAgICAgICAkU2VsZi0+X0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uUGVybCA9PiAkQ29udGVudEhhc2h7JEtleX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgICksCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJEVudHJ5IChAQ29udGVudEFycmF5KSB7CiAgICAgICAgaWYgKCByZWYgJEVudHJ5ICkgewogICAgICAgICAgICAlRHluYW1pY0ZpZWxkcyA9ICgKICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRzLAogICAgICAgICAgICAgICAgJFNlbGYtPl9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KCBEZWZpbml0aW9uUGVybCA9PiAkRW50cnkgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyB0aGUgcmVjdXJzaXZlIGNhbGxzIG9ubHkgY29sbGVjdCB0aGUgZHluYW1pYyBmaWVsZHMKICAgIHJldHVybiAlRHluYW1pY0ZpZWxkcyB1bmxlc3MgJElzSW5pdGlhbENhbGw7CgogICAgIyBzb21lIG1vcmUgd29yayB0byBkbyBpbiB0aGUgaW5pdGlhbCBjYWxsCiAgICBteSAlUmV0dXJuRHluYW1pY0ZpZWxkczsKICAgIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICAgICAjIFN0b3JlIGNvbmZpZyBpdGVtIGNsYXNzIHRvIGNoZWNrIGZvciB2ZXJzaW9uIHRyaWdnZXJzIGluIGR5bmFtaWMgZmllbGQgb2JqZWN0IGhhbmRsZXIKICAgICAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CiAgICAgICAgbXkgJENsYXNzID0gJENsYXNzSUQyTmFtZS0+eyAkUGFyYW17Q2xhc3NJRH0gfTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkTmFtZSAoIGtleXMgJUR5bmFtaWNGaWVsZHMgKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJE5hbWUgKTsKCiAgICAgICAgICAgICMgb25seSByZXR1cm4gdmFsaWQgZHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGQtPiUqOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZC0+e1ZhbGlkSUR9IGVxICcxJzsKCiAgICAgICAgICAgICMgZm9yIHNldCBmaWVsZHMgYWxzbyB0aGUgY29udGFpbmVkIGR5bmFtaWMgZmllbGRzIGhhdmUgdG8gYmUgdmVyc2lvbmVkCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfXtJbmNsdWRlfSApOwoKICAgICAgICAgICAgICAgIElOQ0xVREVEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJbmNsdWRlZERGICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgSU5DTFVERUQgdW5sZXNzICRJbmNsdWRlZERGLT57REZ9OwoKICAgICAgICAgICAgICAgICAgICBteSAkSW5jbHVkZWRERkNvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAkSW5jbHVkZWRERi0+e0RGfSApOwoKICAgICAgICAgICAgICAgICAgICAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259ID0gewogICAgICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEluY2x1ZGVkREZDb25maWctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZyAgICAgPT4gJEluY2x1ZGVkREZDb25maWctPntDb25maWd9LAogICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFR5cGUgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57RmllbGRUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e09iamVjdFR5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICBDSUNsYXNzICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkUmV0dXJuRHluYW1pY0ZpZWxkc3skTmFtZX0gPSB7CiAgICAgICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgIENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ30sICAgICAgICMgbWF5IGNvbnRhaW4gaW5jbHVkZWQgREYKICAgICAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlID0+ICREeW5hbWljRmllbGQtPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgIENJQ2xhc3MgICAgPT4gJENsYXNzLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3L01hbmRhdG9yeSBMYWJlbCBSZWFkb25seS8pIHsKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkc3skTmFtZX17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFJldHVybkR5bmFtaWNGaWVsZHN7JE5hbWV9eyRBdHRyaWJ1dGV9ID0gJER5bmFtaWNGaWVsZHN7JE5hbWV9eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgdGhlIGluaXRpYWwgY2FsbCByZXR1cm5zIFlBTUwKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKAogICAgICAgIERhdGEgPT4gXCVSZXR1cm5EeW5hbWljRmllbGRzLAogICAgKTsKfQoKPWhlYWQyIF9EeW5hbWljRmllbGRDb25maWdUcmFuc2Zvcm0oKQoKVHJhbnNmb3JtYXRpb25zIG9mIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBuZWVkZWQgZm9yIEltcG9ydC9FeHBvcnQuCk5vdGUgdGhhdCB0aGUgcGFzc2VkIGluIGR5bmFtaWMgZmllbGQgY29uZmlnIGlzIG1vZGlmaWVkIGluIHBsYWNlLgoKICAgICRGaWVsZENvbmZpZyA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmllbGRDb25maWcsCiAgICAgICAgQWN0aW9uICAgICAgICAgICAgID0+ICdJbXBvcnQnLAogICAgKTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KEFjdGlvbiBEeW5hbWljRmllbGRDb25maWcpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIGlmICggYW55IHsgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317RmllbGRUeXBlfSBlcSAkXyB9IHF3KEFnZW50IENvbmZpZ0l0ZW0gQ29uZmlnSXRlbVZlcnNpb24gQ3VzdG9tZXJDb21wYW55IEN1c3RvbWVyVXNlciBGQVEgVGlja2V0KSApIHsKCiAgICAgICAgIyBuZWVkZWQgdHJhbnNmb3JtYXRpb246IE5hbWUgLT4gSUQKICAgICAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdJbXBvcnQnICkgewoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAUXVldWVJRHM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFF1ZXVlTmFtZSAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUXVldWVJRHMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5RdWV1ZUxvb2t1cCggUXVldWUgPT4gJFF1ZXVlTmFtZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9ID0gXEBRdWV1ZUlEczsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9ICkgewogICAgICAgICAgICAgICAgbXkgQFR5cGVJRHM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFR5cGVOYW1lICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFR5cGVJRHMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVMb29rdXAoIFR5cGVJRCA9PiAkVHlwZU5hbWUgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9ID0gXEBUeXBlSURzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317Q2xhc3NJRHN9ICkgewogICAgICAgICAgICAgICAgbXkgJUNsYXNzTmFtZTJJRCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIG15IEBDbGFzc0lEcyA9IG1hcAogICAgICAgICAgICAgICAgICAgIHsgJENsYXNzTmFtZTJJRHskX30gfQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57Q2xhc3NJRHN9LT5AKjsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSA9IFxAQ2xhc3NJRHM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgbmVlZGVkIHRyYW5zZm9ybWF0aW9uOiBJRCAtPiBOYW1lCiAgICAgICAgZWxzaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnRXhwb3J0JyApIHsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9ICkgewogICAgICAgICAgICAgICAgbXkgQFF1ZXVlTmFtZXM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFF1ZXVlSUQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFF1ZXVlTmFtZXMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5RdWV1ZUxvb2t1cCggUXVldWVJRCA9PiAkUXVldWVJRCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9ID0gXEBRdWV1ZU5hbWVzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAVHlwZU5hbWVzOwogICAgICAgICAgICAgICAgZm9yIG15ICRUeXBlSUQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVHlwZU5hbWVzLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTG9va3VwKCBUeXBlSUQgPT4gJFR5cGVJRCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gPSBcQFR5cGVOYW1lczsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSApIHsKICAgICAgICAgICAgICAgIG15ICVDbGFzc0lEMk5hbWUgPSAlewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgbXkgQENsYXNzTmFtZXMgPSBtYXAKICAgICAgICAgICAgICAgICAgICB7ICRDbGFzc0lEMk5hbWV7JF99IH0KICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NsYXNzSURzfS0+QCo7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtDbGFzc0lEc30gPSBcQENsYXNzTmFtZXM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0ZpZWxkVHlwZX0gZXEgJ0xlbnMnICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdJbXBvcnQnICkgewogICAgICAgICAgICBteSAkQXR0cmlidXRlREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSA9ICRBdHRyaWJ1dGVERi0+e0lEfTsKICAgICAgICAgICAgbXkgJFJlZmVyZW5jZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0gPSAkUmVmZXJlbmNlREYtPntJRH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte0FjdGlvbn0gZXEgJ0V4cG9ydCcgKSB7CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSA9ICRBdHRyaWJ1dGVERi0+e05hbWV9OwogICAgICAgICAgICBteSAkUmVmZXJlbmNlREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0gPSAkUmVmZXJlbmNlREYtPntOYW1lfTsKICAgICAgICB9CiAgICB9CgogICAgIyBzYW5pdGl6ZSBjb25maWdzIG9mIHNldC1pbmNsdWRlZCBERnMKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgIkV4cG9ydCIgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0luY2x1ZGV9ICkgKSB7CiAgICAgICAgSU5DTFVERURfREY6CiAgICAgICAgZm9yIG15ICRJbmNsdWRlZERGICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntJbmNsdWRlfS0+QCogKSB7CgogICAgICAgICAgICBkZWxldGUgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufXtJRH07CgogICAgICAgICAgICAjIEZpbHRlciBvZmYgdGhlICdQYXJ0T2ZTZXQnIGF0dHJpYnV0ZSwgaXQgaXMgbm90IG5lY2Vzc2FyeSBhbmQgbWF5IGNhdXNlIGluY29uc2lzdGVuY3kgZXJyb3JzIGxhdGVyIG9uIGltcG9ydAogICAgICAgICAgICBkZWxldGUgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufS0+e0NvbmZpZ30tPntQYXJ0T2ZTZXR9OwoKICAgICAgICAgICAgIyB0cmFuc2Zvcm0gaW5jbHVkZWQgY29uZmlncyByZWN1cnNpdmVseSBvbiBleHBvcnQKICAgICAgICAgICAgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufSA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0V4cG9ydCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0V4cG9ydCcgKSB7CiAgICAgICAgZGVsZXRlICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0lEfTsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307Cn0KCj1oZWFkMiBfRGVmaW5pdGlvbkNyZWF0ZUFmdGVyUm9sZUNyZWF0ZSgpCgpDb25maWcgaXRlbSBjbGFzcyBkZWZpbml0aW9uIG1heSBpbmNsdWRlIGR5bmFtaWMgcm9sZXMuIFRoaXMgbWVhbnMKdGhhdCB0aGUgdXNlIHJvbGVzIHdpdGhvdXQgc3BlY2lmeWluZyBhIHZlcnNpb24gb2YgdGhlIHJvbGUuIFRoaXMKbWVhbnMgdGhlIGNsYXNzIGRlZmluaXRpb25zIG1heSBoYXZlIHRvIGJlIHVwZGF0ZSB3aGVuIGEgcm9sZSBpcwpjaGFuZ2VkLgoKICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9EZWZpbml0aW9uQ3JlYXRlQWZ0ZXJSb2xlQ3JlYXRlKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmllbGRDb25maWcsCiAgICAgICAgQWN0aW9uICAgICAgICAgICAgID0+ICdJbXBvcnQnLAogICAgKTsKCj1jdXQKCnN1YiBfRGVmaW5pdGlvbkNyZWF0ZUFmdGVyUm9sZUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIHRoZSByb2xlIGRlZmluaXRpb24KICAgIG15ICRSb2xlTmFtZTsKICAgIHsKICAgICAgICBteSAkUm9sZUlEICAgICAgPSAkUGFyYW17Um9sZUlEfTsKICAgICAgICBteSAkUm9sZUlEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICApOwogICAgICAgICRSb2xlTmFtZSA9ICRSb2xlSUQyTmFtZS0+eyRSb2xlSUR9OwogICAgfQoKICAgICMgTG9vcCBvdmVyIGFsbCBjbGFzc2VzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXkgaW5jbHVkZSB0aGUgY2hhbmdlZCBkeW5hbWljIGZpZWxkCiAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwogICAgbXkgQENsYXNzSXNBZmZlY3RlZDsKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIGNtcCAkYiB9IGtleXMgJENsYXNzSUQyTmFtZS0+JSogKSB7CgogICAgICAgICMgRGVmaW5pdGlvbkdldCgpIGRvZXMgcmVzb2x2ZSB0aGUgcm9sZSBkZWNsYXJhdGlvbiwKICAgICAgICAjIGJ1dCB0aGUgYXR0cmlidXRlICdSb2xlcycgaXMgc3RpbGwgaW5jbHVkZWQKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzICREZWZpbml0aW9uOwogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CgogICAgICAgIG15ICRSb2xlcyA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntSb2xlc30gLy8ge307CgogICAgICAgIFJPTEVfS0VZOgogICAgICAgIGZvciBteSAkUm9sZUtleSAoIGtleXMgJFJvbGVzLT4lKiApIHsKICAgICAgICAgICAgbXkgJFJvbGVTb3VyY2UgPSAkUm9sZXMtPnskUm9sZUtleX07CgogICAgICAgICAgICBuZXh0IFJPTEVfS0VZIHVubGVzcyByZWYgJFJvbGVTb3VyY2UgZXEgJ0hBU0gnOyAgICAjIGFuIGVtcHR5IGhhc2hyZWYgaXMgT0sKCiAgICAgICAgICAgICMgb25seSBkeW5hbWljIHJvbGVzLCB0aGF0IGlzIHJvbGVzIHdpdGhvdXQgdmVyc2lvbiwgYXJlIHJlbGV2YW50IGhlcmUKICAgICAgICAgICAgbmV4dCBST0xFX0tFWSBpZiAkUm9sZVNvdXJjZS0+e1ZlcnNpb259OwoKICAgICAgICAgICAgIyBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBwZXIgZGVmYXVsdCB0aGUga2V5IGluIHRoZSBSb2xlcyBoYXNoLAogICAgICAgICAgICAjIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhbiBleHBsaWNpdCBhdHRyaWJ1dGUgJ05hbWUnLgogICAgICAgICAgICAjIFRoaXMgYWxsb3dzIHRvIHVzZSBhIG1vcmUgY29udmVuaWVudCBuYW1lIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgogICAgICAgICAgICBteSAkRGVjbGFyZWRSb2xlTmFtZSA9ICRSb2xlU291cmNlLT57TmFtZX0gLy8gJFJvbGVLZXk7CgogICAgICAgICAgICBuZXh0IFJPTEVfS0VZIHVubGVzcyAkRGVjbGFyZWRSb2xlTmFtZSBlcSAkUm9sZU5hbWU7CgogICAgICAgICAgICBwdXNoIEBDbGFzc0lzQWZmZWN0ZWQsICRDbGFzc0lEOwoKICAgICAgICAgICAgbGFzdCBST0xFX0tFWTsKICAgICAgICB9CiAgICB9CgogICAgIyBmb3JjZSBuZXcgdmVyc2lvbnMgZm9yIHRoZSBhZmZlY3RlZCBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKEBDbGFzc0lzQWZmZWN0ZWQpIHsKICAgICAgICBteSAkT2xkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRDbGFzc0lEICk7CiAgICAgICAgJFNlbGYtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJE9sZERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBGb3JjZSAgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9DaGVja0RGRGVwZW5kZW5jaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgIGZvciBteSAkSW5jbHVkZUl0ZW0gKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgaWYgKCAkSW5jbHVkZUl0ZW0tPntERn0gJiYgISRQYXJhbXtBdmFpbGFibGVERnN9eyAkSW5jbHVkZUl0ZW0tPntERn0gfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEluY2x1ZGVJdGVtLT57R3JpZH0gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRJbmNsdWRlSXRlbS0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvd0l0ZW0gKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUm93SXRlbS0+e0RGfSAmJiAhJFBhcmFte0F2YWlsYWJsZURGc317ICRSb3dJdGVtLT57REZ9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317RmllbGRUeXBlfSBlcSAnTGVucycgKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFBhcmFte0F2YWlsYWJsZURGc317ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9IH0KICAgICAgICAgICAgfHwgISRQYXJhbXtBdmFpbGFibGVERnN9eyAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSB9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9ZW5kIEludGVybmFsOgoKPWN1dAoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/CountLicenseLinks.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6Q291bnRMaWNlbnNlTGlua3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNvdW50TGljZW5zZUxpbmtzIC0gRXZlbnQgaGFuZGxlciB0aGF0IGNvdW50IGxpY2Vuc2VzIHVzaW5nIGxpbmtlZCBDSSdzCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyBmb3IgY291bnQgbGljZW5zZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9MaW5rQ291bnQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQuCgogICAgJERvTGlua0NvdW50T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICduZXcgdmFsdWU6IDEnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGF0YSBFdmVudCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IENvbmZpZyBvcHRpb25zCiAgICBteSAlTGljZW5zZVNldHRpbmdzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50JyktPiUqOwoKICAgIG15ICVEZXBsb3ltZW50U3RhdGVMaXN0ID0gJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApCiAgICB9OwoKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnRGVwbG95bWVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRDdXJyZW50RGVwbFN0YXRlSUQgID0gJFBhcmFte0RhdGF9e05ld307CiAgICAgICAgbXkgJFByZXZpb3VzRGVwbFN0YXRlSUQgPSAkUGFyYW17RGF0YX17T2xkfTsKICAgICAgICBteSAkQ3VycmVudERlcGxTdGF0ZSAgICA9ICREZXBsb3ltZW50U3RhdGVMaXN0eyRDdXJyZW50RGVwbFN0YXRlSUR9OwogICAgICAgIG15ICRQcmV2aW91c0RlcGxTdGF0ZSAgID0gJERlcGxveW1lbnRTdGF0ZUxpc3R7JFByZXZpb3VzRGVwbFN0YXRlSUR9OwoKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlTGljZW5zZVNldHRpbmdzICkgewoKICAgICAgICAgICAgIyBpZiBhbGwgZGVwbG95bWVudCBzdGF0ZXMgYXJlIHZhbGlkIHdlIGRvIG5vdCBjaGVjayBjaGFuZ2VzCiAgICAgICAgICAgIG5leHQgU0VUVElORyBpZiAhJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtWYWxpZERlcGxTdGF0ZXN9OwoKICAgICAgICAgICAgbXkgQFZhbGlkRGVwbFN0YXRlcyAgICA9ICRMaWNlbnNlU2V0dGluZ3N7JEtleX17VmFsaWREZXBsU3RhdGVzfS0+QCo7CiAgICAgICAgICAgIG15ICRMaWNlbnNlUmVmZXJlbmNlREYgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e0xpY2Vuc2VSZWZlcmVuY2VERn07CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgISRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTGljZW5zZVJlZmVyZW5jZURGIn07CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoIG5vbmUgeyAkXyBlcSAkUHJldmlvdXNEZXBsU3RhdGUgfSBAVmFsaWREZXBsU3RhdGVzICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIGFueSB7ICRfIGVxICRDdXJyZW50RGVwbFN0YXRlIH0gQFZhbGlkRGVwbFN0YXRlcyApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciBteSAkTGljZW5zZVJlZmVyZW5jZSAoICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTGljZW5zZVJlZmVyZW5jZURGIn0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT5fTGljZW5zZXNBY2NvdW50aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgPT4gJExpY2Vuc2VSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZVNldHRpbmdzID0+ICRMaWNlbnNlU2V0dGluZ3N7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGEgICAgICAgICAgID0+IC0xCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgKCBhbnkgeyAkXyBlcSAkUHJldmlvdXNEZXBsU3RhdGUgfSBAVmFsaWREZXBsU3RhdGVzICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIG5vbmUgeyAkXyBlcSAkQ3VycmVudERlcGxTdGF0ZSB9IEBWYWxpZERlcGxTdGF0ZXMgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpY2Vuc2VSZWZlcmVuY2UgKCAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJExpY2Vuc2VSZWZlcmVuY2VERiJ9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgID0+ICRMaWNlbnNlUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhICAgICAgICAgICA9PiAxCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0NvbmZpZ0l0ZW1EZWxldGUnICkgewoKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlTGljZW5zZVNldHRpbmdzICkgewogICAgICAgICAgICBteSAkTGljZW5zZVJlZmVyZW5jZURGID0gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtMaWNlbnNlUmVmZXJlbmNlREZ9OwogICAgICAgICAgICBteSBAVmFsaWREZXBsU3RhdGVzICAgID0gKCAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1ZhbGlkRGVwbFN0YXRlc30gfHwgW10gKS0+QCo7CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgISRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRMaWNlbnNlUmVmZXJlbmNlREYifTsKICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmIEBWYWxpZERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXtDdXJEZXBsU3RhdGV9IH0gQFZhbGlkRGVwbFN0YXRlczsKCiAgICAgICAgICAgIGZvciBteSAkTGljZW5zZVJlZmVyZW5jZSAoICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRMaWNlbnNlUmVmZXJlbmNlREYifS0+QCogKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgPT4gJExpY2Vuc2VSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEZWx0YSAgICAgICAgICAgPT4gMQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gPX4gL15Db25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXy8gKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIFNFVFRJTkc6CiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVMaWNlbnNlU2V0dGluZ3MgKSB7CiAgICAgICAgICAgIG15ICRMaWNlbnNlUmVmZXJlbmNlREYgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e0xpY2Vuc2VSZWZlcmVuY2VERn07CiAgICAgICAgICAgIG15ICRUb3RhbExpY2Vuc2VzREYgICAgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1RvdGFsTGljZW5zZXNERn07CgogICAgICAgICAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgIkNvbmZpZ0l0ZW1EeW5hbWljRmllbGRVcGRhdGVfJExpY2Vuc2VSZWZlcmVuY2VERiIgKSB7CiAgICAgICAgICAgICAgICBteSBAVmFsaWREZXBsU3RhdGVzID0gKCAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1ZhbGlkRGVwbFN0YXRlc30gfHwgW10gKS0+QCo7CgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmIEBWYWxpZERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9IEBWYWxpZERlcGxTdGF0ZXM7CgogICAgICAgICAgICAgICAgbXkgQE9sZExpY2Vuc2VSZWZlcmVuY2VzTGlzdCA9ICggJFBhcmFte0RhdGF9e09sZFZhbHVlfSB8fCBbXSApLT5AKjsKICAgICAgICAgICAgICAgIG15IEBOZXdMaWNlbnNlUmVmZXJlbmNlc0xpc3QgPSAoICRQYXJhbXtEYXRhfXtWYWx1ZX0gICAgfHwgW10gKS0+QCo7CiAgICAgICAgICAgICAgICBteSAlRGVsdGE7CgogICAgICAgICAgICAgICAgT0xEOgogICAgICAgICAgICAgICAgZm9yIG15ICRMaWNlbnNlUmVmZXJlbmNlIChAT2xkTGljZW5zZVJlZmVyZW5jZXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBPTEQgaWYgISRMaWNlbnNlUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgICAgICAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9Kys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTkVXOgogICAgICAgICAgICAgICAgZm9yIG15ICRMaWNlbnNlUmVmZXJlbmNlIChATmV3TGljZW5zZVJlZmVyZW5jZXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBORVcgaWYgISRMaWNlbnNlUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgICAgICAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9LS07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgREVMVEE6CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpY2Vuc2VSZWZlcmVuY2UgKCBrZXlzICVEZWx0YSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERFTFRBIGlmICEkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9OwoKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgID0+ICRMaWNlbnNlUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhICAgICAgICAgICA9PiAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICJDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXyRUb3RhbExpY2Vuc2VzREYiICkgewogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgICAgICBteSAkUmVmZXJlbmNlRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtMaWNlbnNlUmVmZXJlbmNlREZ9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRSZWZlcmVuY2VEeW5hbWljRmllbGRJRCA9ICRSZWZlcmVuY2VEeW5hbWljRmllbGRDb25maWctPntJRH07CgogICAgICAgICAgICAgICAgbXkgJFRvdGFsTGljZW5zZXMgPSAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJFRvdGFsTGljZW5zZXNERiJ9OwogICAgICAgICAgICAgICAgbXkgJENvdW50TGlua3MgICAgPSAwOwoKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdCb3RoJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIExJTks6CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgTElOSyBpZiAkTGluay0+e0R5bmFtaWNGaWVsZElEfSAhPSAkUmVmZXJlbmNlRHluYW1pY0ZpZWxkSUQ7CiAgICAgICAgICAgICAgICAgICAgJENvdW50TGlua3MrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQXZhaWxhYmxlRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtBdmFpbGFibGVMaWNlbnNlc0RGfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdmFpbGFibGVEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVG90YWxMaWNlbnNlcyAtICRDb3VudExpbmtzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9MaWNlbnNlc0FjY291bnRpbmdVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICBteSAkQXZhaWxhYmxlTGljZW5zZXNERiA9ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e0F2YWlsYWJsZUxpY2Vuc2VzREZ9OwogICAgbXkgJFN1Y2Nlc3MgICAgICAgICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICRBdmFpbGFibGVMaWNlbnNlc0RGID0+ICRDb25maWdJdGVtLT57JEF2YWlsYWJsZUxpY2Vuc2VzREZ9ICsgJFBhcmFte0RlbHRhfSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIGZpZWxkICckUGFyYW17TGljZW5zZVNldHRpbmdzfXtBdmFpbGFibGVMaWNlbnNlc0RGfSciLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0RlbHRhfSA8IDAgKSB7CiAgICAgICAgbXkgJE1pbmltdW1MaWNlbnNlcyA9ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e01pbmltdW1MaWNlbnNlc307CiAgICAgICAgJENvbmZpZ0l0ZW0tPnskQXZhaWxhYmxlTGljZW5zZXNERn0gKz0gJFBhcmFte0RlbHRhfTsgICAgIyBTeW5jaHJvbml6ZSBDSSBzbmFwc2hvdAoKICAgICAgICBpZiAoICRNaW5pbXVtTGljZW5zZXMgJiYgJENvbmZpZ0l0ZW0tPnskQXZhaWxhYmxlTGljZW5zZXNERn0gPCAkTWluaW11bUxpY2Vuc2VzICkgewogICAgICAgICAgICAkU2VsZi0+X05vdGlmeSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gICAgICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9Ob3RpZnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHdoZXRoZXIgYSB0aWNrZXQgd2FzIGdlbmVyYXRlZCBwcmV2aW91c2x5IGFuZCBpcyBub3QgY2xvc2VkCiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CiAgICBteSAlTGlua0xpc3QgICA9ICRMaW5rT2JqZWN0LT5MaW5rS2V5TGlzdCgKICAgICAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5MSAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSwKICAgICAgICBPYmplY3QyID0+ICdUaWNrZXQnLAogICAgICAgIFN0YXRlICAgPT4gJ1ZhbGlkJywKICAgICAgICBUeXBlICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIGZvciBteSAkTGlua2VkVGlja2V0SUQgKCBrZXlzICVMaW5rTGlzdCApIHsKICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIFNpbGVudCAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHNraXAgbm90aWZpY2F0aW9uIGlmIGFuIG9wZW4gdGlja2V0IHdhcyBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17RHluYW1pY0ZpZWxkfSB9CiAgICAgICAgICAgICYmICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17RHluYW1pY0ZpZWxkfSB9ID09IDEKICAgICAgICAgICAgJiYgJFRpY2tldHtTdGF0ZVR5cGV9IG5lICJjbG9zZWQiCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmVwYXJlIHN1YnN0aXR1dGlvbnMKICAgIG15ICVTdWJzdGl0dXRpb25zID0gKAogICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9OVU1CRVI+JyAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtOdW1iZXJ9LAogICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9OQU1FPicgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtOYW1lfSwKICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTElDRU5TRVNfQVZBSUw+JyA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e0F2YWlsYWJsZUxpY2Vuc2VzREZ9IH0sCiAgICAgICAgJzxPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX01JTj4nICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtNaW5pbXVtTGljZW5zZXNERn0gfSwKICAgICk7CgogICAgU1VCS0VZOgogICAgZm9yIG15ICRLZXkgKCAoICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17VGl0bGV9IC4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtUZXh0fSApID1+IC88T1RPQk9fQ09ORklHSVRFTV8oW14+XSspPi9nICkgewogICAgICAgIG5leHQgU1VCS0VZIGlmIGV4aXN0cyAkU3Vic3RpdHV0aW9uc3siPE9UT0JPX0NPTkZJR0lURU1fJEtleT4ifTsKICAgICAgICBuZXh0IFNVQktFWSBpZiAhJFBhcmFte0NvbmZpZ0l0ZW19eyRLZXl9OwoKICAgICAgICAkU3Vic3RpdHV0aW9uc3siPE9UT0JPX0NPTkZJR0lURU1fJEtleT4ifSA9ICRQYXJhbXtDb25maWdJdGVtfXskS2V5fSAvLyAnJzsKICAgIH0KCiAgICBteSAkVGlja2V0VGl0bGUgICAgICA9ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17VGl0bGV9OwogICAgbXkgJE5vdGlmaWNhdGlvblRleHQgPSAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1RleHR9OwogICAgZm9yIG15ICRLZXkgKCBrZXlzICVTdWJzdGl0dXRpb25zICkgewogICAgICAgICRUaWNrZXRUaXRsZSAgICAgID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICAgICAgJE5vdGlmaWNhdGlvblRleHQgPX4gcy8kS2V5LyRTdWJzdGl0dXRpb25zeyAkS2V5IH0vZzsKICAgIH0KCiAgICAjIGFsbCBjaGVja3MgZmluaXNoZWQgLT4gY3JlYXRlIGEgdGlja2V0IGFzIG5vdGlmaWNhdGlvbgogICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGVOdW1iZXIoKSwKICAgICAgICBUaXRsZSAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgIFF1ZXVlICAgICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1F1ZXVlfSwKICAgICAgICBMb2NrICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtMb2NrfSAgICAgICAgIHx8ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1ByaW9yaXR5fSAgICAgfHwgJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtTdGF0ZX0gICAgICAgIHx8ICduZXcnLAogICAgICAgIFR5cGUgICAgICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1R5cGV9ICAgICAgICAgfHwgJycsCiAgICAgICAgU2VydmljZSAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U2VydmljZX0gICAgICB8fCAnJywKICAgICAgICBTTEEgICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtTTEF9ICAgICAgICAgIHx8ICcnLAogICAgICAgIEN1c3RvbWVySUQgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0N1c3RvbWVySUR9ICAgfHwgJycsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtPd25lcklEfSAgICAgIHx8ICcxJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBpZiAoICEkVGlja2V0SUQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIGEgdGlja2V0IGZvciBDb25maWdJdGVtSUQ6ICRQYXJhbXtDb25maWdJdGVtfXtDb25maWdJdGVtSUR9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBkbyBhcnRpY2xlIGRiIGluc2VydAogICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CiAgICBteSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQ2hhbm5lbCggQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJyApOwogICAgbXkgJEFydGljbGVJRCAgICAgICAgICAgICAgICAgICAgPSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtTZW5kZXJUeXBlfSB8fCAnc3lzdGVtJywKICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAwLAogICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JywKICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAkTm90aWZpY2F0aW9uVGV4dCwKICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAkVGlja2V0VGl0bGUsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnTmV3VGlja2V0JywKICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAiXCVcJUNNREJOb3RpZmljYXRpb24iLAogICAgKTsKCiAgICAjIGNsb3NlIHRpY2tldCBpZiBhcnRpY2xlIGNyZWF0ZSBmYWlsZWQhCiAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBwcm9jZXNzIHRpY2tldCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbGluayB0aWNrZXQgYW5kIGNvbmZpZyBpdGVtCiAgICAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICAjIHNldCB0aGUgZHluYW1pYyBmaWVsZCAgdG8gMSwgdG8gbWFyayB0aGUgdGlja2V0IGFzIGdlbmVyYXRlZCBieSB0aGlzIHNjcmlwdAogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGQgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtEeW5hbWljRmllbGR9LAogICAgKTsKICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1iYWNrCg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/DefinitionConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRlZmluaXRpb25Db25maWdJdGVtVXBkYXRlOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyh1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUgLSBFdmVudCBoYW5kbGVyIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgb24gZGVmaW5pdGlvbiBjaGFuZ2VzCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwoKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEV2ZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBSdW4oKQoKVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQuCgogICAgJEV2ZW50T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0RlZmluaXRpb25DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICBMYXN0RGVmaW5pdGlvbklEID0+ICRMYXN0RGVmaW5pdGlvbklELAogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAkUGFyYW17RXZlbnR9IG5lICdEZWZpbml0aW9uQ3JlYXRlJzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERlZmluaXRpb25JRCBDbGFzc0lEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBvbmx5IGNvbnNpZGVyIHByb2R1Y3RpdmUgYW5kIHByZXByb2R1Y3RpdmUgQ0lzCiAgICBteSAkU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIG9ubHkgY29uc2lkZXIgcHJvZHVjdGl2ZSBhbmQgcHJlcHJvZHVjdGl2ZSBDSXMKICAgIG15ICVBZmZlY3RlZENJcyA9ICREQk9iamVjdC0+U2VsZWN0TWFwcGluZygKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjaS5pZCwgY2kubGFzdF92ZXJzaW9uX2lkIEZST00gY29uZmlnaXRlbSBjaScKICAgICAgICAgICAgLiAiIFdIRVJFIGNpLmNsYXNzX2lkID0gPyBBTkQgY2kuY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkiLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0RhdGF9e0NsYXNzSUR9IF0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJUFmZmVjdGVkQ0lzOwoKICAgICMgYWRkIGhpc3RvcnkgZW50cmllcwogICAgZm9yIG15ICRJRCAoIGtleXMgJUFmZmVjdGVkQ0lzICkgewogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJElELAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0RlZmluaXRpb25VcGRhdGUnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAiJFBhcmFte0RhdGF9e0RlZmluaXRpb25JRH0iLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGlmIHdlIGFyZSBjaGFuZ2luZyByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMsIHdlIG5lZWQgdG8gc3luY2hyb25pc2UgdGhlIGxpbmsgdGFibGUgYWNjb3JkaW5nbHkKICAgICMgdGhpcyBpcyBkb25lIGJlZm9yZSBWZXJzaW9uQWRkLCB3aGljaCB3aWxsIGluZXZpdGFibHkgd3JpdGUgdGhlIGxpbmtzLCB0b28sIHdpdGggdGhlIG5ldyBDb25maWcgYWxyZWFkeQogICAgaWYgKCAkUGFyYW17RGF0YX17T2xkRGVmaW5pdGlvbn0gJiYgJFBhcmFte0RhdGF9e09sZERlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn0gKSB7CiAgICAgICAgbXkgJE9sZER5bmFtaWNGaWVsZFJlZiA9ICRQYXJhbXtEYXRhfXtPbGREZWZpbml0aW9ufXtEeW5hbWljRmllbGRSZWZ9IC8vIHt9OwogICAgICAgIG15ICREZWZpbml0aW9uUmVmICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtEYXRhfS0+e0NsYXNzSUR9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RhdGF9LT57RGVmaW5pdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICBteSBARHluYW1pY0ZpZWxkTmFtZXMgPSB1bmlxKCBrZXlzICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfS0+JSosIGtleXMgJE9sZER5bmFtaWNGaWVsZFJlZi0+JSogKTsKICAgICAgICBteSAlQ29uZmlnSXRlbTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoQER5bmFtaWNGaWVsZE5hbWVzKSB7CiAgICAgICAgICAgIG15ICROZXdERiA9ICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfXskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgICAgIG15ICRPbGRERiA9ICRPbGREeW5hbWljRmllbGRSZWYtPnskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgICAgIG15ICRERiAgICA9ICROZXdERiAvLyAkT2xkREY7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJERGLT57Q29uZmlnfXtSZWZlcmVuY2VkT2JqZWN0VHlwZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkREYtPntDb25maWd9e1JlZmVyZW5jZWRPYmplY3RUeXBlfSA9fiAnXklUU01Db25maWdJdGVtJzsKCiAgICAgICAgICAgIG15ICRTa2lwID0gMTsKICAgICAgICAgICAgaWYgKCAkTmV3REYgJiYgJE9sZERGICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRDb25maWcgKHF3L0xpbmtUeXBlIExpbmtSZWZlcmVuY2luZ1R5cGUgTGlua0RpcmVjdGlvbi8pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICggJE5ld0RGLT57Q29uZmlnfXskQ29uZmlnfSAvLyAnJyApIG5lICggJE9sZERGLT57Q29uZmlnfXskQ29uZmlnfSAvLyAnJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2tpcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNraXAgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkU2tpcDsKCiAgICAgICAgICAgIElEUzoKICAgICAgICAgICAgZm9yIG15ICRJRCAoIGtleXMgJUFmZmVjdGVkQ0lzICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW17JElEfSAvLz0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkQ29uZmlnSXRlbXskSUR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZE5hbWUifTsKCiAgICAgICAgICAgICAgICBuZXh0IElEUyB1bmxlc3MgJFZhbHVlICYmICRWYWx1ZS0+WzBdOwoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5TeW5jTGlua1RhYmxlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICROZXdERiwKICAgICAgICAgICAgICAgICAgICBPbGREeW5hbWljRmllbGRDb25maWcgICA9PiAkT2xkREYsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1WZXJzaW9uSUQgICAgID0+ICRDb25maWdJdGVteyRJRH17VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbXskSUR9e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIGRlZmluaXRpb24gdXBkYXRlcyBzaG91bGQgdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbiwgY2FsbCBWZXJzaW9uQWRkCiAgICBpZiAoIGdyZXAgeyAkXyBlcSAnRGVmaW5pdGlvblVwZGF0ZScgfSBAeyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uVHJpZ2dlcn0gLy8gW10gfSApIHsKICAgICAgICBmb3IgbXkgJElEICgga2V5cyAlQWZmZWN0ZWRDSXMgKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiB3ZSBkbyBub3QgbmVlZCB0byBhZGQgYSBuZXcgdmVyc2lvbiwgdXBkYXRlIGFsbCBhZmZlY3RlZCB2ZXJzaW9ucyBhbmQgY2xlYXIgdGhlIGNhY2hlCiAgICBlbHNlIHsKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24nCiAgICAgICAgICAgICAgICAuICcgU0VUIGRlZmluaXRpb25faWQgPSA/JwogICAgICAgICAgICAgICAgLiAnIFdIRVJFIGlkIElOICgnCiAgICAgICAgICAgICAgICAuICcgU0VMRUNUIGxhc3RfdmVyc2lvbl9pZCcKICAgICAgICAgICAgICAgIC4gJyBGUk9NIGNvbmZpZ2l0ZW0nCiAgICAgICAgICAgICAgICAuICcgV0hFUkUgY2xhc3NfaWQgPSA/JwogICAgICAgICAgICAgICAgLiAiIEFORCBjdXJfZGVwbF9zdGF0ZV9pZCBJTiAoICREZXBsU3RhdGVTdHJpbmcgKSIKICAgICAgICAgICAgICAgIC4gJyApJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RGF0YX17RGVmaW5pdGlvbklEfSwgXCRQYXJhbXtEYXRhfXtDbGFzc0lEfSBdLAogICAgICAgICk7CgogICAgICAgICMgY2xlYXIgdGhlIGNhY2hlCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgICAgIGZvciBteSAkSUQgKCBrZXlzICVBZmZlY3RlZENJcyApIHsKICAgICAgICAgICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAkREZEYXRhLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQWZmZWN0ZWRDSXN7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgID0+ICRERkRhdGEsCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/DoHistory.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5IC0gRXZlbnQgaGFuZGxlciB0aGF0IHJlY29yZHMgdGhlIGhpc3RvcnkKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUnVuKCkKClRoaXMgbWV0aG9kIGhhbmRsZXMgdGhlIGV2ZW50LgoKICAgICREb0hpc3RvcnlPYmplY3QtPlJ1bigKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJ25ldyB2YWx1ZTogMScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRhIEV2ZW50IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBkeW5hbWljIGZpZWxkcyBmaXJzdCwgbW9zdCBldmVudHMgd2lsbCBiZSB0aGlzLAogICAgIyBSZWFkYWJsZVZhbHVlIGFuZCBSZWFkYWJsZU9sZFZhbHVlIGFyZSBleHBlY3RlZCB0byBiZSBzdHJpbmdzCiAgICBpZiAoICRQYXJhbXtFdmVudH0gPX4gbS9eQ29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV8vICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0hpc3RvcnlBZGQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdWYWx1ZVVwZGF0ZScsCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAiJFBhcmFte0RhdGF9e0ZpZWxkTmFtZX0lJSRQYXJhbXtEYXRhfXtSZWFkYWJsZU9sZFZhbHVlfSUlJFBhcmFte0RhdGF9e1JlYWRhYmxlVmFsdWV9IiwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBkdWUgdG8gY29uc2lzdGVuY3kgd2l0aCB0aWNrZXQgaGlzdG9yeSwgd2UgbmVlZCBIaXN0b3J5VHlwZQogICAgJFBhcmFte0hpc3RvcnlUeXBlfSA9ICRQYXJhbXtFdmVudH07CgogICAgIyBkaXNwYXRjaCB0YWJsZSBmb3IgYWxsIGV2ZW50cwogICAgbXkgJURpc3BhdGNoZXIgPSAoCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSAgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSAgICAgID0+IFwmX1JldHVybiwKICAgICAgICBDb25maWdJdGVtRGVsZXRlICAgICAgPT4gXCZfQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICBMaW5rQWRkICAgICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBMaW5rRGVsZXRlICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBOYW1lVXBkYXRlICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBJbmNpZGVudFN0YXRlVXBkYXRlICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBEZXBsb3ltZW50U3RhdGVVcGRhdGUgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBEZWZpbml0aW9uVXBkYXRlICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBWZXJzaW9uQ3JlYXRlICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBWZXJzaW9uVXBkYXRlICAgICAgICAgPT4gXCZfUmV0dXJuLAogICAgICAgIERlZmluaXRpb25DcmVhdGUgICAgICA9PiBcJl9SZXR1cm4sCiAgICAgICAgVmVyc2lvbkRlbGV0ZSAgICAgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQXR0YWNobWVudEFkZFBvc3QgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQXR0YWNobWVudERlbGV0ZVBvc3QgID0+IFwmX0hpc3RvcnlBZGQsCiAgICApOwoKICAgICMgZXJyb3IgaGFuZGxpbmcKICAgIGlmICggIWV4aXN0cyAkRGlzcGF0Y2hlcnsgJFBhcmFte0V2ZW50fSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnbm9uIGV4aXN0ZW50IGhpc3RvcnkgdHlwZTogJyAuICRQYXJhbXtFdmVudH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2FsbCBjYWxsYmFjawogICAgbXkgJFN1YiA9ICREaXNwYXRjaGVyeyAkUGFyYW17RXZlbnR9IH07CiAgICAkU2VsZi0+JFN1YigKICAgICAgICAlUGFyYW0sCiAgICAgICAgJXsgJFBhcmFte0RhdGF9IH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX1JldHVybigpCgpkbyBub3RoaW5nCgo9Y3V0CgpzdWIgX1JldHVybiB7IHJldHVybiAxIH0KCj1oZWFkMiBfQ29uZmlnSXRlbURlbGV0ZSgpCgpoaXN0b3J5J3MgZXZlbnQgaGFuZGxlciBmb3IgQ29uZmlnSXRlbURlbGV0ZQoKPWN1dAoKc3ViIF9Db25maWdJdGVtRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgaGlzdG9yeQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkhpc3RvcnlEZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9IaXN0b3J5QWRkKCkKCmhpc3RvcnkncyBkZWZhdWx0IGV2ZW50IGhhbmRsZXIuCgo9Y3V0CgpzdWIgX0hpc3RvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFkZCBoaXN0b3J5IGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkhpc3RvcnlBZGQoCiAgICAgICAgJVBhcmFtLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/LinkedTicketUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpMaW5rZWRUaWNrZXRVcGRhdGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KG5vbmUpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgQ29uZmlnIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENvbmZpZ0l0ZW1JRCBpbiBEYXRhISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgY29uZmlnIGl0ZW0gY2xhc3MgcmVzdHJpY3Rpb25zIGFyZSBpbiBwbGFjZQogICAgIyAgIGlmIHNvLCBjaGVjayBpZiBjb25maWcgaXRlbSBpcyBmcm9tIG9uZSBvZiB0aGUgY29uZmlndXJlZCBjbGFzc2VzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ317Q2xhc3Nlc30gKSApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBub25lIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSAkUGFyYW17Q29uZmlnfXtDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb25maWdJdGVtICRDb25maWdJdGVtLT57TmFtZX0gZG9lcyBub3QgYmVsb25nIHRvIG9uZSBvZiB0aGUgY29uZmlndXJlZCBjbGFzc2VzLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICRMaW5rT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIFdlIHJldHJpZXZlIGFsbCBsaW5rZWQgdGlja2V0cyBhbmQgdHJpZ2dlciB0aGVpciB1cGRhdGUuCiAgICBteSAkTGlua0xpc3QgPSAkTGlua09iamVjdC0+TGlua0xpc3QoCiAgICAgICAgT2JqZWN0ICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5ICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkTGlua0xpc3QpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlcmUgYXJlIG5vIGxpbmtlZCB0aWNrZXRzIGZvciBDb25maWdJdGVtIHdpdGggSUQgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0uIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBMSU5LVFlQRToKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJExpbmtMaXN0LT57VGlja2V0fSB9ICkgewoKICAgICAgICAjIGNoZWNrIGZvciBsaW5rIHR5cGUgcmVzdHJpY3Rpb25zCiAgICAgICAgIyAgIHRoZXkgY2FuJ3QgYmUgcGFzc2VkIGFzIHBhcmFtZXRlciB0byBMaW5rTGlzdCgpLCBiZWNhdXNlIG9ubHkgb25lIHR5cGUgaXMgcG9zc2libGUgdGhlcmUgYW5kIHdlIG1pZ2h0IGhhdmUgbW9yZSB0eXBlcyBjb25maWd1cmVkCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDb25maWd9e0xpbmtUeXBlc30gKSApIHsKICAgICAgICAgICAgbmV4dCBMSU5LVFlQRSBpZiBub25lIHsgJF8gZXEgJExpbmtUeXBlIH0gJFBhcmFte0NvbmZpZ317TGlua1R5cGVzfS0+QCo7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyAkTGlua0xpc3QtPntUaWNrZXR9LT57JExpbmtUeXBlfSB9ICkgewogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICggc29ydCBrZXlzICV7ICRMaW5rTGlzdC0+e1RpY2tldH0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgICAgICAgICAjIHRyaWdnZXIgZXZlbnQKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgICAgICAgICBFdmVudCA9PiAnTGlua2VkT2JqZWN0RXZlbnRUcmlnZ2VyJywKICAgICAgICAgICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRMaW5rZWRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/RebuildACLPreselectionCache.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OlJlYnVpbGRBQ0xQcmVzZWxlY3Rpb25DYWNoZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7CiAgICAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/EvaluateScriptFields.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkV2YWx1YXRlU2NyaXB0RmllbGRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkJhc2VTY3JpcHQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEYXRhIEV2ZW50KSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJEV2ZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVNjcmlwdCcpLT5HZXRVcGRhdGVFdmVudHMoKTsKCiAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEV2ZW50cyk7CiAgICByZXR1cm4gMSBpZiAhJEV2ZW50cy0+eyAkUGFyYW17RXZlbnR9IH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICBmb3IgbXkgJEZpZWxkSUQgKCAkRXZlbnRzLT57ICRQYXJhbXtFdmVudH0gfS0+QCogKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICk7CgogICAgICAgICMgaWYgd2Ugc3RvcmUgc2V0IHZhbHVlcywgc3RvcmUgYXMgbWFueSB2YWx1ZXMgYXMgdGhlcmUgYXJlIGluIHRpY2tldCBkYXRhIGZvciB0aGUgc2V0CiAgICAgICAgbXkgJFZhbHVlOwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317UGFydE9mU2V0fSApIHsKICAgICAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICAgICAgbXkgJFNldENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICREeW5hbWljRmllbGQtPntDb25maWd9e1BhcnRPZlNldH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJFNldFZhbHVlICggJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRTZXRDb25maWctPntOYW1lfSJ9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICVTZXRWYWx1ZXNNYXBwZWQgPSBtYXAgeyAoICJEeW5hbWljRmllbGRfJF8iID0+ICRTZXRWYWx1ZS0+eyRffSApIH0ga2V5cyAkU2V0VmFsdWUtPiUqOwogICAgICAgICAgICAgICAgcHVzaCBAVmFsdWVzLCAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RXZhbHVhdGUoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0ICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAlU2V0VmFsdWVzTWFwcGVkLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRWYWx1ZSA9IFxAVmFsdWVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkV2YWx1YXRlKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBTZXQgICAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3JlICAgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/FieldRestrictions.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMgLSBmdW5jdGlvbnMgdG8gcmVzdHJpY3QgRHluYW1pY0ZpZWxkIGNvbnRlbnQgYW5kIGZpZWxkIHZpc2liaWxpdHkgZm9yIHZhcmlvdXMgZm9ybXMKCj1oZWFkMSBTWU5PUFNJUwoKQ3JlYXRlIEZpZWxkUmVzdHJpY3Rpb25zIG9iamVjdAogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpEb24ndCB1c2UgdGhlIGNvbnN0cnVjdG9yIGRpcmVjdGx5LCB1c2UgdGhlIE9iamVjdE1hbmFnZXIgaW5zdGVhZDoKCiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIEdldEZpZWxkU3RhdGVzKCkKClJldHVybnMgcG9zc2libGUgdmFsdWVzLCBzZWxlY3RlZCB2YWx1ZXMsIGFuZCB2aXNpYmlsaXR5IG9mIGZpZWxkcwoKICAgIG15ICRMb29wUHJvdGVjdGlvbiA9IDEwMDsKCiAgICBteSAlU3RhdGVzID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5HZXRGaWVsZFN0YXRlcygKICAgICAgICBDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0+ICRDb25maWdJdGVtT2JqZWN0LAogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZ3MsCiAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICBDaGFuZ2VkRWxlbWVudHMgICAgICAgICAgID0+IHt9LAogICAgICAgIEN1c3RvbWVyVXNlciAgICAgICAgICAgICAgPT4gJEN1c3RvbWVyVXNlciwKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRBY3Rpb24sCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgIH0sCiAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLCAgICAgICAgICAgICAgIyByZXN0cmljdHMgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBjYWxsczsgcGFzc2luZyBhIHJlZmVyZW5jZSB0byAndW5kZWYnIHdpbGwgbGVhZCB0byBhIHdhcm5pbmcKICAgICAgICBBdXRvc2VsZWN0ICAgICAgICAgICAgICAgID0+IHt9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsOyBkZWZhdWx0OiB1bmRlZjsge0ZpZWxkID0+IDAsMSwyLCAuLi59CiAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAwfDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFBvc3NpYmxlVmFsdWVzT25seSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWw7IGFzc3VtZSBhbGwgZmllbGRzIGFyZSB2aXNpYmxlIGUuZy4gZm9yIHNldHMKICAgICAgICBDYWNoZWRWaXNpYmlsaXR5ICAgICAgICAgID0+IFwlQ2FjaGVkVmlzaWJpbGl0eSwgICAgICAgICAgICAjIG9wdGlvbmFsOyB1c2UgdGhlIHByb3ZpZGVkIHZpc2liaWxpdHkgYW5kIGRvIG5vdCBzdG9yZSB0aGUgY2FjaGUgYXQgdGhlIGVuZAogICAgICAgIER5bmFtaWNGaWVsZERhdGFEQiAgICAgICAgPT4gXCVEeW5hbWljRmllbGREYXRhREIsICAgICAgICAgICMgb3B0aW9uYWw7IHVzZWQgdG8gc2V0IHZhbHVlcyBmb3IgcmVhcHBlYXJpbmcgZHluYW1pYyBmaWVsZHMgdG8gc3RvcmVkIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgd2lsbCBhbHNvIGJlIHBhc3NlZCBvbiB0byBHZXRGaWVsZFN0YXRlKCkKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICVTdGF0ZXMgPSAoCiAgICAgICAgRmllbGRzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICBJbmRleCAgICAgICAgICAgPT4gPEluZGV4IHdpdGhpbiBAeyAkRHluYW1pY0ZpZWxkQ29uZmlncyB9PgogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+ICRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgfQogICAgICAgICAgICAuLi4KICAgICAgICBdLAogICAgICAgIFZpc2liaWxpdHkgPT4gewogICAgICAgICAgICBGaWVsZDEgID0+IDEsCiAgICAgICAgICAgIEZpZWxkMiAgPT4gMCwKICAgICAgICB9LAogICAgICAgIE5ld1ZhbHVlcyA9PiB7CiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIEdldEZpZWxkU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGZvciAocXcoQWN0aW9uIEdldFBhcmFtKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbiBjb25maWcgaXRlbSBpZCBpZiBpdCBpcyAnTkVXJwogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBlcSAnTkVXJyApIHsKICAgICAgICBkZWxldGUgJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQgb3IgQ3VzdG9tZXJVc2VySUQhIgogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGRlY3JlbWVudCBvbiB1bmRlZiByZXN1bHQgaW4gJy0xJywgc28gaWYgTG9vcFByb3RlY3Rpb24gaXMgdW5kZWYsIGZ1bmN0aW9uIGFib3J0cyBoZXJlCiAgICBpZiAoICR7ICRQYXJhbXtMb29wUHJvdGVjdGlvbn0gfS0tIDwgMSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJhbiBpbnRvIHVucmVzb2x2YWJsZSBsb29wISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVEeW5hbWljRmllbGREYXRhREIgPSBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZERhdGFEQn0gKSA/ICRQYXJhbXtEeW5hbWljRmllbGREYXRhREJ9LT4lKiA6ICgpOwogICAgaWYgKCAoICFleGlzdHMgJFBhcmFte0R5bmFtaWNGaWVsZERhdGFEQn0gKSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAlRHluYW1pY0ZpZWxkRGF0YURCID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHRoZSBjdXJyZW50IHZpc2liaWxpdHkKICAgIG15ICRDYWNoZWRWaXNpYmlsaXR5OwogICAgaWYgKCAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufSApIHsKCiAgICAgICAgIyBpbiBzb21lIG9jY2FzaW9ucyAoZS5nLiBkeW5hbWljIGZpZWxkIHNldCkgd2UgZG8gbm90IHVzZSB0aGUgY2FjaGUKICAgICAgICAkQ2FjaGVkVmlzaWJpbGl0eSA9IGV4aXN0cyAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0KICAgICAgICAgICAgPyAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0KICAgICAgICAgICAgOiAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+R2V0KAogICAgICAgICAgICAgICAgVHlwZSA9PiAnSGlkZGVuRmllbGRzJywKICAgICAgICAgICAgICAgIEtleSAgPT4gJFBhcmFte0Zvcm1JRH0sCiAgICAgICAgICAgICk7CiAgICB9CgogICAgIyBkb24ndCBza2lwIGFueSBmaWVsZHMgaW5pdGlhbGx5IG9yIGlmIEFDTFByZXNlbGVjdGlvbiBpcyBkaXNhYmxlZAogICAgbXkgJENvbXBsZXRlUnVuID0gJENhY2hlZFZpc2liaWxpdHkgPyAwIDogMTsKCiAgICAjIHNob3J0Y3V0CiAgICBteSAkREZQYXJhbSA9ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfTsKCiAgICAjIFRPRE86IG5lZWRlZCwgYmVjYXVzZSBDb25maWdJdGVtQWNsIHRhbXBlcnMgd2l0aCB0aGUgRHluYW1pY0ZpZWxkIHJlZmVyZW5jZSwgaWYgQ29uZmlnSXRlbUlEIGlzIGdpdmVuCiAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSogKSB7CiAgICAgICAgJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9eyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9IC8vPSAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH07ICAgICMgYWxsIGtleXMgaGF2ZSB0byBleGlzdAogICAgfQoKICAgICMgdHJhbnNmb3JtIGR5bmFtaWMgZmllbGQgZGF0YSBpbnRvIERGTmFtZSA9PiBERk5hbWUgcGFpcgogICAgbXkgJUR5bmFtaWNGaWVsZEFjbCA9IG1hcCB7ICRfID0+ICRfIH0ga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkc30tPiUqOwoKICAgIG15ICVVc2VyUHJlZmVyZW5jZXM7CiAgICBteSAlVmlzaWJpbGl0eTsKICAgIG15ICRWaXNDaGVjayA9IDE7CgogICAgIyBpbiB0aGUgc3BlY2lhbCBjYXNlIG9mIGFzc3VtaW5nIHZpc2libGUgZmllbGRzIHdlIHN0aWxsIHdhbnQgdG8ga25vdyB3aGV0aGVyIHdlIGRvIGEgJENvbXBsZXRlUnVuCiAgICAjIGJ1dCB3ZSBkaXNjYXJkIGFsbCB2aXNpYmlsaXR5IGNoZWNrcwogICAgIyBUT0RPOiBEaXNjYXJkIGlmIG9ubHkgdXNlZCBpbiBTZXRzCiAgICBpZiAoICRQYXJhbXtQb3NzaWJsZVZhbHVlc09ubHl9ICkgewogICAgICAgICRWaXNDaGVjayA9IDA7CgogICAgICAgICMgdHJlYXQgYWxsIGZpZWxkcyBhcyBhbHdheXMgdmlzaWJsZQogICAgICAgICRDYWNoZWRWaXNpYmlsaXR5ID0gewogICAgICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAxIH0ga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkc30tPiUqCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGluIHRoZSBzdGFuZGFyZCBjYXNlIGFuZCBpZiB3ZSB1c2UgQUNMLVByZXNlbGVjdGlvbiBvbmx5IHZpcyBjaGVjayBpZiBuZWNlc3NhcnkKICAgIGVsc2lmICggISRDb21wbGV0ZVJ1biApIHsKICAgICAgICAkVmlzQ2hlY2sgPSAwOwoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgZm9ybS1BQ0xzIGFyZSBhZmZlY3RlZCBieSBhbnkgb2YgdGhlIGNoYW5nZWQgZWxlbWVudHMKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfSB9ICkgewoKICAgICAgICAgICAgIyBhdXRvdml2aWZpY2F0aW9uIGNvdWxkIGJlIGF2b2lkZWQKICAgICAgICAgICAgaWYgKCAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtSdWxlc317Rm9ybX17JEVsZW1lbnR9ICkgewogICAgICAgICAgICAgICAgJFZpc0NoZWNrID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyRFbGVtZW50fSApIHsKICAgICAgICAgICAgICAgICRWaXNDaGVjayA9IDE7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbGFzdCBFTEVNRU5UOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkVmlzQ2hlY2spIHsKCiAgICAgICAgIyBjYWxsIGNvbmZpZyBpdGVtIEFDTHMgZm9yIER5bmFtaWNGaWVsZHMgdG8gY2hlY2sgZmllbGQgdmlzaWJpbGl0eQogICAgICAgIG15ICRBQ0xSZXN1bHQgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnRm9ybScsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkQWNsLAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMUmVzdWx0KSB7CiAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gbWFwIHsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gMCB9IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKjsKICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUFjbERhdGEgKSB7CiAgICAgICAgICAgICAgICAkVmlzaWJpbGl0eXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkIH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfID0+IDEgfSBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSo7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB1c2VyIHByZWZlcmVuY2VzIGZvciBwb3NzaWJsZSB1c2VyIGRlZmF1bHQgdmFsdWVzCiAgICAgICAgaWYgKCAkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAgICAgJVVzZXJQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICgkQ2FjaGVkVmlzaWJpbGl0eSkgewogICAgICAgICVWaXNpYmlsaXR5ID0gJXskQ2FjaGVkVmlzaWJpbGl0eX07CiAgICB9CgogICAgbXkgKCAlRmllbGRzLCAlTmV3VmFsdWVzLCAlU2V0cyApOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkREZOYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAjIHNraXAgaWYgZmllbGQgaGFzIGJlZW4gaGlkZGVuIChDYWNoZWRWaXNpYmlsaXR5KSBhbmQgaXMgYWxzbyBoaWRkZW4gbm93IChWaXNpYmlsaXR5KQogICAgICAgIGlmICgKICAgICAgICAgICAgJVZpc2liaWxpdHkKICAgICAgICAgICAgJiYgJFZpc2liaWxpdHl7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMAogICAgICAgICAgICAmJiAkQ2FjaGVkVmlzaWJpbGl0eQogICAgICAgICAgICAmJiAkQ2FjaGVkVmlzaWJpbGl0eS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQoKICAgICAgICAjIDEuIGhhbmRsZSBmaWVsZHMgd2hpY2ggc2V0IHRoZWlyIGR5bmFtaWMgY29udGVudCB0aGVtc2VsdmVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ1NldHNEeW5hbWljQ29udGVudCcsCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgY2hhbmdlcyBpbiB2aXNpYmlsaXR5IG5lZWQgdG8gYmUgcGFzc2VkIGV4cGxpY2l0bHkgdG8gdGhlIGRyaXZlcnMKICAgICAgICAgICAgIyAgIHRoZSBkcml2ZXJzIG9ubHkgZ2V0IHBhc3NlZCB0aGUgQ2FjaGVkVmlzaWJpbGl0eSBhbmQgdGhlcmVmb3IgY2FuJ3QgZGV0ZXJtaW5lIGNoYW5nZXMgdGhlbXNlbHZlcwogICAgICAgICAgICBteSAkRGlzYXBwZWFycyA9ICggJVZpc2liaWxpdHkgJiYgJFZpc2liaWxpdHl7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApOwogICAgICAgICAgICBteSAkUmVhcHBlYXJzICA9ICggJVZpc2liaWxpdHkgJiYgJFZpc2liaWxpdHl7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMSAmJiAkQ2FjaGVkVmlzaWJpbGl0eSAmJiAkQ2FjaGVkVmlzaWJpbGl0eS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKTsKCiAgICAgICAgICAgIG15ICVDb250ZW50ID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5HZXRGaWVsZFN0YXRlKAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgRGlzYXBwZWFycyAgICAgICAgICAgICAgPT4gJERpc2FwcGVhcnMsCiAgICAgICAgICAgICAgICBSZWFwcGVhcnMgICAgICAgICAgICAgICA9PiAkUmVhcHBlYXJzLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkRGF0YURCICAgICAgPT4gXCVEeW5hbWljRmllbGREYXRhREIsCiAgICAgICAgICAgICAgICBDYWNoZWRWaXNpYmlsaXR5ICAgICAgICA9PiAkQ2FjaGVkVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9PiAkU2VsZiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgYXV0b3NlbGVjdGlvbiBpcyBhY3RpdmF0ZWQgYW5kIGZpZWxkIGNoYW5nZWQgaW4gYW55IHdheQogICAgICAgICAgICBpZiAoICRDb250ZW50e1Bvc3NpYmxlVmFsdWVzfSAmJiAkUGFyYW17QXV0b3NlbGVjdH0gJiYgJFBhcmFte0F1dG9zZWxlY3R9e0R5bmFtaWNGaWVsZH17JERGTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gZXhpc3RzICRDb250ZW50e05ld1ZhbHVlfSA/ICRDb250ZW50e05ld1ZhbHVlfSA6ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CgogICAgICAgICAgICAgICAgbXkgJEF1dG9zZWxlY3RlZCA9ICRTZWxmLT5BdXRvc2VsZWN0KAogICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgICAgICAgID0+ICRTZWxlY3RlZCwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkQ29udGVudHtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQXV0b3NlbGVjdGVkICkgewogICAgICAgICAgICAgICAgICAgICRDb250ZW50e05ld1ZhbHVlfSA9ICRBdXRvc2VsZWN0ZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IG5ldyB2YWx1ZSBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgaWYgKCBleGlzdHMgJENvbnRlbnR7TmV3VmFsdWV9ICkgewogICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRDb250ZW50e05ld1ZhbHVlfTsKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29udGVudHtOZXdWYWx1ZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggZXhpc3RzICRDb250ZW50e1Bvc3NpYmxlVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICRGaWVsZHN7JERGTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJENvbnRlbnR7UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBpZiAoIGV4aXN0cyAkQ29udGVudHtOb3RBQ0xSZWR1Y2libGV9ICkgewogICAgICAgICAgICAgICAgICAgICRGaWVsZHN7JERGTmFtZX17Tm90QUNMUmVkdWNpYmxlfSA9ICRDb250ZW50e05vdEFDTFJlZHVjaWJsZX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCBleGlzdHMgJENvbnRlbnR7U2V0c30gKSB7CiAgICAgICAgICAgICAgICAlU2V0cyA9ICgKICAgICAgICAgICAgICAgICAgICAlU2V0cywKICAgICAgICAgICAgICAgICAgICAkQ29udGVudHtTZXRzfS0+JSosCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggZXhpc3RzICRDb250ZW50e05ld1ZhbHVlfSApIHsKICAgICAgICAgICAgICAgICRGaWVsZHN7JERGTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0aGUgdmlzaWJpbGl0eSBvZiBTZXQtaW5uZXIgZmllbGRzIGlzIGhhbmRsZWQgYnkgdGhlIFNldCBpdHNlbGYgaW4gdGhlIEdldEZpZWxkU3RhdGUoKSBzdWIKICAgICAgICAgICAgaWYgKCAkQ29udGVudHtWaXNpYmlsaXR5fSApIHsKICAgICAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gKAogICAgICAgICAgICAgICAgICAgICVWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgICAgICRDb250ZW50e1Zpc2liaWxpdHl9LT4lKiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICk7CgogICAgICAgICMgMi4gaGFuZGxlIGRpc2FwcGVhcmluZyBmaWVsZHMKICAgICAgICBpZiAoICVWaXNpYmlsaXR5ICYmICRWaXNpYmlsaXR5eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKSB7CgogICAgICAgICAgICAjIHZhbHVlcyBvZiB2aXNpYmxlIGZpZWxkcyB0dXJuaW5nIGludmlzaWJsZSBhcmUgZGVsZXRlZAogICAgICAgICAgICBteSAkVXBkYXRlUmVxdWlyZWQgPSAhZGVmaW5lZCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID8gMCA6CiAgICAgICAgICAgICAgICByZWYoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKQogICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSA/IDEgOiAwICkKICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPX4gbS9eLT8kLyA/IDAgOiAxOwoKICAgICAgICAgICAgIyBzZXR0aW5nIGNvbmZpZyBpdGVtIHZhbHVlcyBmb3IgaGlkZGVuIGZpZWxkcyBpcyBuZWNlc3NhcnkgZm9yIEFDTCBjYWxjdWxhdGlvbgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZERhdGFEQnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWVJc0RpZmZlcmVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVJc0RpZmZlcmVudCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBWYWx1ZTEgICAgICAgICAgICAgPT4gJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZTIgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZERhdGFEQnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCRWYWx1ZUlzRGlmZmVyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJFVwZGF0ZVJlcXVpcmVkID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRVcGRhdGVSZXF1aXJlZCA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgdmFsdWVzIGFyZSBwcmVzZW50LCBGaWVsZFJlc3RyaWN0aW9ucyBoYXZlIHRvIGJlIGNoZWNrZWQgYWdhaW4gZm9yIHRoZSBuZXdseSBjaGFuZ2VkIGVsZW1lbnRzCiAgICAgICAgICAgIGlmICgkVXBkYXRlUmVxdWlyZWQpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBlbnRyeSBhbmQgcmVtZW1iZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gcmVmKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgPyBbXSA6ICcnOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBhIGNvbmZpZyBpdGVtIGRhdGEgdmFsdWUgYW5kIHVzZSB0aGVtLCBpZiBzbwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBmaWVsZHMgaGF2ZSB0byBiZSBhZGRlZCB0byBjb3JyZWN0bHkgcmVtb3ZlIGFsbCBjb250ZW50CiAgICAgICAgICAgICAgICBpZiAoICEkSXNBQ0xSZWR1Y2libGUgKSB7CiAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICBOb3RBQ0xSZWR1Y2libGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UmVhZG9ubHl9OwoKICAgICAgICAjIDMuIHNraXAgbm9uIEFDTCByZWR1Y2libGUgZmllbGRzLi4uCiAgICAgICAgaWYgKCAhJElzQUNMUmVkdWNpYmxlICkgewoKICAgICAgICAgICAgIyAuLi5idXQgc2V0IGFjdHVhbCBvciBkZWZhdWx0IHZhbHVlcyBvZiByZWFwcGVhcmluZyBmaWVsZHMgZmlyc3QKICAgICAgICAgICAgaWYgKCAkQ2FjaGVkVmlzaWJpbGl0eSAmJiAkQ2FjaGVkVmlzaWJpbGl0eS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKSB7CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICBOb3RBQ0xSZWR1Y2libGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJENoZWNrQUNMcyA9IDE7CgogICAgICAgICMgNC4gaGFuZGxlIGFsbCBzdGFuZGFyZCBBQ0wgcmVkdWNpYmxlIGZpZWxkcwogICAgICAgICMgZXZhbHVhdGUgcHJlc2VsZWN0aW9uCiAgICAgICAgaWYgKCAhJENvbXBsZXRlUnVuICkgewogICAgICAgICAgICBpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0gKSB7CgogICAgICAgICAgICAgICAgIyBubyB3YXkgdG8gdGVsbCBpZiB0aGVyZSBhcmUgYWNscyB3aGljaCBjb25uZWN0IHRoZSBjaGFuZ2VkIGVsZW1lbnQgdG8gdGhlIGFmZmVjdGVkIGZpZWxkCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljRmllbGRfJERGTmFtZSBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDA7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhY2xzIGlmLi4uCiAgICAgICAgICAgICAgICAjIC4uLmEgZmllbGQgcmVhcHBlYXJzOiBwb3NzaWJsZSB2YWx1ZXMgaGF2ZSB0byBiZSByZWNhbGN1bGF0ZWQ7CiAgICAgICAgICAgICAgICBpZiAoICRDYWNoZWRWaXNpYmlsaXR5ICYmICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyB0YWtlIHRoZSBjb25maWcgaXRlbSBvciBkZWZhdWx0IHZhbHVlIGFuZCBwdXQgaXQgYWxzbyBpbnRvIE5ld1ZhbHVlcwogICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIHVubGlrZWx5IGNhc2UgdGhhdCB0aGV5IHdpbGwgYmUgZGVsZXRlZCBhZ2FpbiwgdGhpcyB3aWxsIGp1c3QgY2F1c2UgYSByZWR1bmRhbnQgc2Vjb25kIHJ1bgogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkRGF0YURCeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZERhdGFEQnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICREeW5hbWljRmllbGREYXRhREJ7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwogICAgICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJFVzZXJQcmVmZXJlbmNlc3siVXNlckR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgLi4uYXV0b3NlbGVjdCBpcyB0dXJuZWQgb24gZm9yIHRoZSBjaGFuZ2VkIGZpZWxkIChyZWZpbGwgYSBmaWVsZCBlbXB0aWVkIGJ5IGhhbmQpCiAgICAgICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0F1dG9zZWxlY3R9CiAgICAgICAgICAgICAgICAgICAgJiYgJFBhcmFte0F1dG9zZWxlY3R9e0R5bmFtaWNGaWVsZH17JERGTmFtZX0KICAgICAgICAgICAgICAgICAgICAmJiAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfXsiRHluYW1pY0ZpZWxkXyRERk5hbWUifQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBFTEVNRU5UOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfSB9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyAuLi50aGUgY2hhbmdlZCBlbGVtZW50IGFmZmVjdHMgdGhlIGN1cnJlbnQgZmllbGQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte0FDTFByZXNlbGVjdGlvbn17UnVsZXN9e0NvbmZpZ0l0ZW19eyRFbGVtZW50fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEVMRU1FTlQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgLi4udGhlIGVsZW1lbnQgaXMgbm90IGRlZmluZWQgaW4gdGhlIGNhY2hlIGFuZCB0aHVzIHRoZXJlIGlzIG5vIHdheSB0byB0ZWxsIGlmIHRoZXJlIGFyZSBhY2xzIHdoaWNoIGNvbm5lY3QgaXQgdG8gdGhlIGFmZmVjdGVkIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggISRQYXJhbXtBQ0xQcmVzZWxlY3Rpb259e0ZpZWxkc317JEVsZW1lbnR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBFTEVNRU5UOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5vdGhpbmcgY2hhbmdlZCwgb21pdCB0aGlzIGZpZWxkCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRDaGVja0FDTHM7CgogICAgICAgICMgZWxzZSBjaGVjayBBQ0xzCiAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgKTsKCiAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICBteSAkQUNMID0gJFBhcmFte0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAleyAkUGFyYW17R2V0UGFyYW19IH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFBhcmFte0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICk7CiAgICAgICAgaWYgKCRBQ0wpIHsKICAgICAgICAgICAgbXkgJUZpbHRlciA9ICRQYXJhbXtDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICMgY29udmVydCBGaWx0ZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXN9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJFBvc3NpYmxlVmFsdWVzLAogICAgICAgIH07CgogICAgICAgICMgY2hlY2sgd2hldGhlciBhbGwgc2VsZWN0ZWQgZW50cmllcyBhcmUgc3RpbGwgdmFsaWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifQogICAgICAgICAgICAmJgogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICAgICB8fCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9IGVxICcwJwogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIG11bHRpc2VsZWN0IGFuZCAtdmFsdWUgZmllbGRzCiAgICAgICAgICAgIGlmICggcmVmKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgKSB7CiAgICAgICAgICAgICAgICBTRUxFQ1RFRDoKICAgICAgICAgICAgICAgIGZvciBteSAkU2VsZWN0ZWQgKCBAeyAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgc2tpcCBlbXB0eSB2YWx1ZXMgKHBvc3NpYmxlIG9ubHkgZm9yIG11bHRpdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUxFQ1RFRCBpZiAhZGVmaW5lZCAkU2VsZWN0ZWQ7CgogICAgICAgICAgICAgICAgICAgICMgaWYgYSBzZWxlY3RlZCB2YWx1ZSBpcyBub3QgcG9zc2libGUgYW55bW9yZQogICAgICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFBvc3NpYmxlVmFsdWVzLT57JFNlbGVjdGVkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIHsgZGVmaW5lZCAkXyAmJiAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnskX30gPyB1bmRlZiA6ICRfIH0gJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifS0+QCoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZXAgeyBkZWZpbmVkICRQb3NzaWJsZVZhbHVlcy0+eyRTZWxlY3RlZH0gfSAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBTRUxFQ1RFRDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2luZ2xlc2VsZWN0IGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFBvc3NpYmxlVmFsdWVzLT57ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gfSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYXV0b3NlbGVjdCBpZiBhcHBsaWNhYmxlCiAgICAgICAgaWYgKCAkUGFyYW17QXV0b3NlbGVjdH0gJiYgJFBhcmFte0F1dG9zZWxlY3R9e0R5bmFtaWNGaWVsZH17JERGTmFtZX0gKSB7CgogICAgICAgICAgICBteSAkU2VsZWN0ZWQgPSAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICAgICAvLyAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9IC8vICcnOwoKICAgICAgICAgICAgbXkgJEF1dG9zZWxlY3RlZCA9ICRTZWxmLT5BdXRvc2VsZWN0KAogICAgICAgICAgICAgICAgQ3VycmVudCAgICAgICAgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRBdXRvc2VsZWN0ZWQgKSB7CiAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJEF1dG9zZWxlY3RlZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNhY2hlIHRoZSBuZXcgdmlzaWJpbGl0eQogICAgaWYgKCAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufSAmJiAkVmlzQ2hlY2sgJiYgIWV4aXN0cyAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0gKSB7CiAgICAgICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0hpZGRlbkZpZWxkcycsCiAgICAgICAgICAgIEtleSAgID0+ICRQYXJhbXtGb3JtSUR9LAogICAgICAgICAgICBWYWx1ZSA9PiB7JVZpc2liaWxpdHl9LAogICAgICAgICAgICBUVEwgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1Nlc3Npb25NYXhUaW1lJykgfHwgNjAgKiA2MCAqIDEyLAogICAgICAgICk7CiAgICB9CgogICAgZWxzaWYgKCAkVmlzQ2hlY2sgJiYgZXhpc3RzICRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fSApIHsKICAgICAgICAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0gPSBcJVZpc2liaWxpdHk7CiAgICB9CgogICAgIyBpZiBhZGRpdGlvbmFsIGVsZW1lbnRzIGFyZSBjaGFuZ2VkIGJ5IHRoZSByb3V0aW5lLCByZWN1cnNpdmVseSBjYWxsIEdldEZpZWxkU3RhdGVzLCB1bnRpbCBhbGwgZGVwZW5kZW5jaWVzIGFyZSB3b3JrZWQgdGhyb3VnaAogICAgaWYgKCVOZXdWYWx1ZXMpIHsKCiAgICAgICAgbXkgJVJlY3UgPSAkU2VsZi0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgR2V0UGFyYW0gPT4gewogICAgICAgICAgICAgICAgJXsgJFBhcmFte0dldFBhcmFtfSB9LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH0gfSwKICAgICAgICAgICAgICAgICAgICAlTmV3VmFsdWVzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2hhbmdlZEVsZW1lbnRzID0+IHsgbWFwIHsgJF8gPT4gMSB9IGtleXMgJU5ld1ZhbHVlcyB9LAogICAgICAgICk7CgogICAgICAgICMgY29tYmluZSB0aGUgdmlzaWJpbGl0eSwgaW5uZXIgdmFsdWVzIHRha2UgcHJlY2VkZW5jZQogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRSZWN1e1Zpc2liaWxpdHl9ICkgKSB7CiAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gKAogICAgICAgICAgICAgICAgJVZpc2liaWxpdHksCiAgICAgICAgICAgICAgICAleyAkUmVjdXtWaXNpYmlsaXR5fSB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjb21iaW5lIHRoZSBmaWVsZCBpbmZvLCBpbm5lciB2YWx1ZXMgdGFrZSBwcmVjZWRlbmNlCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7RmllbGRzfSApICkgewogICAgICAgICAgICAlRmllbGRzID0gKAogICAgICAgICAgICAgICAgJUZpZWxkcywKICAgICAgICAgICAgICAgICV7ICRSZWN1e0ZpZWxkc30gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY29tYmluZSBhbGwgY2hhbmdlZCBlbGVtZW50cwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRSZWN1e05ld1ZhbHVlc30gKSApIHsKICAgICAgICAgICAgJU5ld1ZhbHVlcyA9ICgKICAgICAgICAgICAgICAgICVOZXdWYWx1ZXMsCiAgICAgICAgICAgICAgICAleyAkUmVjdXtOZXdWYWx1ZXN9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGZpbmFsbHkgdGFrZSBjYXJlIG9mIHNldCBpbmZvcm1hdGlvbgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRSZWN1e1NldHN9ICkgKSB7CiAgICAgICAgICAgICVTZXRzID0gKAogICAgICAgICAgICAgICAgJVNldHMsCiAgICAgICAgICAgICAgICAleyAkUmVjdXtTZXRzfSB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gKAogICAgICAgIEZpZWxkcyAgICAgPT4gXCVGaWVsZHMsCiAgICAgICAgVmlzaWJpbGl0eSA9PiBcJVZpc2liaWxpdHksCiAgICAgICAgTmV3VmFsdWVzICA9PiBcJU5ld1ZhbHVlcywKICAgICAgICBTZXRzICAgICAgID0+IFwlU2V0cywKICAgICk7Cn0KCj1oZWFkMiBBdXRvc2VsZWN0KCkKCkF1dG9zZWxlY3RzIGEgdmFsdWUgaWYgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzIGVtcHR5IGFuZCBvbmx5IG9uZSB2YWxpZCBvcHRpb24gaXMgcHJlc2VudCwgZWxzZSB1bmRlZiBpcyByZXR1cm5lZAoKICAgIG15ICRTZWxlY3RlZCA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+QXV0b3NlbGVjdCgKICAgICAgICBDdXJyZW50ICAgICAgICA9PiAkVmFsdWUsICAgIyB1bmRlZiwgJycsIG9yIFtdCiAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4ge30sCiAgICApOwoKPWN1dAoKc3ViIEF1dG9zZWxlY3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJldHVybiwgaWYgYWxyZWFkeSBmaWxsZWQgKCAnMCcgaXMgdmFsaWQhICkKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRQYXJhbXtDdXJyZW50fQogICAgICAgICYmICggKCAhcmVmKCAkUGFyYW17Q3VycmVudH0gKSAmJiAkUGFyYW17Q3VycmVudH0gIX4gL14tPyQvICkgfHwgSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q3VycmVudH0gKSApCiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiB1bmRlZjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICB9CgogICAgIyBjaGVjayBwb3NzaWJsZSB2YWx1ZXMKICAgIGlmICggISRQYXJhbXtQb3NzaWJsZVZhbHVlc30gKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0KICAgIGlmICggcmVmKCAkUGFyYW17UG9zc2libGVWYWx1ZXN9ICkgbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUG9zc2libGVWYWx1ZXMgaGFzIHRvIGJlIGEgSGFzaCByZWYhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0KCiAgICBteSAoICRWYWxpZEtleXMsICRVc2VkS2V5ICk7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17UG9zc2libGVWYWx1ZXN9IH0gKSB7CgogICAgICAgICMgZXhjbHVkZSBlbXB0eSB2YWx1ZXM7ICctJyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAgICAgICBpZiAoICRLZXkgIX4gL14tPyQvICkgewogICAgICAgICAgICBpZiAoICsrJFZhbGlkS2V5cyA+IDEgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWY7ICAgICMjIG5vIGNyaXRpYyBxdyhTdWJyb3V0aW5lczo6UHJvaGliaXRFeHBsaWNpdFJldHVyblVuZGVmKQogICAgICAgICAgICB9CiAgICAgICAgICAgICRVc2VkS2V5ID0gJEtleTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICEkVmFsaWRLZXlzICkgewogICAgICAgIHJldHVybiB1bmRlZjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICB9ICAgICMgZWxzZSAkVmFsaWRLZXlzID09IDEgPT4gYXV0b3NlbGVjdAoKICAgICMgZmlsbCB0aGUgZmllbGQgaWYgYW5kIGFkZCBpdCB0byB0aGUgY2hhbmdlZCBlbGVtZW50cwogICAgaWYgKCByZWYoICRQYXJhbXtDdXJyZW50fSApICkgewogICAgICAgIHJldHVybiBbJFVzZWRLZXldOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICRVc2VkS2V5OwogICAgfQoKfQoKPWhlYWQyIFNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCkKCkNhbGN1bGF0ZXMgYW5kIHN0b3JlcyBzaW1wbGUgZmllbGQgcmVsYXRpb25zIGFuZCBncm91cHMgQUNMcyB2aWEgdGhlaXIgb3V0cHV0IHR5cGVzIHRvIHByZXNlbGVjdCB0aGVtIHdoZW4gdXNlZCwgbGF0ZXIgb24KCiAgICBteSAkQUNMUHJlc2VsZWN0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7Cgo9Y3V0CgpzdWIgU2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQWNscyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnQ29uZmlnSXRlbUFjbCcpOwoKICAgICMgc3RhbmRhcmQgZmllbGRzCiAgICBteSAlRmllbGRzID0gKAogICAgICAgIERlcGxTdGF0ZSA9PiAnRGVwbFN0YXRlJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lTdGF0ZScsCiAgICApOwoKICAgICMgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCB2YWx1ZXMgJXsgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCggUmVzdWx0VHlwZSA9PiAnSEFTSCcgKSB9ICkgewogICAgICAgICRGaWVsZHN7IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkTmFtZSJ9ID0gIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkTmFtZSI7CiAgICB9CgogICAgbXkgJVByZXNlbGVjdGlvblJ1bGVzOwoKICAgICMgcGFyc2UgQWNscwogICAgQUNMOgogICAgZm9yIG15ICRBQ0wgKCB2YWx1ZXMgJXskQWNsc30gKSB7CgogICAgICAgICMgZ2V0IGNvbnRyb2xsaW5nIGVsZW1lbnRzIChFbGVtZW50Q2hhbmdlZCBsYXRlciBvbikKICAgICAgICBteSAlQ29udHJvbGxlcjsKICAgICAgICBmb3IgbXkgJFByb3BlcnRpZXNIYXNoIChxdyhQcm9wZXJ0aWVzIFByb3BlcnRpZXNEYXRhYmFzZSkpIHsKICAgICAgICAgICAgaWYgKCAkQUNMLT57JFByb3BlcnRpZXNIYXNofXtDb25maWdJdGVtfSApIHsKICAgICAgICAgICAgICAgIE5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRQcm9wZXJ0aWVzSGFzaH17Q29uZmlnSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRmllbGRzeyROYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmllbGQgJE5hbWUgdXNlZCBpbiBBQ0xzLCBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTkFNRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvbnRyb2xsZXJ7JE5hbWV9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRBQ0wtPnskUHJvcGVydGllc0hhc2h9e0R5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBOQU1FOgogICAgICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICV7ICRBQ0wtPnskUHJvcGVydGllc0hhc2h9e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRmllbGRzeyROYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmllbGQgJE5hbWUgdXNlZCBpbiBBQ0xzLCBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTkFNRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvbnRyb2xsZXJ7JE5hbWV9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgbXkgJEZpZWxkIChxdy9EZXBsU3RhdGUgSW5jaVN0YXRlLykgewogICAgICAgICAgICAgICAgaWYgKCAkQUNMLT57JFByb3BlcnRpZXNIYXNofXskRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICRDb250cm9sbGVyeyRGaWVsZH0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggISVDb250cm9sbGVyICkgeyBuZXh0IEFDTCB9CgogICAgICAgICMgZ2V0IGFmZmVjdGVkIGVsZW1lbnRzCiAgICAgICAgZm9yIG15ICRJbXBhY3QgKHF3KFBvc3NpYmxlIFBvc3NpYmxlQWRkIFBvc3NpYmxlTm90KSkgewoKICAgICAgICAgICAgIyBDb25maWdJdGVtIFJ1bGVzCiAgICAgICAgICAgIGlmICggJEFDTC0+eyRJbXBhY3R9e0NvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgQUZGRUNURUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFmZmVjdGVkICggc29ydCBrZXlzICV7ICRBQ0wtPnskSW1wYWN0fXtDb25maWdJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWVsZHN7JEFmZmVjdGVkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmllbGQgJEFmZmVjdGVkIHVzZWQgaW4gQUNMcywgaXMgbm90IGRlZmluZWQhIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEFGRkVDVEVEOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnRDaGFuZ2VkICggc29ydCBrZXlzICVDb250cm9sbGVyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUHJlc2VsZWN0aW9uUnVsZXN7Q29uZmlnSXRlbX17ICRGaWVsZHN7JEVsZW1lbnRDaGFuZ2VkfSB9eyAkRmllbGRzeyRBZmZlY3RlZH0gfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEZvcm0gUnVsZXMKICAgICAgICAgICAgaWYgKCAkQUNMLT57JEltcGFjdH0tPntGb3JtfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudENoYW5nZWQgKCBzb3J0IGtleXMgJUNvbnRyb2xsZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgJFByZXNlbGVjdGlvblJ1bGVze0Zvcm19eyAkRmllbGRzeyRFbGVtZW50Q2hhbmdlZH0gfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH0KCiAgICBteSAkUmV0dXJuID0gewogICAgICAgIEZpZWxkcyA9PiB7IG1hcCB7ICRfID0+IDEgfSAoIHZhbHVlcyAlRmllbGRzICkgfSwKICAgICAgICBSdWxlcyAgPT4gXCVQcmVzZWxlY3Rpb25SdWxlcywKICAgIH07CgogICAgJFNlbGYtPntDYWNoZU9iamVjdH0tPlNldCgKICAgICAgICBUeXBlICA9PiAnQ29uZmlnSXRlbUFDTCcsICAgICAgICMgb25seSBbYS16QS1aMC05X10gY2hhcnMgdXNhYmxlCiAgICAgICAgS2V5ICAgPT4gJ1ByZXNlbGVjdGlvbicsCiAgICAgICAgVmFsdWUgPT4gJFJldHVybiwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAxMDAsICAgICMgc2Vjb25kcywgdGhpcyBtZWFucyAxMDAgZGF5cwogICAgKTsKCiAgICByZXR1cm4gJFJldHVybjsKCn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/History.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6SGlzdG9yeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okhpc3RvcnkgLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggaGlzdG9yeSBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBoaXN0b3J5IGZ1bmN0aW9ucy4KCj1oZWFkMiBIaXN0b3J5R2V0KCkKClJldHVybnMgYW4gYXJyYXkgcmVmZXJlbmNlIHdpdGggYWxsIGhpc3RvcnkgZW50cmllcyBmb3IgdGhlIGdpdmVuIGNvbmZpZyBpdGVtLgpFYWNoIGFycmF5IGVsZW1lbnQgaXMgYSBoYXNoIHJlZmVyZW5jZSByZXByZXNlbnRpbmcgb25lIGhpc3RvcnkgZW50cnkuCgpUaGVzZSBoYXNoIHJlZmVyZW5jZXMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dDoKCiAgICAkSW5mb3tIaXN0b3J5RW50cnlJRH0KICAgICRJbmZve0NvbmZpZ0l0ZW1JRH0KICAgICRJbmZve0hpc3RvcnlUeXBlfQogICAgJEluZm97SGlzdG9yeVR5cGVJRH0KICAgICRJbmZve0NvbW1lbnR9CiAgICAkSW5mb3tDcmVhdGVkQnl9CiAgICAkSW5mb3tDcmVhdGVUaW1lfQogICAgJEluZm97VXNlcklEfQogICAgJEluZm97VXNlckxvZ2lufQogICAgJEluZm97VXNlckxhc3RuYW1lfQogICAgJEluZm97VXNlckZpcnN0bmFtZX0KICAgICRJbmZve1VzZXJGdWxsbmFtZX0KCiAgICBteSAkSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjM0LAogICAgKTsKCj1jdXQKCnN1YiBIaXN0b3J5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBjYWNoZWQgcmVzdWx0IGV4aXN0cywgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9CiAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwoKICAgICMgZmV0Y2ggc29tZSBkYXRhIGZyb20gaGlzdG9yeSBmb3IgZ2l2ZW4gY29uZmlnIGl0ZW0KICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgY2guaWQsIGNoLmNvbmZpZ2l0ZW1faWQsIGNoLmNvbnRlbnQsIGNoLnR5cGVfaWQsICcKICAgICAgICAgICAgLiAnY2guY3JlYXRlX2J5LCBjaC5jcmVhdGVfdGltZSwgY2h0Lm5hbWUgJwogICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBjaCwgY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgY2h0ICcKICAgICAgICAgICAgLiAnV0hFUkUgY2gudHlwZV9pZCA9IGNodC5pZCBBTkQgY2guY29uZmlnaXRlbV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBjaC5pZCcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIHNhdmUgZGF0YSBmcm9tIGhpc3RvcnkgaW4gYXJyYXkKICAgIG15IEBFbnRyaWVzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlVG1wID0gKAogICAgICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICBIaXN0b3J5VHlwZUlEICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAkUm93WzRdLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAkUm93WzZdLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEVudHJpZXMsIFwlVG1wOwogICAgfQoKICAgICMgZ2V0IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNlciB3aG8gY3JlYXRlZCBoaXN0b3J5IGVudHJpZXMKICAgIGZvciBteSAkRW50cnkgKEBFbnRyaWVzKSB7CgogICAgICAgICMgZ2V0IHVzZXIgaW5mb3JtYXRpb24KICAgICAgICBteSAlVXNlckluZm8gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICRFbnRyeS0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgQ2FjaGVkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIGhpc3RvcnkgZW50cnkKICAgICAgICAkRW50cnktPntVc2VySUR9ICAgICAgICA9ICRVc2VySW5mb3tVc2VySUR9OwogICAgICAgICRFbnRyeS0+e1VzZXJMb2dpbn0gICAgID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CiAgICAgICAgJEVudHJ5LT57VXNlckZpcnN0bmFtZX0gPSAkVXNlckluZm97VXNlckZpcnN0bmFtZX07CiAgICAgICAgJEVudHJ5LT57VXNlckxhc3RuYW1lfSAgPSAkVXNlckluZm97VXNlckxhc3RuYW1lfTsKICAgICAgICAkRW50cnktPntVc2VyRnVsbG5hbWV9ICA9ICRVc2VySW5mb3tVc2VyRnVsbG5hbWV9OwogICAgfQoKICAgICMgc2F2ZSByZXN1bHQgaW4gY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9uc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfSA9IFxARW50cmllczsKCiAgICByZXR1cm4gXEBFbnRyaWVzOwp9Cgo9aGVhZDIgSGlzdG9yeUVudHJ5R2V0KCkKClJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGhpc3RvcnkgZW50cnkuClRoZSBoYXNoIHJlZmVyZW5jZSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0OgoKICAgICRJbmZve0hpc3RvcnlFbnRyeUlEfQogICAgJEluZm97Q29uZmlnSXRlbUlEfQogICAgJEluZm97SGlzdG9yeVR5cGV9CiAgICAkSW5mb3tIaXN0b3J5VHlwZUlEfQogICAgJEluZm97Q29tbWVudH0KICAgICRJbmZve0NyZWF0ZUJ5fQogICAgJEluZm97Q3JlYXRlVGltZX0KICAgICRJbmZve1VzZXJJRH0KICAgICRJbmZve1VzZXJMb2dpbn0KICAgICRJbmZve1VzZXJMYXN0bmFtZX0KICAgICRJbmZve1VzZXJGaXJzdG5hbWV9CiAgICAkSW5mb3tVc2VyRnVsbG5hbWV9CgogICAgbXkgJEluZm8gPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUVudHJ5R2V0KAogICAgICAgIEhpc3RvcnlFbnRyeUlEID0+IDEyMzQsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlFbnRyeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSGlzdG9yeUVudHJ5SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBjYWNoZWQgcmVzdWx0IGV4aXN0cywgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICBpZiAoICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57ICRQYXJhbXtIaXN0b3J5RW50cnlJRH0gfSApIHsKICAgICAgICBteSAoJENvbmZpZ0l0ZW1JRCkgPSBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57ICRQYXJhbXtIaXN0b3J5RW50cnlJRH0gfSB9OwogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0tPnskQ29uZmlnSXRlbUlEfTsKICAgIH0KCiAgICAjIGZldGNoIGEgc2luZ2xlIGVudHJ5IGZyb20gaGlzdG9yeQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjaC5pZCwgY2guY29uZmlnaXRlbV9pZCwgY2guY29udGVudCwgY2gudHlwZV9pZCwgJwogICAgICAgICAgICAuICdjaC5jcmVhdGVfYnksIGNoLmNyZWF0ZV90aW1lLCBjaHQubmFtZSAnCiAgICAgICAgICAgIC4gJ0ZST00gY29uZmlnaXRlbV9oaXN0b3J5IGNoLCBjb25maWdpdGVtX2hpc3RvcnlfdHlwZSBjaHQgJwogICAgICAgICAgICAuICdXSEVSRSBjaC50eXBlX2lkID0gY2h0LmlkIEFORCBjaC5pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtIaXN0b3J5RW50cnlJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRW50cnk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAlRW50cnkgPSAoCiAgICAgICAgICAgIEhpc3RvcnlFbnRyeUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgID0+ICRSb3dbM10sCiAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgID0+ICRSb3dbNF0sCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgID0+ICRSb3dbNV0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICRSb3dbNl0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGRhdGEgZm9yIHRoaXMgZW50cnkKICAgIG15ICVVc2VySW5mbyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRW50cnl7Q3JlYXRlQnl9LAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAkRW50cnl7VXNlcklEfSAgICAgICAgPSAkVXNlckluZm97VXNlcklEfTsKICAgICRFbnRyeXtVc2VyTG9naW59ICAgICA9ICRVc2VySW5mb3tVc2VyTG9naW59OwogICAgJEVudHJ5e1VzZXJGaXJzdG5hbWV9ID0gJFVzZXJJbmZve1VzZXJGaXJzdG5hbWV9OwogICAgJEVudHJ5e1VzZXJMYXN0bmFtZX0gID0gJFVzZXJJbmZve1VzZXJMYXN0bmFtZX07CiAgICAkRW50cnl7VXNlckZ1bGxuYW1lfSAgPSAkVXNlckluZm97VXNlckZ1bGxuYW1lfTsKCiAgICAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0tPnsgJEVudHJ5e0NvbmZpZ0l0ZW1JRH0gfSA9IFwlRW50cnk7CgogICAgcmV0dXJuIFwlRW50cnk7Cn0KCj1oZWFkMiBIaXN0b3J5QWRkKCkKCkFkZHMgYSBzaW5nbGUgaGlzdG9yeSBlbnRyeSB0byB0aGUgaGlzdG9yeS4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMzQsCiAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnTmV3Q29uZmlnSXRlbScsICMgZWl0aGVyIEhpc3RvcnlUeXBlIG9yIEhpc3RvcnlUeXBlSUQgaXMgbmVlZGVkCiAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICBDb21tZW50ICAgICAgID0+ICdBbnkgdXNlZnVsIGluZm9ybWF0aW9uJywKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFVzZXJJRCBDb21tZW50KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISggJFBhcmFte0hpc3RvcnlUeXBlfSB8fCAkUGFyYW17SGlzdG9yeVR5cGVJRH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGlzdG9yeVR5cGUgb3IgSGlzdG9yeVR5cGVJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGhpc3RvcnkgdHlwZSBpZCBmcm9tIGhpc3RvcnkgdHlwZSBpZiBoaXN0b3J5IHR5cGUgaXMgZ2l2ZW4uCiAgICBpZiAoICRQYXJhbXtIaXN0b3J5VHlwZX0gKSB7CiAgICAgICAgbXkgJElkID0gJFNlbGYtPkhpc3RvcnlUeXBlTG9va3VwKCBIaXN0b3J5VHlwZSA9PiAkUGFyYW17SGlzdG9yeVR5cGV9ICk7CgogICAgICAgIGlmICggISRJZCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ludmFsaWQgaGlzdG9yeSB0eXBlIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtIaXN0b3J5VHlwZUlEfSA9ICRJZDsKICAgIH0KCiAgICAjIGlmIGhpc3RvcnkgdHlwZSBpcyBnaXZlbgogICAgZWxzaWYgKCAkUGFyYW17SGlzdG9yeVR5cGVJRH0gKSB7CiAgICAgICAgbXkgJE5hbWUgPSAkU2VsZi0+SGlzdG9yeVR5cGVMb29rdXAoIEhpc3RvcnlUeXBlSUQgPT4gJFBhcmFte0hpc3RvcnlUeXBlSUR9ICk7CgogICAgICAgIGlmICggISROYW1lICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnSW52YWxpZCBoaXN0b3J5IHR5cGUgaWQgZ2l2ZW4hJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGdpdmVuIGNvbmZpZyBpdGVtIGlkIHBvaW50cyB0byBhbiBleGlzdGluZyBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgIG15ICROdW1iZXIgPSAkU2VsZi0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISROdW1iZXIgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIGNvbmZpZyBpdGVtIGlkIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgY2FjaGVkIHJlc3VsdHMKICAgIGRlbGV0ZSAkU2VsZi0+e0NhY2hlfS0+e0NJVmVyc2lvbnN9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgIyBzaG9ydGVuIHRoZSBjb21tZW50IGlmIGl0IGlzIGJpZ2dlciB0aGFuIG1heCBsZW5ndGgKICAgIGlmICggbGVuZ3RoKCAkUGFyYW17Q29tbWVudH0gKSA+IDE5MSApIHsKCiAgICAgICAgbXkgKCAkRmllbGQsICRPbGQsICROZXcgKSA9IHNwbGl0IC8lJS8sICRQYXJhbXtDb21tZW50fSwgMzsKCiAgICAgICAgbXkgJExlbmd0aCA9IGludCggKCAxOTEgLSBsZW5ndGgoJEZpZWxkKSAtIDQgKSAvIDIgKTsKCiAgICAgICAgaWYgKCBsZW5ndGgoJE9sZCkgPiAkTGVuZ3RoICkgewogICAgICAgICAgICBteSAkSW5kZXggPSBpbnQoICRMZW5ndGggLyAyICk7CiAgICAgICAgICAgICRPbGQgPSBzdWJzdHIoICRPbGQsIDAsICRJbmRleCAtIDIgKSAuICcuLi4nIC4gc3Vic3RyKCAkT2xkLCBsZW5ndGgoJE9sZCkgLSAkSW5kZXggKyAyICk7CiAgICAgICAgfQogICAgICAgIGlmICggbGVuZ3RoKCROZXcpID4gJExlbmd0aCApIHsKICAgICAgICAgICAgbXkgJEluZGV4ID0gaW50KCAkTGVuZ3RoIC8gMiApOwogICAgICAgICAgICAkTmV3ID0gc3Vic3RyKCAkTmV3LCAwLCAkSW5kZXggLSAyICkgLiAnLi4uJyAuIHN1YnN0ciggJE5ldywgbGVuZ3RoKCROZXcpIC0gJEluZGV4ICsgMiApOwogICAgICAgIH0KICAgICAgICBteSAkTmV3Q29tbWVudCA9ICRGaWVsZCAuICclJScgLiAkT2xkIC4gJyUlJyAuICROZXc7CgogICAgICAgICRQYXJhbXtDb21tZW50fSA9ICROZXdDb21tZW50OwogICAgfQoKICAgICMgaW5zZXJ0IGhpc3RvcnkgZW50cnkKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBjb25maWdpdGVtX2hpc3RvcnkgKCBjb25maWdpdGVtX2lkLCBjb250ZW50LCBjcmVhdGVfYnksICcKICAgICAgICAgICAgLiAnY3JlYXRlX3RpbWUsIHR5cGVfaWQgKSBWQUxVRVMgKCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SGlzdG9yeVR5cGVJRH0sCiAgICAgICAgXSwKICAgICk7Cn0KCj1oZWFkMiBIaXN0b3J5RGVsZXRlKCkKCkRlbGV0ZXMgY29tcGxldGUgaGlzdG9yeSBmb3IgYSBnaXZlbiBjb25maWcgaXRlbQoKICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5RGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBjYWNoZWQgcmVzdWx0cwogICAgZGVsZXRlICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9ufS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwogICAgZm9yIG15ICRWZXJzaW9uTnIgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30gfSApIHsKICAgICAgICBteSAoJENhY2hlQ29uZmlnSXRlbSkgPSBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57JFZlcnNpb25Ocn0gfTsKICAgICAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30tPnskVmVyc2lvbk5yfSBpZiAkQ2FjaGVDb25maWdJdGVtIGVxICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgfQoKICAgICMgZGVsZXRlIGhpc3RvcnkgZm9yIGdpdmVuIGNvbmZpZyBpdGVtCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBjb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKfQoKPWhlYWQyIEhpc3RvcnlFbnRyeURlbGV0ZSgpCgpEZWxldGVzIGEgc2luZ2xlIGhpc3RvcnkgZW50cnkuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlFbnRyeURlbGV0ZSgKICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlFbnRyeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSGlzdG9yeUVudHJ5SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgc2luZ2xlIGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0hpc3RvcnlFbnRyeUlEfSBdLAogICAgKTsKfQoKPWhlYWQyIEhpc3RvcnlUeXBlTG9va3VwKCkKClRoaXMgbWV0aG9kIGRvZXMgYSBsb29rdXAgZm9yIGEgaGlzdG9yeSB0eXBlLiBJZiBhIGhpc3RvcnkgdHlwZSBpZCBpcyBnaXZlbiwKaXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgaGlzdG9yeSB0eXBlLiBJZiBhIGhpc3RvcnkgdHlwZSBpcyBnaXZlbiwgdGhlIGFwcHJvcHJpYXRlCmlkIGlzIHJldHVybmVkLgoKICAgIG15ICROYW1lID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlUeXBlTG9va3VwKAogICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMTIzNCwKICAgICk7CgogICAgbXkgJElkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlUeXBlTG9va3VwKAogICAgICAgIEhpc3RvcnlUeXBlID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeVR5cGVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAoJEtleSkgPSBncmVwIHsgJFBhcmFteyRffSB9IHF3KEhpc3RvcnlUeXBlSUQgSGlzdG9yeVR5cGUpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEtleSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGlzdG9yeVR5cGVJRCBvciBIaXN0b3J5VHlwZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgcmVzdWx0IGlzIGNhY2hlZCByZXR1cm4gdGhhdCByZXN1bHQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57SGlzdG9yeVR5cGVMb29rdXB9LT57ICRQYXJhbXskS2V5fSB9OwoKICAgICMgc2V0IHRoZSBhcHByb3ByaWF0ZSBTUUwgc3RhdGVtZW50CiAgICBteSAkU1FMID0gJ1NFTEVDVCBuYW1lIEZST00gY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgV0hFUkUgaWQgPSA/JzsKCiAgICBpZiAoICRLZXkgZXEgJ0hpc3RvcnlUeXBlJyApIHsKICAgICAgICAkU1FMID0gJ1NFTEVDVCBpZCBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeV90eXBlIFdIRVJFIG5hbWUgPSA/JzsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXF1ZXN0ZWQgdmFsdWUKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17JEtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkVmFsdWU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRWYWx1ZSA9ICRSb3dbMF07CiAgICB9CgogICAgIyBzYXZlIHZhbHVlIGluIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfSA9ICRWYWx1ZTsKCiAgICByZXR1cm4gJFZhbHVlOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Link.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okxpbms7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpMaW5rIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBtb2R1bGUgc3VwcG9ydHMgdGhlIG1haW50ZW5hbmNlIG9mIHRoZSBjb250ZW50IG9mIHRoZSB0YWJsZSBCPGNvbmZpZ2l0ZW1fbGluaz4uIFRoaXMgdGFibGUKaXMgYSBzaGFkb3cgb2YgdGhlIGluZm9ybWF0aW9uIHRoYXQgaXMgY29udGFpbmVkIGluIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcyB0aGF0IGNvbm5lY3Qgb2JqZWN0cwpvZiB0eXBlIEM8SVRTTUNvbmZpZ0l0ZW0+IGFuZCBDPElUU01Db25maWdJdGVtVmVyc2lvbj4uCgpUaGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgTGlua09iamVjdCBmZWF0dXJlIGlzIGFsc28gcmVwcmVzZW50ZWQgaW4gQjxjb25maWdpdGVtX2xpbms+LiBUaGVzZQpjYXNlIGlzIG1hcmtlZCBieSBCPGNvbmZpZ2l0ZW1fbGluay5keW5hbWljX2ZpZWxkX2lkPiBoYXZpbmcgdGhlIHZhbHVlIEI8TlVMTD4uCgpUaGVyZSBpcyBzdXBwb3J0IGZvciBpbW1lZGlhdGUgdXBkYXRlIG9mIHRoZSB0YWJsZSBhbmQgZm9yIGEgY29tcGxldGUgcmVidWlsZCBvZiB0aGUgdGFibGUuCgpQbGFubmVkIGlzIGFsc28gc3VwcG9ydCBmb3IgZHVtcGluZyB0aGUgY29tcGxldGUgZ3JhcGggc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBmb3IgcHJlc2VudGF0aW9uLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBBZGRDb25maWdJdGVtTGluaygpCgpUaGlzIG1ldGhvZCBpcyBzcGVjaWZpY2FsbHkgZm9yIGFkZGluZyBhIGxpbmsgYmV0d2VlbiB0d28gY29uZmlnIGl0ZW1zLiBJdCBpcyBuZWVkZWQKZm9yIHN1cHBvcnRpbmcgdGhlIExpbmtPYmplY3QgZnVuY3Rpb25hbGl0eS4KClRoZSBsaW5raW5nIG9mIHNwZWNpZmljIHZlcnNpb25zIGlzIG5vdCBzdXBwb3J0ZWQuCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+QWRkQ29uZmlnSXRlbUxpbmsoCiAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgU291cmNlQ29uZmlnSUQgPT4gMTI3LAogICAgICAgIFRhcmdldENvbmZpZ0lEID0+IDEyOCwKICAgICk7Cgo9Y3V0CgpzdWIgQWRkQ29uZmlnSXRlbUxpbmsgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBTb3VyY2VDb25maWdJdGVtSUQgVGFyZ2V0Q29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb29rdXAgdHlwZSBpZAogICAgbXkgJFR5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPlR5cGVMb29rdXAoCiAgICAgICAgTmFtZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApJTlNFUlQgSU5UTyBjb25maWdpdGVtX2xpbmsgKAogICAgbGlua190eXBlX2lkLCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsIGR5bmFtaWNfZmllbGRfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICApCiAgVkFMVUVTICg/LCA/LCA/LCBOVUxMLCBjdXJyZW50X3RpbWVzdGFtcCwgMSApCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCggJFR5cGVJRCwgJFBhcmFte1NvdXJjZUNvbmZpZ0l0ZW1JRH0sICRQYXJhbXtUYXJnZXRDb25maWdJdGVtSUR9ICkgXSwKICAgICk7CgogICAgJFNlbGYtPl9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17U291cmNlQ29uZmlnSXRlbUlEfSwKICAgICAgICBMaW5rZWQgICAgICAgPT4gWyAkUGFyYW17VGFyZ2V0Q29uZmlnSXRlbUlEfSBdLAogICAgICAgIFVubGlua2VkICAgICA9PiBbXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBEZWxldGVDb25maWdJdGVtTGluaygpCgpUaGlzIG1ldGhvZCBpcyBzcGVjaWZpY2FsbHkgZm9yIGRlbGV0aW5nIGEgbGluayBiZXR3ZWVuIHR3byBjb25maWcgaXRlbXMuIEl0IGlzIG5lZWRlZApmb3Igc3VwcG9ydGluZyB0aGUgTGlua09iamVjdCBmdW5jdGlvbmFsaXR5LgoKVGhlIHVubGlua2luZyBvZiBzcGVjaWZpYyB2ZXJzaW9ucyBpcyBub3Qgc3VwcG9ydGVkLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlbGV0ZUNvbmZpZ0l0ZW1MaW5rKAogICAgICAgIFR5cGUgICAgICAgICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFNvdXJjZUNvbmZpZ0lEID0+IDEyNywKICAgICAgICBUYXJnZXRDb25maWdJRCA9PiAxMjgsCiAgICApOwoKPWN1dAoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1MaW5rIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgU291cmNlQ29uZmlnSXRlbUlEIFRhcmdldENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9va3VwIHR5cGUgaWQKICAgIG15ICRMaW5rVHlwZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+VHlwZUxvb2t1cCgKICAgICAgICBOYW1lICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluawogIFdIRVJFIGxpbmtfdHlwZV9pZCA9ID8KICAgIEFORCBzb3VyY2VfY29uZmlnaXRlbV9pZCA9ID8KICAgIEFORCB0YXJnZXRfY29uZmlnaXRlbV9pZCA9ID8KICAgIEFORCBkeW5hbWljX2ZpZWxkX2lkIElTIE5VTEwKRU5EX1NRTAogICAgICAgIEJpbmQgPT4gWyBcKCAkTGlua1R5cGVJRCwgJFBhcmFte1NvdXJjZUNvbmZpZ0l0ZW1JRH0sICRQYXJhbXtUYXJnZXRDb25maWdJdGVtSUR9ICkgXSwKICAgICk7CgogICAgJFNlbGYtPl9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17U291cmNlQ29uZmlnSXRlbUlEfSwKICAgICAgICBMaW5rZWQgICAgICAgPT4gW10sCiAgICAgICAgVW5saW5rZWQgICAgID0+IFsgJFBhcmFte1RhcmdldENvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rZWRDb25maWdJdGVtcygpCgpnZXQgdGhlIGNvbmZpZyBpdGVtcyB0aGF0IGFyZSBkaXJlY3RseSBsaW5rZWQgdG8gYSBzcGVjaWZpYyBjb25maWcgaXRlbS4gTm8gZGV0YWlscwpvZiB0aGUgbGlua2VkIGNvbmZpZyBpdGVtcyBhcmUgcmV0dXJuZWQuCgogICAgIyBvbmx5IGxpbmtlZCBmcm9tIGEgY29uZmlnIGl0ZW0KICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFR5cGVzICAgICAgICA9PiBbICdQYXJlbnRDaGlsZCcsICdJc0luc3BpcmVkQnknIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsICMgb25lIG9mIFNvdXJjZSwgVGFyZ2V0LCBCb3RoCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKb3IKCiAgICAjIG9ubHkgbGlua2VkIGZyb20gYSBjb25maWcgaXRlbSB2ZXJzaW9uCiAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgVmVyc2lvbklEICA9PiA0ODksCiAgICAgICAgVHlwZXMgICAgICA9PiBbICdQYXJlbnRDaGlsZCcsICdJc0luc3BpcmVkQnknIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gID0+ICdTb3VyY2UnLCAjIG9uZSBvZiBTb3VyY2UsIFRhcmdldCwgQm90aAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpQYXNzaW5nIGJvdGggY29uZmlnIGl0ZW0gSUQgYW5kIGNvbmZpZyBpdGVtIHZlcnNpb24gSUQgaXMgZmluZSB0b28uCgogICAgIyBsaW5rIHZpYSBpdGVtIG9mIHZlcnNpb24KICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFZlcnNpb25JRCAgICA9PiA0ODksCiAgICAgICAgVHlwZXMgICAgICAgID0+IFsgJ1BhcmVudENoaWxkJywgJ0lzSW5zcGlyZWRCeScgXSwgIyBvcHRpb25hbAogICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywgIyBvbmUgb2YgU291cmNlLCBUYXJnZXQsIEJvdGgKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpUaGUgc2VtYW50aWNzIG9mIHRoZSBwYXJhbWV0ZXIgQzxEaXJlY3Rpb24+IGNhbiBiZSBjb25mdXNpbmcuIFRoZSBhYm92ZSBjYWxsIGNhbiBiZSB2ZXJiYWxpemVkIGFzOgoiR2l2ZSBtZSBhbGwgY29uZmlnIGl0ZW1zIHRoYXQgaGF2ZSBhICdQYXJlbnRDaGlsZCcgb3IgJ0lzSW5zcGlyZWRCeScgcmVsYXRpb25zaGlwIGluIHdoaWNoIHRoZQpjb25maWcgaXRlbSAzMjEgaXMgdGhlIFNvdXJjZSBvYmplY3QuIgoKUmV0dXJucyBhbiBlbXB0eSBhcnJheSByZWYgd2hlbiBubyByZWxhdGlvbnNoaXBzIHdlcmUgZm91bmQ6CgogICAgJExpbmtlZENvbmZpZ0l0ZW1zID0gW107CgpSZXR1cm5zIGEgbGlzdCB3aGVuIHJlbGF0aW9uc2hpcHMgaGF2ZSBiZWVuIGZvdW5kLiBFaXRoZXIgQzxDb25maWdJdGVtSUQ+IG9yIEM8VmVyc2lvbklEPiBpcyBzZXQuCkM8RHluYW1pY0ZpZWxkSUQ+IGlzIG5vdCBkZWZpbmVkIHdoZW4gTGlua09iamVjdCBpcyB1c2VkLgoKICAgICRMaW5rZWRDb25maWdJdGVtcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDE3LAogICAgICAgICAgICBWZXJzaW9uSUQgICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgIExpbmtUeXBlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExpbmtUeXBlICAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+IDEyNywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gdW5kZWYsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgID0+IDIyLAogICAgICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgTGlua1R5cGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgTGlua1R5cGUgICAgICAgPT4gJ0lzSW5zcGlyZWRCeScsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+IHVuZGVmLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICBdOwoKPWN1dAoKc3ViIExpbmtlZENvbmZpZ0l0ZW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KERpcmVjdGlvbiBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggISggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfHwgJFBhcmFte1ZlcnNpb25JRH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgZWl0aGVyIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgUGFzc2luZyBib3RoIENvbmZpZ0l0ZW1JRCBhbmQgVmVyc2lvbklEIGlzIGZpbmUKCiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBnZXQgY29tcGxldGUgbGlzdCBmb3IgYm90aCBkaXJlY3Rpb25zIChvciBvbmx5IG9uZSBpZiByZXN0cmljdGVkKQogICAgbXkgKCAkU1FMLCBAQmluZHMgKTsKICAgIHsKICAgICAgICAjIHRoZSBsaW5rIHR5cGUgaXMgb3B0aW9uYWwKICAgICAgICBteSBAVHlwZUNvbmRpdGlvbnM7ICAgICMgMCBvciAxIGNvbmRpdGlvbnMKICAgICAgICBteSBAVHlwZUJpbmRzOyAgICAgICAgICMgMCwgMSwgb3IgbWFueSBiaW5kcwogICAgICAgIGlmICggJFBhcmFte1R5cGVzfSAmJiByZWYgJFBhcmFte1R5cGVzfSBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgIyBlbXB0eSBsaXN0IG9mIHR5cGVzIGdpdmVzIG5vIHJlc3VsdAogICAgICAgICAgICByZXR1cm4gW10gdW5sZXNzICRQYXJhbXtUeXBlc30tPkAqOwoKICAgICAgICAgICAgbXkgJFBsYWNlaG9sZGVycyA9IGpvaW4gJywgJywgbWFwIHsnPyd9ICRQYXJhbXtUeXBlc30tPkAqOwogICAgICAgICAgICBwdXNoIEBUeXBlQ29uZGl0aW9ucywgImxpbmtfdHlwZV9pZCBJTiAoJFBsYWNlaG9sZGVycykiOwoKICAgICAgICAgICAgcHVzaCBAVHlwZUJpbmRzLCBtYXAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkTGlua09iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRfLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUGFyYW17VHlwZXN9LT5AKjsKICAgICAgICB9CgogICAgICAgICMgdGhlc2UgIGFycmF5cyBoYXZlIGVpdGhlciAxIG9yIDIgZWxlbWVudHMKICAgICAgICBteSAoIEBTb3VyY2VDb25kaXRpb25zLCBAVGFyZ2V0Q29uZGl0aW9ucywgQElEQmluZHMgKTsKICAgICAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25kaXRpb25zLCAnc291cmNlX2NvbmZpZ2l0ZW1faWQgPSA/JzsKICAgICAgICAgICAgcHVzaCBAVGFyZ2V0Q29uZGl0aW9ucywgJ3RhcmdldF9jb25maWdpdGVtX2lkID0gPyc7CiAgICAgICAgICAgIHB1c2ggQElEQmluZHMsICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25kaXRpb25zLCAnc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25kaXRpb25zLCAndGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nOwogICAgICAgICAgICBwdXNoIEBJREJpbmRzLCAgICAgICAgICAkUGFyYW17VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgICMgbGluayBkaXJlY3Rpb25zIGFyZSByZWFkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB3aW5kIGRpcmVjdGlvbnMgLSBub3J0aCB3aW5kIGNvbWVzIGZyb20gdGhlIG5vcnRoLAogICAgICAgICMgYSAiU291cmNlIiBkaXJlY3Rpb24gcmV0dXJucyBhbGwgbGlua2VkIENJcyB3aGVyZSB3ZSBjb21lIGZyb20gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gYXMgc291cmNlCiAgICAgICAgIyAuLi5vciBzbzsgdGhpcyBpcyBjb25zaXN0ZW50IHdpdGggS2VybmVsL1N5c3RlbS9MaW5rT2JqZWN0LnBtIG1vc3QgaW1wb3J0YW50bHkKICAgICAgICBpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdTb3VyY2UnICkgewogICAgICAgICAgICAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCBESVNUSU5DVCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnU291cmNlJywgZHluYW1pY19maWVsZF9pZAogIEZST00gY29uZmlnaXRlbV9saW5rCiAgV0hFUkUgQHtbIGpvaW4gJyBBTkQgJywgKCBtYXAgeyAiKCRfKSIgfSBqb2luICcgT1IgJywgQFNvdXJjZUNvbmRpdGlvbnMgKSwgQFR5cGVDb25kaXRpb25zIF19CkVORF9TUUwKICAgICAgICAgICAgQEJpbmRzID0gKCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCBESVNUSU5DVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnVGFyZ2V0JywgZHluYW1pY19maWVsZF9pZAogIEZST00gY29uZmlnaXRlbV9saW5rCiAgV0hFUkUgQHtbIGpvaW4gJyBBTkQgJywgKCBtYXAgeyAiKCRfKSIgfSBqb2luICcgT1IgJywgQFRhcmdldENvbmRpdGlvbnMgKSwgQFR5cGVDb25kaXRpb25zIF19CkVORF9TUUwKICAgICAgICAgICAgQEJpbmRzID0gKCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBCb3RoIGRpcmVjdGlvbnMKICAgICAgICAgICAgIyBUT0RPOiB0ZXN0IHdpdGggUG9zdGdyZVNRTCBhbmQgT3JhY2xlCiAgICAgICAgICAgICRTUUwgPSA8PCJFTkRfU1FMIjsKKAogIFNFTEVDVCBESVNUSU5DVCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnU291cmNlJywgZHluYW1pY19maWVsZF9pZAogICAgRlJPTSBjb25maWdpdGVtX2xpbmsKICAgIFdIRVJFIEB7WyBqb2luICcgQU5EICcsICggbWFwIHsgIigkXykiIH0gam9pbiAnIE9SICcsIEBTb3VyY2VDb25kaXRpb25zKSwgQFR5cGVDb25kaXRpb25zIF19CikKVU5JT04KKAogIFNFTEVDVCBESVNUSU5DVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnVGFyZ2V0JywgZHluYW1pY19maWVsZF9pZAogICAgRlJPTSBjb25maWdpdGVtX2xpbmsKICAgIFdIRVJFIEB7WyBqb2luICcgQU5EICcsICggbWFwIHsgIigkXykiIH0gam9pbiAnIE9SICcsIEBUYXJnZXRDb25kaXRpb25zKSwgQFR5cGVDb25kaXRpb25zIF19CikKRU5EX1NRTAogICAgICAgICAgICBAQmluZHMgPSAoIEBJREJpbmRzLCBAVHlwZUJpbmRzLCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWyBcKEBCaW5kcykgXSwKICAgICk7CgogICAgbXkgQFJlc3VsdCA9IG1hcAogICAgICAgIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRfLT5bMF0sCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJF8tPlsxXSwKICAgICAgICAgICAgICAgIExpbmtUeXBlSUQgICA9PiAkXy0+WzJdLAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCA9PiAkXy0+WzJdLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAkXy0+WzNdLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSUQgPT4gJF8tPls0XSwKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkUm93cy0+QCo7CgogICAgcmV0dXJuIFxAUmVzdWx0Owp9Cgo9aGVhZDIgU3luY0xpbmtUYWJsZSgpCgpUaGlzIG1ldGhvZCBlbnRhaWxzIHRoZSBsb2dpYyBmb3Iga2VlcGluZyB0aGUgdGFibGUgQjxjb25maWdpdGVtX2xpbms+IGluIHN5bmMKd2l0aCBkeW5hbWljIGZpZWxkIHVwZGF0ZXMuCgpEZWZpbml0aW9uVXBkYXRlcyBwYXNzIE9sZER5bmFtaWNGaWVsZENvbmZpZyBhcyBhZGRpdGlvbmFsIHBhcmFtZXRlciBiZWNhdXNlCmxpbmtpbmcgYW5kIHVubGlua2luZyBtaWdodCBkaWZmZXIuCgpJbiB0aGUgYmVsb3cgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkeW5hbWljIGZpZWxkIGlzIHJlZmVycmVkIHRvIGFzICJSZWZlcmVuY2luZyIsCnRoZSBvYmplY3RzIHdoaWNoIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkIGFyZSAiUmVmZXJlbmNlZCIuIFRoaXMgaXMKaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIExpbmtUeXBlRGlyZWN0aW9uIHdoaWNoIGNhbiBlaXRoZXIgYmUKUmVmZXJlbmNpbmdJc1NvdXJjZSBvciBSZWZlcmVuY2luZ0lzVGFyZ2V0LgoKPWN1dAoKc3ViIFN5bmNMaW5rVGFibGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRNaXNzaW5nICggZ3JlcCB7ICEkUGFyYW17JF99IH0gcXcoRHluYW1pY0ZpZWxkQ29uZmlnIENvbmZpZ0l0ZW1JRCBDb25maWdJdGVtTGFzdFZlcnNpb25JRCBDb25maWdJdGVtVmVyc2lvbklEKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE1pc3NpbmchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAgID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CiAgICBteSAkT2xkRmllbGRDb25maWcgICAgICAgPSAkUGFyYW17T2xkRHluYW1pY0ZpZWxkQ29uZmlnfTsKICAgIG15ICREeW5hbWljRmllbGRJRCAgICAgICA9ICREeW5hbWljRmllbGRDb25maWctPntJRH07CiAgICBteSAkREZEZXRhaWxzICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfTsKICAgIG15ICRPbGRERkRldGFpbHMgICAgICAgICA9ICRPbGRGaWVsZENvbmZpZyA/ICRPbGRGaWVsZENvbmZpZy0+e0NvbmZpZ30gOiAkREZEZXRhaWxzOwogICAgbXkgJFJlZmVyZW5jZWRPYmplY3RUeXBlID0gJERGRGV0YWlscy0+e1JlZmVyZW5jZWRPYmplY3RUeXBlfTsKCiAgICBpZiAoICRSZWZlcmVuY2VkT2JqZWN0VHlwZSBuZSAnSVRTTUNvbmZpZ0l0ZW0nICYmICRSZWZlcmVuY2VkT2JqZWN0VHlwZSBuZSAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBwYXJhbWV0ZXIgUmVmZXJlbmNlZE9iamVjdFR5cGUgbXVzdCBiZSBlaXRoZXIgSVRTTUNvbmZpZ0l0ZW0gb3IgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHsKICAgICAgICBteSBATGlua0NvbmZpZ3M7CgogICAgICAgIHB1c2ggQExpbmtDb25maWdzLCAkREZEZXRhaWxzICAgIGlmICRERkRldGFpbHMtPntMaW5rVHlwZX07CiAgICAgICAgcHVzaCBATGlua0NvbmZpZ3MsICRPbGRERkRldGFpbHMgaWYgJE9sZEZpZWxkQ29uZmlnICYmICRPbGRERkRldGFpbHMtPntMaW5rVHlwZX07CgogICAgICAgICMgTGlua2luZyBpcyBub3QgbmVjZXNzYXJpbHkgc2V0IHVwLiBUaGF0IGlzIGZpbmUuCiAgICAgICAgcmV0dXJuIDEgdW5sZXNzIEBMaW5rQ29uZmlnczsKCiAgICAgICAgIyBXaGVuIGxpbmtpbmcgaXMgc2V0IHVwIHdlIG5lZWQgdGhlIGNvbXBsZXRlIGluZm9ybWF0aW9uIGZvciBob3cKICAgICAgICAjIHRoZSBsaW5raW5nIHNob3VsZCBiZSBkb25lLgogICAgICAgIGZvciBteSAkQ29uZmlnIChATGlua0NvbmZpZ3MpIHsKICAgICAgICAgICAgTkVFREVEOgogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoTGlua0RpcmVjdGlvbiBMaW5rUmVmZXJlbmNpbmdUeXBlKSkgewogICAgICAgICAgICAgICAgbmV4dCBORUVERUQgaWYgJENvbmZpZy0+eyROZWVkZWR9OwoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gcXF7SW52YWxpZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24uIFRoZSBzZXR0aW5nICROZWVkZWQgaXMgbWlzc2luZyx9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJERCT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFdlIGNhbiBlaXRoZXIgYnVpbGQgInN0YXRpYyIgbGlua3MgZnJvbSBzcGVjaWZpYyBjb25maWcgaXRlbSB2ZXJzaW9ucwogICAgIyBvciAiZHluYW1pYyIgbGlua3MgZnJvbSBhIENJIGRpcmVjdGx5LgogICAgIyBEZXBlbmRpbmcgb24gdGhhdCB3ZSB1c2UgYSBkaWZmZXJlbnQgb2JqZWN0IGlkCiAgICBteSAkT2JqZWN0SUQgPSAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnID8gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gOiAkUGFyYW17Q29uZmlnSXRlbVZlcnNpb25JRH07CgogICAgbXkgJExpbmtUeXBlSUQ7CiAgICBteSAkT2JqZWN0Q29sdW1uOwogICAgbXkgJFZhbHVlQ29sdW1uOwogICAgbXkgQE9sZFZhbHVlczsKCiAgICBteSAkR2V0Q29sdW1uRGF0YSA9IHN1YiB7CiAgICAgICAgbXkgJENvbmZpZyA9ICRfWzBdOwoKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJENvbmZpZy0+e0xpbmtUeXBlfTsKICAgICAgICAkTGlua1R5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJExpbmtUeXBlTmFtZSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJExpbmtUeXBlSUQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbGluayB0eXBlICckTGlua1R5cGVOYW1lJyBpcyBub3QgdmFsaWQnLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIFRoZSBjb2x1bW4gZm9yIHRoZSAocmVmZXJlbmNpbmcpIG9iamVjdCBpZCBkZXBlbmRzIG9uIHRoZSBkaXJlY3Rpb24gYW5kCiAgICAgICAgIyBvbiB3aGV0aGVyIHdlIGxpbmsgZnJvbSBhIHNwZWNpZmljIHZlcnNpb24gKHN0YXRpYykgb3IgdGhlIENJIChkeW5hbWljKQogICAgICAgICMgUG9zc2libGUgY29sdW1ucyBhcmU6CiAgICAgICAgIyAgIHRhcmdldF9jb25maWdpdGVtX2lkCiAgICAgICAgIyAgIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQsCiAgICAgICAgIyAgIHNvdXJjZV9jb25maWdpdGVtX2lkLAogICAgICAgICMgICBzb3VyY2VfY29uZmlnaXRlbV92ZXJzaW9uX2lkCiAgICAgICAgJE9iamVjdENvbHVtbiA9IGpvaW4gJ18nLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rRGlyZWN0aW9ufSBlcSAnUmVmZXJlbmNpbmdJc1NvdXJjZScgPyAnc291cmNlJyAgICAgOiAndGFyZ2V0JyApLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rUmVmZXJlbmNpbmdUeXBlfSBlcSAnRHluYW1pYycgICAgICAgPyAnY29uZmlnaXRlbScgOiAnY29uZmlnaXRlbV92ZXJzaW9uJyApLAogICAgICAgICAgICAnaWQnOwoKICAgICAgICAjIFRoZSBjb2x1bW4gZm9yIHRoZSAocmVmZXJlbmNlZCkgdmFsdWUgYWxzbyBkZXBlbmRzIG9uIHRoZSBsaW5rIGRpcmVjdGlvbgogICAgICAgICMgYW5kIGhlcmUgb24gdGhlIGZpZWxkIHR5cGU7IGlmIHRoZSBsYXR0ZXIgY2hhbmdlcyBiZXR3ZWVuIGRlZmluaXRpb25zIFJlYnVpbGRMaW5rVGFibGUgaGFzIHRvIGJlIHVzZWQKICAgICAgICAjIFRoZSBwb3NzaWJsZSBjb2x1bW5zIGFyZSB0aGUgc2FtZSBhcyBhYm92ZQogICAgICAgICRWYWx1ZUNvbHVtbiA9IGpvaW4gJ18nLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rRGlyZWN0aW9ufSBlcSAnUmVmZXJlbmNpbmdJc1NvdXJjZScgPyAndGFyZ2V0JyAgICAgOiAnc291cmNlJyApLAogICAgICAgICAgICAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAgPyAnY29uZmlnaXRlbScgOiAnY29uZmlnaXRlbV92ZXJzaW9uJyApLAogICAgICAgICAgICAnaWQnOwogICAgfTsKCiAgICAjIGZpcnN0IGRlbGV0ZSBleGlzdGluZyBsaW5rcwogICAgaWYgKCAkT2xkREZEZXRhaWxzLT57TGlua1R5cGV9ICkgewogICAgICAgICRHZXRDb2x1bW5EYXRhLT4oJE9sZERGRGV0YWlscyk7CgogICAgICAgICMgaWYgd2UgaGF2ZSBDSSAtIENJIGxpbmtzLCB3ZSBoYXZlIHRvIHRyaWdnZXIgQ3VySW5jaVN0YXRlIFJlY2FsY3VsYXRpb24gZm9yIGRlbGV0ZWQgbGlua3MKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkT2xkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICBAT2xkVmFsdWVzID0gJERCT2JqZWN0LT5TZWxlY3RDb2xBcnJheSgKICAgICAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCAkVmFsdWVDb2x1bW4gRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgZHluYW1pY19maWVsZF9pZCA9ID8gQU5EICRPYmplY3RDb2x1bW4gPSA/IiwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJER5bmFtaWNGaWVsZElELCBcJE9iamVjdElEIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgZHluYW1pY19maWVsZF9pZCA9ID8gQU5EICRPYmplY3RDb2x1bW4gPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRHluYW1pY0ZpZWxkSUQsIFwkT2JqZWN0SUQgXSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgd2UgZGlkIGEgZGVmaW5pdGlvbiB1cGRhdGUsIHdlIGhhdmUgdG8gImxvYWQiIHRoZSBuZXcgREYgQ29uZmlnCiAgICBpZiAoJE9sZEZpZWxkQ29uZmlnKSB7CiAgICAgICAgJEdldENvbHVtbkRhdGEtPigkREZEZXRhaWxzKTsKICAgIH0KCiAgICBteSBATmV3VmFsdWVzID0gJFBhcmFte1ZhbHVlfQogICAgICAgID8gcmVmICRQYXJhbXtWYWx1ZX0gPyAoIGdyZXAgeyRffSAkUGFyYW17VmFsdWV9LT5AKiApIDogKCAkUGFyYW17VmFsdWV9ICkKICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgKCk7CgogICAgIyBmaW5hbGx5IHNldCB0aGUgbmV3IGxpbmtzCiAgICBpZiAoICRERkRldGFpbHMtPntMaW5rVHlwZX0gJiYgQE5ld1ZhbHVlcyApIHsKCiAgICAgICAgJERCT2JqZWN0LT5Eb0FycmF5KAogICAgICAgICAgICBTUUwgPT4gPDwiRU5EX1NRTCIsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fbGluayAoCiAgICBkeW5hbWljX2ZpZWxkX2lkLCBsaW5rX3R5cGVfaWQsICRPYmplY3RDb2x1bW4sICRWYWx1ZUNvbHVtbiwKICAgIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICApCiAgVkFMVUVTICgKICAgID8sID8sID8sID8sCiAgICBjdXJyZW50X3RpbWVzdGFtcCwgMQogICkKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsgJER5bmFtaWNGaWVsZElELCAkTGlua1R5cGVJRCwgJE9iamVjdElELCBcQE5ld1ZhbHVlcyBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBsYXN0bHkgd2UgaGF2ZSB0byByZWNhbGMgY3VycmVudCBpbmNpZGVudCBzdGF0ZXMgZm9yIGZ1bGx5IGR5bmFtaWMgbGlua3MKICAgIGlmICgKICAgICAgICBAT2xkVmFsdWVzCiAgICAgICAgfHwKICAgICAgICAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkKICAgICAgICApCiAgICB7CgogICAgICAgIG15ICVMaW5rZWQ7CiAgICAgICAgbXkgJVVubGlua2VkID0gbWFwIHsgJF8gPT4gMSB9IEBPbGRWYWx1ZXM7CgogICAgICAgICMgaWYgd2UgaGF2ZSBhIG5vcm1hbCBmaWVsZCB1cGRhdGUsIHdlIGRvIG5vdCBuZWVkIHRvIHJlY2FsY3VsYXRlIGxpbmtzIHdoaWNoIGRvIG5vdCBjaGFuZ2UKICAgICAgICBpZiAoICEkT2xkRmllbGRDb25maWcgKSB7CiAgICAgICAgICAgIGZvciBteSAkSUQgKEBOZXdWYWx1ZXMpIHsKICAgICAgICAgICAgICAgIGlmICggZXhpc3RzICRVbmxpbmtlZHskSUR9ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkVW5saW5rZWR7JElEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMaW5rZWR7JElEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW4gY2FzZSBvZiBhIGRlZmluaXRpb24gdXBkYXRlICh3ZSBoYXZlIGFuIG9sZCBERiBDb25maWcpIHdlIGp1c3QgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIGFyZSBmdWxseSBkeW5hbWljCiAgICAgICAgIyB3ZSBkbyBub3Qgc2tpcCBzdGF5aW5nIGxpbmtzLCBiZWNhdXNlIGRpcmVjdGlvbiBhbmQgdHlwZSBtaWdodCBoYXZlIGNoYW5nZWQKICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICAlTGlua2VkID0gbWFwIHsgJF8gPT4gMSB9IEBOZXdWYWx1ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X1RyaWdnZXJDdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgIExpbmtlZCAgICAgICA9PiBbIGtleXMgJUxpbmtlZCBdLAogICAgICAgICAgICBVbmxpbmtlZCAgICAgPT4gWyBrZXlzICVVbmxpbmtlZCBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBhc3N1bWUgc3VjY2VzcwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBSZWJ1aWxkTGlua1RhYmxlKCkKCnB1cmdlIGFuZCByZXBvcHVsYXRlIHRoZSB0YWJsZSBCPGNvbmZpZ2l0ZW1fbGluaz4gYmFzZWQgb24gdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcwphbmQgb24gdGhlIExpbmtPYmplY3QgZGF0YS4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJlYnVpbGRMaW5rVGFibGU7CgpUaGUgcmVzdWx0IGlzIGEgaGFzaHJlZiBsaWtlOgoKICAgIG15ICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgPT4gMSwgIyBvciAwIGluIGNhc2Ugb2YgZmFpbHVyZQogICAgICAgIE1lc3NhZ2UgID0+ICdzb21lIG1lc3NhZ2UnLAogICAgICAgIENvbG9yICAgID0+ICdncmVlbicsICAgICMgb3IgcmVkLCBvciB5ZWxsb3cKICAgIH07Cgo9Y3V0CgpzdWIgUmVidWlsZExpbmtUYWJsZSB7CiAgICBteSAoJFNlbGYpID0gQF87CgogICAgIyBubyBwYXJhbWV0ZXJzIGFyZSBzdXBwb3J0ZWQKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHB1cmdlIHRoZSB0YWJsZSwgZ2l2ZSB1cCBpbiBjYXNlIG9mIGVycm9yCiAgICBteSAkU3VjY2Vzc1B1cmdlID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLicpLAogICAgICAgIENvbG9yICAgPT4gJ3JlZCcsCiAgICB9IHVubGVzcyAkU3VjY2Vzc1B1cmdlOwoKICAgICMgR2V0IHRoZSByZWxldmFudCBkeW5hbWljIGZpZWxkcy4gUmVsZXZhbnQgYXJlIG9ubHkKICAgICMgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzIHRoYXQgY29ubmVjdCBhbiBJVFNNQ29uZmlnSXRlbQogICAgIyB0byBhbm90aGVyIElUU01Db25maWdJdGVtIG9yIGFuIElUU01Db25maWdJdGVtVmVyc2lvbi4KICAgICMgQW5vdGhlciBjb25kaXRpb24gaXMgdGhhdCB0aGUgYXR0cmlidXRlICdMaW5rVHlwZScgaXMgY29uZmlndXJlZCBmb3IgdGhhdAogICAgIyBkeW5hbWljIGZpZWxkLgogICAgbXkgQER5bmFtaWNGaWVsZHM7CiAgICB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkQ29tcGxldGVEeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nCiAgICAgICAgKTsKICAgICAgICBARHluYW1pY0ZpZWxkcyA9CiAgICAgICAgICAgIGdyZXAgeyAkXy0+e0NvbmZpZ30tPntMaW5rVHlwZX0gfQogICAgICAgICAgICBncmVwIHsgcmVmICRfLT57Q29uZmlnfSBlcSAnSEFTSCcgfQogICAgICAgICAgICBncmVwIHsgJF8tPntGaWVsZFR5cGV9ID1+IG0vXkNvbmZpZ0l0ZW0vIH0KICAgICAgICAgICAgJENvbXBsZXRlRHluYW1pY0ZpZWxkTGlzdC0+QCo7CiAgICB9CgogICAgIyBub3RoaW5nIHRvIGRvIHdoZW4gdGhlcmUgYXJlIG5vIGR5bmFtaWMgZmllbGRzCiAgICAjIFRPRE86IGNvdmVyIHRoZSBjYXNlIHdoZXJlIG9ubHkgTGlua09iamVjdCBpcyB1c2VkCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCcpLAogICAgICAgIENvbG9yICAgPT4gJ3llbGxvdycsCiAgICB9IHVubGVzcyBARHluYW1pY0ZpZWxkczsKCiAgICAjIE5lZWRlZCBmb3IgZGVjaWRpbmcgd2hpY2ggYXR0cmlidXRlIG9mIGNvbmZpZ2l0ZW1fbGluayBpcyB1c2VkLgogICAgbXkgJUxpbmtzVG9DSSA9CiAgICAgICAgbWFwICB7ICRfLT57SUR9ID0+IDEgfQogICAgICAgIGdyZXAgeyAkXy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKICAgIG15ICVMaW5rc1RvQ0lWZXJzaW9uID0KICAgICAgICBtYXAgIHsgJF8tPntJRH0gPT4gMSB9CiAgICAgICAgZ3JlcCB7ICRfLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbVZlcnNpb24nIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKCiAgICAjIEVhc3kgYWNjZWVkIHRvIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZy4KICAgIG15ICVERkxvb2t1cEJ5SUQgPQogICAgICAgIG1hcCB7ICRfLT57SUR9ID0+ICRfIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKCiAgICAjIEdldCB0aGUgcmVsZXZhbnQgZHluYW1pYyBmaWVsZCB2YWx1ZXMuCiAgICAjIFRoZSBtZXRob2RzIGluIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZSBhcmUgc3BlY2lmaWMgdG8gc3BlY2lmaWMgZmllbGRzLAogICAgIyBzbyB1c2UgZGVkaWNhdGVkIFNRTCBoZXJlLgogICAgbXkgJFJvd3M7CiAgICB7CiAgICAgICAgbXkgJVF1ZXJ5Q29uZGl0aW9uID0gJERCT2JqZWN0LT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICA9PiAnZGZ2LmZpZWxkX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgPT4gWyBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlREZMb29rdXBCeUlEIF0sCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkUm93cyA9ICREQk9iamVjdC0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwiRU5EX1NRTCIsClNFTEVDVCBkZnYuZmllbGRfaWQsIHYuY29uZmlnaXRlbV9pZCwgdi5pZCwgZGZ2LnZhbHVlX2ludCwgdl9tYXgubWF4X3ZlcnNpb25faWQKICBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2CiAgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdgogICAgT04gZGZ2Lm9iamVjdF9pZCA9IHYuaWQKICBJTk5FUiBKT0lOICgKICAgIFNFTEVDVCBjb25maWdpdGVtX2lkLCBNQVgoaWQpIEFTIG1heF92ZXJzaW9uX2lkCiAgICAgIEZST00gY29uZmlnaXRlbV92ZXJzaW9uCiAgICAgIEdST1VQIEJZIGNvbmZpZ2l0ZW1faWQKICApIEFTIHZfbWF4CiAgICBPTiB2X21heC5jb25maWdpdGVtX2lkID0gdi5jb25maWdpdGVtX2lkCiAgV0hFUkUgJFF1ZXJ5Q29uZGl0aW9ue1NRTH0KICBPUkRFUiBieSBkZnYuaWQKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+ICRRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlcyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGEgYmF0Y2ggaW5zZXJ0CgogICAgIyBmb3IgdGhlIGxpbmsgdHlwZXMgd2UgbmVlZCB0byBkbyBzb21lIHdvcmsKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICgKICAgICAgICBATGlua1R5cGVJRHMsCiAgICAgICAgQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsCiAgICAgICAgQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLAogICAgICAgIEBUYXJnZXRDb25maWdJdGVtSURzLAogICAgICAgIEBUYXJnZXRDb25maWdJdGVtVmVyc2lvbklEcywKICAgICAgICBARmllbGRJRHMsCiAgICApOwogICAgUk9XOgogICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgbXkgKCAkRmllbGRJRCwgJENvbmZpZ0l0ZW1JRCwgJFZlcnNpb25JRCwgJFZhbHVlLCAkTWF4VmVyc2lvbklEICkgPSAkUm93LT5AKjsKCiAgICAgICAgbmV4dCBST1cgdW5sZXNzICRERkxvb2t1cEJ5SUR7JEZpZWxkSUR9OwoKICAgICAgICBteSAkREZEZXRhaWxzID0gJERGTG9va3VwQnlJRHskRmllbGRJRH0tPntDb25maWd9OwoKICAgICAgICBuZXh0IFJPVyB1bmxlc3MgJERGRGV0YWlsczsKCiAgICAgICAgTkVFREVEOgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhMaW5rVHlwZSBMaW5rRGlyZWN0aW9uKSkgewogICAgICAgICAgICBuZXh0IE5FRURFRCBpZiAkREZEZXRhaWxzLT57JE5lZWRlZH07CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBxcXtJbnZhbGlkIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbi4gVGhlIHNldHRpbmcgJE5lZWRlZCBpcyBtaXNzaW5nIGZvciBmaWVsZCAkREZMb29rdXBCeUlEeyRGaWVsZElEfS0+e05hbWV9LH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgIG15ICRMaW5rVHlwZU5hbWUgPSAkREZEZXRhaWxzLT57TGlua1R5cGV9OwogICAgICAgIG15ICRMaW5rVHlwZUlEICAgPSAkTGlua09iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSAgID0+ICRMaW5rVHlwZU5hbWUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRMaW5rVHlwZUlEICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGxpbmsgdHlwZSAnJExpbmtUeXBlTmFtZScgaXMgbm90IHZhbGlkJy4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIHNvbWV0aW1lcyBvbmx5IHRoZSBzZXR0aW5nIG9mIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIGlzIHJlbGV2YW50CiAgICAgICAgIyBUaGUgZGVmYXVsdCBpcyBEeW5hbWljLgogICAgICAgIG15ICRMaW5rSXNEeW5hbWljID0gMDsKICAgICAgICAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gLy89ICdEeW5hbWljJzsKICAgICAgICBpZiAoICRERkRldGFpbHMtPntMaW5rUmVmZXJlbmNpbmdUeXBlfSBlcSAnJyB8fCAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgJFZlcnNpb25JRCA9PSAkTWF4VmVyc2lvbklEOwoKICAgICAgICAgICAgJExpbmtJc0R5bmFtaWMgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzb21lIHZhbHVlcyBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGRpcmVjdGlvbgogICAgICAgIHB1c2ggQExpbmtUeXBlSURzLCAkTGlua1R5cGVJRDsKICAgICAgICBwdXNoIEBGaWVsZElEcywgICAgJEZpZWxkSUQ7CgogICAgICAgIG15ICRMaW5rRGlyZWN0aW9uID0gJERGRGV0YWlscy0+e0xpbmtEaXJlY3Rpb259OwogICAgICAgIGlmICggJExpbmtEaXJlY3Rpb24gZXEgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtSURzLCAgICAgICAgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW1JRCA6IHVuZGVmOwogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtVmVyc2lvbklEcywgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gdW5kZWYgICAgICAgICA6ICRWZXJzaW9uSUQ7CiAgICAgICAgICAgIHB1c2ggQFRhcmdldENvbmZpZ0l0ZW1JRHMsICAgICAgICAkTGlua3NUb0NJeyRGaWVsZElEfSAgICAgICAgPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgICAgIHB1c2ggQFRhcmdldENvbmZpZ0l0ZW1WZXJzaW9uSURzLCAkTGlua3NUb0NJVmVyc2lvbnskRmllbGRJRH0gPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBhcyBhYm92ZSwgYnV0IGJhY2t3YXJkcwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtSURzLCAgICAgICAgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW1JRCA6IHVuZGVmOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtVmVyc2lvbklEcywgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gdW5kZWYgICAgICAgICA6ICRWZXJzaW9uSUQ7CiAgICAgICAgICAgIHB1c2ggQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsICAgICAgICAkTGlua3NUb0NJeyRGaWVsZElEfSAgICAgICAgPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgICAgIHB1c2ggQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLCAkTGlua3NUb0NJVmVyc2lvbnskRmllbGRJRH0gPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgICMgTXVsdGl2YWx1ZSBJTlNFUlQKICAgIG15ICROdW1SZWZlcmVuY2VSb3dzID0gJERCT2JqZWN0LT5Eb0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKSU5TRVJUIElOVE8gY29uZmlnaXRlbV9saW5rICgKICAgIGxpbmtfdHlwZV9pZCwKICAgIHNvdXJjZV9jb25maWdpdGVtX2lkLAogICAgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwKICAgIHRhcmdldF9jb25maWdpdGVtX2lkLAogICAgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwKICAgIGR5bmFtaWNfZmllbGRfaWQsCiAgICBjcmVhdGVfdGltZSwKICAgIGNyZWF0ZV9ieQogICkKICBWQUxVRVMgKD8sID8sID8sID8sID8sID8sIENVUlJFTlRfVElNRVNUQU1QKCksIDEpCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXEBMaW5rVHlwZUlEcywKICAgICAgICAgICAgXEBTb3VyY2VDb25maWdJdGVtSURzLAogICAgICAgICAgICBcQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLAogICAgICAgICAgICBcQFRhcmdldENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIFxAVGFyZ2V0Q29uZmlnSXRlbVZlcnNpb25JRHMsCiAgICAgICAgICAgIFxARmllbGRJRHMsCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJyksCiAgICAgICAgQ29sb3IgICA9PiAncmVkJywKICAgIH0gdW5sZXNzIGRlZmluZWQgJE51bVJlZmVyZW5jZVJvd3M7CgogICAgIyBhZGQgcm93cyBmcm9tIExpbmtPYmplY3QsIHRoYXQgaXMgZnJvbSB0aGUgbGlua19yZWxhdGlvbiB0YWJsZQogICAgbXkgJE51bUxpbmtPYmplY3RSb3dzID0gMDsKICAgIHsKICAgICAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgICAgICMgZ2V0IGEgbGlzdCBvZiBwb3NzaWJsZSBsaW5rIHR5cGVzIGJldHdlZW4gY29uZmlnIGl0ZW1zIGZyb20gdGhlIFN5c0NvbmZpZwogICAgICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyBmb3IgdGhlIGRhdGFiYXNlIFNFTEVDVCB3ZSBuZWVkIHRoZSBudW1lcmljIElEcwogICAgICAgIG15IEBQb3NzaWJsZUxpbmtUeXBlSURzID0KICAgICAgICAgICAgbWFwIHsgJExpbmtPYmplY3QtPlR5cGVMb29rdXAoIE5hbWUgPT4gJF8sIFVzZXJJRCA9PiAxICkgfQogICAgICAgICAgICBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiAgICAgICAgbXkgJVR5cGVRdWVyeUNvbmRpdGlvbiA9ICREQk9iamVjdC0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ3R5cGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICA9PiBcQFBvc3NpYmxlTGlua1R5cGVJRHMsCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBsaW1pdCB0byBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcwogICAgICAgICMgQW4gSUQgaXMgY3JlYXRlZCB3aGVuIE9iamVjdExvb2t1cCgpIGlzIGNhbGxlZCB0aGUgZm9yIGZpcnN0IHRpbWUgd2l0aCB0aGF0IG5hbWUKICAgICAgICBteSAkQ0lPYmplY3RJRCA9ICRMaW5rT2JqZWN0LT5PYmplY3RMb29rdXAoCiAgICAgICAgICAgIE5hbWUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICApOwoKICAgICAgICAjIHRlbXBvcmFyeSBsaW5rcyBhcmUgbm90IGNvbnNpZGVyZWQKICAgICAgICBteSAkVGVtcG9yYXJ5U3RhdGVJRCA9ICRMaW5rT2JqZWN0LT5TdGF0ZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAnVGVtcG9yYXJ5JywKICAgICAgICApOwoKICAgICAgICBteSAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCB0eXBlX2lkLCBzb3VyY2Vfa2V5LCB0YXJnZXRfa2V5CiAgRlJPTSBsaW5rX3JlbGF0aW9uCiAgV0hFUkUgc3RhdGVfaWQgPD4gPwogICAgQU5EIHNvdXJjZV9vYmplY3RfaWQgPSA/CiAgICBBTkQgdGFyZ2V0X29iamVjdF9pZCA9ID8KICAgIEFORCAkVHlwZVF1ZXJ5Q29uZGl0aW9ue1NRTH0KRU5EX1NRTAogICAgICAgIG15IEBCaW5kcyA9ICgKICAgICAgICAgICAgXCRUZW1wb3JhcnlTdGF0ZUlELAogICAgICAgICAgICBcJENJT2JqZWN0SUQsCiAgICAgICAgICAgIFwkQ0lPYmplY3RJRCwKICAgICAgICAgICAgJFR5cGVRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LT5AKgogICAgICAgICk7CgogICAgICAgIHJldHVybiB1bmxlc3MgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgPT4gXEBCaW5kcywKICAgICAgICApOwoKICAgICAgICBteSAoIEBMaW5rVHlwZUlEcywgQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsIEBUYXJnZXRDb25maWdJdGVtSURzICk7CiAgICAgICAgd2hpbGUgKCBteSAoICRMaW5rVHlwZUlELCAkU291cmNlQ29uZmlnSXRlbUlELCAkVGFyZ2V0Q29uZmlnSXRlbUlEICkgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgICAgIHB1c2ggQExpbmtUeXBlSURzLCAgICAgICAgICRMaW5rVHlwZUlEOwogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtSURzLCAkU291cmNlQ29uZmlnSXRlbUlEOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtSURzLCAkVGFyZ2V0Q29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgIyBNdWx0aXZhbHVlIElOU0VSVAogICAgICAgICROdW1MaW5rT2JqZWN0Um93cyA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApJTlNFUlQgSU5UTyBjb25maWdpdGVtX2xpbmsgKAogICAgbGlua190eXBlX2lkLCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5CiAgKQogIFZBTFVFUyAoCiAgICA/LCA/LCA/LAogICAgQ1VSUkVOVF9USU1FU1RBTVAoKSwgMQogICkKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFxATGlua1R5cGVJRHMsCiAgICAgICAgICAgICAgICBcQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICBcQFRhcmdldENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTnVtUm93cyA9ICROdW1SZWZlcmVuY2VSb3dzICsgJE51bUxpbmtPYmplY3RSb3dzOwoKICAgICMgd2FybiB3aGVuIHRoZXJlIGFyZSBubyBsaW5rcwogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnKSwKICAgICAgICBDb2xvciAgID0+ICd5ZWxsb3cnLAogICAgfSBpZiAkTnVtUm93cyA9PSAwOwoKICAgICMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGxpbmssIGxvb2tzIGdvb2QKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdEb25lJyksCiAgICAgICAgQ29sb3IgICA9PiAnZ3JlZW4nLAogICAgfTsKfQoKc3ViIF9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0lUU006OkNvcmU6OkluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24nKTsKCiAgICByZXR1cm4gMSBpZiAhJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqOwoKICAgICMgdGhlIGNhY2hlIGZvciBEeW5hbWljRmllbGRzID0+IDAgaXMgYWxyZWFkeSBlbXB0aWVkIGJlZm9yZSBERnMgYXJlIHdyaXR0ZW4KICAgIG15ICRSZWZlcmVuY2luZ0NJID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwoKICAgICMgdG8gbm90IGFsd2F5cyByZWNhbGN1bGF0ZSB0aGUgY29tcGxldGUKICAgIG15IEBDSXNUb1JlY2FsYzsKCiAgICAjIGlmIHRoZSByZWZlcmVuY2luZyBDSSBkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgQ3VySW5jaSBhbmQgSW5jaSBzdGF0ZSwganVzdCByZWNhbGN1bGF0ZSBldmVyeXRoaW5nCiAgICBpZiAoICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57SW5jaVN0YXRlSUR9ICkgewogICAgICAgIEBDSXNUb1JlY2FsYyA9ICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKTsKCiAgICAgICAgcHVzaCBAQ0lzVG9SZWNhbGMsICRQYXJhbXtVbmxpbmtlZH0tPkAqOwogICAgfQoKICAgIGVsc2UgewogICAgICAgIExJTktFRDoKICAgICAgICBmb3IgbXkgJElEICggJFBhcmFte0xpbmtlZH0tPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgaW5pdGlhdGUgdGhlIHdob2xlIHJlY2FsY3VsYXRpb24gaWYgdGhlcmUgaXMgYW55IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgQ3VySW5jaVN0YXRlcwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgQENJc1RvUmVjYWxjID0gKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgIGxhc3QgTElOS0VEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJElEICggJFBhcmFte1VubGlua2VkfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRJRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9yIHVubGlua2VkIENJcyB3ZSBhbHdheXMgaGF2ZSB0byBhZGQgYm90aCBzaWRlcwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgJENJc1RvUmVjYWxjWzBdID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICBwdXNoIEBDSXNUb1JlY2FsYywgJElEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICFAQ0lzVG9SZWNhbGM7CgogICAgcmV0dXJuICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBcQENJc1RvUmVjYWxjLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Mask.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TWFzazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0IG5vbmUpOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TWFzayAtIGZ1bmN0aW9ucyB0byBwcmVwYXJlIGFuZCBhZG1pbmlzdHJhdGUgY29uZmlnIGl0ZW0gbWFza3MKCj1oZWFkMSBERVNDUklQVElPTgoKZnVuY3Rpb25zIHRvIHByZXBhcmUgYW5kIGFkbWluaXN0cmF0ZSBjb25maWcgaXRlbSBtYXNrcwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJE1hc2tPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok1hc2snKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblNldCgpCgpTZXQgdGhlIGRlZmluaXRpb24gZm9yIGEgY29uZmlnIGl0ZW0gbWFzawoKICAgIG15ICRTdWNjZXNzID0gJE1hc2tPYmplY3QtPkRlZmluaXRpb25TZXQoCiAgICAgICAgRGVmaW5pdGlvbiAgICAgICA9PiBcQERlZmluaXRpb24sCiAgICAgICAgRGVmaW5pdGlvblN0cmluZyA9PiAkWUFNTFN0cmluZywgICMgZWl0aGVyIERlZmluaXRpb24gb3IgRGVmaW5pdGlvblN0cmluZyBpcyBuZWVkZWQKICAgICAgICBNYXNrICAgICAgICAgICAgID0+ICRNYXNrLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvblNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdy9Vc2VySUQgTWFzay8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtEZWZpbml0aW9uU3RyaW5nfSApIHsKCiAgICAgICAgIyBWYWxpZGF0ZSBZQU1MIGNvZGUgYnkgY29udmVydGluZyBpdCB0byBQZXJsLgogICAgICAgIG15ICREZWZpbml0aW9uUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICAgICAgRGF0YSA9PiAkUGFyYW17RGVmaW5pdGlvblN0cmluZ30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCByZWYgJERlZmluaXRpb25SZWYgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgYW5kIGFycmF5IGluIHZhbGlkIFlBTUwhJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0RlZmluaXRpb259ICkgewogICAgICAgICRQYXJhbXtEZWZpbml0aW9uU3RyaW5nfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIGlmICggISRQYXJhbXtEZWZpbml0aW9uU3RyaW5nfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvdWxkIG5vdCBnZW5lcmF0ZSBZQU1MIGZyb20gcHJvdmlkZWQgRGVmaW5pdGlvbiEnLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb24gb3IgRGVmaW5pdGlvblN0cmluZyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRTZWxmLT5EZWZpbml0aW9uRGVsZXRlKAogICAgICAgIE1hc2sgICAgICA9PiAkUGFyYW17TWFza30sCiAgICAgICAgS2VlcENhY2hlID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0lOU0VSVCBJTlRPIGZyb250ZW5kX21hc2tfZGVmaW5pdGlvbiAoIG1hc2ssIGRlZmluaXRpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkgKSBWQUxVRVMgKCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyApJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtNYXNrfSwgXCRQYXJhbXtEZWZpbml0aW9uU3RyaW5nfSwgXCRQYXJhbXtVc2VySUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRGVmaW5pdGlvbkdldCgpCgpHZXQgdGhlIGRlZmluaXRpb24gZm9yIGEgY29uZmlnIGl0ZW0gbWFzawoKICAgIG15ICREZWZpbml0aW9uID0gJE1hc2tPYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgTWFzayAgID0+ICRNYXNrLAogICAgICAgIFJldHVybiA9PiAnQVJSQVknLCAjIE9wdGlvbmFsIGVpdGhlciBBUlJBWSAoZGVmYXVsdCkgb3IgU1RSSU5HIHdoaWNoIHJldHVybnMgdGhlIFlBTUwKICAgICk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdy9NYXNrLykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICRQYXJhbXtSZXR1cm59IHx8PSAnQVJSQVknOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAnU0VMRUNUIGRlZmluaXRpb24gRlJPTSBmcm9udGVuZF9tYXNrX2RlZmluaXRpb24gV0hFUkUgbWFzayA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtNYXNrfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICgkRGVmaW5pdGlvblN0cmluZykgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uU3RyaW5nOwoKICAgIHJldHVybiAkRGVmaW5pdGlvblN0cmluZyBpZiAkUGFyYW17UmV0dXJufSBlcSAnU1RSSU5HJzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICREZWZpbml0aW9uU3RyaW5nLAogICAgKTsKfQoKPWhlYWQyIERlZmluaXRpb25EZWxldGUoKQoKRGVsZXRlIHRoZSBkZWZpbml0aW9uIGZvciBhIGNvbmZpZyBpdGVtIG1hc2sKCiAgICBteSAkU3VjY2VzcyA9ICRNYXNrT2JqZWN0LT5EZWZpbml0aW9uRGVsZXRlKAogICAgICAgIE1hc2sgPT4gJE1hc2ssCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25EZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvTWFzay8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZyb250ZW5kX21hc2tfZGVmaW5pdGlvbiBXSEVSRSBtYXNrID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TWFza30gXSwKICAgICk7Cn0KCj1oZWFkMiBDb25maWd1cmVkTWFza3NMaXN0KCkKCkdldCBhbGwgY29uZmlndXJlZCBtYXNrcwoKICAgIG15IEBNYXNrcyA9ICRNYXNrT2JqZWN0LT5Db25maWd1cmVkTWFza3NMaXN0KCk7Cgo9Y3V0CgpzdWIgQ29uZmlndXJlZE1hc2tzTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBtYXNrIEZST00gZnJvbnRlbmRfbWFza19kZWZpbml0aW9uJywKICAgICk7CgogICAgbXkgQE1hc2tzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATWFza3MsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIEBNYXNrczsKfQoKPWhlYWQyIFJlbmRlcklucHV0KCkKClJlbmRlciBpbnB1dCBmaWVsZHMgYWNjb3JkaW5nIHRvIG1hc2sgZGVmaW5pdGlvbgoKICAgICRNYXNrT2JqZWN0LT5SZW5kZXJJbnB1dCgKICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICBNYXNrRGVmaW5pdGlvbiAgICAgICAgPT4gJE1hc2tEZWZpbml0aW9uLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZ3MgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlncywKICAgICAgICBDb25maWcgICAgICAgICAgICAgICAgPT4gJENvbmZpZywKICAgICAgICBTZXBhcmF0ZUR5bmFtaWNGaWVsZHMgPT4gJFNlcGFyYXRlRHluYW1pY0ZpZWxkcywKICAgICk7Cgo9Y3V0CgpzdWIgUmVuZGVySW5wdXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvR2V0UGFyYW0gTGF5b3V0T2JqZWN0IE1hc2tEZWZpbml0aW9uLykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWdzfSApOwoKICAgIG15ICVHZXRQYXJhbSA9ICV7ICRQYXJhbXtHZXRQYXJhbX0gfTsKCiAgICBteSAlRHluYW1pY0ZpZWxkQ29uZmlnc0hhc2ggPSBtYXAgeyAkXy0+e05hbWV9ID0+ICRfIH0gQHsgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ3N9IH07CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17TWFza0RlZmluaXRpb259ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIG1hc2sgZGVmaW5pdGlvbiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZm9yIG15ICRBcmVhRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtNYXNrRGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBteSAlQXJlYSA9ICggUm93cyA9PiBbXSApOwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRBcmVhRGVmaW5pdGlvbi0+e0dyaWR9ICkgKSB7CiAgICAgICAgICAgICVBcmVhID0gJEFyZWFEZWZpbml0aW9uLT57R3JpZH0tPiUqOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEFyZWFEZWZpbml0aW9uLT57TGlzdH0gKSApIHsKICAgICAgICAgICAgJEFyZWF7Um93c30gICAgPSBbIG1hcCB7IFskX10gfSAkQXJlYURlZmluaXRpb24tPntMaXN0fS0+QCogXTsKICAgICAgICAgICAgJEFyZWF7Q29sdW1uc30gPSAxOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRSb3cgKCBAeyAkQXJlYXtSb3dzfSB9ICkgewoKICAgICAgICAgICAgbXkgJFJvd0NsYXNzU3RyaW5nID0gJyc7CiAgICAgICAgICAgIG15ICRSb3dSZWFkT25seSAgICA9ICggZmlyc3QgeyAkXy0+e1JlYWRPbmx5fSB9ICRSb3ctPkAqICkgPyAxIDogMDsKCiAgICAgICAgICAgICMgaGlkZSBjb21wbGV0ZSByb3cgaWYgbm8gZmllbGQgaXMgdmlzaWJsZQogICAgICAgICAgICBpZiAoICRQYXJhbXtWaXNpYmlsaXR5fSAmJiBub25lIHsgJFBhcmFte1Zpc2liaWxpdHl9eyJEeW5hbWljRmllbGRfJF8tPntOYW1lfSJ9IH0gQHskUm93fSApIHsKICAgICAgICAgICAgICAgICRSb3dDbGFzc1N0cmluZyAuPSAnIG9vb0FDTEhpZGRlbic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHNlcGFyYXRlIGR5bmFtaWMgZmllbGRzIGJhc2VkIG9uIGZpcnN0IGZpZWxkCiAgICAgICAgICAgIG15ICRSb3dCbG9ja05hbWUgPSAkUGFyYW17U2VwYXJhdGVEeW5hbWljRmllbGRzfSAmJiAkUGFyYW17U2VwYXJhdGVEeW5hbWljRmllbGRzfS0+eyAkUm93LT5bMF17TmFtZX0gfQogICAgICAgICAgICAgICAgPyAnUm93X0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte1NlcGFyYXRlRHluYW1pY0ZpZWxkc30tPnsgJFJvdy0+WzBde05hbWV9IH0gOiAnUm93X0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAjIENvbHVtbiBzaXplIHN0cmluZyBpcyBzcGxpdCBpbiBwYXJ0cy4gVXNlZCBhcmUgYXMgbWFueSBwYXJ0cyBhcyBjb2x1bW5zIGFyZSBkZWZpbmVkCiAgICAgICAgICAgICMgUGFydHMgYXJlIGNoZWNrZWQgYWdhaW5zdCBhIHJlZ2V4CiAgICAgICAgICAgIG15ICRDb2x1bW5TaXplU3RyaW5nID0gJyc7CiAgICAgICAgICAgIGlmICggJEFyZWF7Q29sdW1uU2l6ZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAQ29sdW1uU2l6ZXMgPSBzcGxpdCggJyAnLCAkQXJlYXtDb2x1bW5TaXplfSApOwogICAgICAgICAgICAgICAgbXkgJENvbHVtbkluZGV4ID0gMDsKICAgICAgICAgICAgICAgIENPTFVNTlNJWkU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtblNpemUgKEBDb2x1bW5TaXplcykgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OU0laRSBpZiAkQ29sdW1uU2l6ZSAhfiAvXigoXGQoXC5cZCk/ZnJccz8pfChcZCtweFxzPyl8YXV0b1xzPykrJC87CiAgICAgICAgICAgICAgICAgICAgbGFzdCBDT0xVTU5TSVpFIGlmICRDb2x1bW5JbmRleCA9PSAoICRBcmVhe0NvbHVtbnN9IHx8IDEgKTsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU2l6ZVN0cmluZyAuPSAkQ29sdW1uU2l6ZSAuICcgJzsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uSW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlICggc2NhbGFyIHNwbGl0KCAnICcsICRDb2x1bW5TaXplU3RyaW5nICkgPCAkQXJlYXtDb2x1bW5zfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU2l6ZVN0cmluZyAuPSAnIDFmcic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENvbHVtblNpemVTdHJpbmcgfHw9ICIxZnIgIiB4ICRBcmVhe0NvbHVtbnN9OwoKICAgICAgICAgICAgJFJvd0NsYXNzU3RyaW5nIC49ICRBcmVhe0NvbHVtbnN9ID4gMSA/ICcgTXVsdGlDb2x1bW4nIDogJyc7CiAgICAgICAgICAgIG15ICRNdWx0aVZhbHVlRmllbGQgPSAnJzsKICAgICAgICAgICAgRUxFTUVOVDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZEl0ZW0gKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZ3NIYXNoeyAkRmllbGRJdGVtLT57TmFtZX0gfS0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFJvd0NsYXNzU3RyaW5nIC49ICcgTXVsdGlWYWx1ZSc7CiAgICAgICAgICAgICAgICAgICAgJE11bHRpVmFsdWVGaWVsZCA9ICRGaWVsZEl0ZW0tPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEVMRU1FTlQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFJvd0Jsb2NrTmFtZSwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlQ29sdW1ucyA9PiAkQ29sdW1uU2l6ZVN0cmluZywKICAgICAgICAgICAgICAgICAgICBSb3dDbGFzc2VzICAgICAgPT4gJFJvd0NsYXNzU3RyaW5nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBUZW1wbGF0ZURhdGFMaXN0OwoKICAgICAgICAgICAgIyBEeW5hbWljRmllbGRIVE1MIGlzIGFzc3VtZWQgdG8gYmUgYSBoYXNoIHdpdGggc2VwYXJhdGUgaHRtbCBmb3IgZWFjaCB2YWx1ZQogICAgICAgICAgICBteSBASFRNTENvdW50S2V5cyA9IGtleXMgJEdldFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57JE11bHRpVmFsdWVGaWVsZH17SFRNTH0tPiUqOwogICAgICAgICAgICBteSAkTWF4VmFsdWVDb3VudCA9IEBIVE1MQ291bnRLZXlzID8gJCNIVE1MQ291bnRLZXlzIDogMDsKICAgICAgICAgICAgZm9yIG15ICRSb3dJbmRleCAoIDAgLi4gJE1heFZhbHVlQ291bnQgKSB7CiAgICAgICAgICAgICAgICBteSAkR3JpZEVsZW1lbnRTdGFydCA9IDE7CiAgICAgICAgICAgICAgICBFTEVNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCB7ICggJGEtPntTdGFydH0gfHwgMSApIDw9PiAoICRiLT57U3RhcnR9IHx8IDEgKSB9IEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZENvbmZpZ3NIYXNoeyAkRWxlbWVudC0+e05hbWV9IH0gKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IEVMRU1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkR2V0UGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJEVsZW1lbnQtPntOYW1lfSB9ICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgICA9ICREeW5hbWljRmllbGRDb25maWdzSGFzaHsgJEVsZW1lbnQtPntOYW1lfSB9OwogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MRGF0YSA9ICRHZXRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRWxlbWVudC0+e05hbWV9IH07CiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgICAgID0gJER5bmFtaWNGaWVsZEhUTUxEYXRhLT57SFRNTH17JFJvd0luZGV4fTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkSFRNTCAmJiAhJFJvd0luZGV4ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRIVE1MRGF0YS0+e0ZpZWxkfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICEkRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkNsYXNzU3RyaW5nID0gJyc7CgogICAgICAgICAgICAgICAgICAgICMgaGlkZSBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtWaXNpYmlsaXR5fSAmJiAhJFBhcmFte1Zpc2liaWxpdHl9eyJEeW5hbWljRmllbGRfJEVsZW1lbnQtPntOYW1lfSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ29sdW1uQ2xhc3NTdHJpbmcgLj0gJyBvb29BQ0xIaWRkZW4nOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjb2x1bW4gcGxhY2VtZW50CiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtblN0eWxlID0gJ2dyaWQtY29sdW1uOiAnOwogICAgICAgICAgICAgICAgICAgICRHcmlkRWxlbWVudFN0YXJ0ID0gKCAkRWxlbWVudC0+e1N0YXJ0fSAmJiAkRWxlbWVudC0+e1N0YXJ0fSA+ICRHcmlkRWxlbWVudFN0YXJ0ICkgPyAkRWxlbWVudC0+e1N0YXJ0fSA6ICRHcmlkRWxlbWVudFN0YXJ0OwoKICAgICAgICAgICAgICAgICAgICAjIHNhdmluZyBlbGVtZW50IHN0YXJ0IGZvciBjb3JyZWN0IHBsYWNpbmcgb2Ygcm93cyB3aXRoIG1peGVkIGZpZWxkcyAobXVsdGl2YWx1ZSBhbmQgbm9uLW11bHRpdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQtPntTdGFydH0gPSAkR3JpZEVsZW1lbnRTdGFydDsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU3R5bGUgLj0gJEdyaWRFbGVtZW50U3RhcnQgLiAnIC8gJzsKICAgICAgICAgICAgICAgICAgICAkR3JpZEVsZW1lbnRTdGFydCsrOwogICAgICAgICAgICAgICAgICAgICRDb2x1bW5TdHlsZSAuPSAkRWxlbWVudC0+e1NwYW59ID8gJ3NwYW4gJyAuICRFbGVtZW50LT57U3Bhbn0gOiAnc3BhbiAxJzsKCiAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWFsIHRyZWF0bWVudCBmb3Igc2VwYXJhdGUgZHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBteSAkQ29sQmxvY2tOYW1lID0gJFBhcmFte1NlcGFyYXRlRHluYW1pY0ZpZWxkc30gJiYgJFBhcmFte1NlcGFyYXRlRHluYW1pY0ZpZWxkc30tPnsgJEVsZW1lbnQtPntOYW1lfSB9CiAgICAgICAgICAgICAgICAgICAgICAgID8gJ0R5bmFtaWNGaWVsZF8nIC4gJEVsZW1lbnQtPntOYW1lfSA6ICdEeW5hbWljRmllbGQnOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ICYmICRSb3dJbmRleCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVGVtcGxhdGVDb25maWcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gKCAkUGFyYW17SURTdWZmaXh9ID8gJFBhcmFte0lEU3VmZml4fSA6ICcnICkgLiAnX1RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJEZpZWxkVGVtcGxhdGVIVE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFRlbXBsYXRlQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKSwgICAgIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBSkFYVXBkYXRlICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwZGF0YWJsZUZpZWxkcyAgICA9PiAkUGFyYW17QUpBWFVwZGF0YWJsZUZpZWxkc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lckludGVyZmFjZSAgPT4gJFBhcmFte0N1c3RvbWVySW50ZXJmYWNlfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZE9ubHkgICAgICAgICAgID0+ICRFbGVtZW50LT57UmVhZE9ubHl9ICAgICAgfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAVGVtcGxhdGVEYXRhTGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZCAgICAgICA9PiAoICRGaWVsZFRlbXBsYXRlSFRNTC0+e0hUTUx9eycwJ30gfHwgJEZpZWxkVGVtcGxhdGVIVE1MLT57RmllbGR9ICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3R5bGUgPT4gJENvbHVtblN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJENvbHVtbkNsYXNzU3RyaW5nIC49ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ID8gJyBNdWx0aVZhbHVlXycgLiAkUm93SW5kZXggOiAnJzsKICAgICAgICAgICAgICAgICAgICBteSAkQ2VsbEJsb2NrRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0eWxlICAgPT4gJENvbHVtblN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICBGaWVsZCAgICAgICAgID0+ICREeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBUb29sdGlwICAgICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1Rvb2x0aXB9LAogICAgICAgICAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBSb3dSZWFkT25seSAgID0+ICRSb3dSZWFkT25seSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uQ2xhc3NlcyA9PiAkQ29sdW1uQ2xhc3NTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4ICAgICAgICAgPT4gJFJvd0luZGV4LAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIGlmICggJFJvd0luZGV4ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsQmxvY2tEYXRhLT57TGFiZWx9ID0gJER5bmFtaWNGaWVsZEhUTUxEYXRhLT57TGFiZWx9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRDb2xCbG9ja05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJENlbGxCbG9ja0RhdGEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBZGQgdGVtcGxhdGVzIGZvciBkeW5hbWljZmllbGRzIGF0IGVuZCBvZiByb3cKICAgICAgICAgICAgZm9yIG15ICRUZW1wbGF0ZURhdGEgKEBUZW1wbGF0ZURhdGFMaXN0KSB7CiAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkTXVsdGlWYWx1ZVRlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRUZW1wbGF0ZURhdGEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Number.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGNvbmZpZyBpdGVtIG51bWJlciBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIENvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoKQoKcmV0dXJuIGNvbmZpZyBpdGVtIGlkIG9yIGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7CgogICAgb3IKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAnMTIzNDU0MzIxJywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbU51bWJlckxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAhJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQgb3IgQ29uZmlnSXRlbU51bWJlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntJRH0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfQogICAgICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1OdW1iZXJMb29rdXB9LT57SUR9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgICAgICMgYXNrIGRhdGFiYXNlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgY29uZmlnaXRlbV9udW1iZXIgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXI7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAgICAgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e0lEfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9ID0gJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgIHJldHVybiAkQ29uZmlnSXRlbU51bWJlcjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9CiAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e051bWJlcn0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9IH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFIGNvbmZpZ2l0ZW1fbnVtYmVyID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9ID0gJENvbmZpZ0l0ZW1JRDsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoKQoKY3JlYXRlIGEgbmV3IGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbU51bWJlckNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUeXBlIENsYXNzSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkUGFyYW17VHlwZX0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgY29uZmlnIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBiYWNrZW5kIG1vZHVsZSAkUGFyYW17VHlwZX0hICRAIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlQmFzZUNsYXNzKCAkUGFyYW17VHlwZX0gKTsKCiAgICAjIGNyZWF0ZSBudW1iZXIKICAgIG15ICROdW1iZXIgPSAkU2VsZi0+X0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJE51bWJlcjsKfQoKPWhlYWQyIEN1cnJlbnRDb3VudGVyR2V0KCkKCnJldHVybiB0aGUgY3VycmVudCBjb3VudGVyIG9mIGEgY2xhc3MKCiAgICBteSAkQ291bnRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXJyZW50Q291bnRlckdldCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICk7Cgo9Y3V0CgpzdWIgQ3VycmVudENvdW50ZXJHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2xhc3NJRCBUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNvdW50ZXIgRlJPTSBjb25maWdpdGVtX2NvdW50ZXIgV0hFUkUgJwogICAgICAgICAgICAuICdjbGFzc19pZCA9ID8gQU5EIGNvdW50ZXJfdHlwZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtUeXBlfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJE51bWJlcjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJE51bWJlciA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICROdW1iZXI7Cn0KCj1oZWFkMiBDdXJyZW50Q291bnRlclNldCgpCgpzZXQgdGhlIGN1cnJlbnQgY291bnRlciBvZiBhIGNsYXNzCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VycmVudENvdW50ZXJTZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAnQXV0b0luY3JlbWVudCcsCiAgICAgICAgQ291bnRlciA9PiAnMTInLAogICAgKTsKCj1jdXQKCnN1YiBDdXJyZW50Q291bnRlclNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIFR5cGUgQ291bnRlcikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgb2xkIGNvdW50ZXIKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2NvdW50ZXIgV0hFUkUgY2xhc3NfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAjIHNldCBuZXcgY291bnRlcgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9jb3VudGVyICcKICAgICAgICAgICAgLiAnKGNsYXNzX2lkLCBjb3VudGVyX3R5cGUsIGNvdW50ZXIpIFZBTFVFUyAoPywgPywgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFBhcmFte1R5cGV9LCBcJFBhcmFte0NvdW50ZXJ9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Number/AutoIncrement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50IC0gY29uZmlnIGl0ZW0gbnVtYmVyIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBhdXRvIGluY3JlbWVudCBjb25maWcgaXRlbSBudW1iZXIgZnVuY3Rpb25zCgo9aGVhZDIgX0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoKQoKY3JlYXRlIGEgbmV3IGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICROdW1iZXIgPSAkQmFja2VuZE9iamVjdC0+X0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIF9Db25maWdJdGVtTnVtYmVyQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN5c3RlbSBpZAogICAgbXkgJFN5c3RlbUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTeXN0ZW1JRCcpOwoKICAgICMgZ2V0IGN1cnJlbnQgY291bnRlcgogICAgbXkgJEN1cnJlbnRDb3VudGVyID0gJFNlbGYtPkN1cnJlbnRDb3VudGVyR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgIFR5cGUgICAgPT4gJ0F1dG9JbmNyZW1lbnQnLAogICAgKSB8fCAwOwoKICAgIENJUEhFUjoKICAgIGZvciBteSAkQ2lwaGVyICggMSAuLiAxXzAwMF8wMDBfMDAwICkgewoKICAgICAgICAjIGNyZWF0ZSBuZXcgbnVtYmVyCiAgICAgICAgbXkgJE51bWJlciA9ICRTeXN0ZW1JRCAuICRQYXJhbXtDbGFzc0lEfSAuIHNwcmludGYoICIlMDZkIiwgKCAkQ3VycmVudENvdW50ZXIgKyAkQ2lwaGVyICkgKTsKCiAgICAgICAgIyBmaW5kIGV4aXN0aW5nIG51bWJlcgogICAgICAgIG15ICREdXBsaWNhdGUgPSAkU2VsZi0+Q29uZmlnSXRlbU51bWJlckxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkTnVtYmVyLAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0lQSEVSIGlmICREdXBsaWNhdGU7CgogICAgICAgICMgc2V0IGNvdW50ZXIKICAgICAgICAkU2VsZi0+Q3VycmVudENvdW50ZXJTZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ291bnRlciA9PiAoICRDdXJyZW50Q291bnRlciArICRDaXBoZXIgKSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJE51bWJlcjsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb24gLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggUGVybWlzc2lvbiBmdW5jdGlvbnMKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIFBlcm1pc3Npb24gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBQZXJtaXNzaW9uKCkKCnJldHVybnMgd2hldGhlciB0aGUgdXNlciBoYXMgcGVybWlzc2lvbnMgb3Igbm90CgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICdybycsCiAgICAgICAgU2NvcGUgICAgPT4gJ0NsYXNzJywgIyBDbGFzcyB8fCBJdGVtCiAgICAgICAgQ2xhc3NJRCAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnQ2xhc3MnCiAgICAgICAgSXRlbUlEICAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnSXRlbScKICAgICAgICBVc2VySUQgICA9PiAxMjMsCiAgICApOwoKb3Igd2l0aG91dCBsb2dnaW5nLCBmb3IgZXhhbXBsZSBmb3IgdG8gY2hlY2sgaWYgYSBsaW5rL2FjdGlvbiBzaG91bGQgYmUgc2hvd24KCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJ3JvJywKICAgICAgICBTY29wZSAgICA9PiAnQ2xhc3MnLCAjIENsYXNzIHx8IEl0ZW0KICAgICAgICBDbGFzc0lEICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdDbGFzcycKICAgICAgICBJdGVtSUQgICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdJdGVtJwogICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhUeXBlIFNjb3BlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgSXRlbUlEIG9yIENsYXNzSUQgZGVwZW5kZW50CiAgICAjIG9uIHRoZSBTY29wZQogICAgaWYgKAogICAgICAgICggJFBhcmFte1Njb3BlfSBlcSAnQ2xhc3MnICYmICEkUGFyYW17Q2xhc3NJRH0gKQogICAgICAgIHx8CiAgICAgICAgKCAkUGFyYW17U2NvcGV9IGVxICdJdGVtJyAmJiAhJFBhcmFte0l0ZW1JRH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ2xhc3NJRCBpZiBTY29wZSBpcyAnQ2xhc3MnIG9yIEl0ZW1JRCBpZiBTY29wZSBpcyAnSXRlbSchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBSdW4gYWxsIElUU01Db25maWdJdGVtIFBlcm1pc3Npb24gbW9kdWxlcy4KICAgICMKICAgICMgVGhlIGlkZWEgaXMgdGhlIHRoZSBwZXJtaXNzaW9uIG1vZHVsZXMgYXJlIG9yZGVyZWQgYW5kIGNhbiBiZSBkaXZpZGVkIGludG8gdHdvIHBoYXNlcy4KICAgICMgSW4gdGhlIGZpcnN0IHBoYXNlICdSZXF1aXJlZCcgaXMgb24gYW5kICdHcmFudGVkJyBpcyBvZmYuIFRoaXMgYXNzdXJlcyB0aGF0IGFsbCByZXF1aXJlZAogICAgIyBwcmVjb25kaXRpb25zIGFyZSBtZXQuIEluIHRoZSBzZWNvbmQgcGhhc2UgJ1JlcXVpcmVkJyBpcyBvZmYgYW5kICdHcmFudGVkJyBpcyBvbi4gSXQgc3VmZmljZXMKICAgICMgd2hlbiBvbmx5IG9uIHNlY29uZCBwaGFzZSBtb2R1bGUgZ3JhbnRzIGFjY2Vzcy4KICAgICMKICAgICMgT3RoZXIgY29tYmluYXRpb25zIGFyZSBwb3NzaWJsZSBidXQgbWlnaHQgYnJpbmcgc3VycHJpc2luZyByZXN1bHRzLgogICAgaWYgKAogICAgICAgIHJlZiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKSBlcSAnSEFTSCcKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJU1vZHVsZXMgPSAlewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKQogICAgICAgIH07CiAgICAgICAgTU9EVUxFOgogICAgICAgIGZvciBteSAkTW9kdWxlICggc29ydCBrZXlzICVNb2R1bGVzICkgewoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBuZXh0IE1PRFVMRSB1bmxlc3MgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1vZHVsZXN7JE1vZHVsZX0tPntNb2R1bGV9ICk7CgogICAgICAgICAgICAjIGNyZWF0ZSBvYmplY3QKICAgICAgICAgICAgbXkgJE1vZHVsZU9iamVjdCA9ICRNb2R1bGVzeyRNb2R1bGV9LT57TW9kdWxlfS0+bmV3OwoKICAgICAgICAgICAgIyBleGVjdXRlIFJ1bigpCiAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9ICRNb2R1bGVPYmplY3QtPlJ1biglUGFyYW0pOwoKICAgICAgICAgICAgIyBjaGVjayBncmFudGVkIG9wdGlvbiAoc2hvdWxkIEkgc2F5IG9rKQogICAgICAgICAgICBpZiAoICRBY2Nlc3NPayAmJiAkTW9kdWxlc3skTW9kdWxlfS0+e0dyYW50ZWR9ICkgewoKICAgICAgICAgICAgICAgICMgYWNjZXNzIG9rCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzICBiZWNhdXNlIGFjY2VzcyBpcyBmYWxzZSBidXQgaXQncyByZXF1aXJlZAogICAgICAgICAgICBpZiAoICEkQWNjZXNzT2sgJiYgJE1vZHVsZXN7JE1vZHVsZX0tPntSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIGJlY2F1c2UgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIigkTW9kdWxlc3skTW9kdWxlfS0+e01vZHVsZX0pIGlzIHJlcXVpcmVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIihVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICckUGFyYW17VHlwZX0nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIm9uICRQYXJhbXtTY29wZX06ICIgLiAkUGFyYW17ICRQYXJhbXtTY29wZX0gLiAnSUQnIH0gLiAiKSEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBkb24ndCBncmFudCBhY2Nlc3MKICAgIGlmICggISRQYXJhbXtMb2dOb30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGVybWlzc2lvbiBkZW5pZWQgKFVzZXJJRDogJFBhcmFte1VzZXJJRH0gJyRQYXJhbXtUeXBlfScgIgogICAgICAgICAgICAgICAgLiAib24gJFBhcmFte1Njb3BlfTogIiAuICRQYXJhbXsgJFBhcmFte1Njb3BlfSAuICdJRCcgfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCj1oZWFkMiBDdXN0b21lclBlcm1pc3Npb24oKQoKcmV0dXJucyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9ucyBvciBub3QKCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICAgICAgTG9nTm8gICAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGRvIG5vdCBsb2csIGRlZmF1bHQ6IDAKICAgICk7Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDdXN0b21lckdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBteSAlQ29uZGl0aW9ucyA9ICV7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJykgLy8ge30gfTsKICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIENPTkRJVElPTjoKICAgIGZvciBteSAkQ29uZGl0aW9uU2V0ICggdmFsdWVzICVDb25kaXRpb25zICkgewogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0dyb3Vwc30gJiYgJENvbmRpdGlvblNldC0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRDdXN0b21lckdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJEdyb3VwTG9va3VweyRffSB9ICRDb25kaXRpb25TZXQtPntHcm91cHN9LT5AKjsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gPyAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBDbGFzc2VzICYmIG5vbmUgeyAkXyBlcSAkQ29uZmlnSXRlbS0+e0NsYXNzfSB9IEBDbGFzc2VzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gKSB7CiAgICAgICAgICAgIG15IEBEZXBsU3RhdGVzID0gcmVmICRDb25kaXRpb25TZXQtPntEZXBsb3ltZW50U3RhdGVzfSA/ICRDb25kaXRpb25TZXQtPntEZXBsb3ltZW50U3RhdGVzfS0+QCogOiAoICRDb25kaXRpb25TZXQtPntEZXBsb3ltZW50U3RhdGVzfSApOwoKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgQERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRDb25maWdJdGVtLT57RGVwbFN0YXRlfSB9IEBEZXBsU3RhdGVzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57RHluYW1pY0ZpZWxkVmFsdWVzfSApIHsKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9LT4lKiApIHsKICAgICAgICAgICAgICAgIG15ICRDb25kaXRpb25WYWx1ZSA9ICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IC8vICcnOwoKICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAkQ29uZGl0aW9uVmFsdWUgbmUgJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICFyZWYgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAkQ29uZGl0aW9uVmFsdWUgbmUgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmRpdGlvblZhbHVlIGVxICcnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0tPkAqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgbm9uZSB7ICRfIGVxICRDb25kaXRpb25WYWx1ZSB9ICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0tPkAqOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAhJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfTsKCiAgICAgICAgICAgIG15IEBDdXN0b21lclVzZXJzID0gcmVmICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfS0+QCoKICAgICAgICAgICAgICAgIDogKCAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9ICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJF8gZXEgJFBhcmFte1VzZXJJRH0gfSBAQ3VzdG9tZXJVc2VyczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICEkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9OwoKICAgICAgICAgICAgbXkgQEN1c3RvbWVyQ29tcGFuaWVzID0gcmVmICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gfS0+QCoKICAgICAgICAgICAgICAgIDogKCAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9ICk7CgogICAgICAgICAgICBteSAlQWNjZXNzaWJsZUN1c3RvbWVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckdyb3VwJyktPkdyb3VwQ29udGV4dEN1c3RvbWVycygKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgbm9uZSB7ICRBY2Nlc3NpYmxlQ3VzdG9tZXJzeyRffSB9IEBDdXN0b21lckNvbXBhbmllczsKICAgICAgICB9CgogICAgICAgICMgZ3JhbnQgYWNjZXNzCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0xvZ05vfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQZXJtaXNzaW9uIGRlbmllZCAoQ3VzdG9tZXJVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICIKICAgICAgICAgICAgICAgIC4gIm9uIENvbmZpZ0l0ZW06ICIgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRvbid0IGdyYW50IGFjY2VzcwogICAgcmV0dXJuOwp9Cgo9aGVhZDIgUHVibGljUGVybWlzc2lvbigpCgpyZXR1cm5zIHdoZXRoZXIgdGhlIHB1YmxpYyBub24tbG9nZ2VkIHVzZXIgaGFzIHBlcm1pc3Npb25zIG9yIG5vdAoKICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UHVibGljUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIExvZ05vICAgICAgICA9PiAxLCAgICAjIG9wdGlvbmFsLCBkbyBub3QgbG9nLCBkZWZhdWx0OiAwCiAgICApOwoKPWN1dAoKc3ViIFB1YmxpY1Blcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlQ29uZGl0aW9ucyA9ICV7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpIC8vIHt9IH07CiAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiBhbnkgeyAkXy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfHwgJF8tPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH0gdmFsdWVzICVDb25kaXRpb25zLAogICAgKTsKCiAgICBDT05ESVRJT046CiAgICBmb3IgbXkgJENvbmRpdGlvblNldCAoIHZhbHVlcyAlQ29uZGl0aW9ucyApIHsKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntDbGFzc2VzfSApIHsKICAgICAgICAgICAgbXkgQENsYXNzZXMgPSByZWYgJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ID8gJENvbmRpdGlvblNldC0+e0NsYXNzZXN9LT5AKiA6ICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBAQ2xhc3NlcyAmJiBub25lIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSBAQ2xhc3NlczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgewogICAgICAgICAgICBteSBARGVwbFN0YXRlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gPyAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBEZXBsU3RhdGVzICYmIG5vbmUgeyAkXyBlcSAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZX0gfSBARGVwbFN0YXRlczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc30gKSB7CiAgICAgICAgICAgIGZvciBteSAkRmllbGROYW1lICgga2V5cyAkQ29uZGl0aW9uU2V0LT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBteSAkRmllbGRWYWx1ZSA9ICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9OwogICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgJEZpZWxkVmFsdWUgJiYgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSBuZSAkRmllbGRWYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBncmFudCBhY2Nlc3MKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIChQdWJsaWMgYWNjZXNzICIKICAgICAgICAgICAgICAgIC4gIm9uIENvbmZpZ0l0ZW06ICIgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRvbid0IGdyYW50IGFjY2VzcwogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission/ClassGroupCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrIC0gY2hlY2sgaWYgYSB1c2VyIGJlbG9uZ3MgdG8gYSBncm91cAo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgaXMgYSBwZXJtaXNzaW9uIG1vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwoKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENoZWNrT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uOjpDbGFzc0dyb3VwQ2hlY2snKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBSdW4oKQoKdGhpcyBtZXRob2QgZG9lcyB0aGUgY2hlY2sgaWYgdGhlIHVzZSBiZWxvbmdzIHRvIGEgZ2l2ZW4gZ3JvdXAKCiAgICBteSAkSGFzQWNjZXNzID0gJENoZWNrT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEICA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgIENsYXNzSUQgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDb21wdXRlcicsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlcklEIFR5cGUgQ2xhc3NJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhIGZvciB0aGUgcmVsZXZhbnQgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufTsKICAgIG15ICgkQ2xhc3NJdGVtUGVybWlzc2lvbikgPSAkQ2xhc3NJdGVtLT57UGVybWlzc2lvbn0tPkAqOwogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NJdGVtUGVybWlzc2lvbjsKCiAgICAjIGdldCB1c2VyIGdyb3VwcwogICAgbXkgQEdyb3VwSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBSZXN1bHQgPT4gJ0lEJywKICAgICAgICBDYWNoZWQgPT4gMSwKICAgICk7CgogICAgIyBsb29raW5nIGZvciBncm91cCBpZCwgZ3JhbnQgYWNjZXNzIGlmIHVzZXIgaXMgaW4gZ3JvdXAKICAgIGZvciBteSAkR3JvdXBJRCAoQEdyb3VwSURzKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJENsYXNzSXRlbVBlcm1pc3Npb24gJiYgJEdyb3VwSUQgZXEgJENsYXNzSXRlbVBlcm1pc3Npb247CiAgICB9CgogICAgIyByZWZ1c2UgYWNjZXNzIHBlciBkZWZhdWx0CiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission/ItemClassGroupCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjayAtIGNoZWNrIGlmIGEgdXNlciBjYW4gYWNjZXNzIGFuIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBpcyBhIHBlcm1pc3Npb24gbW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uClRoZSBjaGVjayBpcyBiYXNlZCBvbiB0aGUgY2xhc3Mgb2YgdGhlIGNvbmZpZyBpdGVtLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDaGVja09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjaycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHt9LCAkVHlwZTsKfQoKPWhlYWQyIFJ1bigpCgp0aGlzIG1ldGhvZCBkb2VzIHRoZSBjaGVjayBpZiB0aGUgdXNlciBjYW4gYWNjZXNzIGFuIGl0ZW0KCiAgICBteSAkSGFzQWNjZXNzID0gJENoZWNrT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBJdGVtSUQgPT4gMzQ1LAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJJRCBUeXBlIEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICk7CgogICAgIyBnZXQgZGF0YSBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZyBpdGVtIGNsYXNzCiAgICBteSAkQ2xhc3NJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENsYXNzSXRlbS0+e1Blcm1pc3Npb259OwogICAgbXkgKCRDbGFzc0l0ZW1QZXJtaXNzaW9uKSA9ICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufS0+QCo7CiAgICByZXR1cm4gdW5sZXNzICRDbGFzc0l0ZW1QZXJtaXNzaW9uOwoKICAgICMgZ2V0IHVzZXIgZ3JvdXBzCiAgICBteSBAR3JvdXBJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFJlc3VsdCA9PiAnSUQnLAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAjIGxvb2tpbmcgZm9yIGdyb3VwIGlkLCBncmFudCBhY2Nlc3MgaWYgdXNlciBpcyBpbiBncm91cAogICAgZm9yIG15ICRHcm91cElEIChAR3JvdXBJRHMpIHsKICAgICAgICByZXR1cm4gMSBpZiAkQ2xhc3NJdGVtUGVybWlzc2lvbiAmJiAkR3JvdXBJRCBlcSAkQ2xhc3NJdGVtUGVybWlzc2lvbjsKICAgIH0KCiAgICAjIHJlZnVzZSBhY2Nlc3MgcGVyIGRlZmF1bHQKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Version.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbjsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbiAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCB2ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgSVRTTUNvbmZpZ0l0ZW0gb2JqZWN0cy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgVmVyc2lvblpvb21MaXN0KCkKCnJldHVybiBhIGNvbmZpZyBpdGVtIHZlcnNpb24gbGlzdCBhcyBhcnJheS1oYXNoIHJlZmVyZW5jZQoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblpvb21MaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgICMgZ2V0IHZlcnNpb24gem9vbSBsaXN0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBpZCwgbmFtZSwgdmVyc2lvbl9zdHJpbmcsIGRlcGxfc3RhdGVfaWQsIGluY2lfc3RhdGVfaWQsIGRlc2NyaXB0aW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KICBXSEVSRSBjb25maWdpdGVtX2lkID0gPwogIE9SREVSIEJZIGlkCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFZlcnNpb25MaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBWZXJzaW9uTGlzdCwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAkUm93WzJdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAkUm93WzNdLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAkUm93WzRdLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkUm93WzVdLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAkUm93WzZdLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAkUm93WzddLAogICAgICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAkUm93WzhdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICA9PiAkUm93WzldLAogICAgICAgICAgICB9OwoKICAgIH0KCiAgICBmb3IgbXkgJFZlcnNpb24gKEBWZXJzaW9uTGlzdCkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBteSAkRGVwbFN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbi0+e0RlcGxTdGF0ZUlEfSwKICAgICAgICApOwoKICAgICAgICAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gICAgID0gJERlcGxTdGF0ZS0+e05hbWV9OwogICAgICAgICRWZXJzaW9uLT57RGVwbFN0YXRlVHlwZX0gPSAkRGVwbFN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBteSAkSW5jaVN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbi0+e0luY2lTdGF0ZUlEfSwKICAgICAgICApOwoKICAgICAgICAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gICAgID0gJEluY2lTdGF0ZS0+e05hbWV9OwogICAgICAgICRWZXJzaW9uLT57SW5jaVN0YXRlVHlwZX0gPSAkSW5jaVN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgICAgICMgYWRkIGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAkVmVyc2lvbi0+e0NsYXNzSUR9ICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKICAgICAgICAkVmVyc2lvbi0+e0NsYXNzfSAgICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICAgICAgJFZlcnNpb24tPntOdW1iZXJ9ICAgICAgICAgICA9ICRDb25maWdJdGVtLT57TnVtYmVyfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZUlEfSAgID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVJRH07CiAgICAgICAgJFZlcnNpb24tPntDdXJEZXBsU3RhdGV9ICAgICA9ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZVR5cGV9ID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVUeXBlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZUlEfSAgID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVJRH07CiAgICAgICAgJFZlcnNpb24tPntDdXJJbmNpU3RhdGV9ICAgICA9ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZVR5cGV9ID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfTsKICAgIH0KCiAgICByZXR1cm4gXEBWZXJzaW9uTGlzdDsKfQoKPWhlYWQyIFZlcnNpb25MaXN0QWxsKCkKClJldHVybnMgYSB0d28tZGltZW5zaW9uYWwgaGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUgY29uZmlnIGl0ZW0gaWRzIGFzIGtleXMgb2YgdGhlIGZpcnN0IGxldmVsCmFuZCB0aGUgY29ycmVzcG9uZGluZyB2ZXJzaW9uIGlkcyBhcyBrZXlzIG9mIHRoZSBzZWNvbmQgbGV2ZWwsCnRoZW4gZm9sbG93ZWQgYnkgdGhlIHZlcnNpb24gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZS4KCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3RBbGwoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBbIDEsIDIsIDMsIDQsIC4uLl0sICAgICMgb3B0aW9uYWwKCiAgICAgICAgT2xkZXJEYXRlICAgICA9PiAnMjAxNC0xMi0yMiAyMzo1OTo1OScsICMgb3B0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaW5kcyB2ZXJzaW9ucyBvbGRlciB0aGFuIHRoZSBnaXZlbiBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9ybWF0IE1VU1QgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBZWVlZLU1NLUREIEhIOk1NOlNTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsbCBtaXNzaW5nIHZhbHVlcyB3aXRoIDAgZmlyc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFeGFtcGxlOiAyMDE0LTA0LTAxIDA3OjAzOjA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGl0IHdvbid0IGJlIHRha2VuIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFsaWQgc2VhcmNoIHBhcmFtZXRlcgoKICAgICAgICBMaW1pdCAgICAgICAgID0+IDEwMDAwMDAsICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKClJldHVybnM6CgogICAgJFZlcnNpb25MaXN0UmVmID0gewoKICAgICAgICAjIENvbmZpZ0l0ZW1JRAogICAgICAgIDEgPT4gewoKICAgICAgICAgICAgIyBWZXJzaW9uSUQKICAgICAgICAgICAgMTAwID0+IHsKICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAxLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnQ29uZmlnSXRlbTEnLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAnVmVyc2lvbjEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICA9PiA1LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAzLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAyLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnQUJDRCcsCiAgICAgICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDE2LTAzLTIyIDE3OjU4OjAwJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICMgVmVyc2lvbklECiAgICAgICAgICAgIDEwMSA9PiB7CiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+IDEwMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0yJywKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJ1ZlcnNpb24yJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgPT4gNSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMiwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBDb25maWdJdGVtSUQKICAgICAgICAyID0+IHsKCiAgICAgICAgICAgICMgVmVyc2lvbklECiAgICAgICAgICAgIDE1MCA9PiB7CiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+IDE1MCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMiwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0xJywKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJ1ZlcnNpb24xJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgPT4gNSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMiwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAjIFZlcnNpb25JRAogICAgICAgICAgICAxNTEgPT4gewogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAxNTEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+IDIsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdDb25maWdJdGVtMScsCiAgICAgICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICdWZXJzaW9uMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+IDUsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+IDMsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDIsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdBQkNEJywKICAgICAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgPT4gJzIwMTYtMDMtMjIgMTc6NTg6MDAnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFZlcnNpb25MaXN0QWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjb2xsZWN0IHRoZSBjb25kaXRpb25zIGZvciB0aGUgV0hFUkUgY2xhdXNlCiAgICBteSBAQ29uZGl0aW9uczsKICAgIG15IEBCaW5kUGFyYW1ldGVyOwoKICAgICMgaWYgd2UgZ290IENvbmZpZ0l0ZW1JRHMgbWFrZSBzdXJlIHdlIGp1c3QgaGF2ZSBudW1lcmljIGlkcywKICAgICMgZXh0cmFjdCB0aG9zZSBhbmQgdXNlIGl0IGZvciB0aGUgcXVlcnkKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9IGdyZXAgeyAkXyA9fiBtL15cZCskLyB9IEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9OwogICAgICAgIHB1c2ggQENvbmRpdGlvbnMsICdjb25maWdpdGVtX2lkIElOICgnIC4gKCBqb2luICcsICcsIEBDb25maWdJdGVtSURzICkgLiAnKSc7CiAgICB9CgogICAgaWYgKCAkUGFyYW17T2xkZXJEYXRlfSAmJiAkUGFyYW17T2xkZXJEYXRlfSA9fiBtL15cZHs0fVwtXGR7Mn1cLVxkezJ9XCBcZHsyfVw6XGR7Mn06XGR7Mn0kLyApIHsKICAgICAgICBwdXNoIEBDb25kaXRpb25zLCAgICAnY3JlYXRlX3RpbWUgPCA/JzsKICAgICAgICBwdXNoIEBCaW5kUGFyYW1ldGVyLCBcJFBhcmFte09sZGVyRGF0ZX07CiAgICB9CgogICAgIyBidWlsZCBzcWwKICAgIG15ICRTUUwgPSA8PCdFTkRfU1FMJzsKU0VMRUNUIGlkLCBjb25maWdpdGVtX2lkLCBuYW1lLCB2ZXJzaW9uX3N0cmluZywgZGVmaW5pdGlvbl9pZCwgZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgZGVzY3JpcHRpb24sCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KRU5EX1NRTAoKICAgIGlmIChAQ29uZGl0aW9ucykgewogICAgICAgICRTUUwgLj0gJ1dIRVJFICcgLiBqb2luICcgQU5EICcsIEBDb25kaXRpb25zOwogICAgfQoKICAgICMgc2V0IGxpbWl0CiAgICBpZiAoICRQYXJhbXtMaW1pdH0gKSB7CiAgICAgICAgJFBhcmFte0xpbWl0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJFBhcmFte0xpbWl0fSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgaWYgKEBCaW5kUGFyYW1ldGVyKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgID0+IFxAQmluZFBhcmFtZXRlciwKICAgICAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlUmVzdWx0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlc3VsdHN7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSB7CiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUm93WzFdLAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRSb3dbMl0gIHx8ICcnLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRSb3dbM10gIHx8ICcnLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+ICRSb3dbNF0gIHx8ICcnLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+ICRSb3dbNV0gIHx8ICcnLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+ICRSb3dbNl0gIHx8ICcnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICRSb3dbN10gIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICRSb3dbOF0gIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+ICRSb3dbOV0gIHx8ICcnLAogICAgICAgICAgICBDaGFuZ2VUaW1lICAgID0+ICRSb3dbMTBdIHx8ICcnLAogICAgICAgICAgICBDaGFuZ2VCeSAgICAgID0+ICRSb3dbMTFdIHx8ICcnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIFwlUmVzdWx0czsKfQoKPWhlYWQyIFZlcnNpb25MaXN0KCkKCnJldHVybiB0aGUgbGlzdCBvZiBjb25maWcgaXRlbSB2ZXJzaW9uIElEcyBvZiB0aGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtIGFzIGFuIGFycmF5IHJlZmVyZW5jZS4KVGhlIElEcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15IEBWZXJzaW9uTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RDb2xBcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBpZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uCiAgV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8KICBPUkRFUiBCWSBpZApFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gXEBWZXJzaW9uTGlzdDsKfQoKPWhlYWQyIFZlcnNpb25OYW1lR2V0KCkKCnJldHVybnMgdGhlIG5hbWUgb2YgYSB2ZXJzaW9uIG9mIGEgY29uZmlnIGl0ZW0uCgogICAgbXkgJFZlcnNpb25OYW1lID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25OYW1lR2V0KAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICApOwoKb3IKCiAgICBteSAkVmVyc2lvbk5hbWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbk5hbWVHZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbk5hbWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1ZlcnNpb25JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQgb3IgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OlZlcnNpb25JRDo6JyAuICRQYXJhbXtWZXJzaW9uSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17VmVyc2lvbklEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiAnCiAgICAgICAgICAgICAgICAuICdXSEVSRSBjb25maWdpdGVtX2lkID0gPyBPUkRFUiBCWSBpZCBERVNDJywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVZlcnNpb247CiAgICB3aGlsZSAoIG15ICggJElkLCAkTmFtZSApID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmVyc2lvbntWZXJzaW9uSUR9ID0gJElkOwogICAgICAgICRWZXJzaW9ue05hbWV9ICAgICAgPSAkTmFtZTsKICAgIH0KCiAgICAjIGNoZWNrIHZlcnNpb24KICAgIGlmICggISRWZXJzaW9ue1ZlcnNpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyBzdWNoIGNvbmZpZyBpdGVtIHZlcnNpb24hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBjYWNoZSBmb3IgVmVyc2lvbklEIChhbHdheXMpCiAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OlZlcnNpb25JRDo6JyAuICRWZXJzaW9ue1ZlcnNpb25JRH07CiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwkVmVyc2lvbntOYW1lfSwKICAgICk7CgogICAgIyBzZXQgY2FjaGUgZm9yIENvbmZpZ0l0ZW1JRCAob25seSBpZiBjYWxsZWQgd2l0aCBDb25maWdJdGVtSUQpCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRDYWNoZUtleSA9ICdWZXJzaW9uTmFtZUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCRWZXJzaW9ue05hbWV9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9ue05hbWV9Owp9Cgo9aGVhZDIgVmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgpCgpyZXR1cm4gdGhlIGNvbmZpZyBpdGVtIGlkIG9mIGEgdmVyc2lvbgoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uQ29uZmlnSXRlbUlER2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfTsKCiAgICAjIGdldCBjb25maWcgaXRlbSBpZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBjb25maWdpdGVtX2lkIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1ZlcnNpb25JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICB3aGlsZSAoIG15ICgkSWQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJElkOwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uQ29uZmlnSXRlbUlER2V0fS0+eyAkUGFyYW17VmVyc2lvbklEfSB9ID0gJENvbmZpZ0l0ZW1JRDsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIFZlcnNpb25BZGQoKQoKYWRkcyBhIG5ldyB2ZXJzaW9uIHRvIGVpdGhlciBhbiBleGlzdGluZyBjb25maWcgaXRlbS4KT3IgYWRkcyB0aGUgaW5pdGlhbCB2ZXJzaW9uIHRvIGFuIGNvbmZpZyBpdGVtIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4KCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLAogICAgICAgIExhc3RWZXJzaW9uSUQgICAgID0+IDEyMywKICAgICAgICBMYXN0VmVyc2lvbiAgICAgICA9PiB7Li4ufSAgICAgICAgICAjIGVpdGhlciBDb25maWdJdGVtSUQgb3IgTGFzdFZlcnNpb24oSUQpIGlzIG1hbmRhdG9yeQogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ1RoZSBOYW1lJywgICAgIyBvcHRpb25hbAogICAgICAgIFZlcnNpb25TdHJpbmcgICAgID0+ICdUaGUgVmVyc2lvbicsICMgb3B0aW9uYWwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiA4LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gNCwgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlc2NyaXB0aW9uICAgICAgID0+ICdBQkNEJywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBEeW5hbWljRmllbGRfTmFtZSA9PiAkVmFsdWUsICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRMYXN0VmVyc2lvbiA9ICRQYXJhbXtMYXN0VmVyc2lvbn0gfHwgJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRQYXJhbXtMYXN0VmVyc2lvbklEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICVWZXJzaW9uID0gKAogICAgICAgICRMYXN0VmVyc2lvbi0+JSosCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENvbmZpZ0l0ZW1JRCBOYW1lIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEKSkgewogICAgICAgIGlmICggISRWZXJzaW9ueyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJENsYXNzTGlzdCBlcSAnSEFTSCc7CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFZlcnNpb257Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICROYW1lTW9kdWxlT2JqZWN0OwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OiROYW1lTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbntDbGFzc30hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGEgYmFja2VuZCBvYmplY3QKICAgICAgICAkTmFtZU1vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKTsKCiAgICAgICAgIyBvdmVycmlkZSBwb3NzaWJsZSBpbmNvbWluZyBuYW1lCiAgICAgICAgJFZlcnNpb257TmFtZX0gPSAkTmFtZU1vZHVsZU9iamVjdC0+Q29uZmlnSXRlbU5hbWVDcmVhdGUoJVBhcmFtKTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRWZXJzaW9ue0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRWZXJzaW9ue05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICMgYnVpbGQgYSBzdHJpbmcgb2YgYWxsIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgIG15ICREdXBsaWNhdGVzID0gam9pbiAnLCAnLCBAeyROYW1lRHVwbGljYXRlc307CgogICAgICAgICAgICAgICAgIyB3cml0ZSBhbiBlcnJvciBsb2cgbWVzc2FnZSBjb250YWluaW5nIGFsbCB0aGUgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIG5hbWUgJFZlcnNpb257TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFZlcnNpb25TdHJpbmdNb2R1bGVPYmplY3Q7CiAgICBteSAkVmVyc2lvblN0cmluZ01vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25TdHJpbmdNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkVmVyc2lvblN0cmluZ01vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OiRWZXJzaW9uU3RyaW5nTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY2xhc3MgJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpOwoKICAgICAgICAjIG92ZXJyaWRlIHBvc3NpYmxlIGluY29taW5nIHZlcnNpb24gc3RyaW5nCiAgICAgICAgJFZlcnNpb257VmVyc2lvblN0cmluZ30gPSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdC0+VmVyc2lvblN0cmluZ0dldCgKICAgICAgICAgICAgVmVyc2lvbiAgICA9PiBcJVZlcnNpb24sCiAgICAgICAgICAgIFZlcnNpb25BZGQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgbmV3IHZlcnNpb25zIGFyZSBhbHdheXMgYWRkZWQgd2l0aCB0aGUgbmV3ZXN0IGRlZmluaXRpb24KICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkVmVyc2lvbntDbGFzc0lEfSwKICAgICk7CgogICAgaWYgKCAhJERlZmluaXRpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIERlZmluaXRpb24hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBpbnNlcnQgbmV3IHZlcnNpb24KICAgIG15ICRJbnNlcnRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fdmVyc2lvbiAoCiAgICBjb25maWdpdGVtX2lkLCBuYW1lLCB2ZXJzaW9uX3N0cmluZywgZGVmaW5pdGlvbl9pZCwgZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgZGVzY3JpcHRpb24sCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CikKVkFMVUVTICgKICAgID8sID8sID8sID8sID8sID8sID8sCiAgIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPwopCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFwkVmVyc2lvbntOYW1lfSwKICAgICAgICAgICAgXCRWZXJzaW9ue1ZlcnNpb25TdHJpbmd9LAogICAgICAgICAgICBcJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBcJFZlcnNpb257RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBcJFZlcnNpb257SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBcJFZlcnNpb257RGVzY3JpcHRpb259LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRJbnNlcnRTdWNjZXNzOwoKICAgICMgZ2V0IGlkIG9mIG5ldyB2ZXJzaW9uCiAgICBteSAoJFZlcnNpb25JRCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIGlkCiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KICBXSEVSRSBjb25maWdpdGVtX2lkID0gPwogIE9SREVSIEJZIGlkIERFU0MKRU5EX1NRTAogICAgICAgIEJpbmQgID0+IFsgXCRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIHZlcnNpb24gaWQKICAgIGlmICggISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgdGhlIG5ldyB2ZXJzaW9uIGlkISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAkU2VsZi0+X1VwZGF0ZUN1ckF0dHIoCiAgICAgICAgVmVyc2lvbiAgICAgPT4gXCVWZXJzaW9uLAogICAgICAgIExhc3RWZXJzaW9uID0+ICRMYXN0VmVyc2lvbiwKICAgICAgICBWZXJzaW9uSUQgICA9PiAkVmVyc2lvbklELAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgQ29uZmlnSXRlbUdldCB3aXRob3V0IGR5bmFtaWMgZmllbGRzCiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gam9pbigKICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb257Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgREZEYXRhICAgICAgID0+IDAsCiAgICAgICAgKSwKICAgICk7CgogICAgIyB0cmlnZ2VyIFZlcnNpb25DcmVhdGUgZXZlbgogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb257Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIE9sZERlcGxTdGF0ZSA9PiAkTGFzdFZlcnNpb24tPntDdXJEZXBsU3RhdGV9LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15IEBVcGRhdGVkRHluYW1pY0ZpZWxkczsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFkZWZpbmVkICRWZXJzaW9ueyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnTGVucycgJiYgISRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gJiYgZXhpc3RzICRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSwKICAgICAgICApOwoKICAgICAgICAjIG9ubHkgdGhyb3cgZXZlbnRzIGZvciBmaWVsZHMgY2hhbmdlZCBmcm9tIHRoZSBsYXN0IHZlcnNpb24gLSBjaGVja2VkIGJ5IENvbmZpZ0l0ZW1VcGRhdGUoKQogICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgZXhpc3RzICRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQFVwZGF0ZWREeW5hbWljRmllbGRzLCAkRHluYW1pY0ZpZWxkLT57TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB2ZXJzaW9uIGRhdGEgd2l0aCBhY3R1YWwgZHluYW1pYyBmaWVsZCB2YWx1ZXMKICAgICAgICAjIGltcG9ydGFudCBpbiBjYXNlIG9mIHJlZmVyZW5jZSBmaWVsZHMKICAgICAgICBpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gJiYgJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW1wb3J0U2VhcmNoQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFZlcnNpb257ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgQ29uZmlnSXRlbUdldCB3aXRoIGR5bmFtaWMgZmllbGRzCiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAxLAogICAgICAgICksCiAgICApOwoKICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWREeW5hbWljRmllbGRzKSB7CgogICAgICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5CiAgICAgICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICApOwogICAgICAgIG15ICRSZWFkYWJsZU9sZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJExhc3RWZXJzaW9uLT57ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUcmlnZ2VyIGR5bmFtaWMgZmllbGQgdXBkYXRlIGV2ZW50LgogICAgICAgICMgVGhpcyBtaWdodCB1cGRhdGUgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4KICAgICAgICAjIEFsc28gcGFzcyBpbiB0aGUgbGFzdCB2ZXJzaW9uIGluIG9yZGVyIHRvIGFsbG93IGZvciBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gdGhlIGxhc3QgdmVyc2lvbiBpcyBjaGFuZ2VkLgogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXycgLiAkTmFtZSwKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgRmllbGROYW1lICAgICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICAgICAgICAgIE9sZFZhbHVlICAgICAgICAgICAgICAgID0+ICRMYXN0VmVyc2lvbi0+eyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9LAogICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSAgICAgICAgICAgPT4gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBSZWFkYWJsZU9sZFZhbHVlICAgICAgICA9PiAkUmVhZGFibGVPbGRWYWx1ZS0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxhc3RWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW1zCiAgICBpZiAoJFJlY2FsY0N1ckluY2lTdGF0ZSkgewogICAgICAgICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVmVyc2lvbntDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9uSUQ7Cn0KCj1oZWFkMiBWZXJzaW9uVXBkYXRlKCkKCnVwZGF0ZSBhIHZlcnNpb24KCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25VcGRhdGUoCiAgICAgICAgVmVyc2lvbklEICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICA9PiB7Li4ufSAgICAgICAgICAjIGVpdGhlciBWZXJzaW9uSUQgb3IgVmVyc2lvbiBpcyBtYW5kYXRvcnkKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICA9PiAxMjMsICAgICAgICAgICAjIG9wdGlvbmFsLCBJRCBvZiB0aGUgZGVmaW5pdGlvbiB3aGljaCB3YXMgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIGlucHV0CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnVGhlIE5hbWUnLCAgICAjIG9wdGlvbmFsCiAgICAgICAgVmVyc2lvblN0cmluZyAgICAgICAgICA9PiAnVGhlIFZlcnNpb24nLCAjIG9wdGlvbmFsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICA9PiA4LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICA9PiA0LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICA9PiAnQUJDRCcsICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkXzwkREZOYW1lPiA9PiAkVmFsdWUsICAgICAgICAjIG9wdGlvbmFsLCBvbmUgcGFyYW1ldGVyIGZvciBlYWNoIGR5bmFtaWMgZmllbGQgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWQKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWZXJzaW9uID0gJFBhcmFte1ZlcnNpb259IHx8ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBdHRyaWJ1dGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFZlcnNpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFZlcnNpb24gb3IgVmVyc2lvbklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRWZXJzaW9uLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICROYW1lTW9kdWxlT2JqZWN0OwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OiROYW1lTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbi0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICROYW1lTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOYW1lOjokTmFtZU1vZHVsZSIpOwoKICAgICAgICAjIFRPRE86IEltcHJvdmUgYmVoYXZpb3VyIG9mIG1vZHVsZXMgd2hpY2ggYWxsb3cgbmFtZSByZXVzYWdlIGFuZCBkbyBub3QgYWx3YXlzIGRlbGV0ZSBhbmQgcmVjcmVhdGUgbmFtZXMKICAgICAgICAjIEluIGNhc2Ugd2UgaGF2ZSBhIG5hbWUgbW9kdWxlIHdoaWNoIGNyZWF0ZXMgbmFtZXMgaW5jcmVtZW50YWxseSwgd2UgY3VycmVudGx5IGhhdmUgdG8gZGVsZXRlIGZpcnN0IGFuZCByZWNyZWF0ZSB0aGVuCiAgICAgICAgaWYgKCAkTmFtZU1vZHVsZU9iamVjdC0+Y2FuKCdDb25maWdJdGVtTmFtZURlbGV0ZScpICkgewogICAgICAgICAgICAkTmFtZU1vZHVsZU9iamVjdC0+Q29uZmlnSXRlbU5hbWVEZWxldGUoICRWZXJzaW9uLT57TmFtZX0gKTsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtOYW1lfSA9ICROYW1lTW9kdWxlT2JqZWN0LT5Db25maWdJdGVtTmFtZUNyZWF0ZSgKICAgICAgICAgICAgJFZlcnNpb24tPiUqLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgJiYgJFBhcmFte05hbWV9IG5lICRWZXJzaW9uLT57TmFtZX0gKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkVmVyc2lvbi0+e0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RvcCBwcm9jZXNzaW5nIGlmIHRoZSBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkRHVwbGljYXRlcyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdDsKICAgIG15ICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uU3RyaW5nTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCRWZXJzaW9uU3RyaW5nTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6JFZlcnNpb25TdHJpbmdNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbi0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpOwoKICAgICAgICAjIG92ZXJyaWRlIHBvc3NpYmxlIGluY29taW5nIHZlcnNpb24gc3RyaW5nCiAgICAgICAgJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSA9ICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0LT5WZXJzaW9uU3RyaW5nR2V0KAogICAgICAgICAgICBWZXJzaW9uID0+IHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT4lKiwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDYWNoZU9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAwOwoKICAgIGlmICggYW55IHsgZGVmaW5lZCAkUGFyYW17JF99IH0gcXcvTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlZmluaXRpb25JRCBEZXNjcmlwdGlvbi8gKSB7CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9OYW1lIFZlcnNpb25TdHJpbmcgRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgRGVmaW5pdGlvbklEIERlc2NyaXB0aW9uLykgewogICAgICAgICAgICAkUGFyYW17JEF0dHJpYnV0ZX0gfHw9ICRWZXJzaW9uLT57JEF0dHJpYnV0ZX07CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSBleGlzdGluZyB2ZXJzaW9uCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClVQREFURSBjb25maWdpdGVtX3ZlcnNpb24KICBTRVQgbmFtZSA9ID8sIHZlcnNpb25fc3RyaW5nID0gPywgZGVmaW5pdGlvbl9pZCA9ID8sIGRlcGxfc3RhdGVfaWQgPSA/LCBpbmNpX3N0YXRlX2lkID0gPywgZGVzY3JpcHRpb24gPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgV0hFUkUgaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFBhcmFte05hbWV9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtWZXJzaW9uU3RyaW5nfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFwkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHVubGVzcyAkVXBkYXRlU3VjY2VzczsKCiAgICAgICAgIyBUaGUgY29uZmlnIGl0ZW0gaXMgb25seSBhZmZlY3RlZCB3aGVuIHRoZSBsYXN0IHZlcnNpb24gd2FzIG1vZGlmaWVkCiAgICAgICAgaWYgKCAkVmVyc2lvbi0+e1ZlcnNpb25JRH0gZXEgJFZlcnNpb24tPntMYXN0VmVyc2lvbklEfSApIHsKICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAkUmVjYWxjQ3VySW5jaVN0YXRlID0gJFNlbGYtPl9VcGRhdGVDdXJBdHRyKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uID0+ICRWZXJzaW9uLAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgPT4gJFZlcnNpb24tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgYmFzZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgID0+IDAsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb24tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oICc6OicsICdWZXJzaW9uTmFtZUdldCcsIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0gKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdHJpZ2dlciBWZXJzaW9uVXBkYXRlIGV2ZW50CiAgICAgICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgICAgICBFdmVudCA9PiAnVmVyc2lvblVwZGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJFZlcnNpb24tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgIE9sZERlcGxTdGF0ZSA9PiAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXRlc3QgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzCiAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFZlcnNpb24tPntDbGFzc0lEfSwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSBAVXBkYXRlZER5bmFtaWNGaWVsZHM7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBrZXlzICVQYXJhbSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJEF0dHJpYnV0ZSA9fiBtL15EeW5hbWljRmllbGRfKC4rKS87CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskMX07CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JDF9OwoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9LAogICAgICAgICk7CgogICAgICAgIGlmICgkU3VjY2VzcykgewogICAgICAgICAgICBwdXNoIEBVcGRhdGVkRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZC0+e05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdmVyc2lvbiBkYXRhIHdpdGggYWN0dWFsIGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgIyBpbXBvcnRhbnQgaW4gY2FzZSBvZiByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICYmICREeW5hbWljRmllbGQtPntDb25maWd9e0ltcG9ydFNlYXJjaEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFteyRBdHRyaWJ1dGV9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgZHluYW1pYyBmaWVsZHMsIHRvbwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICA9PiAxLAogICAgICAgICksCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAxLAogICAgICAgICksCiAgICApOwoKICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWREeW5hbWljRmllbGRzKSB7CgogICAgICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5CiAgICAgICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkUmVhZGFibGVPbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyROYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uLT57ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUcmlnZ2VyIHRoZSBkeW5hbWljIGZpZWxkIHVwZGF0ZSBldmVudC4KICAgICAgICAjIFRoaXMgbWlnaHQgdXBkYXRlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuCiAgICAgICAgIyBBbHNvIHBhc3MgaW4gdGhlIGxhc3QgdmVyc2lvbiBpbiBvcmRlciB0byBhbGxvdyBmb3Igc3BlY2lhbCBoYW5kbGluZyB3aGVuIHRoZSBsYXN0IHZlcnNpb24gaXMgY2hhbmdlZC4KICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV8nIC4gJE5hbWUsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIEZpZWxkTmFtZSAgICAgICAgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgPT4gJFBhcmFteyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9LAogICAgICAgICAgICAgICAgT2xkVmFsdWUgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgICAgICAgICAgID0+ICRSZWFkYWJsZVZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICAgICAgUmVhZGFibGVPbGRWYWx1ZSAgICAgICAgPT4gJFJlYWRhYmxlT2xkVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICA9PiAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUmVjYWxjQ3VySW5jaVN0YXRlKSB7CgogICAgICAgICMgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgYWxsIGxpbmtlZCBjb25maWcgaXRlbXMKICAgICAgICAkU2VsZi0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb24tPntDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWZXJzaW9uRGVsZXRlKCkKCmRlbGV0ZSBhbiBleGlzdGluZyB2ZXJzaW9uIG9yIHZlcnNpb25zCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCm9yCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSURzID0+IFsgMSwgMiwgMywgNCBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkRlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1ZlcnNpb25JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtSUR9ICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQsIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZlcnNpb25MaXN0ID0gW107CiAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgIHB1c2ggQHskVmVyc2lvbkxpc3R9LCAkUGFyYW17VmVyc2lvbklEfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1ZlcnNpb25JRHN9ICkgewogICAgICAgIHB1c2ggQHskVmVyc2lvbkxpc3R9LCBAeyAkUGFyYW17VmVyc2lvbklEc30gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICRWZXJzaW9uTGlzdCA9ICRTZWxmLT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIXNjYWxhciBAeyRWZXJzaW9uTGlzdH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gaWQgZm9yIHZlcnNpb24gKG5lZWRlZCBmb3IgZXZlbnQgaGFuZGxpbmcpCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyB0byBzdG9yZSB1bmlxdWUgY29uZmlnIGl0ZW0gaWRzIGlmIHRoZXJlIGFyZSB2ZXJzaW9ucyBmcm9tIGRpZmZlcmVudCBjb25maWcgaXRlbXMKICAgIG15ICVDb25maWdJdGVtSURzOwoKICAgIG15ICRTdWNjZXNzOwogICAgZm9yIG15ICRWZXJzaW9uSUQgKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZ2l0ZW0gaWQgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSB8fCAkUGFyYW17VmVyc2lvbklEc30gKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkU2VsZi0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgdW5pcXVlIGNvbmZpZyBpdGVtIGlkcwogICAgICAgICRDb25maWdJdGVtSURzeyRDb25maWdJdGVtSUR9ID0gMTsKCiAgICAgICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBhdHRhY2htZW50cwogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJFNlbGYtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0gdmVyc2lvbgogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGRlbGV0ZSB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRGVsZXRpb25TdWNjZXNzID0gJFNlbGYtPlZlcnNpb25BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJERlbGV0aW9uU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVua25vd24gcHJvYmxlbSB3aGVuIGRlbGV0aW5nIGF0dGFjaG1lbnQgJEZpbGVuYW1lIG9mIENvbmZpZ0l0ZW0gVmVyc2lvbiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIiRWZXJzaW9uSUQuIFBsZWFzZSBjaGVjayB0aGUgVmlydHVhbEZTIGJhY2tlbmQgZm9yIHN0YWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiZmlsZXMhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvciB0aGlzIHZlcnNpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKS0+T2JqZWN0VmFsdWVzRGVsZXRlKAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIE9iamVjdElEICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB2ZXJzaW9uCiAgICAgICAgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRWZXJzaW9uSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIHRyaWdnZXIgVmVyc2lvbkRlbGV0ZSBldmVudCB3aGVuIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsCiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICAgICAgRXZlbnQgPT4gJ1ZlcnNpb25EZWxldGUnLAogICAgICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGFmZmVjdGVkIGNhY2hlcwogICAgICAgICAgICBmb3IgbXkgJERGRGF0YSAocXcoMCAxKSkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICAgICBERkRhdGEgICAgPT4gJERGRGF0YQogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oICc6OicsICdWZXJzaW9uTmFtZUdldCcsIFZlcnNpb25JRCA9PiAkVmVyc2lvbklEICksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uQ29uZmlnSXRlbUlER2V0fS0+eyRWZXJzaW9uSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBkZWxldGUgYWZmZWN0ZWQgY2FjaGVzIGZvciBDb25maWdJdGVtSUQgKG1vc3QgcmVjZW50IHZlcnNpb24gbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQpCiAgICAgICAgZm9yIG15ICRERkRhdGEgKHF3KDAgMSkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgICAgIEtleSAgPT4gam9pbigKICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgICAgID0+ICRERkRhdGEKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiBqb2luKCAnOjonLCAnVmVyc2lvbk5hbWVHZXQnLCBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgVmVyc2lvblNlYXJjaCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFuIGFycmF5IHJlZmVyZW5jZQoKICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25TZWFyY2goCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdUaGUgTmFtZScsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgOSwgOCwgNywgNiBdLCAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgMzIxLCAxMjMgXSwgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgMzIxLCAxMjMgXSwgICAgIyAob3B0aW9uYWwpCgogICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLCAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0NvbmZpZ0l0ZW1JRCcsICdOdW1iZXInIF0sICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdDb25maWdJdGVtSUQnIF0KICAgICAgICAjIChDb25maWdJdGVtSUQsIE5hbWUsIE51bWJlciwgQ2xhc3NJRCwgRGVwbFN0YXRlSUQsIEluY2lTdGF0ZUlECiAgICAgICAgIyBDcmVhdGVUaW1lLCBDcmVhdGVCeSwgQ2hhbmdlVGltZSwgQ2hhbmdlQnkpCgogICAgICAgICMgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgT3JkZXJCeToKICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRpY2VzLgoKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJ1VwJywgJ0Rvd24nIF0sICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ1VwJyBdCiAgICAgICAgIyAoRG93biB8IFVwKQoKICAgICAgICBMaW1pdCAgICAgICAgICA9PiAxMjIsICAjIChvcHRpb25hbCkKICAgICAgICBVc2luZ1dpbGRjYXJkcyA9PiAwLCAgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlcwogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewogICAgICAgICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gPSAxOwogICAgfQoKICAgICMgdmVyaWZ5IHRoYXQgYWxsIHBhc3NlZCBhcnJheSBwYXJhbWV0ZXJzIGNvbnRhaW4gYW4gYXJyYXlyZWYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAoCiAgICAgICAgcXcoCiAgICAgICAgICAgIE9yZGVyQnkKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbgogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IG9yZGVyIGFuZCBvcmRlciBkaXJlY3Rpb24KICAgIGlmICggIUB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewogICAgICAgICRQYXJhbXtPcmRlckJ5fSA9IFsnQ29uZmlnSXRlbUlEJ107CiAgICB9CiAgICBpZiAoICFAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gPSBbJ1VwJ107CiAgICB9CgogICAgIyBkZWZpbmUgb3JkZXIgdGFibGUKICAgIG15ICVPcmRlckJ5VGFibGUgPSAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICd2ci5jb25maWdpdGVtX2lkJywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ3ZyLm5hbWUnLAogICAgICAgIE51bWJlciAgICAgICA9PiAnY2kuY29uZmlnaXRlbV9udW1iZXInLAogICAgICAgIENsYXNzSUQgICAgICA9PiAnY2kuY2xhc3NfaWQnLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAndnIuZGVwbF9zdGF0ZV9pZCcsCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICd2ci5pbmNpX3N0YXRlX2lkJywKICAgICAgICBDcmVhdGVUaW1lICAgPT4gJ2NpLmNyZWF0ZV90aW1lJywKICAgICAgICBDcmVhdGVCeSAgICAgPT4gJ2NpLmNyZWF0ZV9ieScsCgogICAgICAgICMgdGhlIGNoYW5nZSB0aW1lIG9mIHRoZSBDSSBpcyB0aGUgc2FtZSBhcyB0aGUgY3JlYXRlIHRpbWUgb2YgdGhlIHZlcnNpb24hCiAgICAgICAgQ2hhbmdlVGltZSA9PiAndnIuY3JlYXRlX3RpbWUnLAoKICAgICAgICBDaGFuZ2VCeSA9PiAnY2kuY2hhbmdlX2J5JywKICAgICk7CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnlEaXJlY3Rpb24gYXJyYXkgY29udGFpbnMgb25seSAnVXAnIG9yICdEb3duJwogICAgRElSRUNUSU9OOgogICAgZm9yIG15ICREaXJlY3Rpb24gKCBAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBvbmx5ICdVcCcgb3IgJ0Rvd24nIGFsbG93ZWQKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdVcCc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnRG93bic7CgogICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnlEaXJlY3Rpb24gY2FuIG9ubHkgY29udGFpbiAnVXAnIG9yICdEb3duJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNzZW1ibGUgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgbXkgQFNRTE9yZGVyQnk7CiAgICBteSAkQ291bnQgPSAwOwogICAgbXkgQE9yZGVyQnlTZWxlY3RDb2x1bW5zOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAgICAgICAgICAgIiRPcmRlckJ5VGFibGV7JE9yZGVyQnl9ICREaXJlY3Rpb24iOwogICAgICAgIHB1c2ggQE9yZGVyQnlTZWxlY3RDb2x1bW5zLCAkT3JkZXJCeVRhYmxleyRPcmRlckJ5fTsKCiAgICB9CiAgICBjb250aW51ZSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgIyBnZXQgbGlrZSBlc2NhcGUgc3RyaW5nIG5lZWRlZCBmb3Igc29tZSBkYXRhYmFzZXMgKGUuZy4gb3JhY2xlKQogICAgbXkgJExpa2VFc2NhcGVTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+R2V0RGF0YWJhc2VGdW5jdGlvbignTGlrZUVzY2FwZVN0cmluZycpOwoKICAgICMgYWRkIG5hbWUgdG8gc3FsIHdoZXJlIGFycmF5CiAgICBteSBAU1FMV2hlcmU7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICYmICRQYXJhbXtOYW1lfSBuZSAnJyApIHsKCiAgICAgICAgIyBkdXBsaWNhdGUgdGhlIG5hbWUKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtOYW1lfTsKCiAgICAgICAgIyBxdW90ZQogICAgICAgICROYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCROYW1lKTsKCiAgICAgICAgaWYgKCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewoKICAgICAgICAgICAgIyBwcmVwYXJlIGxpa2Ugc3RyaW5nCiAgICAgICAgICAgICRTZWxmLT5fUHJlcGFyZUxpa2VTdHJpbmcoIFwkTmFtZSApOwoKICAgICAgICAgICAgcHVzaCBAU1FMV2hlcmUsICJMT1dFUih2ci5uYW1lKSBMSUtFIExPV0VSKCckTmFtZScpICRMaWtlRXNjYXBlU3RyaW5nIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQFNRTFdoZXJlLCAiTE9XRVIodnIubmFtZSkgPSBMT1dFUignJE5hbWUnKSI7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGFycmF5IHBhcmFtcwogICAgbXkgJUFycmF5UGFyYW1zID0gKAogICAgICAgIENsYXNzSURzICAgICA9PiAnY2kuaWQgPSB2ci5jb25maWdpdGVtX2lkIEFORCBjaS5jbGFzc19pZCcsCiAgICAgICAgRGVwbFN0YXRlSURzID0+ICd2ci5kZXBsX3N0YXRlX2lkJywKICAgICAgICBJbmNpU3RhdGVJRHMgPT4gJ3ZyLmluY2lfc3RhdGVfaWQnLAogICAgKTsKCiAgICBBUlJBWVBBUkFNOgogICAgZm9yIG15ICRBcnJheVBhcmFtICggc29ydCBrZXlzICVBcnJheVBhcmFtcyApIHsKCiAgICAgICAgbmV4dCBBUlJBWVBBUkFNIGlmICEkUGFyYW17JEFycmF5UGFyYW19OwoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFycmF5UGFyYW19IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJyYXlQYXJhbSBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBuZXh0IEFSUkFZUEFSQU0gaWYgIUB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfTsKCiAgICAgICAgIyBxdW90ZSBhcyBpbnRlZ2VyCiAgICAgICAgZm9yIG15ICRPbmVQYXJhbSAoIEB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfSApIHsKICAgICAgICAgICAgJE9uZVBhcmFtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkT25lUGFyYW0sICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiBxeywgfSwgQHsgJFBhcmFteyRBcnJheVBhcmFtfSB9OwoKICAgICAgICBwdXNoIEBTUUxXaGVyZSwgIiRBcnJheVBhcmFtc3sgJEFycmF5UGFyYW0gfSBJTiAoJEluU3RyaW5nKSI7CiAgICB9CgogICAgIyBhZGQgcHJldmlvdXMgdmVyc2lvbiBwYXJhbQogICAgaWYgKCAhJFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gKSB7CiAgICAgICAgcHVzaCBAU1FMV2hlcmUsICdjaS5sYXN0X3ZlcnNpb25faWQgPSB2ci5pZCc7CiAgICB9CgogICAgIyBjcmVhdGUgd2hlcmUgc3RyaW5nCiAgICBteSAkV2hlcmVTdHJpbmcgPSBAU1FMV2hlcmUgPyAnIFdIRVJFICcgLiBqb2luIHF7IEFORCB9LCBAU1FMV2hlcmUgOiAnJzsKCiAgICAjIHNldCBsaW1pdCwgcXVvdGUgYXMgaW50ZWdlcgogICAgaWYgKCAkUGFyYW17TGltaXR9ICkgewogICAgICAgICRQYXJhbXtMaW1pdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICRQYXJhbXtMaW1pdH0sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICMgYWRkIHRoZSBvcmRlciBieSBjb2x1bW5zIGFsc28gdG8gdGhlIHNlbGVjdGVkIGNvbHVtbnMKICAgIG15ICRPcmRlckJ5U2VsZWN0U3RyaW5nID0gJyc7CiAgICBpZiAoQE9yZGVyQnlTZWxlY3RDb2x1bW5zKSB7CiAgICAgICAgJE9yZGVyQnlTZWxlY3RTdHJpbmcgPSBqb2luICcsICcsIEBPcmRlckJ5U2VsZWN0Q29sdW1uczsKICAgICAgICAkT3JkZXJCeVNlbGVjdFN0cmluZyA9ICcsICcgLiAkT3JkZXJCeVNlbGVjdFN0cmluZzsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICJTRUxFQ1QgRElTVElOQ1QgdnIuY29uZmlnaXRlbV9pZCAkT3JkZXJCeVNlbGVjdFN0cmluZyAiCiAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtIGNpLCBjb25maWdpdGVtX3ZlcnNpb24gdnIgJwogICAgICAgIC4gJFdoZXJlU3RyaW5nOwoKICAgICMgYWRkIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIGlmIChAU1FMT3JkZXJCeSkgewogICAgICAgICRTUUwgLj0gJyBPUkRFUiBCWSAnOwogICAgICAgICRTUUwgLj0gam9pbiAnLCAnLCBAU1FMT3JkZXJCeTsKICAgICAgICAkU1FMIC49ICcgJzsKICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICB3aGlsZSAoIG15ICgkSWQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBDb25maWdJdGVtTGlzdCwgJElkOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgVmVyc2lvbkF0dGFjaG1lbnRBZGQoKQoKYWRkcyBhbiBhdHRhY2htZW50IHRvIGEgY29uZmlnIGl0ZW0KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICBWZXJzaW9uSUQgICAgPT4gMSwKICAgICAgICBGaWxlbmFtZSAgICAgICAgPT4gJ2ZpbGVuYW1lJywKICAgICAgICBDb250ZW50ICAgICAgICAgPT4gJ2NvbnRlbnQnLAogICAgICAgIENvbnRlbnRUeXBlICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uSUQgRmlsZW5hbWUgQ29udGVudCBDb250ZW50VHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgd3JpdGUgdG8gdmlydHVhbCBmcwogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPldyaXRlKAogICAgICAgIEZpbGVuYW1lICAgID0+ICJDb25maWdJdGVtVmVyc2lvbi8kUGFyYW17VmVyc2lvbklEfS8kUGFyYW17RmlsZW5hbWV9IiwKICAgICAgICBNb2RlICAgICAgICA9PiAnYmluYXJ5JywKICAgICAgICBDb250ZW50ICAgICA9PiBcJFBhcmFte0NvbnRlbnR9LAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29udGVudElEICAgPT4gJFBhcmFte0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIFZlcnNpb25JRCAgID0+ICRQYXJhbXtWZXJzaW9uSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW5ub3QgYWRkIGF0dGFjaG1lbnQgZm9yIGNvbmZpZyBpdGVtIHZlcnNpb24gJFBhcmFte1ZlcnNpb25JRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZlcnNpb25BdHRhY2htZW50RGVsZXRlKCkKCkRlbGV0ZSB0aGUgZ2l2ZW4gZmlsZSBmcm9tIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywgICAgICAgICAgICAgICAjIHVzZWQgaW4gZXZlbnQgaGFuZGxpbmcsIGUuZy4gZm9yIGxvZ2dpbmcgdGhlIGhpc3RvcnkKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ1Byb2plY3RwbGFuLnBkZicsICMgaWRlbnRpZmllcyB0aGUgYXR0YWNobWVudCAodG9nZXRoZXIgd2l0aCB0aGUgVmVyc2lvbklEKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbklEIEZpbGVuYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGRlbGV0ZSBmaWxlCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RGVsZXRlKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgZXJyb3IKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGRlbGV0ZSBhdHRhY2htZW50ICRGaWxlbmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBWZXJzaW9uQXR0YWNobWVudEdldCgpCgpUaGlzIG1ldGhvZCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IG9uZSBzcGVjaWZpYyBhdHRhY2htZW50LgoKICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgIFZlcnNpb25JRCA9PiA0LAogICAgICAgIEZpbGVuYW1lICAgICA9PiAndGVzdC50eHQnLAogICAgKTsKCnJldHVybnMKCiAgICB7CiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBBbGxQcmVmZXJlbmNlcyA9PiAndGVzdCcsCiAgICAgICAgfSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAndGVzdC50eHQnLAogICAgICAgIENvbnRlbnQgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgRmlsZXNpemUgICAgPT4gMTIzNDg0MDksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgfQoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFZlcnNpb25JRCBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgaWYgKCAhQEF0dGFjaG1lbnRzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5SZWFkKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBNb2RlICAgICA9PiAnYmluYXJ5JywKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJbmZvID0gewogICAgICAgICVBdHRhY2htZW50RGF0YSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50fSB9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntDb250ZW50VHlwZX0sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgIEZpbGVzaXplICAgID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntGaWxlc2l6ZVJhd30sCiAgICB9OwoKICAgIHJldHVybiAkQXR0YWNobWVudEluZm87Cn0KCj1oZWFkMiBWZXJzaW9uQXR0YWNobWVudExpc3QoKQoKUmV0dXJucyBhbiBhcnJheSB3aXRoIGFsbCBhdHRhY2htZW50cyBvZiB0aGUgZ2l2ZW4gY29uZmlnIGl0ZW0uCgogICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICBAQXR0YWNobWVudHMgPSAoCiAgICAgICAgJ2ZpbGVuYW1lLnR4dCcsCiAgICAgICAgJ290aGVyX2ZpbGUucGRmJywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkF0dGFjaG1lbnRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBmaW5kIGFsbCBhdHRhY2htZW50cyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSBAQXR0YWNobWVudHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkZpbmQoCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgcmVtb3ZlIGV4dHJhIGluZm9ybWF0aW9uIGZyb20gZmlsZW5hbWUKICAgICAgICAkRmlsZW5hbWUgPX4gc3sgXEEgQ29uZmlnSXRlbVZlcnNpb24gLyBcZCsgLyB9e314bXM7CiAgICB9CgogICAgcmV0dXJuIEBBdHRhY2htZW50czsKfQoKPWhlYWQyIFZlcnNpb25BdHRhY2htZW50RXhpc3RzKCkKCkNoZWNrcyBpZiBhIGZpbGUgd2l0aCBhIGdpdmVuIGZpbGVuYW1lIGV4aXN0cy4KCiAgICBteSAkRXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50RXhpc3RzKAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC50eHQnLAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhGaWxlbmFtZSBWZXJzaW9uSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSA9PiAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfVXBkYXRlQ3VyQXR0ciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDdXJJbmNpU3RhdGVJRDsKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAwOwoKICAgICMgaWYgdGhlIGxhc3QgdmVyc2lvbiBkb2VzIG5vdCB5ZXQgaGF2ZSBhIEN1ckluY2lTdGF0ZUlEIHlldCB0aGUgQ29uZmlnSXRlbSBpcyBuZXcKICAgICMgc2V0IGN1cnJlbnQgSW5jaVN0YXRlSUQ7IHJlY2FsY3VsYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAobm8gbGlua3MgY2FuIGV4aXN0IHlldCkKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0xhc3RWZXJzaW9ufXtDdXJJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFBhcmFte1ZlcnNpb259e0luY2lTdGF0ZUlEfTsKICAgIH0KCiAgICAjIGlmIHRoZSBjb25maWcgaXRlbSB1cGRhdGUgZG9lcyBub3QgY2hhbmdlIHRoZSBJbmNpU3RhdGVJRAogICAgIyB3ZSBqdXN0IGtlZXAgdGhlIEN1ckluY2lTdGF0ZUlEOyBubyByZWNhbGN1bGF0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtWZXJzaW9ufXtJbmNpU3RhdGVJRH0gZXEgJFBhcmFte0xhc3RWZXJzaW9ufXtJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFBhcmFte0xhc3RWZXJzaW9ufXtDdXJJbmNpU3RhdGVJRH07CiAgICB9CgogICAgIyBpZiB0aGUgaW5jaWRlbnQgc3RhdGUgY2hhbmdlcywgd2Ugc3RhcnQgdGhlIHJlY2FsY3VsYXRpb24KICAgICMgd2UgZG8gbm90IHRlc3QgZm9yIGNhc2VzIGxpa2Ugc2FtZSBJbmNpU3RhdGVUeXBlLCBvciBuZXcgSW5jaVN0YXRlIGVxIGxhc3QgQ3VySW5jaVN0YXRlCiAgICBlbHNlIHsKICAgICAgICAkQ3VySW5jaVN0YXRlSUQgICAgID0gJFBhcmFte1ZlcnNpb259e0luY2lTdGF0ZUlEfTsKICAgICAgICAkUmVjYWxjQ3VySW5jaVN0YXRlID0gMTsKICAgIH0KCiAgICAjIFVwZGF0ZSBsYXN0IHZlcnNpb24sIGN1cl9pbmNpX3N0YXRlX2lkLCBjdXJfZGVwbF9zdGF0ZV9pZCBvZiB0aGUgY29uZmlnIGl0ZW0uCiAgICAjIGN1cl9pbmNpX3N0YXRlX2lkIGlzIG5lZWRlZCBieSBDdXJJbmNpU3RhdGVSZWNhbGMoKS4KICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKVVBEQVRFIGNvbmZpZ2l0ZW0KICBTRVQKICAgIGxhc3RfdmVyc2lvbl9pZCAgID0gPywKICAgIGN1cl9pbmNpX3N0YXRlX2lkID0gPywKICAgIGN1cl9kZXBsX3N0YXRlX2lkID0gPywKICAgIGNoYW5nZV90aW1lICAgICAgID0gY3VycmVudF90aW1lc3RhbXAsCiAgICBjaGFuZ2VfYnkgICAgICAgICA9ID8KICBXSEVSRSBpZCA9ID8KRU5EX1NRTAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFwkQ3VySW5jaVN0YXRlSUQsCiAgICAgICAgICAgIFwkUGFyYW17VmVyc2lvbn17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgY3VycmVudCBhdHRyaWJ1dGVzIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRSZWNhbGNDdXJJbmNpU3RhdGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/VersionString/Incremental.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6SW5jcmVtZW50YWw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OkluY3JlbWVudGFsIC0gVXNpbmcgYSBjb3VudGVyIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKbXkgJFZlcnNpb25TdHJpbmdNb2R1bGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OkluY3JlbWVudGFsJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcygge30sICRUeXBlICk7Cn0KCnN1YiBWZXJzaW9uU3RyaW5nR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWZXJzaW9ufXtWZXJzaW9uU3RyaW5nfSBpZiAoICRQYXJhbXtWZXJzaW9ufXtWZXJzaW9uU3RyaW5nfSAmJiAhJFBhcmFte1ZlcnNpb25BZGR9ICk7CgogICAgIyBleHBlY3RlZCBwYXJhbXM6IFZlcnNpb24KICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJFBhcmFte1ZlcnNpb259e0NvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uTGlzdFJlZik7CgogICAgbXkgJEluaXRpYWxWZXJzaW9uU3RyaW5nID0gKCBzY2FsYXIga2V5cyAkVmVyc2lvbkxpc3RSZWYtPnsgJFBhcmFte1ZlcnNpb259e0NvbmZpZ0l0ZW1JRH0gfS0+JSogKSArIDE7CiAgICBteSAkVmVyc2lvblN0cmluZzsKICAgIHdoaWxlICggIWRlZmluZWQgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgaWYgKCBncmVwIHsgJF8tPntWZXJzaW9uU3RyaW5nfSBlcSAkSW5pdGlhbFZlcnNpb25TdHJpbmcgfSB2YWx1ZXMgJFZlcnNpb25MaXN0UmVmLT57ICRQYXJhbXtWZXJzaW9ufXtDb25maWdJdGVtSUR9IH0tPiUqICkgewogICAgICAgICAgICAkSW5pdGlhbFZlcnNpb25TdHJpbmcrKzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRWZXJzaW9uU3RyaW5nID0gJEluaXRpYWxWZXJzaW9uU3RyaW5nOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFZlcnNpb25TdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/VersionString/TemplateToolkit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0IC0gRXZhbHVhdGluZyBhIFRlbXBsYXRlOjpUb29sa2l0IGV4cHJlc3Npb24gZm9yIHRoZSB2ZXJzaW9uIHN0cmluZwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdC4gRG8gbm90IHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCB1c2U6CgpteSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcygge30sICRUeXBlICk7Cn0KCnN1YiBWZXJzaW9uU3RyaW5nR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1ZlcnNpb259ICk7CiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtWZXJzaW9ufXtDbGFzc0lEfTsKCiAgICAjIGZldGNoIGV4cHJlc3Npb24gZnJvbSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgcHJlZmVyZW5jZXMKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufXtDbGFzc0lEfSwKICAgICk7CiAgICByZXR1cm4gdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSggJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ0V4cHJlc3Npb259ICk7CgogICAgIyBldmFsdWF0ZSBleHByZXNzaW9uIGRlZmluZWQgaW4gc3lzY29uZmlnCiAgICBteSAkVmVyc2lvblN0cmluZyA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25TdHJpbmdFeHByZXNzaW9ufVswXSwKICAgICAgICBEYXRhICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJFZlcnNpb25TdHJpbmc7CgogICAgIyByZW1vdmUgbmV3bGluZXMgYW5kIGNhcnJpYWdlIHJldHVybnMgdG8gZW5hYmxlIG1hdGNoaW5nIHdpdGggZWRpdCBmaWVsZCB2YWx1ZQogICAgJFZlcnNpb25TdHJpbmcgPX4gcy8oXG58XHIpLy9nOwoKICAgICMgaWYgcHJldmlvdXMgdmVyc2lvbnMgZXhpc3QsIGNoZWNrIGlmIHN0cmluZyBpcyB0YWtlbgogICAgIyBmZXRjaCB2ZXJzaW9ucwogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICBpZiAoIGdyZXAgeyAkXy0+e1ZlcnNpb25TdHJpbmd9IGVxICRWZXJzaW9uU3RyaW5nIH0gdmFsdWVzICRWZXJzaW9uTGlzdFJlZi0+eyAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSB9LT4lKiApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9uU3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ImportExport/ObjectBackend/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgRW5jb2RlOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QpOwp1c2UgTUlNRTo6QmFzZTY0ICAgcXcoZGVjb2RlX2Jhc2U2NCBlbmNvZGVfYmFzZTY0KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc1N0cmluZ1dpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzQXJyYXlSZWZXaXRoRGF0YSBJc1Bvc2l0aXZlSW50ZWdlcik7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbSAtIGltcG9ydC9leHBvcnQgYmFja2VuZCBmb3IgSVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGZ1bmN0aW9ucyB0byBpbXBvcnQgYW5kIGV4cG9ydCBJVFNNIGNvbmZpZyBpdGVtcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgT2JqZWN0QXR0cmlidXRlc0dldCgpCgpnZXQgdGhlIG9iamVjdCBhdHRyaWJ1dGVzIG9mIGFuIG9iamVjdCBhcyBhIHJlZiB0byBhbiBhcnJheSBvZiBoYXNoIHJlZmVyZW5jZXMKCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RBdHRyaWJ1dGVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0CiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDbGFzc0lEJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdDbGFzcycpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICczJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4U2V0T3V0ZXInLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50JyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBWYWx1ZURlZmF1bHQgPT4gJzAnLAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDAsCiAgICAgICAgICAgICAgICBSZWdleCAgICAgICAgPT4gcXJ7IFxBIFxkKiBceiB9eG1zLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIE1heExlbmd0aCAgICA9PiA1LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ291bnRNYXhTZXRJbm5lcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcwJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0VtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNsdWRlQXR0YWNobWVudHMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCmdldHMgdGhlIG1hcHBpbmcgYXR0cmlidXRlcyBvZiBhbiBvYmplY3QgYXMgcmVmZXJlbmNlIHRvIGFuIGFycmF5IG9mIGhhc2ggcmVmZXJlbmNlcy4KCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5NYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkQXR0cmlidXRlcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIERhdGEgPT4gWwogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJOdW1iZXIiLCBWYWx1ZSA9PiAiTnVtYmVyIiB9LAogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJOYW1lIiwgVmFsdWUgPT4gIk5hbWUiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBLZXkgPT4gIkRlcGxTdGF0ZSIsIFZhbHVlID0+ICJEZXBsb3ltZW50IFN0YXRlIiB9LAogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJJbmNpU3RhdGUiLCBWYWx1ZSA9PiAiSW5jaWRlbnQgU3RhdGUiIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIk5hbWVzcGFjZUJvZGVuLUJvZGVuZmFyYmU6OjEiLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAiTmFtZXNwYWNlQm9kZW4tQm9kZW5mYXJiZTo6MSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSA9PiAiTmFtZXNwYWNlQm9kZW4tQm9kZW5mYXJiZTo6MiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICJOYW1lc3BhY2VCb2Rlbi1Cb2RlbmZhcmJlOjoyIiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJOYW1lc3BhY2VCb2Rlbi1Cb2RlbmZhcmJlOjozIiwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIk5hbWVzcGFjZUJvZGVuLUJvZGVuZmFyYmU6OjMiLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICAgICAgICAgIFR5cGUgPT4gIlNlbGVjdGlvbiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEtleSAgID0+ICJLZXkiLAogICAgICAgICAgICBOYW1lICA9PiAiS2V5IiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSW5wdXQgPT4geyBUeXBlID0+ICJDaGVja2JveCIgfSwKICAgICAgICAgICAgS2V5ICAgPT4gIklkZW50aWZpZXIiLAogICAgICAgICAgICBOYW1lICA9PiAiSWRlbnRpZmllciIsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkT2JqZWN0RGF0YTsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICRPYmplY3REYXRhIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uIGZvciB0aGUgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIG5vIGVycm9yIGhhbmRsaW5nCiAgICByZXR1cm4gdW5sZXNzICREZWZpbml0aW9uOwogICAgcmV0dXJuIHVubGVzcyByZWYgJERlZmluaXRpb24gZXEgJ0hBU0gnOwogICAgcmV0dXJuIHVubGVzcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn07CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwoKICAgIG15IEBFbGVtZW50cyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdWZXJzaW9uIFN0cmluZycpLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGRlc2NyaXB0aW9uIGlmIGRlZmluZWQKICAgIG15ICRIYXNEZXNjcmlwdGlvbiA9ICggZ3JlcCB7ICRfLT57VHlwZX0gJiYgJF8tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nIH0gdmFsdWVzICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9LT4lKiApID8gMSA6IDA7CiAgICBpZiAoJEhhc0Rlc2NyaXB0aW9uKSB7CiAgICAgICAgcHVzaCBARWxlbWVudHMsIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXNjcmlwdGlvbicpLAogICAgICAgIH07CiAgICB9CgogICAgIyBhZGQgZWxlbWVudHMKICAgIHB1c2ggQEVsZW1lbnRzLCAkU2VsZi0+X01hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIER5bmFtaWNGaWVsZFJlZiAgICAgICA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sICAgICMgcGFnZSBsYXlvdXQgaXMgaWdub3JlZCBoZXJlCiAgICAgICAgQ291bnRNYXhMaW1pdCAgICAgICAgID0+ICRPYmplY3REYXRhLT57Q291bnRNYXh9ICAgICAgICAgfHwgMywKICAgICAgICBDb3VudE1heFNldE91dGVyTGltaXQgPT4gJE9iamVjdERhdGEtPntDb3VudE1heFNldE91dGVyfSB8fCAwLAogICAgICAgIENvdW50TWF4U2V0SW5uZXJMaW1pdCA9PiAkT2JqZWN0RGF0YS0+e0NvdW50TWF4U2V0SW5uZXJ9IHx8IDAsCiAgICApOwoKICAgIHJldHVybiBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnS2V5JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdLZXknKSwKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxARWxlbWVudHMsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJZGVudGlmaWVyJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdJZGVudGlmaWVyJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIFNlYXJjaEF0dHJpYnV0ZXNHZXQoKQoKZ2V0IHRoZSBzZWFyY2ggb2JqZWN0IGF0dHJpYnV0ZXMgb2YgYW4gb2JqZWN0IGFzIGFycmF5L2hhc2ggcmVmZXJlbmNlCgogICAgbXkgJEF0dHJpYnV0ZUxpc3QgPSAkT2JqZWN0QmFja2VuZC0+U2VhcmNoQXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkT2JqZWN0RGF0YTsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICRPYmplY3REYXRhIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uCiAgICBteSAkRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJE9iamVjdERhdGEtPntDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkRGVmaW5pdGlvbjsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICREZWZpbml0aW9uIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIFtdIHVubGVzcyByZWYgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKCiAgICAjIGdldCBkZXBsb3ltZW50IGFuZCBpbmNpZGVudCBzdGF0ZSBsaXN0cywgaWdub3JpbmcgZXJyb3JzCiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyBkZWZpbmVkICREZXBsU3RhdGVMaXN0OwoKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyBkZWZpbmVkICRJbmNpU3RhdGVMaXN0OwoKICAgIG15IEBBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTnVtYmVyJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gODAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTkxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDgwLAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDE5MSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTGltaXQnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0xpbWl0JyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gODAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTkxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlcwogICAgcHVzaCBAQXR0cmlidXRlcywgJFNlbGYtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICk7CgogICAgcmV0dXJuIFxAQXR0cmlidXRlczsKfQoKPWhlYWQyIEV4cG9ydERhdGFHZXQoKQoKZ2V0IGV4cG9ydCBkYXRhIGFzIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5IGZvciBhcnJheSByZWZlcmVuY2VzLCB0aGF0IGlzIGEgQzwyRC10YWJsZT4KCiAgICBteSAkUm93cyA9ICRPYmplY3RCYWNrZW5kLT5FeHBvcnREYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZW1wbGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRJbXBvcnRFeHBvcnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7CgogICAgIyBnZXQgb2JqZWN0IGRhdGEKICAgIG15ICRPYmplY3REYXRhID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YUdldCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIG9iamVjdCBkYXRhCiAgICBpZiAoICEkT2JqZWN0RGF0YSB8fCByZWYgJE9iamVjdERhdGEgbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAkUGFyYW17VGVtcGxhdGVJRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjbGFzcyBpZCBmcm9tIHRoZSB0ZW1wbGF0ZQogICAgewogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRDbGFzc0xpc3Q7CgogICAgICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIGNsYXNzIGlkIGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIElEcyBmb3IgdGhlIG1hcHBpbmcgaW4gdGhpcyB0ZW1wbGF0ZQogICAgbXkgJE1hcHBpbmdJRHMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nSURzIHx8IHJlZiAkTWFwcGluZ0lEcyBuZSAnQVJSQVknIHx8ICEkTWFwcGluZ0lEcy0+QCogKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gdmFsaWQgbWFwcGluZyBsaXN0IGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgdGhlIG1hcHBpbmcgb2JqZWN0IGxpc3QKICAgIG15IEBNYXBwaW5nT2JqZWN0TGlzdDsKICAgIGZvciBteSAkTWFwcGluZ0lEICggJE1hcHBpbmdJRHMtPkAqICkgewoKICAgICAgICAjIGdldCBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgbXkgJE1hcHBpbmdPYmplY3REYXRhID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFHZXQoCiAgICAgICAgICAgIE1hcHBpbmdJRCA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKCAhJE1hcHBpbmdPYmplY3REYXRhIHx8IHJlZiAkTWFwcGluZ09iamVjdERhdGEgbmUgJ0hBU0gnICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIG1hcHBpbmcgbGlzdCBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICRQYXJhbXtUZW1wbGF0ZUlEfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBNYXBwaW5nT2JqZWN0TGlzdCwgJE1hcHBpbmdPYmplY3REYXRhOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBkYXRhCiAgICBteSAkU2VhcmNoRGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkU2VhcmNoRGF0YTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRTZWFyY2hEYXRhIGVxICdIQVNIJzsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QsIGZvciB0cmFuc2xhdGluZyB0aGUgbnVtZXJpYyBJRHMgaW50byByZWFkYWJsZSBuYW1lcwogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwogICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0LCBmb3IgdHJhbnNsYXRpbmcgdGhlIG51bWVyaWMgSURzIGludG8gcmVhZGFibGUgbmFtZXMKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CiAgICBpZiAoICEkSW5jaVN0YXRlTGlzdCB8fCByZWYgJEluY2lTdGF0ZUxpc3QgbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGdldCB0aGUgZ2VuZXJhbCBjYXRhbG9nIGxpc3QgSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjdXJyZW50IGRlZmluaXRpb24gb2YgdGhpcyBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRPYmplY3REYXRhLT57Q2xhc3NJRH0sCiAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAjIGFkZCBudW1iZXIgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7TnVtYmVyfSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e051bWJlcn07CiAgICB9CgogICAgIyBhZGQgbmFtZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCAkU2VhcmNoRGF0YS0+e05hbWV9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7TmFtZX0gPSBkZWxldGUgJFNlYXJjaERhdGEtPntOYW1lfTsKICAgIH0KCiAgICAjIGFkZCBkZXBsb3ltZW50IHN0YXRlIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBpZiAoICRTZWFyY2hEYXRhLT57RGVwbFN0YXRlSURzfSApIHsKICAgICAgICBteSBARGVwbFN0YXRlSURzID0gc3BsaXQgLyMjIyMjLywgJFNlYXJjaERhdGEtPntEZXBsU3RhdGVJRHN9OwogICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbFN0YXRlSURzOwogICAgICAgIGRlbGV0ZSAkU2VhcmNoRGF0YS0+e0RlcGxTdGF0ZUlEc307CiAgICB9CgogICAgIyBhZGQgaW5jaWRlbnQgc3RhdGUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntJbmNpU3RhdGVJRHN9ICkgewogICAgICAgIG15IEBJbmNpU3RhdGVJRHMgPSBzcGxpdCAvIyMjIyMvLCAkU2VhcmNoRGF0YS0+e0luY2lTdGF0ZUlEc307CiAgICAgICAgJFNlYXJjaFBhcmFtc3tJbmNpU3RhdGVJRHN9ID0gXEBJbmNpU3RhdGVJRHM7CiAgICAgICAgZGVsZXRlICRTZWFyY2hEYXRhLT57SW5jaVN0YXRlSURzfTsKICAgIH0KCiAgICAjIGFkZCBsaW1pdCB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJFNlYXJjaERhdGEtPntMaW1pdH0gKSApIHsKICAgICAgICAkU2VhcmNoUGFyYW1ze0xpbWl0fSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e0xpbWl0fTsKICAgIH0KCiAgICAjIGFkZCBhbGwgZHluYW1pYyBmaWVsZCBkYXRhIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBteSAlREZTZWFyY2hQYXJhbXMgPSAkU2VsZi0+X0RGU2VhcmNoRGF0YVByZXBhcmUoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICBTZWFyY2hEYXRhICAgICAgPT4gJFNlYXJjaERhdGEsCiAgICApOwogICAgQFNlYXJjaFBhcmFtc3sga2V5cyAlREZTZWFyY2hQYXJhbXMgfSA9IHZhbHVlcyAlREZTZWFyY2hQYXJhbXM7CgogICAgIyBzZWFyY2ggdGhlIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRPYmplY3REYXRhLT57Q2xhc3NJRH0gXSwKICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICApOwoKICAgICMgSlNPTiBzdXBwb3J0IG1pZ2h0IGJlIG5lZWRlZCBmb3IgU2V0IGR5bmFtaWMgZmllbGRzCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgbXkgJEZvcm1hdHRlckNhbkhhbmRsZVJlZmVyZW5jZXMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5Gb3JtYXR0ZXJDYW5IYW5kbGVSZWZlcmVuY2VzKAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15IEBSb3dzOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtLCBpbmNsdWRpbmcgdGhlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIHVubGVzcyByZWYgJENvbmZpZ0l0ZW0gZXEgJ0hBU0gnOwoKICAgICAgICAjIGFkZCBkYXRhIHRvIHRoZSBleHBvcnQgZGF0YSBhcnJheQogICAgICAgIG15IEBSb3dJdGVtczsKICAgICAgICBNQVBQSU5HT0JKRUNUOgogICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdCAoQE1hcHBpbmdPYmplY3RMaXN0KSB7CgogICAgICAgICAgICAjIGV4dHJhY3Qga2V5CiAgICAgICAgICAgIG15ICRLZXkgPSAkTWFwcGluZ09iamVjdC0+e0tleX07CgogICAgICAgICAgICAjIGhhbmRsZSBlbXB0eSBrZXkKICAgICAgICAgICAgaWYgKCAhJEtleSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAnJzsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ051bWJlcicgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgY3VycmVudCBjb25maWcgaXRlbSBuYW1lCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJENvbmZpZ0l0ZW0tPntOYW1lfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGRlcGxveW1lbnQgc3RhdGUKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVJRH0gfHw9ICdEVU1NWSc7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJERlcGxTdGF0ZUxpc3QtPnsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVJRH0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGluY2lkZW50IHN0YXRlCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9IHx8PSAnRFVNTVknOwogICAgICAgICAgICAgICAgcHVzaCBAUm93SXRlbXMsICRJbmNpU3RhdGVMaXN0LT57ICRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9IH07CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGhhbmRsZSBkZXNjcmlwdGlvbgogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ0Rlc2NyaXB0aW9uJyApIHsKCiAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb24gPSAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufTsKCiAgICAgICAgICAgICAgICAjIHByZXBhcmUgZGVzY3JpcHRpb24gaW5saW5lIGltYWdlcyBmb3IgZXhwb3J0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBjb25maWcgaXRlbSBhdHRhY2htZW50IGxpc3QgZm9yIGhhbmRsaW5nIGlubGluZSBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHJlcGxhY2UgY29udGVudCBpZCBpbiBkZXNjcmlwdGlvbiB3aXRoIGJhc2U2NC1lbmNvZGVkIGF0dGFjaG1lbnQgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudElEfSA9ICRBdHRhY2htZW50LT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRUeXBlIERpc3Bvc2l0aW9uICkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57JEtleX0gPSBFbmNvZGU6OmVuY29kZSggJ1VURi04JywgJEF0dGFjaG1lbnQtPnskS2V5fSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50SUQgQ29udGVudFR5cGUgRGlzcG9zaXRpb24gQ29udGVudCBDb250ZW50QWx0ZXJuYXRpdmUgKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSAvLz0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudFN0cmluZyAuPSAkQXR0YWNobWVudFN0cmluZyA/ICcjIyMnIDogJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudFN0cmluZyAuPSAkS2V5IC4gJyMjIycgLiBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+eyRLZXl9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICREZXNjcmlwdGlvbiA9fiBzLyg/PG9wZW4+c3JjPSIpKGNpZDopKD88Y2lkPiRBdHRhY2htZW50LT57Q29udGVudElEfSkoPzxjbG9zZT4iICkvJCt7b3Blbn0kQXR0YWNobWVudFN0cmluZyQre2Nsb3NlfS9nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJERlc2NyaXB0aW9uOwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgdmVyc2lvbiBzdHJpbmcKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdWZXJzaW9uU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBbGwgb3RoZXIgYXR0cmlidXRlcyBpbmRpY2F0ZSBkeW5hbWljIGZpZWxkcy4KICAgICAgICAgICAgIyBUaGlzIGdldHMgd2hhdGV2ZXIgQ29uZmlnSXRlbUdldCgpIHB1dHMgaW50byB0aGUgb2JqZWN0LiBFLmcuIGZvciBHZW5lcmFsQ2F0YWxvZyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICAjIHdlIGdldCB0aGUgaXRlbSBJRCBpbnRvIHRoZSBnZW5lcmFsIGNhdGFsb2cuIFRoaXMgaXMgZmluZSBmb3IgSW1wb3J0L0V4cG9ydCwgYnV0IG5vdCByZWFsbHkgaHVtYW4gcmVhZGFibGUuCiAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoaW5ncyBsaWtlIHRoZSBpbmNpZGVudCBzdGF0ZSBhcmUgbG9va2VkIHVwLgoKICAgICAgICAgICAgIyBUaGUgS2V5IGVuY29kZXMgc29tZSBleHRyYSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGluZGV4ZXMgc3RhcnQgYXQgMSBpbiB0aGUga2V5IG5hbWVzCiAgICAgICAgICAgIG15ICggJERGRnVsbE5hbWUsICRJbmRleCwgJElubmVyREYsICRJbm5lckluZGV4ICkgPSBzcGxpdCAvOjovLCAkS2V5OwogICAgICAgICAgICBteSAkREZOYW1lOwogICAgICAgICAgICBpZiAoICRERkZ1bGxOYW1lID1+IC9eRHluYW1pY0ZpZWxkXyguKikvICkgewogICAgICAgICAgICAgICAgJERGTmFtZSA9ICQxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfTsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgaWdub3JlIHVuZXhwZWN0ZWQgaW5kZXhlcywgYnV0IHN0aWxsIGN1dCB0aGUgJzo6JwogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEluZGV4ICYmICRJbmRleCAhfiBtL15bMS05XVswLTldKiQvICkgewogICAgICAgICAgICAgICAgdW5kZWYgJEluZGV4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSW5uZXJJbmRleCAmJiAkSW5uZXJJbmRleCAhfiBtL15bMS05XVswLTldKiQvICkgewogICAgICAgICAgICAgICAgdW5kZWYgJElubmVySW5kZXg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRDb25maWdJdGVtLT57JERGRnVsbE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJyc7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRoZSBmb3JtYXR0aW5nIGRlcGVuZHMgb24gdGhlIGNvbmZpZyBvZiB0aGUgZHluYW1pYyBmaWVsZCwgd2hpY2ggaXMgbm90IHJlYWxseSBuaWNlLgogICAgICAgICAgICBteSAkSXNNdWx0aVZhbHVlID0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e011bHRpVmFsdWV9ID8gMiA6IDA7CiAgICAgICAgICAgIG15ICRJc1NldCAgICAgICAgPSAoICRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gLy8gJycgKSBlcSAnU2V0JzsKCiAgICAgICAgICAgICMgaGFuZGxlIHNwZWNpYWwgY2FzZXMKICAgICAgICAgICAgbXkgJEFjdHVhbFZhbHVlID0gZXZhbCB7CgogICAgICAgICAgICAgICAgIyBhIHNwZWNpZmljIGluZGV4IHdhcyByZXF1ZXN0ZWQKICAgICAgICAgICAgICAgIGlmICggJElzTXVsdGlWYWx1ZSAmJiAkSW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRWYWx1ZS0+WyAkSW5kZXggLSAxIF0gLy8gJyc7ICAgICMgYXMgaWYgYW4gZW1wdHkgc3RyaW5nIHdlcmUgbm90IHZhbGlkCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBGb3IgU2V0IHNpbmdsZSBhbmQgbXVsdGl2YWx1ZSBmaWVsZHMgYmVoYXZlIHRoZSBzYW1lIHdheS4KICAgICAgICAgICAgICAgICMgTm8gbmVlZCB0byBzaGF2ZSBvZmYgYSBsZXZlbC4KICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWUgaWYgJElzU2V0OwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpcnN0IGVsZW1lbnQgZm9yIHNpbmdsZSB2YWx1ZSBmaWVsZHMKICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWUtPlswXSAvLyAnJyBpZiAoICEkSXNNdWx0aVZhbHVlICYmIHJlZiAkVmFsdWUgZXEgJ0FSUkFZJyApOwoKICAgICAgICAgICAgICAgICMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWU7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBzZXQtaW5uZXIgZmllbGQKICAgICAgICAgICAgaWYgKCRJbm5lckRGKSB7CgogICAgICAgICAgICAgICAgIyBmZXRjaCBhbmQgc2V0IGZpZWxkIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJElubmVyRmllbGRJdGVtICAgPSBmaXJzdCB7ICRfLT57REZ9IGVxICRJbm5lckRGIH0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCo7CiAgICAgICAgICAgICAgICBteSAkSW5uZXJGaWVsZENvbmZpZyA9ICRJbm5lckZpZWxkSXRlbS0+e0RlZmluaXRpb259OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJElubmVyRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgc2V0IHZhbHVlCiAgICAgICAgICAgICAgICBteSAkSW5uZXJWYWx1ZSA9ICRBY3R1YWxWYWx1ZS0+eyRJbm5lckRGfTsKCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkICRJbm5lclZhbHVlICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAnJzsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgVGhlIGZvcm1hdHRpbmcgZGVwZW5kcyBvbiB0aGUgY29uZmlnIG9mIHRoZSBkeW5hbWljIGZpZWxkLCB3aGljaCBpcyBub3QgcmVhbGx5IG5pY2UuCiAgICAgICAgICAgICAgICBteSAkSW5uZXJJc011bHRpVmFsdWUgPSAkSW5uZXJGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gPyAyIDogMDsKCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBzcGVjaWFsIGNhc2VzCiAgICAgICAgICAgICAgICBteSAkQWN0dWFsSW5uZXJWYWx1ZSA9IGV2YWwgewoKICAgICAgICAgICAgICAgICAgICAjIGEgc3BlY2lmaWMgaW5kZXggd2FzIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgICAgIGlmICggJElubmVySXNNdWx0aVZhbHVlICYmICRJbm5lckluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJElubmVyVmFsdWUtPlsgJElubmVySW5kZXggLSAxIF0gLy8gJyc7ICAgICMgYXMgaWYgYW4gZW1wdHkgc3RyaW5nIHdlcmUgbm90IHZhbGlkCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGdldCBmaXJzdCBlbGVtZW50IGZvciBzaW5nbGUgdmFsdWUgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRJbm5lclZhbHVlLT5bMF0gLy8gJycgaWYgKCAhJElubmVySXNNdWx0aVZhbHVlICYmIHJlZiAkSW5uZXJWYWx1ZSBlcSAnQVJSQVknICk7CgogICAgICAgICAgICAgICAgICAgICMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJElubmVyVmFsdWU7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJEFjdHVhbFZhbHVlID0gJEFjdHVhbElubmVyVmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhpcyBpcyByZWxldmFudCBmb3IgZS5nLiB0aGUgQ1NWIGJhY2tlbmQgd2hpY2ggY2FuJ3QgdHJhbnNwYXJlbnRseSBzZXJpYWxpemUgZGF0YSBzdHJ1Y3R1cmVzLgogICAgICAgICAgICAjIFJlZmVyZW5jZXMgYXJlIEpTT05pZmllZC4gVGhpcyBoYXBwZW5zIHdoZW46CiAgICAgICAgICAgICMgLSBhIG11bHRpdmFsdWUgZmllbGQgZ2l2ZXMgYW4gYXJyYXkgcmVmZXJlbmNlCiAgICAgICAgICAgICMgLSBhIG11bHRpdmFsdWUgU2V0IGZpZWxkIGdpdmVzIGFuIGFycmF5IHJlZmVyZW5jZSB3aXRoIGFycmF5IHJlZmVyZW5jZXMgaW5zaWRlCiAgICAgICAgICAgICMgLSBhIHNpbmdsZXZhbHVlIFNldCBmaWVsZCBnaXZlcyBhbiBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgaWYgKCAhJEZvcm1hdHRlckNhbkhhbmRsZVJlZmVyZW5jZXMgJiYgcmVmICRBY3R1YWxWYWx1ZSApIHsKCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJEpTT05PYmplY3QtPkVuY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiAkQWN0dWFsVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgU29ydEtleXMgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZSByZWd1bGFyIGNhc2UKICAgICAgICAgICAgcHVzaCBAUm93SXRlbXMsICRBY3R1YWxWYWx1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkT2JqZWN0RGF0YS0+e0luY2x1ZGVBdHRhY2htZW50c30gKSB7CiAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiApKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSA9IEVuY29kZTo6ZW5jb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudC0+eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRJRCBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiBDb250ZW50IENvbnRlbnRBbHRlcm5hdGl2ZSApKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSAvLz0gJyc7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRTdHJpbmcgLj0gJEF0dGFjaG1lbnRTdHJpbmcgPyAnIyMjJyA6ICcnOwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50U3RyaW5nIC49ICRLZXkgLiAnIyMjJyAuIGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57JEtleX0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1c2ggQFJvd3MsIFxAUm93SXRlbXM7CiAgICB9CgogICAgcmV0dXJuIFxAUm93czsKfQoKPWhlYWQyIEltcG9ydERhdGFTYXZlKCkKCmltcG9ydHMgYSBzaW5nbGUgZW50aXR5IG9mIHRoZSBpbXBvcnQgZGF0YS4gVGhlIEM8VGVtcGxhdGVJRD4gcG9pbnRzIHRvIHRoZSBkZWZpbml0aW9uCm9mIHRoZSBjdXJyZW50IGltcG9ydC4gQzxJbXBvcnREYXRhUm93PiBob2xkcyB0aGUgZGF0YS4gQzxDb3VudGVyPiBpcyBvbmx5IHVzZWQgaW4KZXJyb3IgbWVzc2FnZXMsIGZvciBpbmRpY2F0aW5nIHdoaWNoIGl0ZW0gd2FzIG5vdCBpbXBvcnRlZCBzdWNjZXNzZnVsbHkuCgpUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBjb25maWcgaXRlbSB3aWxsIG5ldmVyIGJlIGRlbGV0ZWQuIFdoZW4gdGhlcmUgYXJlIG5vCmNoYW5nZXMgaW4gdGhlIGRhdGEsIHRoZSBpbXBvcnQgd2lsbCBiZSBza2lwcGVkLiBXaGVuIHRoZXJlIGlzIG5ldyBvciBjaGFuZ2VkIGRhdGEsCnRoZW4gYSBuZXcgY29uZmlnIGl0ZW0gb3IgYSBuZXcgdmVyc2lvbiBpcyBjcmVhdGVkLgoKSW4gdGhlIGNhc2Ugb2YgY2hhbmdlZCBkYXRhLCB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtIHdpbGwgY29udGFpbiB0aGUKYXR0cmlidXRlcyBvZiB0aGUgQzxJbXBvcnREYXRhUm93PiBwbHVzIHRoZSBvbGQgYXR0cmlidXRlcyB0aGF0IGFyZQpub3QgcGFydCBvZiB0aGUgaW1wb3J0IGRlZmluaXRpb24uClRodXMgSW1wb3J0RGF0YVNhdmUoKSBndWFyYW50ZWVzIHRvIG5vdCBvdmVyd3JpdGUgdW5kZWNsYXJlZCBhdHRyaWJ1dGVzLgoKVGhlIGJlaGF2aW9yIHdoZW4gaW1wb3J0ZWQgYXR0cmlidXRlcyBhcmUgZW1wdHkgZGVwZW5kcyBvbiB0aGUgc2V0dGluZyBpbiB0aGUgb2JqZWN0IGRhdGEuCldoZW4gQzxFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzPiBpcyBub3Qgc2V0LCB0aGVuIGVtcHR5IHZhbHVlcyB3aWxsIHdpcGUgb3V0CnRoZSBvbGQgZGF0YS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4gV2hlbiBDPEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXM+IGlzIHNldCwKdGhlbiBlbXB0eSB2YWx1ZXMgd2lsbCBsZWF2ZSB0aGUgb2xkIHZhbHVlcy4KClRoZSBkZWNpc2lvbiB3aGF0IGNvbnN0aXR1dGUgYW4gZW1wdHkgdmFsdWUgaXMgYSBiaXQgaGFpcnkuCkhlcmUgYXJlIHRoZSBydWxlcy4KRmllbGRzIHRoYXQgYXJlIG5vdCBldmVuIG1lbnRpb25lZCBpbiB0aGUgSW1wb3J0IGRlZmluaXRpb24gYXJlIGVtcHR5LiBUaGVzZSBhcmUgdGhlICdub3QgZGVmaW5lZCcgZmllbGRzLgpFbXB0eSBzdHJpbmdzIGFuZCB1bmRlZmluZWQgdmFsdWVzIGNvbnN0aXR1dGUgZW1wdHkgZmllbGRzLgpGaWVsZHMgd2l0aCB3aXRoIG9ubHkgb25lIG9yIG1vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSBub3QgZW1wdHkuCkZpZWxkcyB3aXRoIHRoZSBkaWdpdCAnMCcgYXJlIG5vdCBlbXB0eS4KCiAgICBteSAoICRDb25maWdJdGVtSUQsICRSZXRDb2RlICkgPSAkT2JqZWN0QmFja2VuZC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAxMjMsCiAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiAkQXJyYXlSZWYsCiAgICAgICAgQ291bnRlciAgICAgICA9PiAzNjcsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKCkFuIGVtcHR5IEM8Q29uZmlnSXRlbUlEPiBpbmRpY2F0ZXMgZmFpbHVyZS4gT3RoZXJ3aXNlIGl0IGluZGljYXRlcyB0aGUKbG9jYXRpb24gb2YgdGhlIGltcG9ydGVkIGRhdGEuCkM8UmV0Q29kZT4gaXMgZWl0aGVyICdDcmVhdGVkJywgJ1VwZGF0ZWQnIG9yICdTa2lwcGVkJy4gJ0NyZWF0ZWQnIG1lYW5zIHRoYXQgYSBuZXcKY29uZmlnIGl0ZW0gaGFzIGJlZW4gY3JlYXRlZC4gJ1VwZGF0ZWQnIG1lYW5zIHRoYXQgYSBuZXcgdmVyc2lvbiBoYXMgYmVlbiBhZGRlZCB0bwphbiBleGlzdGluZyBjb25maWcgaXRlbS4gJ1NraXBwZWQnIG1lYW5zIHRoYXQgbm8gbmV3IHZlcnNpb24gaGFzIGJlZW4gY3JlYXRlZCwKYXMgdGhlIG5ldyBkYXRhIGlzIGlkZW50aWNhbCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0uCgpObyBjb2RlcyBoYXZlIHlldCBiZWVuIGRlZmluZWQgZm9yIHRoZSBmYWlsdXJlIGNhc2UuCgo9Y3V0CgpzdWIgSW1wb3J0RGF0YVNhdmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBJbXBvcnREYXRhUm93IENvdW50ZXIgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpbXBvcnQgZGF0YSByb3cKICAgIGlmICggcmVmICRQYXJhbXtJbXBvcnREYXRhUm93fSBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06IEltcG9ydERhdGFSb3cgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhLCB0aGF0IGlzIHRoZSBjb25maWcgb2YgdGhpcyB0ZW1wbGF0ZQogICAgbXkgJE9iamVjdERhdGEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJE9iamVjdERhdGEgfHwgcmVmICRPYmplY3REYXRhIG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMganVzdCBmb3IgY29udmVuaWVuY2UKICAgIG15ICRFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0gJE9iamVjdERhdGEtPntFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzfTsKCiAgICAjIGNoZWNrIHRoZSBjbGFzcyBpZCBvZiB0aGUgdGVtcGxhdGUgY29uZmlnCiAgICB7CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQ2xhc3NMaXN0IHx8IHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvbmZpZ0l0ZW06OkNsYXNzIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJObyBjbGFzcyBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICckUGFyYW17VGVtcGxhdGVJRH0nIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIG1hcHBpbmcgbGlzdAogICAgbXkgJE1hcHBpbmdJRHMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nSURzIHx8IHJlZiAkTWFwcGluZ0lEcyBuZSAnQVJSQVknIHx8ICEkTWFwcGluZ0lEcy0+QCogKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJObyB2YWxpZCBtYXBwaW5nIGxpc3QgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY3JlYXRlIHRoZSBtYXBwaW5nIG9iamVjdCBsaXN0CiAgICAjIFRPRE86IHdoeSBpcyB0aGlzIGNhbGxlZCBmb3IgZXZlcnkgcm93IG9mIHRoZSBpbXBvcnQgZmlsZSA/CiAgICBteSBATWFwcGluZ09iamVjdExpc3Q7CiAgICBmb3IgbXkgJE1hcHBpbmdJRCAoICRNYXBwaW5nSURzLT5AKiApIHsKCiAgICAgICAgIyBnZXQgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIG15ICRNYXBwaW5nT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhR2V0KAogICAgICAgICAgICBNYXBwaW5nSUQgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICggISRNYXBwaW5nT2JqZWN0RGF0YSB8fCByZWYgJE1hcHBpbmdPYmplY3REYXRhIG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiTm8gbWFwcGluZyBvYmplY3QgZGF0YSBmb3VuZCBmb3IgdGhlIG1hcHBpbmcgaWQgJyRNYXBwaW5nSUQnIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHB1c2ggQE1hcHBpbmdPYmplY3RMaXN0LCAkTWFwcGluZ09iamVjdERhdGE7CiAgICB9CgogICAgIyBjaGVjayBhbmQgcmVtZW1iZXIgdGhlIElkZW50aWZpZXJzCiAgICAjIHRoZSBJZGVudGlmaWVycyBpZGVudGlmeSB0aGUgY29uZmlnIGl0ZW0gdGhhdCBzaG91bGQgYmUgdXBkYXRlZAogICAgbXkgJUlkZW50aWZpZXI7CiAgICB7CiAgICAgICAgbXkgJFJvd0luZGV4ID0gMDsKICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdExpc3QpIHsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVERBVEEgdW5sZXNzICRNYXBwaW5nT2JqZWN0RGF0YS0+e0lkZW50aWZpZXJ9OwoKICAgICAgICAgICAgIyBjaGVjayBpZiBpZGVudGlmaWVyIGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgIGlmICggJElkZW50aWZpZXJ7ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0gfSApIHsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICInJE1hcHBpbmdPYmplY3REYXRhLT57S2V5fScgaGFzIGJlZW4gdXNlZCBtdWx0aXBsZSB0aW1lcyBhcyBhbiBpZGVudGlmaWVyIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBpZGVudGlmaWVyIHZhbHVlCiAgICAgICAgICAgICRJZGVudGlmaWVyeyAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IH0gPSAkUGFyYW17SW1wb3J0RGF0YVJvd30tPlskUm93SW5kZXhdOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUREFUQSBpZiAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9ICYmICRQYXJhbXtJbXBvcnREYXRhUm93fS0+WyRSb3dJbmRleF07CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGQgaXMgZW1wdHkiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRSb3dJbmRleCsrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsb29rdXAgdGFibGUgZm9yIGdldHRpbmcgdGhlIElEIGZvciBkZXBsb3ltZW50IHN0YXRlIG5hbWVzCiAgICBteSAlRGVwbFN0YXRlTGlzdFJldmVyc2U7CiAgICB7CiAgICAgICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSByZXZlcnNlIG1hcHBpbmcsIHRoYXQgaXMgZnJvbSBuYW1lIHRvIElECiAgICAgICAgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICB9CgogICAgIyBnZXQgbG9va3VwIHRhYmxlIGZvciBnZXR0aW5nIHRoZSBJRCBmb3IgaW5jaWRlbnQgc3RhdGUgbmFtZXMKICAgIG15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZTsKICAgIHsKICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJEluY2lTdGF0ZUxpc3QgfHwgcmVmICRJbmNpU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSByZXZlcnNlIG1hcHBpbmcsIHRoYXQgaXMgZnJvbSBuYW1lIHRvIElECiAgICAgICAgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAkSW5jaVN0YXRlTGlzdC0+JSo7CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBkZWZpbml0aW9uIG9mIHRoaXMgY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgZGVmaW5pdGlvbiBkYXRhCiAgICBpZiAoICEkRGVmaW5pdGlvbiB8fCByZWYgJERlZmluaXRpb24gbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzIGlkICRPYmplY3REYXRhLT57Q2xhc3NJRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGNvbmZpZyBpdGVtIGlkIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGlkZW50aWZpZXIKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoJUlkZW50aWZpZXIpIHsKCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAgICAgIyBhZGQgbnVtYmVyIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCAkSWRlbnRpZmllcntOdW1iZXJ9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze051bWJlcn0gPSBkZWxldGUgJElkZW50aWZpZXJ7TnVtYmVyfTsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5hbWUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgICAgICBpZiAoICRJZGVudGlmaWVye05hbWV9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze05hbWV9ID0gZGVsZXRlICRJZGVudGlmaWVye05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgZGVwbG95bWVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7RGVwbFN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXsgJElkZW50aWZpZXJ7RGVwbFN0YXRlfSB9IHx8ICcnOwoKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIlRoZSBkZXBsb3ltZW50IHN0YXRlICckSWRlbnRpZmllcntEZXBsU3RhdGV9JyBpcyBpbnZhbGlkIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gPSBbJERlcGxTdGF0ZUlEXTsKICAgICAgICAgICAgZGVsZXRlICRJZGVudGlmaWVye0RlcGxTdGF0ZX07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBpbmNpZGVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7SW5jaVN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBpbmNpZGVudCBzdGF0ZSBpZAogICAgICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkSW5jaVN0YXRlTGlzdFJldmVyc2V7ICRJZGVudGlmaWVye0luY2lTdGF0ZX0gfSB8fCAnJzsKCiAgICAgICAgICAgIGlmICggISRJbmNpU3RhdGVJRCApIHsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgaW5jaWRlbnQgc3RhdGUgJyRJZGVudGlmaWVye0luY2lTdGF0ZX0nIGlzIGludmFsaWQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7SW5jaVN0YXRlSURzfSA9IFskSW5jaVN0YXRlSURdOwogICAgICAgICAgICBkZWxldGUgJElkZW50aWZpZXJ7SW5jaVN0YXRlfTsKICAgICAgICB9CgogICAgICAgICMgdGhlIHJlbWFpbmluZyBpdGVtcyBpbiAlSWRlbnRpZmllciBhcmUgYWxsIGZvciBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVERkltcG9ydFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZJbXBvcnRTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgSWRlbnRpZmllciAgICAgID0+IFwlSWRlbnRpZmllciwKICAgICAgICApOwogICAgICAgIEBTZWFyY2hQYXJhbXN7IGtleXMgJURGSW1wb3J0U2VhcmNoUGFyYW1zIH0gPSB2YWx1ZXMgJURGSW1wb3J0U2VhcmNoUGFyYW1zOwoKICAgICAgICAjIHNlYXJjaCBleGlzdGluZyBjb25maWcgaXRlbSB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXJzCiAgICAgICAgKCAkQ29uZmlnSXRlbUlELCBteSBAT3RoZXJDb25maWdJdGVtSURzICkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgJVNlYXJjaFBhcmFtcywKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJE9iamVjdERhdGEtPntDbGFzc0lEfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgICAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFF1ZXJ5Q29uZGl0aW9uICAgICAgICA9PiAwLAogICAgICAgICk7CgogICAgICAgIGlmIChAT3RoZXJDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGRzIE5PVCB1bmlxdWUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdmVyc2lvbiBkYXRhIG9mIHRoZSBjb25maWcgaXRlbQogICAgbXkgJFZlcnNpb25EYXRhID0ge307CiAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewoKICAgICAgICAjIGdldCBsYXRlc3QgdmVyc2lvbgogICAgICAgICRWZXJzaW9uRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVNYXBwaW5nT2JqZWN0S2V5RGF0YSA9IG1hcCB7ICRfLT57S2V5fSA9PiAxIH0gQE1hcHBpbmdPYmplY3RMaXN0OwoKICAgICMgYnVpbGQgbGlzdCBvZiBkeW5hbWljIGZpZWxkcyB0byBpbmNsdWRlIGZpZWxkcyBvZiBkZWZpbml0aW9uIGFuZCBvZiBpbmNsdWRlZCBzZXQgZmllbGRzCiAgICBteSAlRHluYW1pY0ZpZWxkTGlzdDsKCiAgICAjIENoZWNrIGlmIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiB0aGlzIGNsYXNzIGhhcyByZXF1aXJlZCBhdHRyaWJ1dGUgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0LgogICAgREZfTkFNRToKICAgIGZvciBteSAkREZOYW1lICggc29ydCBrZXlzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+eyRERk5hbWV9OwoKICAgICAgICAjIHNldCBmaWVsZCBuYW1lcyB0byBkaWZmZXJlbnRpYXRlIGR5bmFtaWMgZmllbGRzIGZyb20gc3RhbmRhcmQgYXR0cmlidXRlcwogICAgICAgICREeW5hbWljRmllbGRMaXN0eyRERk5hbWV9ID0gJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICAgICAgIyBUT0RPOiBpcyB0aGUgc3BlY2lhbCBjYXNlIGZvciBTZXQgbmVlZGVkID8KICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkREYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdHsgJEluY2x1ZGVkREYtPntERn0gfSA9ICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn07CgogICAgICAgICAgICAgICAgIyBhc3N1bWluZyB0aGF0IGRmIHNldHMgYXJlIG5vdCBuZXN0ZWQgZGVlcGVyIHRoYW4gdHdvIHN0YWdlcwogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXN0ZWRJbmNsdWRlZERGICggJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufXtDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3R7ICROZXN0ZWRJbmNsdWRlZERGLT57REZ9IH0gPSAkTmVzdGVkSW5jbHVkZWRERi0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBvbmx5IHJlcXVpcmVkIGF0dHJpYnV0ZXMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntSZXF1aXJlZH07CgogICAgICAgIG15ICRLZXkgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgIG5leHQgREZfTkFNRSBpZiAkTWFwcGluZ09iamVjdEtleURhdGF7IkR5bmFtaWNGaWVsZF8kS2V5In07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJBdHRyaWJ1dGUgJyRLZXknIGlzIHJlcXVpcmVkLCBidXQgZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0ISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IHVwIGZpZWxkcyBpbiBWZXJzaW9uRGF0YSBhbmQgaW4gdGhlIFhNTCBhdHRyaWJ1dGVzCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAlREZIYXNoOyAgICAjIG1hcCBmaWVsZCBuYW1lLCBpbmNsdWRpbmcgdGhlIHByZWZpeCAnRHluYW1pY0ZpZWxkXycsIHRvIHRoZSB2YWx1ZQogICAgbXkgJFJvd0luZGV4ID0gMDsKICAgIE1BUFBJTkdfT0JKRUNUX0RBVEE6CiAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdExpc3QpIHsKCiAgICAgICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgICAgIG15ICRLZXkgICA9ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX07CiAgICAgICAgbXkgJFZhbHVlID0gJFBhcmFte0ltcG9ydERhdGFSb3d9LT5bJFJvd0luZGV4XTsKCiAgICAgICAgaWYgKCAkS2V5IGVxICdOdW1iZXInICkgewoKICAgICAgICAgICAgIyBEbyBub3RoaW5nLiBUaGUgSW1wb3J0IG1heSBub3Qgb3ZlcnJpZGUgdGhlIGNvbmZpZyBpdGVtIG51bWJlci4KICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdOYW1lJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIG5hbWUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4dHJhY3QgZGVwbG95bWVudCBzdGF0ZSBpZAogICAgICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlTGlzdFJldmVyc2V7JFZhbHVlfSB8fCAnJzsKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIGRlcGxveW1lbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0RlcGxTdGF0ZUlEfSA9ICREZXBsU3RhdGVJRDsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSBlcSAnSW5jaVN0YXRlJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICRJbmNpU3RhdGVJRCA9ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskVmFsdWV9IHx8ICcnOwogICAgICAgICAgICBpZiAoICEkSW5jaVN0YXRlSUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgaW5jaWRlbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGVJRDsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSBlcSAnRGVzY3JpcHRpb24nICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgZGVzY3JpcHRpb24gJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0cmlldmUgYW5kIHN0b3JlIGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMgZm9yIGltcG9ydAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSBARGVzY3JpcHRpb25BdHRhY2htZW50czsKCiAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnRzIGFyZSBzdG9yZWQgaW4gdGhlIHNyYyBhdHRyaWJ1dGUgb2YgdGhlaXIgaW1nIHRhZyBhcyBiYXNlNjQgZW5jb2RlZCBzdHJpbmcKICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50U3RyaW5ncyA9ICRWYWx1ZSA9fiAvc3JjPVwiKC4rPylcIiAvZ3M7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnRTdHJpbmcgKEBBdHRhY2htZW50U3RyaW5ncykgewogICAgICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gc3BsaXQoIC8jIyMvLCAkQXR0YWNobWVudFN0cmluZywgLTEgKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVBdHRhY2htZW50ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9ICRBdHRhY2htZW50eyRLZXl9IGVxICcnID8gJycgOiBkZWNvZGVfYmFzZTY0KCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyggRmlsZW5hbWUgQ29udGVudFR5cGUgRGlzcG9zaXRpb24gKSkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSB1bmxlc3MgJEF0dGFjaG1lbnR7JEtleX07CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9IEVuY29kZTo6ZGVjb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVzY3JpcHRpb25BdHRhY2htZW50cywgXCVBdHRhY2htZW50OwoKICAgICAgICAgICAgICAgICAgICAjIGVzY2FwZSBiYXNlNjQgc3BlY2lhbCBjaGFyYWN0ZXJzICcvJyBhbmQgJysnCiAgICAgICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRTdHJpbmdFc2NhcGVkID0gJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRTdHJpbmdFc2NhcGVkID1+IHMvXC8vXFxcLy9nOwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50U3RyaW5nRXNjYXBlZCA9fiBzL1wrL1xcXCsvZzsKCiAgICAgICAgICAgICAgICAgICAgIyByZXBsYWNlIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBpbiBkZXNjcmlwdGlvbiB3aXRoIGNvbnRlbmQgaWQKICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gcy8kQXR0YWNobWVudFN0cmluZ0VzY2FwZWQvY2lkOiRBdHRhY2htZW50e0NvbnRlbnRJRH0vZ3M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gPSBcQERlc2NyaXB0aW9uQXR0YWNobWVudHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdWZXJzaW9uU3RyaW5nJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIHZlcnNpb24gc3RyaW5nICckVmFsdWUnIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVmVyc2lvbkRhdGEtPnskS2V5fSA9ICRWYWx1ZTsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSA9fiBtL15EeW5hbWljRmllbGRfKD88REZOYW1lV2l0aEluZGV4Pi4rKS8gKSB7CgogICAgICAgICAgICBpZiAoJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMpIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBIGlmICFkZWZpbmVkICRWYWx1ZTsKCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFZhbHVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQSBpZiAkVmFsdWUgZXEgJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhlIGtleSBtaWdodCBlbmNvbXBhc3MgYW4gaW5kZXgsIGluZGljYXRlZCBieSAnOjonLgogICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGUgIGluZGV4ZXMgYXJlIDEtYmFzZWQuCiAgICAgICAgICAgIG15ICggJERGTmFtZSwgJEluZGV4LCAkSW5uZXJERk5hbWUsICRJbm5lckluZGV4ICkgPSBzcGxpdCAvOjovLCAkK3tERk5hbWVXaXRoSW5kZXh9OwoKICAgICAgICAgICAgIyBpZ25vcmUgdW5leHBlY3RlZCBpbmRleGVzLCBidXQgc3RpbGwgY3V0IHRoZSAnOjonCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSW5kZXggJiYgJEluZGV4ICF+IG0vXlsxLTldWzAtOV0qJC8gKSB7CiAgICAgICAgICAgICAgICB1bmRlZiAkSW5kZXg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRJbm5lckluZGV4ICYmICRJbm5lckluZGV4ICF+IG0vXlsxLTldWzAtOV0qJC8gKSB7CiAgICAgICAgICAgICAgICB1bmRlZiAkSW5uZXJJbmRleDsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkREZLZXkgPSAiRHluYW1pY0ZpZWxkXyRERk5hbWUiOwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRMaXN0eyRERk5hbWV9OwoKICAgICAgICAgICAgIyBza2lwIGltcG9ydCB3aGVuIHRoZSBkeW5hbWljIGZpZWxkIGlzIG5vdCBmb3VuZAogICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBoYW5kbGUgc2V0LWlubmVyIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIGlmICgkSW5uZXJERk5hbWUpIHsKICAgICAgICAgICAgICAgIG15ICRJbm5lckRGQ29uZmlnID0gJER5bmFtaWNGaWVsZExpc3R7JElubmVyREZOYW1lfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRJbm5lckRGQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gLy89IFtdOwogICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9WyAkSW5kZXggLSAxIF17JElubmVyREZOYW1lfSAvLz0gW107CgogICAgICAgICAgICAgICAgaWYgKCByZWYgJFZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fVsgJEluZGV4IC0gMSBdeyRJbm5lckRGTmFtZX1bICRJbm5lckluZGV4IC0gMSBdID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBNdWx0aXZhbHVlIGZpZWxkcyBhcmUgZXhwb3J0ZWQgYXMgSlNPTiBzdHJpbmdzIGluIHRoZSBjYXNlIG9mIENTViBleHBvcnRzLgogICAgICAgICAgICAgICAgbXkgJElubmVySXNNdWx0aVZhbHVlID0gJElubmVyREZDb25maWctPntDb25maWd9e011bHRpVmFsdWV9OwoKICAgICAgICAgICAgICAgIGlmICggJElubmVySXNNdWx0aVZhbHVlICYmICRJbm5lckluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fVsgJEluZGV4IC0gMSBdeyRJbm5lckRGTmFtZX1bICRJbm5lckluZGV4IC0gMSBdID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgZW5jb2RlZCBhcyBKU09OIGZvciBtdWx0aXZhbHVlCiAgICAgICAgICAgICAgICBpZiAoJElubmVySXNNdWx0aVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9WyAkSW5kZXggLSAxIF17JElubmVyREZOYW1lfSA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGtlZXAgdGhlIHZhbHVlIGFzIGlzLCBmb3Igc2luZ2xlIHZhbHVlLCBub24tc2V0CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX1bICRJbmRleCAtIDEgXXskSW5uZXJERk5hbWV9ID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZlcmVuY2VzIGFyZSBuZXZlciB1bnBhY2tlZAogICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gPSAkVmFsdWU7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE11bHRpdmFsdWUgZmllbGRzIGFyZSBleHBvcnRlZCBhcyBKU09OIHN0cmluZ3MgaW4gdGhlIGNhc2Ugb2YgQ1NWIGV4cG9ydHMuCiAgICAgICAgICAgIG15ICRJc011bHRpVmFsdWUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e011bHRpVmFsdWV9OwogICAgICAgICAgICBteSAkSXNTZXQgICAgICAgID0gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSAvLyAnJyApIGVxICdTZXQnOwoKICAgICAgICAgICAgIyBGb3IgaW5kZXhlZCBhY2Nlc3Mgb25seSBTZXRzIGFyZSBKU09OIGVuY29kZWQKICAgICAgICAgICAgaWYgKCAkSXNNdWx0aVZhbHVlICYmICRJbmRleCApIHsKICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fSAvLz0gW107CiAgICAgICAgICAgICAgICBpZiAoJElzU2V0KSB7CiAgICAgICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9LT5bICRJbmRleCAtIDEgXSA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0tPlsgJEluZGV4IC0gMSBdID0gJFZhbHVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgZW5jb2RlZCBhcyBKU09OIGZvciBtdWx0aXZhbHVlIGFuZCBzZXRzCiAgICAgICAgICAgIGlmICggJElzTXVsdGlWYWx1ZSB8fCAkSXNTZXQgKSB7CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMga2VlcCB0aGUgdmFsdWUgYXMgaXMsIGZvciBzaW5nbGUgdmFsdWUsIG5vbi1zZXQKICAgICAgICAgICAgJERGSGFzaHskREZLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgIyBza2lwIHRoaXMgbWFwcGluZyB3aGVuIGl0IGNvdWxkIG5vdCBiZSBoYW5kbGVkCiAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgfQogICAgY29udGludWUgewogICAgICAgICRSb3dJbmRleCsrOwogICAgfQoKICAgICMgaWYgZW1wdHkgZmllbGRzIGltcGx5IHRoYXQgb2xkIHZhbHVlcyBzaG91bGQgYmUgcHJlc2VydmVkLAogICAgIyAgIHdlIHRpZHkgdGhlIGltcG9ydGVkIGR5bmFtaWMgZmllbGQgZGF0YSBvZiBlbXB0eSBvciB1bmRlZmluZWQgdmFsdWVzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlREZIYXNoICkgewogICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkREZIYXNoeyRLZXl9IHx8ICRERkhhc2h7JEtleX0gZXEgJycgKSApIHsKICAgICAgICAgICAgZGVsZXRlICRERkhhc2h7JEtleX07CiAgICAgICAgfQogICAgfQoKICAgIG15ICVOZXdWZXJzaW9uRGF0YSA9ICVERkhhc2g7CgogICAgIyBjaGVjayBpZiB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICBpZiAoCiAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57TmFtZX0gKQogICAgICAgICYmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJE9iamVjdERhdGEtPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgIC4gIk5hbWU6ICRWZXJzaW9uRGF0YS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIgLiAkQ29uZmlnSXRlbUlEIHx8ICdORVcnIC4gJyknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQgfHwgJ05FVycsCiAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb25EYXRhLT57TmFtZX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlc1N0cmluZyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgJFZlcnNpb25EYXRhLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgIC4gJE5hbWVEdXBsaWNhdGVzU3RyaW5nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHJldHVybiBjb2RlIHRvIGFsc28gaW5jbHVkZSB0aGUgZHVwbGljYXRlIG5hbWUKICAgICAgICAgICAgIyByZXR1cm4gdW5kZWYgZm9yIHRoZSBjb25maWcgaXRlbSBpZCBzbyBpdCB3aWxsIGJlIGNvdW50ZWQgYXMgJ0ZhaWxlZCcKICAgICAgICAgICAgcmV0dXJuIHVuZGVmLCAiRHVwbGljYXRlTmFtZSAnJFZlcnNpb25EYXRhLT57TmFtZX0nIjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICAgICAgfQogICAgfQoKICAgICMgZXh0cmFjdCB0aGUgZGF0YSB0aGF0IGNvbmNlcm5zIGR5bmFtaWMgZmllbGRzCiAgICBteSAlREZWZXJzaW9uRGF0YSA9CiAgICAgICAgbWFwICB7ICRfID0+ICROZXdWZXJzaW9uRGF0YXskX30gfQogICAgICAgIGdyZXAge20vXkR5bmFtaWNGaWVsZC99CiAgICAgICAga2V5cyAlTmV3VmVyc2lvbkRhdGE7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHRoZSBzcGVjaWZpZWQgY29uZmlnIGl0ZW0gYWxyZWFkeSBleGlzdHMKICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CgogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntOYW1lfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gJFZlcnNpb25EYXRhLT57RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+ICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkVmVyc2lvbkRhdGEtPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJFZlcnNpb25EYXRhLT57VmVyc2lvblN0cmluZ30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVERkhhc2gsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJFcnJvciB3aGVuIGFkZGluZyB0aGUgbmV3IGNvbmZpZyBpdGVtIHZlcnNpb24uIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZmV0Y2ggdXBkYXRlZCBkYXRhIHRvIGdldCB2ZXJzaW9uIGlkCiAgICAgICAgbXkgJFVwZGF0ZWRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaW1wb3J0IGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gKSApIHsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFZlcnNpb25BdHRhY2htZW50U3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFVwZGF0ZWRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgYW5kIHVubWFwcGVkIGVudHJpZXMgYXJlIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gQHsgJFBhcmFte0ltcG9ydERhdGFSb3d9IH1bICRSb3dJbmRleCAuLiAkI3sgJFBhcmFte0ltcG9ydERhdGFSb3d9IH0gXTsKCiAgICAgICAgIyBpZiBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIGlzIGZhbHNlLCBjbGVhciBhbGwgYXR0YWNobWVudHMKICAgICAgICBpZiAoICEkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyApIHsKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICRDbGVhclN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJE9iamVjdERhdGEtPntJbmNsdWRlQXR0YWNobWVudHN9ICYmIEBBdHRhY2htZW50cyApIHsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50U3RyaW5nIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gc3BsaXQoIC8jIyMvLCAkQXR0YWNobWVudFN0cmluZywgLTEgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIGtleXMgJUF0dGFjaG1lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnR7JEtleX0gPSAkQXR0YWNobWVudHskS2V5fSBlcSAnJyA/ICcnIDogZGVjb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnR7JEtleX0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBLRVk6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRUeXBlIERpc3Bvc2l0aW9uICkpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSB1bmxlc3MgJEF0dGFjaG1lbnR7JEtleX07CgogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50eyRLZXl9ID0gRW5jb2RlOjpkZWNvZGUoICdVVEYtOCcsICRBdHRhY2htZW50eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlcwogICAgICAgICAgICAgICAgbXkgJEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnR7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGlmIGR1cGxpY2F0ZSBleGlzdHMsIGRlbGV0ZSBpdCB0byBvdmVyd3JpdGUgd2l0aCB0aGUgaW1wb3J0ZWQgYXR0YWNobWVudAogICAgICAgICAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudHtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhlIGF0dGFjaG1lbnQgZGVsZXRlIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aXRoIGltcG9ydGluZyBhbiBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkQ29uZmlnSXRlbUlEOiBDb3VsZG4ndCBjbGVhbiB1cCBleGlzdGluZyBmaWxlICRBdHRhY2htZW50e0ZpbGVuYW1lfSEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAlQXR0YWNobWVudCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgYXR0YWNobWVudCBhZGQgc3VjY2VzcwogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CgogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2l0aCBpbXBvcnRpbmcgYW4gYXR0YWNobWVudCBmb3IgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1JRDogQWRkaW5nIGZpbGUgJEF0dGFjaG1lbnR7RmlsZW5hbWV9IGZhaWxlZCEiLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiBDb25maWdJdGVtVXBkYXRlIHN1Y2NlZWRlZCwgd2UgY29uc2lkZXIgdGhlIGRhdGEgYXMgY2hhbmdlZCByZWdhcmRsZXNzIHdoZXRoZXIgZGF0YSB3YXMgZGlmZmVyZW50CiAgICAgICAgbXkgJFJldENvZGUgPSBUcmFuc2xhdGFibGUoJ0NoYW5nZWQnKTsKCiAgICAgICAgcmV0dXJuICRDb25maWdJdGVtSUQsICRSZXRDb2RlOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgbm8gY29uZmlnIGl0ZW0gd2FzIGZvdW5kLCBzbyBhZGQgbmV3IGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntOYW1lfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAkVmVyc2lvbkRhdGEtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgID0+ICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb259LAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nICA9PiAkVmVyc2lvbkRhdGEtPntWZXJzaW9uU3RyaW5nfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICVERlZlcnNpb25EYXRhLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgdGhlIG5ldyBjb25maWcgaXRlbSBpZAogICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIkVycm9yIHdoZW4gYWRkaW5nIHRoZSBuZXcgY29uZmlnIGl0ZW0uIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgaW1wb3J0IGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gKSApIHsKCiAgICAgICAgICAgICMgZ2V0IGxhdGVzdCB2ZXJzaW9uIGlkCiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApIHx8IFtdOwogICAgICAgICAgICBteSAkTGF0ZXN0VmVyc2lvbklEID0gJFZlcnNpb25MaXN0LT5bLTFdIC8vIDA7CgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCAkVmVyc2lvbkRhdGEtPntEZXNjcmlwdGlvbkF0dGFjaG1lbnRzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkVmVyc2lvbkF0dGFjaG1lbnRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkTGF0ZXN0VmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgYW5kIHVubWFwcGVkIGVudHJpZXMgYXJlIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gQHsgJFBhcmFte0ltcG9ydERhdGFSb3d9IH1bICRSb3dJbmRleCAuLiAkI3sgJFBhcmFte0ltcG9ydERhdGFSb3d9IH0gXTsKICAgICAgICBpZiAoICRPYmplY3REYXRhLT57SW5jbHVkZUF0dGFjaG1lbnRzfSAmJiBAQXR0YWNobWVudHMgKSB7CiAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudFN0cmluZyAoQEF0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgICAgICBteSAlQXR0YWNobWVudCA9IHNwbGl0KCAvIyMjLywgJEF0dGFjaG1lbnRTdHJpbmcsIC0xICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVBdHRhY2htZW50ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnR7JEtleX0gZXEgJycgPyAnJyA6IGRlY29kZV9iYXNlNjQoICRBdHRhY2htZW50eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiApKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRBdHRhY2htZW50eyRLZXl9OwoKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9IEVuY29kZTo6ZGVjb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBhdHRhY2htZW50IGFkZCBzdWNjZXNzCiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKCiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aXRoIGltcG9ydGluZyBhbiBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkQ29uZmlnSXRlbUlEOiBBZGRpbmcgZmlsZSAkQXR0YWNobWVudHtGaWxlbmFtZX0gZmFpbGVkISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRCwgVHJhbnNsYXRhYmxlKCdDcmVhdGVkJyk7CiAgICB9Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoKQoKcmVjdXJzaXZlIGZ1bmN0aW9uIGZvciBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpLgpEZWZpbml0aW9ucyBmb3Igb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIHBhc3NlZCBpbiBDPER5bmFtaWNGaWVsZFJlZj4uClRoZSBuZXcgb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIHJldHVybmVkLgpDPENvdW50TWF4TGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cy4KQzxDb3VudE1heFNldE91dGVyTGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cyBvZiBTZXQgZHluYW1pYyBmaWVsZHMuCkM8Q291bnRNYXhTZXRJbm5lckxpbWl0PiBsaW1pdHMgdGhlIG1heCBsZW5ndGggb2YgaW1wb3J0YWJsZSBhcnJheXMgb2YgU2V0IGR5bmFtaWMgZmllbGQgY29udGVudCBmaWVsZHMuCgogICAgcHVzaCBARWxlbWVudHMsICRPYmplY3RCYWNrZW5kLT5fTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmICAgICAgID0+ICRIYXNoUmVmLAogICAgICAgIENvdW50TWF4TGltaXQgICAgICAgICA9PiAzLAogICAgICAgIENvdW50TWF4U2V0T3V0ZXJMaW1pdCA9PiAwLAogICAgICAgIENvdW50TWF4U2V0SW5uZXJMaW1pdCA9PiAwLAogICAgKTsKCj1jdXQKCnN1YiBfTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtcwogICAgZm9yIG15ICRDb3VudE1heEF0dHIgKHF3KENvdW50TWF4TGltaXQgQ291bnRNYXhTZXRPdXRlckxpbWl0IENvdW50TWF4U2V0SW5uZXJMaW1pdCkpIHsKICAgICAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQgJFBhcmFteyRDb3VudE1heEF0dHJ9OwogICAgICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXskQ291bnRNYXhBdHRyfSBlcSAnJzsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwoKICAgIG15IEBFbGVtZW50czsKICAgIGZvciBteSAkREZOYW1lICggc29ydCBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPnskREZOYW1lfTsKICAgICAgICBteSAkREZEZXRhaWxzICAgICAgICAgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ307CgogICAgICAgICMgdGhlIHZlcnNpb24gd2l0aG91dCBwcmVmaXggaXMgYWx3YXlzIHBvc3NpYmxlCiAgICAgICAgIyAgIGRlc3BpdGUgZm9yIFNldCBmaWVsZHMsIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgQ291bnRNYXhTZXRPdXRlckxpbWl0CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBuZSAnU2V0JyB8fCAkUGFyYW17Q291bnRNYXhTZXRPdXRlckxpbWl0fSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgIG15ICRLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgbXkgJFZhbHVlID0gam9pbiAnOjonLAogICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJEtleSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kVmFsdWUiLAogICAgICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgTGltaXQgdGhlIGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cywgZXZlbiBpZiBtb3JlIGVsZW1lbnRzIGNhbiBiZSBzZXQgdmlhIHRoZSBHVUkuCiAgICAgICAgbXkgJElzTXVsdGkgID0gJERGRGV0YWlscy0+e011bHRpc2VsZWN0fSB8fCAkREZEZXRhaWxzLT57TXVsdGlWYWx1ZX07CiAgICAgICAgbXkgJENvdW50TWF4ID0gMDsKICAgICAgICBpZiAoJElzTXVsdGkpIHsKCiAgICAgICAgICAgICMgdXNlIFNldE91dGVyIGxpbWl0IGZvciBTZXQgZmllbGRzIHRoZW1zZWx2ZXMKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICRDb3VudE1heCA9ICRQYXJhbXtDb3VudE1heFNldE91dGVyTGltaXR9IC8vIDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdXNlIG5vcm1hbCBsaW1pdCBmb3IgZXZlcnl0aGluZyBlbHNlCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvdW50TWF4ID0gJFBhcmFte0NvdW50TWF4TGltaXR9IC8vIDM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uICRDb3VudE1heCApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgIG15ICRLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgJENvdW50OwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgbXkgJFZhbHVlID0gam9pbiAnOjonLAogICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgJENvdW50OwoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJEtleSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kVmFsdWUiLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICMgaW4gY2FzZSBvZiBTZXQsIGl0ZXJhdGUgaW5uZXIgZmllbGRzIGFzIHdlbGwKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKCiAgICAgICAgICAgICAgICBteSAkSW5uZXJGaWVsZHMgPSAkREZEZXRhaWxzLT57SW5jbHVkZX07CgogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJElubmVyRmllbGRzKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkSXRlbSAoICRJbm5lckZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyAgICA9ICRGaWVsZEl0ZW0tPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVyREZEZXRhaWxzID0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHZlcnNpb24gd2l0aG91dCBwcmVmaXggaXMgYWx3YXlzIHBvc3NpYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5uZXJLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17S2V5UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRERk5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJFBhcmFte0tleVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBrZXkgc3RyaW5nLCBpbmNsdWRpbmcgYSBwb3RlbnRpYWwgcHJlZml4IGFuZCBhIHBvdGVudGlhbCBjb3VudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVyVmFsdWUgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBFbGVtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJElubmVyS2V5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kSW5uZXJWYWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVySXNNdWx0aSAgPSAkSW5uZXJERkRldGFpbHMtPntNdWx0aXNlbGVjdH0gfHwgJElubmVyREZEZXRhaWxzLT57TXVsdGlWYWx1ZX07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb3VudElubmVyTWF4ID0gJElubmVySXNNdWx0aSA/ICggJFBhcmFte0NvdW50TWF4U2V0SW5uZXJMaW1pdH0gLy8gMCApIDogMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ291bnRJbm5lciAoIDEgLi4gJENvdW50SW5uZXJNYXggKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRJbm5lcktleSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17S2V5UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudElubmVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5uZXJWYWx1ZSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtWYWx1ZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtWYWx1ZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRJbm5lcjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCByb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gIkR5bmFtaWNGaWVsZF8kSW5uZXJLZXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAiRHluYW1pY0ZpZWxkXyRJbm5lclZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBARWxlbWVudHM7Cn0KCj1oZWFkMiBfREZTZWFyY2hBdHRyaWJ1dGVzR2V0KCkKCnJlY3Vyc2l2ZSBmdW5jdGlvbiBmb3IgU2VhcmNoQXR0cmlidXRlc0dldCgpCgogICAgJE9iamVjdEJhY2tlbmQtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQXJyYXlSZWYsCiAgICAgICAgQXR0cmlidXRlTGlzdCA9PiAkQXJyYXlSZWYsCiAgICApOwoKPWN1dAoKc3ViIF9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKCiAgICBteSBAQXR0cmlidXRlczsKICAgIERGX05BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoIHNvcnQga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT57JERGTmFtZX07CgogICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXgKICAgICAgICBteSAkS2V5ID0gam9pbiAnOjonLAogICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBjcmVhdGUgbmFtZSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXgKICAgICAgICBteSAkTmFtZSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgKCAkUGFyYW17TmFtZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgIyBhZGQgYXR0cmlidXRlLCBpZiBtYXJrZWQgYXMgc2VhcmNoYWJsZQoKICAgICAgICAjIFRPRE86IGRldGVybWluZSB3aGV0aGVyIERGIGlzIHNlYXJjaGFibGU6ICREeW5hbWljRmllbGRDb25maWctPntTZWFyY2hhYmxlfQogICAgICAgICMgVE9ETzogdXNlIHNlYXJjaCBmaWVsZCBmcm9tIGR5bmFtaWMgZmllbGQgZHJpdmVyCiAgICAgICAgaWYgKDEpIHsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1RleHQnIHx8ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdUZXh0QXJlYScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntJbnB1dH0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW5wdXR9LT57SW5wdXR9LT57U2l6ZX0gfHwgNjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW5wdXR9LT57SW5wdXR9LT57TWF4TGVuZ3RofSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgbGlzdAogICAgICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLCAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogZGV0ZXJtaW5lIHdoZXRoZXIgaXRlbXMgc2hvdWxkIGJlIHRyYW5zbGF0ZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lucHV0fS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVE9ETzogaGFuZGxlIFNldHMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJFNlbGYtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57U3VifSwKICAgICAgICAgICAgS2V5UHJlZml4ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgIE5hbWVQcmVmaXggICAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBAQXR0cmlidXRlczsKfQoKPWhlYWQyIF9ERlNlYXJjaERhdGFQcmVwYXJlKCkKCnJlY3Vyc2lvbiBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBleHBvcnQgWE1MIHNlYXJjaCBwYXJhbXMKCiAgICBteSAlREZTZWFyY2hQYXJhbXMgPSAkT2JqZWN0QmFja2VuZC0+X0RGU2VhcmNoRGF0YVByZXBhcmUoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREeW5hbWljRmllbGRSZWYsCiAgICAgICAgU2VhcmNoRGF0YSAgICAgID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBfREZTZWFyY2hEYXRhUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17U2VhcmNoRGF0YX07CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkUGFyYW17U2VhcmNoRGF0YX0gZXEgJ0hBU0gnOwoKICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgIERGX05BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoIHNvcnQga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT57JERGTmFtZX07CgogICAgICAgICMgY3JlYXRlIGtleQogICAgICAgIG15ICRLZXkgPSAkUGFyYW17UHJlZml4fSA/ICRQYXJhbXtQcmVmaXh9IC4gJzo6JyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA6ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgbmV4dCBERl9OQU1FIHVubGVzcyAkUGFyYW17U2VhcmNoRGF0YX0tPnskS2V5fTsgICAgIyAnIyMjIyMnIHNlcGFyYXRlZAoKICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kS2V5In0gPSB7IEVxdWFscyA9PiBbIHNwbGl0IC8jIyMjIy8sICRQYXJhbXtTZWFyY2hEYXRhfS0+eyRLZXl9IF0gfTsKCiAgICAgICAgIyBUT0RPOiBzdXBwb3J0IFNldHMKICAgICAgICBuZXh0IERGX05BTUUgaWYgISREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgbXkgJVNldFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57U3VifSwKICAgICAgICAgICAgV2hhdCAgICAgICAgICA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgICAgPT4gJFBhcmFte1NlYXJjaERhdGF9LAogICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRLZXksCiAgICAgICAgKTsKICAgICAgICBAREZTZWFyY2hQYXJhbXN7IGtleXMgJVNldFNlYXJjaFBhcmFtcyB9ID0gdmFsdWVzICVTZXRTZWFyY2hQYXJhbXM7CiAgICB9CgogICAgcmV0dXJuICVERlNlYXJjaFBhcmFtczsKfQoKPWhlYWQyIF9ERkltcG9ydFNlYXJjaERhdGFQcmVwYXJlKCkKCnJlY3Vyc2l2ZSBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBpbXBvcnQgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCgogICAgbXkgJURGSW1wb3J0U2VhcmNoUGFyYW1zID0gJE9iamVjdEJhY2tlbmQtPl9ERkltcG9ydFNlYXJjaERhdGFQcmVwYXJlKAogICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sCiAgICAgICAgSWRlbnRpZmllciAgICAgID0+IFwlSWRlbnRpZmllciwKICAgICAgICBQcmVmaXggICAgICAgICAgPT4gJEtleSwgICAgIyBwYXNzZWQgb25seSBpbiB0aGUgcmVjdXJzaW9uIGNhc2UKICAgICk7Cgo9Y3V0CgpzdWIgX0RGSW1wb3J0U2VhcmNoRGF0YVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0lkZW50aWZpZXJ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0lkZW50aWZpZXJ9IGVxICdIQVNIJzsKCiAgICBteSAlREZTZWFyY2hQYXJhbXM7CiAgICBERl9OQU1FOgogICAgZm9yIG15ICRERk5hbWUgKCBzb3J0IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPnskREZOYW1lfTsKCiAgICAgICAgIyBjcmVhdGUga2V5CiAgICAgICAgbXkgJEtleSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgKCAkUGFyYW17UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICRQYXJhbXtJZGVudGlmaWVyfS0+eyJEeW5hbWljRmllbGRfJEtleSJ9OwoKICAgICAgICAjIFRPRE86IHRoaXMgaXMgYnJva2VuIGZvciBtdWx0aXZhbHVlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgJERGU2VhcmNoUGFyYW1zeyJEeW5hbWljRmllbGRfJEtleSJ9ID0geyBFcXVhbHMgPT4gWyBzcGxpdCAvIyMjIyMvLCAkUGFyYW17SWRlbnRpZmllcn0tPnsiRHluYW1pY0ZpZWxkXyRLZXkifSBdIH07CgogICAgICAgICMgY2hlY2sgaWYgdmFsdWUgdHJhbnNmb3JtYXRpb24gaXMgbmVjZXNzYXJ5CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICAgICAgbXkgJElzUmVmZXJlbmNlRmllbGQgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnLAogICAgICAgICk7CiAgICAgICAgaWYgKCRJc1JlZmVyZW5jZUZpZWxkKSB7CgogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW17SWRlbnRpZmllcn0tPnsiRHluYW1pY0ZpZWxkXyRLZXkifTsKCiAgICAgICAgICAgIG5leHQgREZfTkFNRSB1bmxlc3MgJFZhbHVlOwoKICAgICAgICAgICAgIyBUT0RPIHNraXBwaW5nIG11bHRpdmFsdWUgZmllbGRzCiAgICAgICAgICAgIG5leHQgREZfTkFNRSBpZiByZWYgJFZhbHVlOwoKICAgICAgICAgICAgIyBwZXJmb3JtIHNlYXJjaCBiYXNlZCBvbiB2YWx1ZSBhbmQgcHJldmlvdXNseSBmZXRjaGVkIGRhdGEKICAgICAgICAgICAgbXkgQE9iamVjdElEcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hPYmplY3RzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBUZXJtICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLCAgICAjIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQYXJhbU9iamVjdCkKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggc2NhbGFyIEBPYmplY3RJRHMgPT0gMSApIHsKICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRLZXkifSA9IHsgRXF1YWxzID0+IFsgc3BsaXQgLyMjIyMjLywgJE9iamVjdElEc1swXSBdIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVE9ETzogaGFuZGxlIFNldHMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgbXkgJVNldFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZJbXBvcnRTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREeW5hbWljRmllbGRDb25maWctPntTdWJ9LAogICAgICAgICAgICBJZGVudGlmaWVyICAgICAgPT4gJFBhcmFte0lkZW50aWZpZXJ9LAogICAgICAgICAgICBQcmVmaXggICAgICAgICAgPT4gJEtleSwKICAgICAgICApOwogICAgICAgIEBERlNlYXJjaFBhcmFtc3sga2V5cyAlU2V0U2VhcmNoUGFyYW1zIH0gPSB2YWx1ZXMgJVNldFNlYXJjaFBhcmFtczsKICAgIH0KCiAgICByZXR1cm4gJURGU2VhcmNoUGFyYW1zOwp9CgoxOwo=</File>
        <File Location="Kernel/System/LinkObject/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtIC0gTGlua09iamVjdCBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRMaW5rT2JqZWN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW0nKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBMaW5rTGlzdFdpdGhEYXRhKCkKCmZpbGwgdXAgdGhlIGxpbmsgbGlzdCB3aXRoIGRhdGEKCiAgICAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0QmFja2VuZC0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBMaW5rTGlzdCA9PiAkSGFzaFJlZiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rTGlzdFdpdGhEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExpbmtMaXN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbGluayBsaXN0CiAgICBpZiAoIHJlZiAkUGFyYW17TGlua0xpc3R9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0xpbmtMaXN0IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0gfSApIHsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0gfSApIHsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBpZCBmcm9tIGhhc2ggaWYgY29uZmlnIGl0ZW0gY2FuIG5vdCBnZXQKICAgICAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtIHx8IHJlZiAkQ29uZmlnSXRlbSBuZSAnSEFTSCcgfHwgISV7JENvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JENvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgdmVyc2lvbiBkYXRhCiAgICAgICAgICAgICAgICAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JENvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIE9iamVjdFBlcm1pc3Npb24oKQoKY2hlY2tzIHJlYWQgcGVybWlzc2lvbiBmb3IgYSBnaXZlbiBvYmplY3QgYW5kIFVzZXJJRC4KCiAgICAkUGVybWlzc2lvbiA9ICRMaW5rT2JqZWN0LT5PYmplY3RQZXJtaXNzaW9uKAogICAgICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdFBlcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgb2YgY29uZmlnaXRlbSB6b29tIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tJyk7CgogICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgbXkgJEFjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICApOwoKICAgIHJldHVybiAkQWNjZXNzOwp9Cgo9aGVhZDIgT2JqZWN0RGVzY3JpcHRpb25HZXQoKQoKcmV0dXJuIGEgaGFzaCBvZiBvYmplY3QgZGVzY3JpcHRpb25zCgogICAgJURlc2NyaXB0aW9uID0gJExpbmtPYmplY3QtPk9iamVjdERlc2NyaXB0aW9uR2V0KAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkNvbmZpZ0l0ZW0jIDEyMzQ0NTUiLAogICAgICAgIExvbmcgICA9PiAiQ29uZmlnSXRlbSMgMTIzNDQ1NTogVGhlIENvbmZpZyBJdGVtIFRpdGxlIiwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgbXkgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgTG9uZyAgID0+ICdDb25maWdJdGVtJywKICAgICk7CgogICAgcmV0dXJuICVEZXNjcmlwdGlvbiBpZiAkUGFyYW17TW9kZX0gJiYgJFBhcmFte01vZGV9IGVxICdUZW1wb3JhcnknOwoKICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkQ29uZmlnSXRlbTsKICAgIHJldHVybiBpZiByZWYgJENvbmZpZ0l0ZW0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmICEleyRDb25maWdJdGVtfTsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IiwKICAgICAgICBMb25nICAgPT4gIkNvbmZpZ0l0ZW0jICRDb25maWdJdGVtLT57TnVtYmVyfTogJENvbmZpZ0l0ZW0tPntOYW1lfSIsCiAgICApOwoKICAgIHJldHVybiAlRGVzY3JpcHRpb247Cn0KCj1oZWFkMiBPYmplY3RTZWFyY2goKQoKcmV0dXJuIGEgaGFzaCBsaXN0IG9mIHRoZSBzZWFyY2ggcmVzdWx0cwoKICAgICRTZWFyY2hMaXN0ID0gJExpbmtPYmplY3RCYWNrZW5kLT5PYmplY3RTZWFyY2goCiAgICAgICAgU3ViT2JqZWN0ICAgID0+ICcyNScsICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBTZWFyY2hQYXJhbXMgPT4gJEhhc2hSZWYsICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFNlYXJjaExpc3QgPSB7CiAgICAgICAgQzxOT1RMSU5LRUQ+ID0+IHsKICAgICAgICAgICAgU291cmNlID0+IHsKICAgICAgICAgICAgICAgIDEyICA9PiAkRGF0YU9mSXRlbTEyLAogICAgICAgICAgICAgICAgMjEyID0+ICREYXRhT2ZJdGVtMjEyLAogICAgICAgICAgICAgICAgMzMyID0+ICREYXRhT2ZJdGVtMzMyLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIE9iamVjdFNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zCiAgICAkUGFyYW17U2VhcmNoUGFyYW1zfSB8fD0ge307CgogICAgIyBzZXQgZm9jdXMKICAgIG15ICVTZWFyY2g7CiAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lKSkgewogICAgICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPnskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICRTZWFyY2h7JEVsZW1lbnR9ID0gJyUnIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPnskRWxlbWVudH0gLiAnJSc7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRQYXJhbXtTdWJPYmplY3R9ICkgewoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgc3Vib2JqZWN0cwogICAgICAgIG15ICREZWZhdWx0U3Vib2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0JykgfHwge307CgogICAgICAgICMgZXh0cmFjdCBkZWZhdWx0IGNsYXNzIG5hbWUKICAgICAgICBteSAkRGVmYXVsdENsYXNzID0gJERlZmF1bHRTdWJvYmplY3QtPntJVFNNQ29uZmlnSXRlbX0gfHwgJyc7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJENsYXNzTGlzdDsKICAgICAgICByZXR1cm4gaWYgcmVmICRDbGFzc0xpc3QgbmUgJ0hBU0gnOwoKICAgICAgICAjIGxvb2t1cCB0aGUgY2xhc3MgaWQKICAgICAgICBteSAlQ2xhc3NMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskQ2xhc3NMaXN0fTsKICAgICAgICAkUGFyYW17U3ViT2JqZWN0fSA9ICRDbGFzc0xpc3RSZXZlcnNleyREZWZhdWx0Q2xhc3N9IHx8ICcnOwogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte1N1Yk9iamVjdH07CgogICAgIyBzZWFyY2ggdGhlIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAleyAkUGFyYW17U2VhcmNoUGFyYW1zfSB9LAogICAgICAgICVTZWFyY2gsCiAgICAgICAgQ2xhc3NJRHMgICAgICAgPT4gWyAkUGFyYW17U3ViT2JqZWN0fSBdLAogICAgICAgIFVzaW5nV2lsZGNhcmRzID0+IDEsCiAgICAgICAgU29ydEJ5ICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICBPcmRlckJ5ICAgICAgICA9PiBbJ1VwJ10sCiAgICAgICAgTGltaXQgICAgICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgUmVzdWx0ICAgICAgICAgPT4gJ0FSUkFZJywKICAgICk7CgogICAgbXkgJVNlYXJjaExpc3Q7CiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgIyBnZXQgbGFzdCB2ZXJzaW9uIGRhdGEKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJENvbmZpZ0l0ZW07CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgcmVmICRDb25maWdJdGVtIG5lICdIQVNIJzsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJXskQ29uZmlnSXRlbX07CgogICAgICAgICMgYWRkIHZlcnNpb24gZGF0YQogICAgICAgICRTZWFyY2hMaXN0e05PVExJTktFRH0tPntTb3VyY2V9LT57JENvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aGVhZDIgTGlua0FkZFByZSgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rQWRkUHJlIHsKICAgIHJldHVybiAxOyAgICAjIG5vdGhpbmcgdG8gZG8KfQoKPWhlYWQyIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHBvc3QgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpvcgoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtBZGRQb3N0KAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZG8gbm90IHVwZGF0ZSBjb25maWdpdGVtX2xpbmsgdGFibGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgZW1pdCB0aGUgTGlua0FkZCBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBTeW5jIHRoZSBuZXcgbGluayB0byB0aGUgY29uZmlnaXRlbV9saW5rIHRhYmxlLgogICAgIyBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcy4KICAgICMgV2hlbiBhIGxpbmsgaXMgYWRkZWQgdGhlbiBMaW5rQWRkUG9zdCgpIGlzIGNhbGxlZCB0d2ljZS4gQnV0IG9ubHkKICAgICMgb25lIG9mIHRoZSBjYWxscyBoYXMgdG8gYmUgY29uc2lkZXJlZCBoZXJlLCBhcyBvbmx5IG9uZSBlbnRyeSBpbiAnY29uZmlnaXRlbV9saW5rJwogICAgIyBpcyBuZWVkZWQuCiAgICBpZiAoICRQYXJhbXtUYXJnZXRLZXl9ICYmICggJFBhcmFte1RhcmdldE9iamVjdH0gLy8gJycgKSBlcSAnSVRTTUNvbmZpZ0l0ZW0nICkgewogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5BZGRDb25maWdJdGVtTGluaygKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgU291cmNlQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBUYXJnZXRDb25maWdJdGVtSUQgPT4gJFBhcmFte1RhcmdldEtleX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHRoaXMgQ0kgZm9yIGxpbmtzIHRvIHNlcnZpY2VzCiAgICAjIFRoaXMgd2lsbCBpbXBsaWNpdGx5IHVwZGF0ZSB0aGUgc2VydmljZSBpbmNpZGVudCBzdGF0ZQogICAgIyBDb25maWdJdGVtTGlua3Mgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBDb25maWdJdGVtTGluayBvYmplY3QKICAgIGVsc2lmICggKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAkUGFyYW17U291cmNlT2JqZWN0fSApIGVxICdTZXJ2aWNlJyApIHsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRyaWdnZXIgTGlua0FkZCBldmVudCwgdGhlIGNvbW1lbnQgaXMgYSBraW5kIG9mIGhpZGRlbiBjaGFubmVsCiAgICBteSAkQ29tbWVudCA9IGpvaW4gJyUlJywKICAgICAgICAoICRQYXJhbXtUYXJnZXRLZXl9ICAgIHx8ICRQYXJhbXtTb3VyY2VLZXl9ICksCiAgICAgICAgKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSB8fCAkUGFyYW17U291cmNlT2JqZWN0fSApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnTGlua0FkZCcsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ29tbWVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rRGVsZXRlUHJlKCkKCmxpbmsgZGVsZXRlIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQcmUgewogICAgcmV0dXJuIDE7ICAgICMgbm90aGluZyB0byBkbwp9Cgo9aGVhZDIgTGlua0RlbGV0ZVBvc3QoKQoKbGluayBkZWxldGUgcG9zdCBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0RlbGV0ZVBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkbyBub3Qgbm90ZSB1cGRhdGUgY29uZmlnaXRlbV9saW5rIHRhYmxlIGZvciB0ZW1wb3JhcnkgbGlua3MKICAgICMgZG8gbm90IG5vdGUgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW4gaW5jaWRlbnQgc3RhdGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgdHJpZ2dlciBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBzeW5jIHRoZSBkZWxldGVlIGxpbmsgdG8gdGhlIGNvbmZpZ2l0ZW1fbGluayB0YWJsZS4KICAgICMgVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3Igb25lIGRpcmVjdGlvbi4KICAgIGlmICggJFBhcmFte1RhcmdldEtleX0gJiYgKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAnJyApIGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlbGV0ZUNvbmZpZ0l0ZW1MaW5rKAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgICAgICBTb3VyY2VDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIFRhcmdldENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17VGFyZ2V0S2V5fSwKICAgICAgICApOwogICAgfQoKICAgICMgVE9ETzogVXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHVubGlua2VkIHNlcnZpY2VzCiAgICAjIGVsc2lmICggKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAkUGFyYW17U291cmNlT2JqZWN0fSApIGVxICdTZXJ2aWNlJyApIHsKICAgICMgfQoKICAgICMgdHJpZ2dlciBMaW5rRGVsZXRlIGV2ZW50LCB0aGUgY29tbWVudCBpcyBhIGtpbmQgb2YgaGlkZGVuIGNoYW5uZWwKICAgIG15ICRDb21tZW50ID0gam9pbiAnOjonLAogICAgICAgICggJFBhcmFte1RhcmdldEtleX0gICAgfHwgJFBhcmFte1NvdXJjZUtleX0gKSwKICAgICAgICAoICRQYXJhbXtUYXJnZXRPYmplY3R9IHx8ICRQYXJhbXtTb3VyY2VPYmplY3R9ICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdMaW5rRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb21tZW50LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/System/ProcessManagement/TransitionAction/ConfigItemAdd.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbUFkZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtQWRkIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQSBjbGFzcyAocmVxdWlyZWQpJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdUaGUgbnVtYmVyIChyZXF1aXJlZCBpZiBubyBudW1iZXIgbW9kdWxlIGlzIGNvbmZpZ3VyZWQpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQSBuYW1lIChyZXF1aXJlZCBpZiBubyBuYW1lIG1vZHVsZSBpcyBjb25maWd1cmVkKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1RoZSB2ZXJzaW9uIHN0cmluZyAocmVxdWlyZWQgaWYgbm8gdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGlzIGNvbmZpZ3VyZWQpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdBIGRlcGxveW1lbnQgc3RhdGUgKHJlcXVpcmVkKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQW4gaW5jaWRlbnQgc3RhdGUgKHJlcXVpcmVkKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdEeW5hbWljRmllbGRfPE5hbWU+IChyZXBsYWNlIDxOYW1lPiknLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQSB2YWx1ZScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdMaW5rQXMnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQWx0ZXJuYXRpdmUgdG98RGVwZW5kcyBvbnxSZWxldmFudCB0bycsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdTdG9yZUNvbmZpZ0l0ZW1JRER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdOYW1lWCAobmFtZSBvZiBEeW5hbWljRmllbGQgaG9sZGluZyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgQ29uZmlnSXRlbSBpbiB0aGUgb3JpZ2luYWwgdGlja2V0KScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdVc2VySUQnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnMSAoY2FuIG92ZXJ3cml0ZSB0aGUgbG9nZ2VkIGluIHVzZXIpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gQFBhcmFtczsKfQoKPWhlYWQyIFJ1bigpCgogICAgUnVuIERhdGEKCiAgICBteSAkQ29uZmlnSXRlbUNyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlQWN0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgID0+IDEyMywKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgPT4gXCVUaWNrZXQsICAgIyByZXF1aXJlZAogICAgICAgIFByb2Nlc3NFbnRpdHlJRCAgICAgICAgICA9PiAnUDEyMycsCiAgICAgICAgQWN0aXZpdHlFbnRpdHlJRCAgICAgICAgID0+ICdBMTIzJywKICAgICAgICBUcmFuc2l0aW9uRW50aXR5SUQgICAgICAgPT4gJ1QxMjMnLAogICAgICAgIFRyYW5zaXRpb25BY3Rpb25FbnRpdHlJRCA9PiAnVEExMjMnLAogICAgICAgIENvbmZpZyAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gcmVxdWlyZWQ6CiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ0NsYXNzIG9mIHRoZSBDb25maWcgSXRlbScsCiAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgPT4gJ1NvbWUgRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgPT4gJ1NvbWUgSW5jaWRlbnQgU3RhdGUnLAoKICAgICAgICAgICAgIyBjb25maWcgaXRlbSBvcHRpb25hbDoKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU29tZSBDb25maWcgSXRlbSBOYW1lJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJUNsYXNzMklETWFwICAgICA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApLT4lKjsKICAgIG15ICVEZXBsU3RhdGUySURNYXAgPSByZXZlcnNlICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnICktPiUqOwogICAgbXkgJUluY2lTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnICktPiUqOwoKICAgIG15ICVDb25maWdJdGVtUGFyYW07CgogICAgZm9yIG15ICRPcHRpb25hbEF0dHJpYnV0ZSAocXcvTmFtZSBOdW1iZXIgVmVyc2lvblN0cmluZy8pIHsKICAgICAgICBpZiAoICRQYXJhbXtDb25maWd9eyRPcHRpb25hbEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtUGFyYW17JE9wdGlvbmFsQXR0cmlidXRlfSA9ICRQYXJhbXtDb25maWd9eyRPcHRpb25hbEF0dHJpYnV0ZX07CiAgICAgICAgfQogICAgfQoKICAgICRDb25maWdJdGVtUGFyYW17Q2xhc3NJRH0gICAgID0gJENsYXNzMklETWFweyAkUGFyYW17Q29uZmlnfXtDbGFzc30gfTsKICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgJENvbmZpZ0l0ZW1QYXJhbXtJbmNpU3RhdGVJRH0gPSAkSW5jaVN0YXRlMklETWFweyAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9IH07CgogICAgZm9yIG15ICROZWVkZWQgKHF3L0NsYXNzIERlcGxTdGF0ZSBJbmNpU3RhdGUvKSB7CiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXsgJE5lZWRlZCAuICdJRCcgfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZCBub3QgcmV0cmlldmUgJE5lZWRlZCIgLiAiSUQgZnJvbSAnJFBhcmFte0NvbmZpZ317ICROZWVkZWQgfScgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgbXkgJEZpZWxkTmFtZTsKCiAgICAgICAgaWYgKCAkQ29uZmlnUGFyYW0gPX4gL15EeW5hbWljRmllbGRfKC4rKS8gKSB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPSAkMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgQ09ORklHUEFSQU07CiAgICAgICAgfQoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CgogICAgICAgICMgZm9yIHNldCBmaWVsZHMgd2UgbmVlZCB0byBtYXAgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkcwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZCAmJiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyAmJiByZWYgJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfSApIHsKICAgICAgICAgICAgU0VUVkFMVUU6CiAgICAgICAgICAgIGZvciBteSAkU2V0VmFsdWUgKCAkUGFyYW17Q29uZmlnfXskQ29uZmlnUGFyYW19LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgU0VUVkFMVUUgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyRmllbGQgKCBrZXlzICRTZXRWYWx1ZS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2V0TWFwcGluZy0+eyRJbm5lckZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNldFZhbHVlLT57ICRTZXRNYXBwaW5nLT57JElubmVyRmllbGR9IH0gPSBkZWxldGUgJFNldFZhbHVlLT57JElubmVyRmllbGR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXskQ29uZmlnUGFyYW19ID0gJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICVDb25maWdJdGVtUGFyYW0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgY3JlYXRlIE5ldyBDb25maWdJdGVtIGZyb20gVGlja2V0OiAiCiAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIGNyZWF0ZWQgQ29uZmlnSXRlbUlECiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57U3RvcmVDb25maWdJdGVtSUREeW5hbWljRmllbGR9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0NvbmZpZ30tPntTdG9yZUNvbmZpZ0l0ZW1JRER5bmFtaWNGaWVsZH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZENvbmZpZyB8fCAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgZ2V0IER5bmFtaWNGaWVsZCAkUGFyYW17Q29uZmlnfS0+e1N0b3JlQ29uZmlnSXRlbUlERHluYW1pY0ZpZWxkfSBmb3IgVGlja2V0ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9LiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2YWx1ZQogICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZG4ndCBzZXQgRHluYW1pY0ZpZWxkIFZhbHVlIG9uICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfToiCiAgICAgICAgICAgICAgICAgICAgLiAiIGZvciBUaWNrZXQ6ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbGluayB0aWNrZXQKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ICkgewoKICAgICAgICAjIGdldCBsaW5rIG9iamVjdAogICAgICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGFsbCB0eXBlcwogICAgICAgIG15ICVDb25maWd1cmVkVHlwZXMgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRTZWxlY3RlZFR5cGU7CiAgICAgICAgbXkgJFNlbGVjdGVkRGlyZWN0aW9uOwoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlndXJlZFR5cGVzICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gbmUgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntTb3VyY2VOYW1lfQogICAgICAgICAgICAgICAgJiYgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxlY3RlZFR5cGUgICAgICA9ICRUeXBlOwogICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnU291cmNlJzsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gZXEgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntUYXJnZXROYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZERpcmVjdGlvbiA9ICdUYXJnZXQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgVFlQRTsKICAgICAgICB9CgogICAgICAgIGlmICggISRTZWxlY3RlZFR5cGUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiTGlua0FzICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBpcyBpbnZhbGlkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNvdXJjZU9iamVjdElEICAgPSAkQ29uZmlnSXRlbUlEOwogICAgICAgIG15ICRTb3VyY2VPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICBteSAkVGFyZ2V0T2JqZWN0SUQgICA9ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9OwogICAgICAgIG15ICRUYXJnZXRPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgaWYgKCAkU2VsZWN0ZWREaXJlY3Rpb24gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgJFRhcmdldE9iamVjdFR5cGUgPSAnSVRTTUNvbmZpZ0l0ZW0nOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICRTb3VyY2VPYmplY3RUeXBlLAogICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFNvdXJjZU9iamVjdElELAogICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJFRhcmdldE9iamVjdFR5cGUsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0T2JqZWN0SUQsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkU2VsZWN0ZWRUeXBlLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC4gIkNvdWxkbid0IExpbmsgVGlja2V0cyAkU291cmNlT2JqZWN0SUQgd2l0aCAkVGFyZ2V0T2JqZWN0SUQgYXMgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ProcessManagement/TransitionAction/ConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtVXBkYXRlIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW1JRCAocmVxdWlyZWQgaWYgbm8gTnVtYmVyIGlzIGdpdmVuKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQ29uZmlnSXRlbSBOdW1iZXIgKHJlcXVpcmVkIGlmIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdBIG5hbWUgKGNhbiBvbmx5IGJlIGNoYW5nZWQgaWYgbm8gbmFtZSBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVmVyc2lvblN0cmluZycsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdUaGUgdmVyc2lvbiBzdHJpbmcgKG9ubHkgaWYgbm8gdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgYW5kIGEgdmVyc2lvbiBpcyBhZGRlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1NldCBhIG5ldyBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdTZXQgYSBuZXcgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRHluYW1pY0ZpZWxkXzxOYW1lPiAocmVwbGFjZSA8TmFtZT4pJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0EgdmFsdWUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTGlua0FzJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0FsdGVybmF0aXZlIHRvfERlcGVuZHMgb258UmVsZXZhbnQgdG8nLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVXNlcklEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJzEgKGNhbiBvdmVyd3JpdGUgdGhlIGxvZ2dlZCBpbiB1c2VyKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCj1oZWFkMiBSdW4oKQoKICAgIFJ1biBEYXRhCgogICAgbXkgJENvbmZpZ0l0ZW1VcGRhdGVSZXN1bHQgPSAkQ29uZmlnSXRlbVVwZGF0ZUFjdGlvbk9iamVjdC0+UnVuKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgID0+IFwlVGlja2V0LCAgICMgcmVxdWlyZWQKICAgICAgICBQcm9jZXNzRW50aXR5SUQgICAgICAgICAgPT4gJ1AxMjMnLAogICAgICAgIEFjdGl2aXR5RW50aXR5SUQgICAgICAgICA9PiAnQTEyMycsCiAgICAgICAgVHJhbnNpdGlvbkVudGl0eUlEICAgICAgID0+ICdUMTIzJywKICAgICAgICBUcmFuc2l0aW9uQWN0aW9uRW50aXR5SUQgPT4gJ1RBMTIzJywKICAgICAgICBDb25maWcgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIHJlcXVpcmVkOgogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICdJRCBvZiB0aGUgQ29uZmlnIEl0ZW0nLAogICAgICAgICAgICAjIE9SCiAgICAgICAgICAgIE51bWJlciAgICAgICAgPT4gJ051bWJlciBvZiB0aGUgQ29uZmlnSXRlbScsCgogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIG9wdGlvbmFsOgogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdTb21lIENvbmZpZyBJdGVtIE5hbWUnLAogICAgICAgICAgICBEZXBsU3RhdGUgICAgID0+ICdTb21lIERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICBJbmNpU3RhdGUgICAgID0+ICdTb21lIEluY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJURlcGxTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScgKS0+JSo7CiAgICBteSAlSW5jaVN0YXRlMklETWFwID0gcmV2ZXJzZSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScgKS0+JSo7CgogICAgbXkgJUNvbmZpZ0l0ZW1QYXJhbTsKCiAgICBpZiAoICRQYXJhbXtDb25maWd9e0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgZm9yIHRoZSBwcm9jZXNzZXMgbW9zdGx5IHRoZSBDb25maWdJdGVtcyB3aWxsIGNvbWUgZnJvbSByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCByZWYgJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ID0gJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfVswXTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17Q29uZmlnfXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17Q29uZmlnfXtOdW1iZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgIG15ICRNaXNzaW5nID0gJFBhcmFte0NvbmZpZ317TnVtYmVyfQogICAgICAgICAgICA/ICJObyBDb25maWdJdGVtIHdpdGggTnVtYmVyICckUGFyYW17Q29uZmlnfXtOdW1iZXJ9JyEiCiAgICAgICAgICAgIDogIk5lZWQgQ29uZmlnSXRlbUlEIG9yIE51bWJlciEiOwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgIC4gIkNvdWxkIG5vdCB1cGRhdGUgQ0kgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgIC4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0gLiAiISAkTWlzc2luZyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAuICJObyBDb25maWdJdGVtIHdpdGggSUQgJyRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSc7IGZhaWxlZCBpbiBUaWNrZXQ6IgogICAgICAgICAgICAgICAgLiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSAuICIhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkUGFyYW17Q29uZmlnfXtOYW1lfSApIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte05hbWV9ID0gJFBhcmFte0NvbmZpZ317TmFtZX07CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWd9e0RlcGxTdGF0ZX0gJiYgJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9ICkgewogICAgICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9ICYmICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfSApIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgaWYgKCAkQ29uZmlnUGFyYW0gPX4gL15EeW5hbWljRmllbGRfKC4rKS8gKSB7CiAgICAgICAgICAgIG15ICRGaWVsZE5hbWUgICAgPSAkMTsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHUEFSQU0gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAgICAgIyBmb3Igc2V0IGZpZWxkcyB3ZSBuZWVkIHRvIG1hcCB0aGUgbmFtZSBvZiB0aGUgaW5uZXIgZmllbGRzCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZCAmJiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyAmJiByZWYgJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfSApIHsKICAgICAgICAgICAgICAgIFNFVFZBTFVFOgogICAgICAgICAgICAgICAgZm9yIG15ICRTZXRWYWx1ZSAoICRQYXJhbXtDb25maWd9eyRDb25maWdQYXJhbX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgU0VUVkFMVUUgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckZpZWxkICgga2V5cyAkU2V0VmFsdWUtPiUqICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZXRNYXBwaW5nLT57JElubmVyRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldFZhbHVlLT57ICRTZXRNYXBwaW5nLT57JElubmVyRmllbGR9IH0gPSBkZWxldGUgJFNldFZhbHVlLT57JElubmVyRmllbGR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFteyRDb25maWdQYXJhbX0gPSAkUGFyYW17Q29uZmlnfXskQ29uZmlnUGFyYW19OwogICAgICAgIH0KICAgIH0KCiAgICAjIHVwZGF0ZSBjb25maWcgaXRlbQogICAgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAlQ29uZmlnSXRlbVBhcmFtLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAuICJDb3VsZG4ndCB1cGRhdGUgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gZnJvbSBUaWNrZXQ6ICIKICAgICAgICAgICAgICAgIC4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0gLiAnIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbGluayB0aWNrZXQKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ICkgewoKICAgICAgICAjIGdldCBsaW5rIG9iamVjdAogICAgICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGFsbCB0eXBlcwogICAgICAgIG15ICVDb25maWd1cmVkVHlwZXMgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRTZWxlY3RlZFR5cGU7CiAgICAgICAgbXkgJFNlbGVjdGVkRGlyZWN0aW9uOwoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlndXJlZFR5cGVzICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gbmUgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntTb3VyY2VOYW1lfQogICAgICAgICAgICAgICAgJiYgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxlY3RlZFR5cGUgICAgICA9ICRUeXBlOwogICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnU291cmNlJzsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gZXEgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntUYXJnZXROYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZERpcmVjdGlvbiA9ICdUYXJnZXQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgVFlQRTsKICAgICAgICB9CgogICAgICAgIGlmICggISRTZWxlY3RlZFR5cGUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiTGlua0FzICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBpcyBpbnZhbGlkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNvdXJjZU9iamVjdElEICAgPSAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgbXkgJFNvdXJjZU9iamVjdFR5cGUgPSAnSVRTTUNvbmZpZ0l0ZW0nOwogICAgICAgIG15ICRUYXJnZXRPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgbXkgJFRhcmdldE9iamVjdFR5cGUgPSAnVGlja2V0JzsKICAgICAgICBpZiAoICRTZWxlY3RlZERpcmVjdGlvbiBlcSAnVGFyZ2V0JyApIHsKICAgICAgICAgICAgJFNvdXJjZU9iamVjdElEICAgPSAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfTsKICAgICAgICAgICAgJFNvdXJjZU9iamVjdFR5cGUgPSAnVGlja2V0JzsKICAgICAgICAgICAgJFRhcmdldE9iamVjdElEICAgPSAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAkU291cmNlT2JqZWN0VHlwZSwKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRTb3VyY2VPYmplY3RJRCwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICRUYXJnZXRPYmplY3RUeXBlLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFRhcmdldE9iamVjdElELAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFNlbGVjdGVkVHlwZSwKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZG4ndCBMaW5rIFRpY2tldHMgJFNvdXJjZU9iamVjdElEIHdpdGggJFRhcmdldE9iamVjdElEIGFzICRQYXJhbXtDb25maWd9LT57TGlua0FzfSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Service/PreferencesDB.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZjllMjk3YmFmMjg3ZTE2MDcxZDNhYzZhZDdmNmMxM2YxMWFjN2ZhIC0gS2VybmVsL1N5c3RlbS9TZXJ2aWNlL1ByZWZlcmVuY2VzREIucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZTo6UHJlZmVyZW5jZXNEQjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q2FjaGVUeXBlfSA9ICdTZXJ2aWNlUHJlZmVyZW5jZXNEQic7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKCiAgICAjIHByZWZlcmVuY2VzIHRhYmxlIGRhdGEKICAgICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gICAgICAgICAgPSAnc2VydmljZV9wcmVmZXJlbmNlcyc7CiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGVLZXl9ICAgICAgID0gJ3ByZWZlcmVuY2VzX2tleSc7CiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGVWYWx1ZX0gICAgID0gJ3ByZWZlcmVuY2VzX3ZhbHVlJzsKICAgICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVNlcnZpY2VJRH0gPSAnc2VydmljZV9pZCc7CgogICAgIyBjcmVhdGUgY2FjaGUgcHJlZml4CiAgICAkU2VsZi0+e0NhY2hlUHJlZml4fSA9ICdTZXJ2aWNlUHJlZmVyZW5jZXNEQicKICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0KICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0KICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfQogICAgICAgIC4gJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBTZXJ2aWNlUHJlZmVyZW5jZXNTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhTZXJ2aWNlSUQgS2V5IFZhbHVlKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIG9sZCBkYXRhCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGV9IFdIRVJFICIKICAgICAgICAgICAgLiAiJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfSA9ID8gQU5EICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0gPSA/IiwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9LCBcJFBhcmFte0tleX0gXSwKICAgICk7CgogICAgIyBpbnNlcnQgbmV3IGRhdGEKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gIklOU0VSVCBJTlRPICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gKCRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVNlcnZpY2VJRH0sICIKICAgICAgICAgICAgLiAiICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0sICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfSkgIgogICAgICAgICAgICAuICIgVkFMVUVTICg/LCA/LCA/KSIsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U2VydmljZUlEfSwgXCRQYXJhbXtLZXl9LCBcJFBhcmFte1ZhbHVlfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRTZWxmLT57Q2FjaGVQcmVmaXh9IC4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgU2VydmljZVByZWZlcmVuY2VzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciAocXcoU2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KIyAtLS0KIyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAtLS0KIwojICAgICMgY2hlY2sgaWYgc2VydmljZSBwcmVmZXJlbmNlcyBhcmUgYXZhaWxhYmxlCiMgICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NlcnZpY2VQcmVmZXJlbmNlcycpOwojIC0tLQoKICAgICMgcmVhZCBjYWNoZQogICAgbXkgJENhY2hlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRTZWxmLT57Q2FjaGVQcmVmaXh9IC4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiAkQ2FjaGU7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcHJlZmVyZW5jZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0sICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfSAiCiAgICAgICAgICAgIC4gIiBGUk9NICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gV0hFUkUgJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfSA9ID8iLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1NlcnZpY2VJRH0gXSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntDYWNoZVByZWZpeH0gLiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICApOwoKICAgIHJldHVybiAlRGF0YTsKfQoKMTsK</File>
        <File Location="Kernel/System/Stats/Dynamic/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgR2V0T2JqZWN0TmFtZSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIHJldHVybiAnSVRTTUNvbmZpZ0l0ZW0nOwp9CgpzdWIgR2V0T2JqZWN0QmVoYXZpb3VycyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVCZWhhdmlvdXJzID0gKAogICAgICAgIFByb3ZpZGVzRGFzaGJvYXJkV2lkZ2V0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAlQmVoYXZpb3VyczsKfQoKc3ViIEdldE9iamVjdEF0dHJpYnV0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgIyBnZXQgY3VycmVudCB0aW1lIHRvIGZpeCBidWcjMzgzMAogICAgbXkgJFRpbWVTdGFtcCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub1N0cmluZygpOwoKICAgICMgY3JlYXRlIG9iamVjdCBhdHRyaWJ1dGUgYXJyYXkKICAgIG15IEBPYmplY3RBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiAgICA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBMYW5ndWFnZVRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbmNpZGVudCBTdGF0ZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnQ3JlYXRlIFRpbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDcmVhdGVUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnQ2hhbmdlIFRpbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDaGFuZ2VUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFRpbWVTdG9wICAgICAgICAgPT4gJFRpbWVTdGFtcCwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ0NvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIHRoZSB4bWwgZGF0YQogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewoKICAgICAgICAjIGdldCB4bWwgZGVmaW5pdGlvbiBoYXNoCiAgICAgICAgbXkgJFhNTERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgISRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfTsKCiAgICAgICAgJFNlbGYtPl9YTUxBdHRyaWJ1dGVBZGQoCiAgICAgICAgICAgIE9iamVjdEF0dHJpYnV0ZXMgPT4gXEBPYmplY3RBdHRyaWJ1dGVzLAogICAgICAgICAgICBYTUxEZWZpbml0aW9uICAgID0+ICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJ1hNTDo6JyAuICRDbGFzc0lELAogICAgICAgICAgICBQcmVmaXhOYW1lICAgICAgID0+ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gQE9iamVjdEF0dHJpYnV0ZXM7Cn0KCnN1YiBfWE1MQXR0cmlidXRlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17T2JqZWN0QXR0cmlidXRlc307CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWSc7CgogICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAkUGFyYW17UHJlZml4fSAuPSAnOjonOwogICAgfQogICAgaWYgKCAkUGFyYW17UHJlZml4TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte1ByZWZpeE5hbWV9IC49ICc6Oic7CiAgICB9CgogICAgJFBhcmFte0xldmVsfSAgICAgIHx8PSAwOwogICAgJFBhcmFte1ByZWZpeH0gICAgIHx8PSAnJzsKICAgICRQYXJhbXtQcmVmaXhOYW1lfSB8fD0gJyc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U2VhcmNoYWJsZX0gJiYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBjcmVhdGUga2V5IGFuZCBuYW1lCiAgICAgICAgbXkgJEtleSAgPSAkUGFyYW17UHJlZml4fSAuICRJdGVtLT57S2V5fTsKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtQcmVmaXhOYW1lfSAuICRJdGVtLT57TmFtZX07CgogICAgICAgICMgYWRkIGF0dHJpYnV0ZQogICAgICAgIG15ICRBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MU3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgICAgIEtleSAgPT4gJEtleSwKICAgICAgICAgICAgSXRlbSA9PiAkSXRlbSwKICAgICAgICAgICAgTmFtZSA9PiAkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IElURU0gaWYgISRBdHRyaWJ1dGU7CiAgICAgICAgbmV4dCBJVEVNIGlmIHJlZiAkQXR0cmlidXRlIG5lICdBUlJBWSc7CiAgICAgICAgbmV4dCBJVEVNIGlmICFzY2FsYXIgQHskQXR0cmlidXRlfTsKCiAgICAgICAgIyBhZGQgYXR0cmlidXRlcyB0byBvYmplY3QgYXJyYXkKICAgICAgICBwdXNoIEB7ICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfSB9LCBAeyRBdHRyaWJ1dGV9OwoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICRTZWxmLT5fWE1MQXR0cmlidXRlQWRkKAogICAgICAgICAgICBPYmplY3RBdHRyaWJ1dGVzID0+ICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfSwKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiAgICA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIExldmVsICAgICAgICAgICAgPT4gJFBhcmFte0xldmVsfSArIDEsCiAgICAgICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgUHJlZml4TmFtZSAgICAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0U3RhdEVsZW1lbnRQcmV2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICggaW50IHJhbmQgNTAwICkgKyAxOwp9CgpzdWIgR2V0U3RhdEVsZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBsaW1pdAogICAgJFBhcmFte0xpbWl0fSA9IDFfMDAwXzAwMDsKCiAgICAjIGV4dHJhY3QgYWxsIHhtbCBwYXJhbSBrZXlzIGZyb20gdGhlIHBhcmFtIGhhc2gKICAgIG15IEBYTUxQYXJhbXMgPSBncmVwIHsgJF8gPX4gbXtcQSBYTUw6On14bXMgfSBzb3J0IGtleXMgJVBhcmFtOwoKICAgIGlmIChAWE1MUGFyYW1zKSB7CiAgICAgICAgcmV0dXJuICdZb3UgbXVzdCBkZWZpbmUgYSBjbGFzcyBpbiBvbmUgYXhpcy4nIGlmICEkUGFyYW17Q2xhc3NJRHN9OwogICAgICAgIHJldHVybiAnWW91IG11c3QgZGVmaW5lIGEgY2xhc3MgaW4gb25lIGF4aXMuJyBpZiByZWYgJFBhcmFte0NsYXNzSURzfSBuZSAnQVJSQVknOwogICAgfQoKICAgICMgdG8gY29sbGVjdCBkYXRlIGZpZWxkcyBzZXBhcmF0ZWx5CiAgICBteSAlWE1MUGFyYW1zRGF0ZUZpZWxkczsKCiAgICBteSAlWE1MQ2xhc3NJRHM7CiAgICBQQVJBTUtFWToKICAgIGZvciBteSAkUGFyYW1LZXkgKEBYTUxQYXJhbXMpIHsKCiAgICAgICAgIyBleHRyYWN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBteSAkU2VhcmNoVmFsdWVzID0gJFBhcmFteyRQYXJhbUtleX07CgogICAgICAgICMgcHJlcGFyZSBwYXJhbSB2YWx1ZQogICAgICAgIGlmICggIXJlZiAkU2VhcmNoVmFsdWVzICkgewogICAgICAgICAgICAkU2VhcmNoVmFsdWVzID0gWyRTZWFyY2hWYWx1ZXNdOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBQQVJBTUtFWSBpZiAhQHskU2VhcmNoVmFsdWVzfTsKCiAgICAgICAgIyBzcGxpdCBwYXJhbSBrZXkKICAgICAgICBteSAoICRDbGFzc0lELCAkU2VhcmNoS2V5ICkgPSAkUGFyYW1LZXkgPX4gbXsgXEEgWE1MOjogKCBcZCsgKSA6OiAoLispIFx6IH14bXM7CgogICAgICAgICMgcHJlcGFyZSBzZWFyY2gga2V5CiAgICAgICAgJFNlYXJjaEtleSA9fiBzWyA6OiBdWyd9WyVdeyddeG1zZzsKCiAgICAgICAgIyBBZGQgY2xhc3MgaWQgdG8geG1sIGNsYXNzIGlkIGhhc2gKICAgICAgICAkWE1MQ2xhc3NJRHN7JENsYXNzSUR9ID0gMTsKCiAgICAgICAgIyBjb2xsZWN0IGRhdGUgZmllbGRzIHNlcGFyYXRlbHkgKGUuZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlTmV3ZXJEYXRlKQogICAgICAgIGlmICggJFNlYXJjaEtleSA9fiBteyAoLispICggTmV3ZXJEYXRlIHwgT2xkZXJEYXRlICkgXHogfXhtcyApIHsKICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JDF9LT57JDJ9ID0gJFNlYXJjaFZhbHVlcy0+WzBdOwoKICAgICAgICAgICAgbmV4dCBQQVJBTUtFWTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHNlYXJjaCBoYXNoCiAgICAgICAgbXkgJFNlYXJjaEhhc2ggPSB7CiAgICAgICAgICAgICdbMV17XCdWZXJzaW9uXCd9WzFde1wnJyAuICRTZWFyY2hLZXkgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gJFNlYXJjaFZhbHVlcywKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgIH0KCiAgICAjIGJ1aWxkIHNlYXJjaCBoYXNoIGZvciBkYXRlIGZpZWxkcwogICAgZm9yIG15ICREYXRlRmllbGROYW1lICggc29ydCBrZXlzICVYTUxQYXJhbXNEYXRlRmllbGRzICkgewoKICAgICAgICBteSAkU2VhcmNoSGFzaCA9IHsKICAgICAgICAgICAgJ1sxXXtcJ1ZlcnNpb25cJ31bMV17XCcnIC4gJERhdGVGaWVsZE5hbWUgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gewogICAgICAgICAgICAgICAgJy1iZXR3ZWVuJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JERhdGVGaWVsZE5hbWV9LT57TmV3ZXJEYXRlfSwKICAgICAgICAgICAgICAgICAgICAkWE1MUGFyYW1zRGF0ZUZpZWxkc3skRGF0ZUZpZWxkTmFtZX0tPntPbGRlckRhdGV9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgIH0KCiAgICBpZiAoJVhNTENsYXNzSURzKSB7CiAgICAgICAgbXkgQEV4aXN0cyA9IGdyZXAgeyAkWE1MQ2xhc3NJRHN7JF99IH0gQHsgJFBhcmFte0NsYXNzSURzfSB9OwoKICAgICAgICByZXR1cm4gMCBpZiAhQEV4aXN0czsKICAgIH0KCiAgICAjIHN0YXJ0IGNvbmZpZyBpdGVtIGV4dGVuZGVkIHNlYXJjaAogICAgbXkgJEFtb3VudE9mQ0lzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgJVBhcmFtLAogICAgICAgIFJlc3VsdCA9PiAnQ09VTlQnLAogICAgKTsKCiAgICByZXR1cm4gJEFtb3VudE9mQ0lzOwp9CgpzdWIgRXhwb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgSW1wb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgoxOwo=</File>
        <File Location="Kernel/System/SysConfig/ValueType/Entity/ConfigItemClass.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6OlZhbHVlVHlwZTo6RW50aXR5OjpDb25maWdJdGVtQ2xhc3M7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQYXJhbU9iamVjdCkKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzo6VmFsdWVUeXBlOjpFbnRpdHkpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnOjpWYWx1ZVR5cGU6OkVudGl0eTo6Q29uZmlnSXRlbUNsYXNzIC0gU3lzdGVtIGNvbmZpZ3VyYXRpb24gY29uZmlnIGl0ZW0gY2xhc3MgZW50aXR5IHR5cGUgYmFja2VuZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCkNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEVudGl0eVR5cGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnOjpWYWx1ZVR5cGU6OkVudGl0eTo6Q29uZmlnSXRlbUNsYXNzJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBFbnRpdHlWYWx1ZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbUNsYXNzZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICBteSBAUmVzdWx0OwoKICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJENvbmZpZ0l0ZW1DbGFzc2VzLT4lKiApIHsKICAgICAgICBwdXNoIEBSZXN1bHQsICRDb25maWdJdGVtQ2xhc3Nlcy0+eyRJRH07CiAgICB9CgogICAgcmV0dXJuIEBSZXN1bHQ7Cn0KCnN1YiBFbnRpdHlMb29rdXBGcm9tV2ViUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1DbGFzc0lEJyApIC8vICcnOwoKICAgIHJldHVybiBpZiAhJENsYXNzSUQ7CgogICAgbXkgJEl0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICApOwoKICAgIHJldHVybiAkSXRlbS0+e05hbWV9Owp9CgoxOwo=</File>
        <File Location="Kernel/System/Ticket/Event/TicketStatusLink.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIHJldHVybiAxIGlmICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rJyk7CgogICAgIyBnZXQgdGlja2V0IGlkIGRlcGVuZGluZyBvbiBldmVudAogICAgbXkgJFRpY2tldElEOwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyB8fCAkUGFyYW17RXZlbnR9IGVxICdMaW5rRGVsZXRlJyApIHsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIENvbW1lbnQpKSB7CiAgICAgICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIERhdGEhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUeXBlIGluIERhdGEhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbGluayBldmVudCBjb25jZXJucyBhIHRpY2tldAogICAgICAgIHJldHVybiAxIHVubGVzcyAkUGFyYW17RGF0YX0tPntDb21tZW50fSA9fiBteyBcQSAoIFxkKyApICUlVGlja2V0IFx6IH14bXM7CgogICAgICAgICRUaWNrZXRJRCA9ICQxOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57VGlja2V0SUR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUaWNrZXRJRCBpbiBEYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldElEID0gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9OwogICAgfQoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAlVGlja2V0ICAgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKICAgIHJldHVybiAxIGlmICElVGlja2V0OwoKICAgICMgY2hlY2sgaWYgdGlja2V0IHR5cGUgaXMgcmVsZXZhbnQgKG9wdGlvbmFsIGZ1bmN0aW9uYWxpdHkpCiAgICBteSAkT2xkVGlja2V0VHlwZVJlbGV2YW50OwogICAgbXkgJE5ld1RpY2tldFR5cGVSZWxldmFudDsKICAgIG15ICRUaWNrZXRUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OlRpY2tldFR5cGVzJyk7CiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewoKICAgICAgICAjIHRpY2tldCB0eXBlcyBhcmUgbm90IHVzZWQsIGNoYW5nZXMgZG9uJ3QgYWZmZWN0IENJIGluY2lkZW50IHN0YXRlcwogICAgICAgIHJldHVybiAxIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFRpY2tldFR5cGVzKTsKCiAgICAgICAgIyBkZXRlcm1pbmUgdHlwZSBvZiB0aWNrZXQgYmVmb3JlIGxhc3QgdXBkYXRlCiAgICAgICAgbXkgJE9sZFRpY2tldFR5cGU7CiAgICAgICAgbXkgQEhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgIExJTkU6CiAgICAgICAgZm9yIG15ICRMaW5lICggcmV2ZXJzZSBASGlzdG9yeUxpbmVzICkgewogICAgICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUtPntIaXN0b3J5VHlwZX0gbmUgJ1R5cGVVcGRhdGUnOwogICAgICAgICAgICBteSBAQ29tbWVudFBhcnRzID0gc3BsaXQgLyUlLywgJExpbmUtPntOYW1lfTsKICAgICAgICAgICAgJE9sZFRpY2tldFR5cGUgPSAkQ29tbWVudFBhcnRzWzNdOwogICAgICAgICAgICBsYXN0IExJTkU7CiAgICAgICAgfQogICAgICAgIGlmICggISRPbGRUaWNrZXRUeXBlICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRm91bmQgbm8gcHJldmlvdXMgdGlja2V0IHR5cGUgZm9yIHRpY2tldCBpZCAkVGlja2V0SUQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBvbmx5IGNoYW5nZXMgcmVsZXZhbnQtPmlycmVsZXZhbnQgYW5kIGlycmVsZXZhbnQtPnJlbGV2YW50IGFyZSBvZiBpbnRlcmVzdAogICAgICAgICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQgPSAxIGlmIGdyZXAgeyAkXyBlcSAkT2xkVGlja2V0VHlwZSB9IEB7JFRpY2tldFR5cGVzfTsKICAgICAgICAkTmV3VGlja2V0VHlwZVJlbGV2YW50ID0gMSBpZiBncmVwIHsgJF8gZXEgJFRpY2tldHtUeXBlfSB9IEB7JFRpY2tldFR5cGVzfTsKICAgICAgICByZXR1cm4gMSBpZiAoICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQgfHwgJycgKSBlcSAoICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgfHwgJycgKTsKICAgIH0KCiAgICAjIHNob3J0Y3V0IGZvciBvdGhlciBldmVudHMgKGNoZWNrIGlmIHRpY2tldCB0eXBlIGlzIGluIHNjb3BlKQogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFRpY2tldFR5cGVzKSApIHsKICAgICAgICByZXR1cm4gMSBpZiAhJFRpY2tldHtUeXBlfTsKICAgICAgICByZXR1cm4gMSBpZiAhZ3JlcCB7ICRfIGVxICRUaWNrZXR7VHlwZX0gfSBAeyRUaWNrZXRUeXBlc307CiAgICB9CgogICAgIyBjaGVjayBpZiB0aWNrZXQgc3RhdGUgaXMgcmVsZXZhbnQKICAgIG15ICRPbGRUaWNrZXRTdGF0ZVJlbGV2YW50OwogICAgbXkgJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQ7CiAgICBteSBAT3BlblN0YXRlVHlwZXMgPSAoICduZXcnLCAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJywgJ3BlbmRpbmcgYXV0bycgKTsKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnICkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e09sZFRpY2tldERhdGF9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUaWNrZXRJRCBpbiBPbGRUaWNrZXREYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgb25seSBjaGFuZ2VzIG9wZW4tPmNsb3NlIGFuZCBjbG9zZS0+b3BlbiBhcmUgb2YgaW50ZXJlc3QKICAgICAgICAkTmV3VGlja2V0U3RhdGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRUaWNrZXR7U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICAkT2xkVGlja2V0U3RhdGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRQYXJhbXtEYXRhfS0+e09sZFRpY2tldERhdGF9LT57U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICByZXR1cm4gMSBpZiAoICROZXdUaWNrZXRTdGF0ZVJlbGV2YW50IHx8ICcnICkgZXEgKCAkT2xkVGlja2V0U3RhdGVSZWxldmFudCB8fCAnJyApOwogICAgfQoKICAgICMgc2hvcnRjdXQgZm9yIG90aGVyIGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IHN0YXRlIGlzIGluIHNjb3BlKQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIDEgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlVHlwZX0gfSBAT3BlblN0YXRlVHlwZXM7CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3IgdGlja2V0IGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IGhhcyBhbnkgcG90ZW50aWFsbHkgcmVsZXZhbnQgbGlua3MpCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFN0YXRlVXBkYXRlJyB8fCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRUeXBlVXBkYXRlJyApIHsKICAgICAgICBteSAlTGlua0tleUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgICAgICAgICAgS2V5MSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU3RhdGUgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKTsKICAgIH0KCiAgICAjIHByZXBhcmUgaW5jaWRlbnQgc3RhdGVzIGFuZCByZWxldmFudCBsaW5rIHR5cGVzIHBlciBpbmNpZGVudCBzdGF0ZQogICAgbXkgJEluY2lkZW50U3RhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6SW5jaWRlbnRTdGF0ZXMnKTsKICAgIG15ICRMaW5rVHlwZXMgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkxpbmtUeXBlcycpOwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJExpbmtUeXBlcykgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIGNvbmZpZ3VyYXRpb24gZm9yICdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6TGlua1R5cGVzJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZTsKCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0xpbmtBZGQnICkgewogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskTGlua1R5cGVzfSApIHsKICAgICAgICAgICAgaWYgKCAkTGlua1R5cGUgZXEgJFBhcmFte0RhdGF9LT57VHlwZX0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRMaW5rVHlwZXNCeUluY2lkZW50U3RhdGV7ICRMaW5rVHlwZXMtPnskTGlua1R5cGV9IH0gfSwgJExpbmtUeXBlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAxIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskTGlua1R5cGVzfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkTGlua1R5cGVzQnlJbmNpZGVudFN0YXRleyAkTGlua1R5cGVzLT57JExpbmtUeXBlfSB9IH0sICRMaW5rVHlwZTsKICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgYWRkZWQgb3IgcmVtb3ZlZCBsaW5rcwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyB8fCAkUGFyYW17RXZlbnR9IGVxICdMaW5rRGVsZXRlJyApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfTsKICAgICAgICBteSAkVmVyc2lvbiAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgb3B0aW9uYWw6IGNoZWNrIGlmIENJIGRlcGxveW1lbnQgc3RhdGUgaXMgcmVsZXZhbnQKICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkRlcGxveW1lbnRTdGF0ZXMnKTsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkRGVwbG95bWVudFN0YXRlcykgKSB7CiAgICAgICAgICAgIHJldHVybiAxIGlmICFncmVwIHsgJF8gZXEgJFZlcnNpb24tPntEZXBsU3RhdGV9IH0gQHskRGVwbG95bWVudFN0YXRlc307CiAgICAgICAgfQoKICAgICAgICAjIHJhaXNlIGluY2lkZW50IHN0YXRlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X0NoZWNrUmFpc2VJbmNpZGVudFN0YXRlKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICAgID0+ICRWZXJzaW9uLAogICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZXMgICAgICAgICAgID0+ICRJbmNpZGVudFN0YXRlcywKICAgICAgICAgICAgICAgIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSA9PiBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGxvd2VyIGluY2lkZW50IHN0YXRlIGlmIG5lY2Vzc2FyeQogICAgICAgIHJldHVybiAkU2VsZi0+X0NoZWNrTG93ZXJJbmNpZGVudFN0YXRlKAogICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgIEluY2lkZW50U3RhdGVzICAgICAgICAgICA9PiAkSW5jaWRlbnRTdGF0ZXMsCiAgICAgICAgICAgIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSA9PiBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICApOwogICAgfQoKICAgICMgaGFuZGxlIHRpY2tldCBjbG9zdXJlL3JlLW9wZW4gYW5kIHJlbGV2YW50L2lycmVsZXZhbnQgdHlwZSBjaGFuZ2UKICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnIHx8ICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewoKICAgICAgICAjIHJlbGV2YW50IHRpY2tldCBzdGF0ZSBhbmQgdHlwZSB1cGRhdGVzIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheQogICAgICAgICMgYm90aCBtZWFuIGEgdGlja2V0IGlzIHJlbGV2YW50IGZvciBDSSBpbmNpZGVudCBzdGF0ZSBjaGFuZ2VzIG9yIG5vdAogICAgICAgICMgdGlja2V0IHJlLW9wZW4gb3IgY2hhbmdlIHRvIHJlbGV2YW50IHR5cGUgPSBtaWdodCBoYXZlIHRvIHJhaXNlIGluY2lkZW50IHN0YXRlIG9mIENJcwogICAgICAgICMgdGlja2V0IGNsb3N1cmUgb3IgY2hhbmdlIHRvIGlycmVsZXZhbnQgdHlwZSA9IG1pZ2h0IGhhdmUgdG8gbG93ZXIgaW5jaWRlbnQgc3RhdGUgb2YgQ0lzCiAgICAgICAgbXkgJFJlbGV2YW50Tm93OwogICAgICAgIGlmICgKICAgICAgICAgICAgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRTdGF0ZVVwZGF0ZScgJiYgJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQgKQogICAgICAgICAgICB8fCAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICYmICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkUmVsZXZhbnROb3cgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBsb29wIHRocm91Z2ggYWxsIGxpbmsgdHlwZXMgYW5kIGNoZWNrIGxpbmtzIHRvIHNlZSBpZiB0aGVyZSBhcmUgcG9zc2libHkgYWZmZWN0ZWQgQ0lzCiAgICAgICAgbXkgJERlcGxveW1lbnRTdGF0ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzJyk7CiAgICAgICAgSU5DSURFTlRTVEFURToKICAgICAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyRJbmNpZGVudFN0YXRlc30gKSB7CiAgICAgICAgICAgIExJTktUWVBFOgogICAgICAgICAgICBmb3IgbXkgJExpbmtUeXBlICggQHsgJExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZXskSW5jaWRlbnRTdGF0ZX0gfSApIHsKICAgICAgICAgICAgICAgIG15IEBMaW5rZWRDSXMgPSAkU2VsZi0+X0NoZWNrVGlja2V0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICFATGlua2VkQ0lzOwoKICAgICAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChATGlua2VkQ0lzKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFZlcnNpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbDogY2hlY2sgaWYgQ0kgZGVwbG95bWVudCBzdGF0ZSBpcyByZWxldmFudAogICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCREZXBsb3ltZW50U3RhdGVzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIWdyZXAgeyAkXyBlcSAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gfSBAeyREZXBsb3ltZW50U3RhdGVzfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB2cyBzdGF0ZSBjYXVzZWQgYnkgbGluawoKICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgbG93ZXIgdGhhbiBjYXVzZWQgYnkgbGluayAtPiBzZXQKICAgICAgICAgICAgICAgICAgICBpZiAoJFJlbGV2YW50Tm93KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3J0Y3V0OiBub3RoaW5nIHRvIGRvIGlmIENJIGlzIGFscmVhZHkgaW4gaGlnaGVzdCBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGVzLT5bMF07CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3J0Y3V0OiBub3RoaW5nIHRvIGRvIGlmIENJIGlzIGFscmVhZHkgaW4gc2FtZSBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIENJIGlzIGluIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgIFRNUElOQ0lERU5UU1RBVEU6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkVG1wSW5jaWRlbnRTdGF0ZSAoIEB7JEluY2lkZW50U3RhdGVzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBmdXJ0aGVyIGluY2lkZW50IHN0YXRlcyBhcmUgbG93ZXIgdGhhbiBjdXJyZW50IG9uZSAtPiBzZXQgbmV3IHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFRNUElOQ0lERU5UU1RBVEUgaWYgJFRtcEluY2lkZW50U3RhdGUgZXEgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IGVxICRUbXBJbmNpZGVudFN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNldCBuZXcgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPl9TZXRDSVN0YXR1cygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgc2FtZSBhcyBjYXVzZWQgYnkgbGluayAtPiByZS1jYWxjdWxhdGUKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgYWxyZWFkeSBpbiBsb3dlc3QgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IGVxICRJbmNpZGVudFN0YXRlcy0+Wy0xXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgbm90IGluIHNhbWUgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IG5lICRJbmNpZGVudFN0YXRlOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNhbGN1bGF0ZSBpbmNpZGVudCBzdGF0ZSBleGFjdGx5CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT5fQ2hlY2tMb3dlckluY2lkZW50U3RhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlcyAgICAgICAgICAgPT4gJEluY2lkZW50U3RhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlID0+IFwlTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB1bmtub3duL2lycmVsZXZhbnQgZXZlbnQKICAgIGVsc2UgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxOwp9CgojIFJhdGlvbmFsZToKIyBTdGFydCBhdCBoaWdoZXN0ICh3b3JzdCkgaW5jaWRlbnQgc3RhdGUgYW5kIGxvb3AgZG93biB0byBjdXJyZW50IGluY2lkZW50IHN0YXRlLAojICAgY2hlY2tpbmcgZm9yIGxpbmtzIG9uIGFsbCB0eXBlcyBjb25maWd1cmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBpbmNpZGVudCBzdGF0ZS4KIyBJZiBhbnkgbGluayBmb3IgYSBoaWdoZXIgaW5jaWRlbnQgc3RhdGUgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgZm91bmQsCiMgICBzZXQgdGhpcyBzdGF0ZSBhbmQgZXhpdC4KIyBEdWUgdG8gdG9wLXRvLWJvdHRvbSBtZXRob2QsIG5vIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSBjYW4gb2NjdXIgbGF0ZXIuCnN1YiBfQ2hlY2tSYWlzZUluY2lkZW50U3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFZlcnNpb24gSW5jaWRlbnRTdGF0ZXMgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlIFRpY2tldElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9vcCB0aHJvdWdoIHRhcmdldCBzdGF0ZXMgYW5kIGNoZWNrIGlmIGl0IG5lZWRzIHRvIGJlIGNoYW5nZWQKICAgIElOQ0lERU5UU1RBVEU6CiAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9IH0gKSB7CgogICAgICAgICMgQ0kgYWxyZWFkeSBpbiB0YXJnZXQgc3RhdGUgLSBub3RoaW5nIHRvIGRvCiAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGxpbmtlZCB0aWNrZXRzIHRoYXQgbGVhZCB0byBpbmNpZGVudCBzdGF0ZQogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkUGFyYW17TGlua1R5cGVzQnlJbmNpZGVudFN0YXRlfS0+eyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICEkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBsaW5rZWQgdGlja2V0IC0gc2V0IGluY2lkZW50IHN0YXRlIGFuZCBleGl0CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKIyBSYXRpb25hbGU6CiMgU2hvcnRjdXQgaWYgQ0kgaXMgYWxyZWR5IGluIGxvd2VzdCAoYmVzdCkgaW5jaWRlbnQgc3RhdGUgPSBjYW4ndCBoYXZlIGNoYW5nZWQgYWZ0ZXIgbGluayBkZWxldGUuCiMgU3RhcnQgYXQgaGlnaGVzdCAod29yc3QpIGluY2lkZW50IHN0YXRlIGFuZCBsb29wIGRvd24gdG8gY3VycmVudCBpbmNpZGVudCBzdGF0ZSwKIyAgIGNoZWNraW5nIGZvciBsaW5rcyBvbiBhbGwgdHlwZXMgY29uZmlndXJlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgaW5jaWRlbnQgc3RhdGVzLgojIElmIGEgbGluayBmb3IgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgZm91bmQsIGV4aXQgaW1tZWRpYXRlbHkgKG5vIGNoYW5nZSkuCiMgT3RoZXJ3aXNlIHNldCBpbmNpZGVudCBzdGF0ZSBmb3IgZmlyc3Qgb2NjdXJhbmNlIG9mIGEgbGluaywgdGhlbiBleGl0LgojIElmIG5vIGxpbmsgaXMgZm91bmQsIHNldCB0aGUgbG93ZXN0IHN0YXRlLgojIER1ZSB0byB0b3AtdG8tYm90dG9tIG1ldGhvZCwgZmlyc3QgcmVtZW1iZXJlZCBpbmNpZGVudCBzdGF0ZSBpcyB0aGUgaGlnaGVzdCBwb3NzaWJsZS4Kc3ViIF9DaGVja0xvd2VySW5jaWRlbnRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbiBJbmNpZGVudFN0YXRlcyBMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3IgbG93ZXN0IGxldmVsCiAgICByZXR1cm4gMSBpZiAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9IGVxICRQYXJhbXtJbmNpZGVudFN0YXRlc30tPlstMV07CgogICAgIyBsb29wIHRocm91Z2ggdGFyZ2V0IHN0YXRlcyBhbmQgY2hlY2sgaWYgaXQgbmVlZHMgdG8gYmUgY2hhbmdlZAogICAgbXkgJExvd2VySW5jaWRlbnRTdGF0ZTsKICAgIElOQ0lERU5UU1RBVEU6CiAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9IH0gKSB7CgogICAgICAgICMgc2tpcCBsZXZlbCBpZiBjdXJyZW50IENJIGluY2lkZW50IHN0YXRlIGlzIG5vdCBvbiB0aGlzIG9yIGFueSBoaWdoZXIgbGV2ZWwKICAgICAgICBuZXh0IElOQ0lERU5UU1RBVEUgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBuZSAkSW5jaWRlbnRTdGF0ZSAmJiAhJExvd2VySW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGxpbmtlZCB0aWNrZXRzIHRoYXQga2VlcCBpbmNpZGVudCBzdGF0ZQogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkUGFyYW17TGlua1R5cGVzQnlJbmNpZGVudFN0YXRlfS0+eyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICEkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBsaW5rZWQgdGlja2V0CgogICAgICAgICAgICAjIGtlZXAgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHNldCBuZXcgKGxvd2VyKSBpbmNpZGVudCBzdGF0ZSBhbmQgZXhpdAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9TZXRDSVN0YXR1cygKICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAkSW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhhdCBzdGF0ZSBuZWVkcyB0byBiZSBjaGFuZ2VkICg9IGN1cnJlbnQgbGV2ZWwgaXNuJ1QganVzdGlmaWVkIGJ5IGxpbmtzIGFueW1vcmUpCiAgICAgICAgJExvd2VySW5jaWRlbnRTdGF0ZSA9IDE7CiAgICB9CgogICAgIyBubyByZWxldmFudCBsaW5rcyBoYXZlIGJlZW4gZm91bmQsIGJ1dCBDSSB3YXNuJ3QgaW4gbG93ZXN0IGluY2lkZW50IHN0YXRlIGJlZm9yZSAtIHNldCBpdCBub3cgYW5kIGV4aXQKICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgIFZlcnNpb24gICAgICAgPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgIEluY2lkZW50U3RhdGUgPT4gJFBhcmFte0luY2lkZW50U3RhdGVzfS0+Wy0xXSwKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICApOwp9CgojIHNldCBDSSB0byBhIHNwZWNpZmllZCBpbmNpZGVudCBzdGF0ZSBhbmQgbG9nIGNoYW5nZSBpbiBjb3JyZXNwb25kaW5nIHRpY2tldApzdWIgX1NldENJU3RhdHVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uIEluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpZGVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW5jaWRlbnRTdGF0ZUxpc3QpOwoKICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgaXMgdmFsaWQKICAgIG15ICVSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3QgPSByZXZlcnNlICV7JEluY2lkZW50U3RhdGVMaXN0fTsKICAgIGlmICggISRSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3R7ICRQYXJhbXtJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSGF2ZSBpbnZhbGlkIGluY2lkZW50IHN0YXRlICckUGFyYW17SW5jaWRlbnRTdGF0ZX0nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBhZGQgYSBuZXcgdmVyc2lvbiB3aXRoIHRoZSBuZXcgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkFkZCgKICAgICAgICAleyAkUGFyYW17VmVyc2lvbn0gfSwKICAgICAgICBJbmNpU3RhdGVJRCA9PiAkUmV2ZXJzZUluY2lkZW50U3RhdGVMaXN0eyAkUGFyYW17SW5jaWRlbnRTdGF0ZX0gfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhJFZlcnNpb25JRDsKCiAgICAjIGxvZyBjaGFuZ2UgaW4gdGlja2V0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPkhpc3RvcnlBZGQoCiAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICBOYW1lICAgICAgICAgPT4gIlVwZGF0ZWQgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW0gJyRQYXJhbXtWZXJzaW9ufS0+e051bWJlcn0nIHRvICckUGFyYW17SW5jaWRlbnRTdGF0ZX0nLiIsCiAgICAgICAgQ3JlYXRlVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgojIGNoZWNrIGlmIHJlbGV2YW50IENJcyBhcmUgbGlua2VkIHRvIGEgdGlja2V0CnN1YiBfQ2hlY2tUaWNrZXRMaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQgVHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsaW5rIHR5cGUgbG9va3VwCiAgICBteSAkTGlua1R5cGVMb29rdXAgPSAkU2VsZi0+X0xpbmtUeXBlTG9va3VwR2V0KCk7CgogICAgbXkgJUxpbmtLZXlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgIE9iamVjdDIgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntOYW1lfSwKICAgICAgICBEaXJlY3Rpb24gPT4gJExpbmtUeXBlTG9va3VwLT57ICRQYXJhbXtUeXBlfSB9LT57RGlyZWN0aW9ufS0+e1RpY2tldH0sCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApOwogICAgcmV0dXJuICggc29ydCBrZXlzICVMaW5rS2V5TGlzdCApOwp9CgojIGNoZWNrIGlmIHJlbGV2YW50IG9wZW4gdGlja2V0cyBhcmUgbGlua2VkIHRvIGEgQ0kKc3ViIF9DaGVja0NvbmZpZ0l0ZW1MaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGluayB0eXBlIGxvb2t1cAogICAgbXkgJExpbmtUeXBlTG9va3VwID0gJFNlbGYtPl9MaW5rVHlwZUxvb2t1cEdldCgpOwoKICAgIG15ICVMaW5rS2V5TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtLZXlMaXN0KAogICAgICAgIE9iamVjdDEgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZUxvb2t1cC0+eyAkUGFyYW17VHlwZX0gfS0+e05hbWV9LAogICAgICAgIERpcmVjdGlvbiA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntEaXJlY3Rpb259LT57SVRTTUNvbmZpZ0l0ZW19LAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKTsKCiAgICAjIGxpc3Qgb2YgcmVsZXZhbnQgc3RhdGUgdHlwZXMKICAgIG15IEBPcGVuU3RhdGVUeXBlcyA9ICggJ25ldycsICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInLCAncGVuZGluZyBhdXRvJyApOwoKICAgICMgdXNlIHRpY2tldCB0eXBlIGNoZWNrPwogICAgbXkgJFRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMnKTsKICAgIG15ICRDaGVja1RpY2tldFR5cGVzOwogICAgJENoZWNrVGlja2V0VHlwZXMgPSAxIGlmIElzQXJyYXlSZWZXaXRoRGF0YSgkVGlja2V0VHlwZXMpOwoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBUSUNLRVRJRDoKICAgIGZvciBteSAkVGlja2V0SUQgKCBzb3J0IGtleXMgJUxpbmtLZXlMaXN0ICkgewogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgIG5leHQgVElDS0VUSUQgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlVHlwZX0gfSBAT3BlblN0YXRlVHlwZXM7CiAgICAgICAgaWYgKCRDaGVja1RpY2tldFR5cGVzKSB7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRUaWNrZXR7VHlwZX07CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1R5cGV9IH0gQHskVGlja2V0VHlwZXN9OwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICByZXR1cm47Cn0KCiMgY29tcGlsZSBsaXN0IG9mIGludGVybmFsIGxpbmsgdHlwZSBuYW1lcyBhbmQgZGlyZWN0aW9ucyB0byB1c2UgZm9yIExpbmtLZXlMaXN0CnN1YiBfTGlua1R5cGVMb29rdXBHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHdlIGhhdmUgZ2VuZXJhdGVkIGxvb2t1cCBiZWZvcmUKICAgIHJldHVybiAkU2VsZi0+e0xpbmtUeXBlTG9va3VwfSBpZiAkU2VsZi0+e0xpbmtUeXBlTG9va3VwfTsKCiAgICBteSAlTGlua1R5cGVMb29rdXA7CiAgICBteSAlVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5UeXBlTGlzdCgpOwogICAgZm9yIG15ICRUeXBlTmFtZUludGVybmFsICggc29ydCBrZXlzICVUeXBlTGlzdCApIHsKICAgICAgICBteSAkU291cmNlTmFtZSA9ICRUeXBlTGlzdHskVHlwZU5hbWVJbnRlcm5hbH0tPntTb3VyY2VOYW1lfTsKICAgICAgICBteSAkVGFyZ2V0TmFtZSA9ICRUeXBlTGlzdHskVHlwZU5hbWVJbnRlcm5hbH0tPntUYXJnZXROYW1lfTsKICAgICAgICAkTGlua1R5cGVMb29rdXB7JFNvdXJjZU5hbWV9ID0gewogICAgICAgICAgICBOYW1lICAgICAgPT4gJFR5cGVOYW1lSW50ZXJuYWwsCiAgICAgICAgICAgIERpcmVjdGlvbiA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGlja2V0ICAgICAgICAgPT4gJFNvdXJjZU5hbWUgZXEgJFRhcmdldE5hbWUgPyAnQm90aCcgOiAnU291cmNlJywKICAgICAgICAgICAgfSwKICAgICAgICB9OwogICAgICAgICRMaW5rVHlwZUxvb2t1cHskVGFyZ2V0TmFtZX0gPSB7CiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkVHlwZU5hbWVJbnRlcm5hbCwKICAgICAgICAgICAgRGlyZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+ICRTb3VyY2VOYW1lIGVxICRUYXJnZXROYW1lID8gJ0JvdGgnIDogJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBUaWNrZXQgICAgICAgICA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdUYXJnZXQnLAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CgogICAgIyByZW1lbWJlciByZXN1bHQKICAgICRTZWxmLT57TGlua1R5cGVMb29rdXB9ID0gXCVMaW5rVHlwZUxvb2t1cDsKCiAgICByZXR1cm4gXCVMaW5rVHlwZUxvb2t1cDsKfQoKMTsK</File>
        <File Location="Kernel/System/UnitTest/ITSMConfigItemHelper.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0ZGFkZTgxZTdlMDQ0MzNjYjJhZWQzNmFmMGM4NzI3ZDgyMmExYzYxIC0gS2VybmVsL1N5c3RlbS9Vbml0VGVzdC9IZWxwZXIucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIFRlc3QyOjpBUEkgcXcvY29udGV4dCBydW5fc3VidGVzdC87CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OllBTUwnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXIgLSB1bml0IHRlc3QgaGVscGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIENNREIKCj1oZWFkMiBERVNDUklQVElPTgoKVG8gYmUgdXNlZCBpbiB0ZXN0IHNjcmlwdHMuIENsZWFudXAgd2lsbCBiZSB0cmlnZ2VyZWQgaW4gdGhlIEVORCBibG9jay4KCj1oZWFkMSBNRVRIT0RTCgo9aGVhZDIgbmV3KCkKCmNvbnN0cnVjdCBhIGhlbHBlciBvYmplY3QuCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiAgICAjIERvIG5vdCBjYWxsIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXItPm5ldygpLAogICAgIyBpbnN0ZWFkIHBhc3MgcGFyYW1zIHZpYSB0aGUgT2JqZWN0TWFuYWdlci4KICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicgPT4gewogICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwgICAgIyBydW5zIHRoZSB0ZXN0IGluIGEgdHJhbnNhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCByb2xsIGl0IGJhY2sgaW4gdGhlIGRlc3RydWN0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URTogUm9sbGJhY2sgZG9lcyBub3Qgd29yayBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhbmdlcyBpbiB0aGUgZGF0YWJhc2UgbGF5b3V0LiBJZiB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2FudCB0byBkbyB0aGlzIGluIHlvdXIgdGVzdHMsIHlvdSBjYW5ub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoaXMgb3B0aW9uIGFuZCBtdXN0IGhhbmRsZSB0aGUgcm9sbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgeW91cnNlbGYuCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKClZhbGlkIHBhcmFtZXRlcnMgYXJlOgoKPW92ZXIgNAoKPWl0ZW0gU2tpcFNTTFZlcmlmeQoKVW5zZXQgQzwkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9PiB3aGlsZSB0aGlzIGluc3RhbmNlIGV4aXN0cy4KCj1pdGVtIFVzZVRtcEFydGljbGVEaXIKCj1pdGVtIFJlc3RvcmVEYXRhYmFzZQoKPWl0ZW0gRGlzYWJsZUFzeW5jQ2FsbHMKCj1iYWNrCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGZpbmQgb3V0IHdoZXRoZXIgbG9hZGVyIGZpbGVzIGFyZSBzdG9yZWQgaW4gUzMgb3IgaW4gdGhlIGZpbGUgc3lzdGVtCiAgICAkU2VsZi0+e1MzQWN0aXZlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3RvcmFnZTo6UzM6OkFjdGl2ZScpID8gMSA6IDA7CgogICAgIyBSZW1vdmUgYW55IGxlZnRvdmVyIGN1c3RvbSBmaWxlcyBmcm9tIGFib3J0ZWQgcHJldmlvdXMgcnVucy4KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyktPkN1c3RvbUZpbGVDbGVhbnVwKCk7CgogICAgIyBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2tpcCBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGlmIG5lZWRlZAogICAgaWYgKCAkUGFyYW17U2tpcFNTTFZlcmlmeX0gKSB7CgogICAgICAgICMgcmVtZW1iZXIgb3JpZ2luYWwgdmFsdWUsIHNvIHRoYXQgaXQgY2FuIGJlIHJlc2V0IGluIERFU1RST1koKQogICAgICAgICRTZWxmLT57UEVSTF9MV1BfU1NMX1ZFUklGWV9IT1NUTkFNRX0gPSAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9OwoKICAgICAgICAjIHNldCBlbnZpcm9ubWVudCB2YWx1ZSB0byAwCiAgICAgICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSA9IDA7ICAgICMjIG5vIGNyaXRpYyBxdyhWYXJpYWJsZXM6OlJlcXVpcmVMb2NhbGl6ZWRQdW5jdHVhdGlvblZhcnMpCgogICAgICAgICRTZWxmLT57UmVzdG9yZVNTTFZlcmlmeX0gPSAxOwogICAgfQoKICAgICMgc3dpdGNoIGFydGljbGUgZGlyIHRvIGEgdGVtcG9yYXJ5IG9uZSB0byBhdm9pZCBjb2xsaXNpb25zCiAgICBpZiAoICRQYXJhbXtVc2VUbXBBcnRpY2xlRGlyfSApIHsKICAgICAgICAkU2VsZi0+VXNlVG1wQXJ0aWNsZURpcigpOwogICAgfQoKICAgIGlmICggJFBhcmFte1Jlc3RvcmVEYXRhYmFzZX0gKSB7CiAgICAgICAgJFNlbGYtPntSZXN0b3JlRGF0YWJhc2V9ID0gMTsKICAgICAgICAkU2VsZi0+QmVnaW5Xb3JrKCk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGlzYWJsZUFzeW5jQ2FsbHN9ICkgewogICAgICAgICRTZWxmLT5EaXNhYmxlQXN5bmNDYWxscygpOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFRlc3RDb25maWdJdGVtQ2xhc3NDcmVhdGUoKQoKY3JlYXRlcyBhIHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCBpbiB0ZXN0cy4gUmV0dXJucwp0aGUgY2xhc3MgaWQgb2YgdGhlIG5ldyBjb25maWcgaXRlbSBjbGFzcy4KCiAgICBteSAkVGVzdENJQ2xhc3NOYW1lID0gJEhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DbGFzc0NyZWF0ZSgKICAgICAgICBOYW1lICAgICAgICAgICAgICAgID0+ICdTb21lQ2xhc3NOYW1lJywgICAgICMgb3B0aW9uYWwsIHJhbmRvbWx5IGdlbmVyYXRlZCBpZiBub3QgZ2l2ZW4KICAgICAgICBWZXJzaW9uU3RyaW5nTW9kdWxlID0+ICwgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIGRlZmF1bHQgaXMgJ0luY3JlbWVudGFsJwogICAgICAgIFZlcnNpb25UcmlnZ2VyICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAnJwogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlZmluaXRpb24gICAgICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBUZXN0Q29uZmlnSXRlbUNsYXNzQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRleHQgPSBjb250ZXh0KCk7CgogICAgIyBjcmVhdGUgcmFuZG9tIHN1ZmZpeAogICAgbXkgJFRlc3RDbGFzc0lEOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBHZXQgY29uZmlnIGl0ZW0gZ3JvdXAgaWQKICAgIG15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgYmFpbF9vdXQoIkdvdCBubyBncm91cCBpZCBmb3IgZ3JvdXAgbmFtZSAnaXRzbS1jb25maWdpdGVtJyIpIHVubGVzcyAkQ29uZmlnSXRlbUdyb3VwSUQ7CgogICAgbXkgJFZlcnNpb25TdHJpbmdNb2R1bGUgPSBbKCRQYXJhbXtWZXJzaW9uU3RyaW5nTW9kdWxlfSA/ICRQYXJhbXtWZXJzaW9uU3RyaW5nTW9kdWxlfSA6ICdJbmNyZW1lbnRhbCcpXTsKICAgIG15ICRDb2RlID0gc3ViIHsKCiAgICAgICAgQ09VTlQ6CiAgICAgICAgZm9yICggMSAuLiAxMCApIHsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQogICAgICAgICAgICBteSAkVGVzdENsYXNzTmFtZSA9ICRQYXJhbXtOYW1lfSB8fCAoJ1VuaXRUZXN0JyAuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyktPkdldFJhbmRvbUlEKCkpOwoKICAgICAgICAgICAgIyBhZGQgYm90aCB1bml0dGVzdCBjb25maWcgaXRlbSBjbGFzc2VzCiAgICAgICAgICAgICRUZXN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJFRlc3RDbGFzc05hbWUsCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRUZXN0Q2xhc3NJRCApIHsKCiAgICAgICAgICAgICAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkVGVzdENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbm90ZSgiU2V0IGNvbmZpZyBpdGVtIGNsYXNzIFBlcm1pc3Npb24gdG8gaXRzbS1jb25maWdpdGVtIik7CgogICAgICAgICAgICAgICAgIyBzZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlCiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkVmVyc2lvblN0cmluZ01vZHVsZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBub3RlKCJTZXQgY29uZmlnIGl0ZW0gY2xhc3MgVmVyc2lvblN0cmluZ01vZHVsZSB0byBJbmNyZW1lbnRhbCIpOwoKICAgICAgICAgICAgICAgICMgc2V0IGNhdGVnb3J5CiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ0NhdGVnb3JpZXMnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiBbJ0RlZmF1bHQnXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBub3RlKCJTZXQgY29uZmlnIGl0ZW0gY2xhc3MgY2F0ZWdvcmllcyB0byBEZWZhdWx0Iik7CgogICAgICAgICAgICAgICAgIyBTZXQgdmVyc2lvbiB0cmlnZ2Vycy4KICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJFRlc3RDbGFzc0lELAogICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiBbICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJyBdLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgICAgICAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBldmFsICRQYXJhbXtEZWZpbml0aW9ufSwgICAgIyMgbm8gY3JpdGljIHF3KEJ1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neUV2YWwpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmFpbF9vdXQoJ0NvdWxkIG5vdCBhZGQgZGVmaW5pdGlvbiBmb3IgdGVzdCBjb25maWcgaXRlbSBjbGFzcycpIHVubGVzcyAkUmVzdWx0LT57U3VjY2Vzc307CgogICAgICAgICAgICAgICAgbGFzdCBDT1VOVDsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIGJhaWxfb3V0KCdDb3VsZCBub3QgY3JlYXRlIHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MnKSB1bmxlc3MgJFRlc3RDbGFzc0lEOwogICAgICAgIHBhc3MoIkNyZWF0ZWQgdGVzdCBjb25maWcgaXRlbSBjbGFzcyAkVGVzdENsYXNzSUQiKTsKCiAgICAgICAgIyBSZW1lbWJlciBVc2VySUQgb2YgdGhlIHRlc3QgdXNlciB0byBsYXRlciBzZXQgaXQgdG8gaW52YWxpZAogICAgICAgICMgICBpbiB0aGUgZGVzdHJ1Y3Rvci4KICAgICAgICAkU2VsZi0+e1Rlc3RDb25maWdJdGVtQ2xhc3Nlc30gfHw9IFtdOwogICAgICAgIHB1c2goIEB7ICRTZWxmLT57VGVzdENvbmZpZ0l0ZW1DbGFzc2VzfSB9LCAkVGVzdENsYXNzSUQgKTsKICAgIH07CgogICAgcnVuX3N1YnRlc3QoCiAgICAgICAgJ1Rlc3RDb25maWdJdGVtQ2xhc3MnLAogICAgICAgICRDb2RlLAogICAgICAgIHsKICAgICAgICAgICAgYnVmZmVyZWQgICAgICA9PiAxLAogICAgICAgICAgICBpbmhlcml0X3RyYWNlID0+IDEKICAgICAgICB9CiAgICApOwoKICAgICRDb250ZXh0LT5yZWxlYXNlKCk7CgogICAgcmV0dXJuICRUZXN0Q2xhc3NJRDsKfQoKc3ViIFRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SGVscGVyT2JqZWN0fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGVscGVyT2JqZWN0IScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb250ZXh0ID0gY29udGV4dCgpOwoKICAgIG15ICRIb21lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CgogICAgbXkgJE1haW5PYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgIyBwcmVsaW1pbmFyeSBjcmVhdGUgbmVlZGVkIG5hbWVzcGFjZXMgdG8gbm90IGludGVyZmVyZSB3aXRoIHN5c2NvbmZpZyBhZnRlcndhcmRzCiAgICAkUGFyYW17SGVscGVyT2JqZWN0fS0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgIEtleSAgID0+ICdOYW1lc3BhY2VzIyMjRHluYW1pY0ZpZWxkJywKICAgICAgICBWYWx1ZSA9PiBbCiAgICAgICAgICAgICdDb21wdXRlcicsCiAgICAgICAgICAgICdIYXJkd2FyZScsCiAgICAgICAgICAgICdMb2NhdGlvbicsCiAgICAgICAgICAgICdOZXR3b3JrJywKICAgICAgICAgICAgJ1NvZnR3YXJlJywKICAgICAgICBdLAogICAgKTsKCiAgICAjIFRPRE8gaW1wb3J0IGNsYXNzZXMgY29tYmluZWQgZnJvbSBvbmUgeWFtbCBmaWxlIGFzIGFycmF5IG9mIGNsYXNzZXMKICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MZWdhY3lDbGFzc2VzLnltbCIsCiAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgKTsKCiAgICBteSAkRGVmaW5pdGlvblJhdyA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgIERhdGEgPT4gJHskQ29udGVudH0sCiAgICApOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ID0+ICREZWZpbml0aW9uUmF3LAogICAgKTsKCiAgICAkQ29udGV4dC0+cmVsZWFzZSgpOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="doc/itsm-configuration-management-database.dia" Permission="660" Encode="Base64">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</File>
        <File Location="doc/itsm-configuration-management-database.png" Permission="660" Encode="Base64">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b8uWLXFxcT179pS+NpmA3adPn0GDBm3dutWCbdBqtRasDR2OlUJLBoNBEARSlgAAkC1atEgUxZqamuTk5MDAQFs3B4ANcHMMwPJ+/PHHqVOnNmuTadOmbdu2zSJ7r6mp+cc//vH+++9bpDZ0UNKAOCcnC4/7JrQEAAAAmODmGLBzJoPR5K/79++Pjo52dXXt2rWr/DoPg8GwcOHCbt26+fr6PvfccxUVFfJWK1asCA8Pl3rU9W5r7OTJk8OGDau709ra2pkzZ3bp0iUoKGjZsmXGm9x33331jupvlpqams8++yw0NPS1116bPn16K2tDh2alrCUpBY/QEgAAACBjGm/AQT3zzDOrVq165JFHbt269fe///35558XBOGTTz756aefDhw44OPj89prr82fP/+jjz6S1v/555+PHTsWEhLS0LbG8vPzg4OD6+508eLFGRkZ586dE0Xx2WefNV4UEhKSm5vb4sOprq5evXp1YmJidXW1VqudNm1aVFRUi2uDHSBrqRF5eXlMbQYAxry9vbt06WLrVgBAR0VoCXBQTk5Oubm5BQUFERERcuZRUlLSDz/80K1bN0EQli9fPmTIEDm0tHLlSimu1NC2xhqaXOnrr7/etm1baGioIAiffvpp//79LXIsJ0+efOSRRzQajdzt37Fjh6+vr7S0qqqqurraIjsC7IOvr685r6AGAAdRXV39l7/85ZNPPrF1QwCgoyK0BDioH3744f3331+wYIGvr+/KlSvHjx8vCEJWVlafPn3kdYxTMyIiIhrf1lhwcHBubm6PHj1MynNycuRkIpOlubm59SY6mWPQoEE7dux45513fvnlF51Op1AoZsyY8corr0hLNRrN119/3cjmHh4ezs7OLds12idRFEtKSgRBkCOMllJSUiKKopeXl8XzodrM+++/37VrVzPfQg0AjmDRokUajcbWrQCADqyj3hkDMFPnzp0rKyvd3NwEQcjPz5fLo6Ojk5OTRVFMSUl57rnn8vLyBEGIiIjYtWtX165d69ZjPGdTvdsaGzRo0OHDh+uGlkJDQ69evdq3b19BEK5cuWK86PDhw7GxsS0+zJiYmF27dv3rX/965513du3alZSUtGDBAk9PT0EQoqKihgwZ0uKa0RHV1tZmZWUplcru3btbtubMzExRFLt27dpxw5HMcA8AkCUnJyckJHh4eNx7770H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Y8cmTZrEFv78889Go7GsrGzq1KncLtzWFwqFmzdvvnXrVkdHx1dffdVnXslT/FKp9ODBgwaD4ccff/zVr37ldGtXrlzxfrkln56zp/sCGDWcdqv0tPuk1WrNycmZMmXK5MmTX3/9dXZeKne0juux97suetpNklTr6OhYt25dWFhYdnY2N1ovRyw6def00u2ul5765dmdk6Kob775xul+fW2fVVhYuGjRoj5vzWw2k7wSRVFz587ljjydP3/+vn37+mwBxo6xnlpqaWlpampqa2vr6upis0gCgYBkkZRKJckiJSYmJiYmxsfHR0dHK5XKsLCw4OBgrLcNAAAAAADgJXb3yZs3b0qlUnb3yTfffDM2NraqqurGjRuxsbHsZCtuktf1mOy6SIb+kXLSoGvum+wmabFYamtr58+fz6ZaSJ0VK1akpKRotdrHHnuMG603CXRSbc6cORUVFeRlRUXFQw89xF6Yl5dXVVXV0dGRk5OzfPly/n49PR+ivLy8qqqKe7++ts86derUvffeyy0JCQkhCSlu6qqurs7TXU+dOtXvS93BiDaatzu1WCw6nY6iqNjYWE91dDqd2WwW/5JQKBzCMAEAAIaOSCR6+umn9+/fH+hA/E8ulxsMBrvdHuhAAuDZZ59NTk7OysoKdCAwAhw6dOjIkSPHjx8PdCDg3qRJk44cOTJt2rT+XR4dHX3hwoWAbBbEMIxAIDAYDFKplLtbJUF2q9RoNOzuk1zR0dHXr18fN24cRVHt7e333XcfO42OOzvV12NWREQEN00TFRXV0tLC1u/u7h7gSianTp3avXv36dOnKYpauHDh66+/vnDhQspl18vz589z43Tt19PzIfWtViuZNMPeo6/ts+RyuVardXv2zp07EydOJAPHnB4m92VXV9f48eM7Ojp8elCDbcmSJc8880xGRkagAxmLRvC4G5vN1tvby7N7K03TRqOxt7eXp5GoqKi4uDi1Ws2ORUJeCQAAAMB7arWadqFWqxEPwJil1WqdJoGS/St5dp/sc8RDP1brZyfWJScnc2eqsnklYuAr5C5atKi3t/f8+fPnz583mUwkr0RRVEZGxrx583766aeOjo7PPvvM6SrXfvl353RdjMXX9lk8T3v8+PE8b7G5n9+M4kEq0A8jILXkcDjY3dlaWlq0Wu3PP/9cU1Nz69at+vp6T4u0URQlEonU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8ePHfU0tAYxNyCuNEViyHQAAeMjl8oFcLhAI5HK5QqHwVzzeG0hqZtWqVe++++7WrVt1Ot2uXbuczvq01lJhYeHzzz8vlUq3bduWkZHBXzkzM3PPnj1vvfWW0WgsKirqX/CEWCwuLS1dunTpmTNn8vLyzp07N5DWAEYcrLU0IFartbS0lGGY3/72t88888y9994bFhYmFApDQkLi4+MXLFiwYcOGUZxXstvtR48etdlsM2bMeP7553/961+PGzdOJBKRfdYffvjhDRs2IK8EAAAAADA2qVQqpxKapslYIfaAoqjdu3fX19crFIrU1NTnnnuO+uV4IjKXvM++yCVr165dsWJFYmKiwWDYsWMHf787duxoamqKjIycN2/esmXL+oyTLXH6SlEUWXpJoVAUFRUVFxd793gARg98SD4gP/zwQ09Pz/jx4x955BG3FYKDg1esWOFa3t7eXlFRUVtb29XVJRKJNBrN7NmzyZYELHZe2I8//vj3v/9dp9MJBILx48fPnz8/Ojq63w3+6U9/unLlyv/+7/+2trZardY//elPFEVptdoffvjh559/bm9vp2laLpdPmTJl3rx5/J+u//Of/+zo6IiOjk5LS3M73FQikTzxxBPsS296YefBcSfEscf9i5Ooq6urqKioq6vr7e0NCQkZP3783Llz4+LinKpVV1dfuHChsbGRYZjIyMjk5OTk5GTM0YPAMhqNOp0uKioKq/MAAADACNLc3OxU4jZJJJVKDx48ePDgQbd1rly54k1f7FVuxze57Tc0NLSwsLCwsNBqtZ48efK+++7jr88tdKqQnp7ur6l8ACMRUksDUl1dTVHUzJkzfbqqtra2pKSE/dFjs9lu3bp169at3/zmN48++qhT5a+++urixYvcHm/fvv1v//Zv7ExmXxv84osvvv/+e6fCwsJC7svW1tbW1tbKysrf//73PG9lq6qqKIqaM2eOlysF9q8Xv7Rw+fLlsrIy9heAwWCorKz86aefli5dmpyczFb77rvvyN4QRENDQ0NDg+ueqQBDTK/XWyyWnp4epJYAAAAA/OiNN97Yvn27RCJJS0v75ptvAh0OwEiF1NKAkKRDfHy895d0dXV99tlnFovlgQcemDt3bkRERG9v77Vr186ePXvu3LmkpKQJEyZw6//9739PSUl58MEHZTJZU1PTiRMn2trazp8/z44G8rXBK1euzJ07d/r06Uqlkk0J3XPPPcnJyePHj5fJZBaLpaGh4ZtvvtFqtefPn1+8eLGne2lsbKQoyql9Ht70snXrVp4hQv2Ls6mpqby8nGGYBx98cN68eePGjevo6Dh//vwPP/xQVlYWHx9PRuo2NTWdOnWKoqiZM2fOnTs3PDy8q6uroqLCpz0pAAaDRqNpb28PyLoJAAAAAKPYtm3btm3bFugoAEY8pJYGxGg0UhTlul+4a1qELfnuu+/MZvOvf/3r9PR0UiKRSObOnSsUCsvLyy9duuSUqUlJSWFn240fP37JkiUfffTRzz//zFbwtcGZM2cuWrTIKby1a9eyxyEhIUlJSZGRkXv27Llx4wZPyqanp4eiqLCwME8V/NLLwFv4+9//7nA4Jk+e/Pjjj5OSiIiIJ554wmAw1NTUfPfdd8uXL6co6tKlSw6H47777luyZAmpplAolixZ0tPTU1lZ6eU9AgwGoVAYGRkZ6CgAAAAAAADcQGppqNXU1FAUNXv2bKfy+++/v7y8vK6uzqn8/7F373FO1Xf+x78n15lkMplkJnMfEFRAsbYi4KVQragUXF1FFLyxCNtu64qsPAqioo+fXURcsLayu5YVqn10qw9a25Fa0WqrVipW6rVFFAVUmMx9ksxMkklOkpPfH2eJMTPJZK4nmXk9/5hH8j0n3+/nZGrJvPP9fk/KNtg1NTVCiO7u7kF3OHPmzN5VqdNzjh496vP5khcJd3Z2ZnFN2Rr6KIPr4fPPPxdCzJkzJ6V97ty5hw8fTuR06oPzzz8/5bTzzjuPaAkAAAAAgD4RLQ2JxWLp6urq7u5OWajS5xbUKq/XK4RQ723Zex84dR5QspKSkuSnZrNZCBGLxQbdYe81NW1tbT/96U97enp6X2A0Gu3dmGC1Wjs7O3tffp8GPcrQe+jq6hJCuFyulHZ1HVwip1NPS97ESsVsEeQ+RVGy3PIMAAAAAIYX0dKQVFVVdXV1ff7559nvgaImPoqi9Hk0OTNSJd93c1g6NBqNKS1/+MMfenp6ampq5s2bV1FRUVhYqNPpotHoxo0bMw9dVVXV2dmZ5eUPepRh7AEYkzo7Oz0eT3l5udVq1boWZCsajba3t0ej0d73qQQAAADyC9HSkEydOvXQoUNvvvnmmWeemeWUAbvd3tHRsWrVqt6zYwZn6B2qC8EWL16cnBB1dHT0+8KpU6d+9NFHf/nLX7K5/EGPMvQeiouLPR5PW1vbhAkTkttbW1tF0l5R6mkdHR0pf+m1t7dnXyQw+jo7O6PRaGNjo81mc7lcer1e64rQP51O5/f74/F4JBLpnfgDAAAAeYQFFENy5plnFhcXNzU17dmzJ928oRRTpkwRQrz++uvDVcPQO1RnNhkMX8oZ9+3b1+8LzzzzzJKSkubm5nSXL8vyM888M9BR1HPC4fBw1aluZN77Lfrzn/8shDjppJPUp+qD3h2+8cYb/Q4BaKiurs7pdEqS1N3d/dlnn/l8Pq0rQv90Op26wFm9HQQAAACQv4iWhsRgMFxzzTV6vf6tt976n//5n3feeaejoyMSiSiKEgwGjx49unv37pSXnH/++RaL5Z133nnqqaeOHDnS3d2tKEooFGpsbNy3b9/27dsHWsPQO6yoqBBC7N69u62tLRKJtLa27t69+/333+/3hXq9fvHixQaD4a233tqxY8ff/va3zs7OWCwWDoebmpr+9Kc//fjHP37vvfcGOordbhdCvPvuu8kbdQ+lznPOOUen0x06dOjZZ5/1eDyxWMzj8ezevfuTTz7R6/WJHdBnz56t0+kOHjy4Z88er9cbi8W8Xu+ePXvYwxs5TpKk0tLSurq6goICRVHa2toaGhpS/vNBDrJYLIJoCQCAEyRJ6nczkJEbOsOhoVel1XUBo4YFcUNVV1e3fPnyp59+urm5+be//W3vE2w228KFC5OfXn/99bt27Tp06NChQ4eGXsDQO7zwwguffPLJw4cPqzebU82ePXv//v39vra2tnb58uW/+tWvGhsbf/Ob36QcNZlMV1555UBHOf300/fu3fvCCy+88MILaou6Ffqg66ysrFywYMGePXvefvvtt99+O9EuSdLChQvVxEo97ZJLLvn973+/f//+5D5nzpz51ltvscgIOc5sNtfW1nq9Xo/H09PTc/z48dLS0pT7ACCnWK1Wj8dDtAQAGMOqqqqampqyPDkej2sVwSTfDan3oaFXlaH/FDabLflu4EC+YNbSMKirq1u1atUVV1wxderU4uJig8FgNBrtdvtpp5125ZVXrl69+rTTTks+v7a29pZbbpk3b15tbW1BQYFOpysoKKipqbnwwgtvueWWQRQwxA5PPfXU66+/vq6uzmAwmEymmpqaK664IjkO63f0VatWXX755VOmTFEv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iRMlSYpEIosWLUqZPLJnz57e00mCweC3v/1th8MxY8aMQ4cOJZ/Q5/lOp9Pv90snJNrb2tpmzZpltVorKipuvfVWNQNSz3n44YdtNtu+fft27txps9kSpfYpEAgsX768qKjorLPOOnDgQOb+B3G96d63gV5vuvMH+vtSzZ49e/bs2Rneln4NdNwMv/djx46de+65DodjxYoV/e4FkW7cgfYzthEtAQAAAABG3F133SXL8oEDB44ePWq1Wj0ej9q+YcOGmpqaQ4cOffzxxzU1NRs2bFDb1YkhjY2NBw8e3LVr15IlS9T2zz//XD0UPyExxMKFC3tPJ7njjjucTmdzc/PevXtfeOEFkTTlpM/z1cJ6d7527dqtW7fKsnzkyJF58+atXbs20VUsFnv88ccvu+yyAwcOPP7444lS+3THHXdUVVV5PJ6XXnrp2Wefzdz/IK433fs20OtNd/5Af1+Jo0Oc6TPQcTP83p944omnn376yJEjRUVF69atG9y4A+1nbJOYxwVgdEjSaP8fznCNuGnTpn379v3ud7/LZqyFCxd+4xvfWL9+/dDHBUbCnDlz7rnnnvnz52tdyPCz2+1+vz8Wi2ldCACMR/F4XKfT+f1+q9VaU1PT2NiYfLS6utrtdldVVX3wwQdOpzPltZWVlR999FFJSYkQwuv1nn766U1NTeqh5I9zKR/tMnzSSzlUXl7+0UcfqeO2tbWVl5envLB3V312XlpamojDhBAul6u1tTX55N4P+uR0Og8fPqzW09HRUVZWpp6crv+BXq/I+L5lf73pjg7u9zUIQxw33e9dkqSGhoaamhohhMfjmTZtWvL7nP24/fazefNmt9u9bdu2obwJ+YJZSwCQSSAQePjhhx9++GH1ab/b9f3whz/84Q9/2NPTM/KljSq+hwAAAFlyu92JKSrqA7fbLYSIRqPpXjKinzSSP78NYqDEAqizzz47niQlRxic5NVVI9H/EEtKR6tPhgMaN5vfu6Io2Wwz2u+4WfYzho3riweQp0bzdgy/+c1vzj///FNPPVV92u+/K9OmTZs5c+bu3btHrqT29vaurq6R6783RVEaGho6OjpGc1AAADDGLF68eOvWrUKItra2+vr6G2+8UW1ftmzZY489puYp27dvv+mmm4Z33CVLljz88MOKovj9/h07dmTzEqPRWF9fH4lEnn/++YsvvlhtXLBgwY4dOxoaGhRFGUo9S5cufeihhyKRSGNj44MPPphoH67+B6HP601ncL+voe+1NNBxM/zeH3vssYaGBq/Xe//991977bWDHndA/YxtREsAkMmzzz57zTXXDOgl11577W9/+9uRKMbj8dx5551XX3115rt4DLtAIBAKhTwej1bfngEAgHxUXl6e/HTr1q0+n6+8vHz69Om7d+/esmWL2r5x48a2tra6urq6urqOjo6NGzeq7eq3ib1/qntLixP7Nyd/6Zh4mty+efPm5ubmsrKyOXPmXH755ckl9Xm+EELdssfhcOzYsWPnzp1q42233dbW1jZ37lyn0zl//vzNmzenFCay+wZ0y5YtDQ0NDodjwYIFK1asSLyqz/4Hcb3p3reBXm+68wf6+1LFYrHs5xwNy7h9/t7VQ8uXL1+0aNHkyZP9fn/ifR7QuJn7GY/iAMa6UCj03e9+1+l0VlRUqF+MqO2xWOzf//3fTzrpJIfDcfPNN/v9frVdCPHoo49OnDixoKDg3HPP/fvf/97v+T/84Q9ra2vVZcmHDh26+uqrnU5ncXHxVVdd1dbWljgtQ5GRSOSee+6ZMGFCSUnJ1q1b1cY+u+r9/2D9jpi4HUlFRcXq1atDoVDmdybZpEmTDh8+nHiaOCccDt9yyy3qa//jP/4j+bUff/zxySefnPF3MmDt7e3f//73zWazEOKZZ54Z3s6z0dXV9cknn3z88cdut1tRlNEvAMPl61//+gsvvKB1FSOiuLhYp9NpXQUAjFPqRJvE58PcJMvyb37zm9NPP13rQjCqtPq9P/DAA7feeusoD6oVw+gGWQA0sHHjxs8///zvf/+7EOLmm29OtP/oRz969dVXX3755ZKSkttuu+3ee+996KGH1EO///3vX331VZfL9dBDD333u9/985//nPn8P/3pT2+++WZ1dbUQ4pprrvnRj37085//XJblDRs23HnnnY899li/RT744IN79+59+eWXnU7nD37wA7Wxz67i8XjK1nr9jnj//fd/8MEHb731lhBi2bJlmzZtuu+++zK8M8mam5urqqp6t2/atOnjjz/+29/+Fo/Hly1blnyouro6ZevKoWhvb9+0adN///d/CyHC4fDEiRNramrefvtt9eivfvWrzs7OdK+NRCI+n2+4KonFYmoqZzAYCgoKhqtbjLKPPvpo48aN2fxXmXfG3h5nAIDhcvfdd2/atMlkMi1cuPDll1/WuhyMEn7vo4Y7xAFj38knn/zcc89NmzZNCHHw4MHp06er/+GfdtppzzzzzNSpU4UQLS0t55xzzmeffSaEkCSpqampsrJSCBEMBsvKyoLBYObzP/vss4kTJ/Yeuqura/r06cePHxf93STi1FNPra+vP+OMM9KdkGVXfZ528sknP/vss6effroQ4sCBA1deeeXhw4czvDPJCgsLOzo6LBaL+jTR5w3v4zQAACAASURBVCmnnPLb3/420edXvvKVxGsDgYDL5VLftCHy+/2LFy/+/e9/rz41mUwWiyX5viqffvop/zcOJJhMpnA4rHUVADAexZPuEKd1LUBOGFd3iCNaAsa+wsJCn8+nrqUKhUKFhYXqf/gWiyX5S36dTqfetFtKc2PXDOcripJYjfzWW2/dcccd7777rtfrFULo9Xr1biCZo6XCwkKv15syFybLrvo9LbnzUCjkcDjUC0n3ziSbPHnyiy++eMopp6S8Gyl9Jr/2k08++da3vnXkyJFMv5WBePnll++8886DBw8Gg0Gr1drU1KThh7ZQKNTY2BiLxUwmU01NjcHA7Ndh1t3d3dzcbDQaTzrppJHof86cOffcc8/8+fNHonMAwLhFtJSioqKi9yaV5eXlLS0tmtSD0TeuoiW28QbGvurq6k8//VR9fPTo0UT7hAkT1DkvKjUnyiDD+clb9C1duvSf/umfDh8+HI1GOzo6+u1WVVdXp84kSpauq5T9Efsdsbq6OnHhhw8frqmpSbT3+c4kmzlz5uuvv967vaamJvGSlBTp9ddfH+L9L1JcdNFFb7755rPPPnv22Wd3d3c/+uijw9j5QBUUFNTW1hoMBlmW3W53lr9fZM9qtdrt9oqKCq0LAQAAg9fS0tJ7PxpyJYxVREvA2HfdddetWbOmsbGxsbFxzZo1ifbvfe973/72tz/88ENZlv/+978vXbo0cz9Znh8IBIqLi61W6+eff/6d73wnyyKXL1++atWqo0ePer3e22+/PXNXZWVlH374YfYjXnfddatXr25oaGhoaFi9evV1112XaO/znUl2+eWXP/30073br7/++ttvv93tdrvd7n/7t39LPvT000+n3HxkWFx44YX79+9/9dVX9+/fPyyr7QbNZDLV1dUZjUZZlo8fP67OEcNw0el05eXlhYWFWhcCAAAAZIVoCRj7NmzYUFdXd8YZZ5x11llf//rXjUaj2r5q1aorrrhi0aJFxcXFN9xwQyJwSSfL83fu3Ll+/XqbzfbNb37zggsuyLLItWvXnn/++RdccMHJJ588YcKEzF2tX7/+/PPPT8xd6nfEDRs2nHbaaTNnzpw5c+b06dPvvvvuzO9Msquvvvovf/nLxx9/nNJ+9913T548+Stf+cqMGTMuvfTSRPuhQ4f2799/1VVXZXnhA3XBBRf88pe/7LPU0WQwGGpra41GYyQSaWhoIF0CAAAAxi32WgLGl7/97W9XXnllusVf41mGd+aBBx7485///Nxzz2XTz2WXXTZ37tz169cPd4G5KBqNNjQ0RCIRo9GorpLTuiL0j72WAAAjgb2WgBTstQRgrLn99tubm5s///zzNWvWXHnllVqXk0OyeWfuvPPOLHMlIcRzzz03TnIlcWLuksFgYO4SAAAAMG4RLQHjwkknnTRr1qzZs2dPnjx548aNGlYi9UXDenLnnclTyemS2+0mXQIAAJrT6uOlth9rAQ2xeAEYF1avXr169WqtqxBCiFxbhJs770z+MhqN1dXVbrdbluWmpqaamhqdju8tAACAqKqqampqyvLkYDBosViGZVytPnBmP67NZuvu7h7RYoDRxKd/AMBQmc3mmpoavV4fCoWamppyLUAEAACaaG5uTjxOma6e/LStrW3WrFlWq7WiouLWW29N3AlXPcHn861cudJms61du1Ztr6+vN5lMkiQVFxfPmTNnypQpiVH27NnTe1J8JBJZv3791KlTp0yZsm7dOlmWk/vftm1bbW2tyWSqr69PftXs2bNnz56d5ZX2OW66/p1Op9/vz4X5+8BwIVoCAAwDs9lcXV2t0+mCwaDH49G6HAAAkFvi8fi55567b98+9em+ffvOO+889euotWvXbt26VZblI0eOzJs3LxEhqUcXLVo0d+5ct9v9rW99S21ftmzZP/zDP0Qikebm5u9///s+ny8xysKFC3t/xbVhw4aamppDhw59/PHHNTU1GzZsSO6/sbHx4MGDu3btWrJkSUrB2X9b1ue46fpXPynFT8hyCCCXcYc4AMCwCQQCPp+vqqqKNXHDoqury+v1lpSU2O324eqTO8QBAEZC8h3iampqGhsbk4+qa+dffPHFLVu2vPTSS0KISy65ZN26dZdccokQorS0NPl7KZfL1draqj6WJKm7u7uoqCi5t2efffbqq6+ORCJlZWUul+tnP/vZrFmzkk+QpC/9nVtZWfnRRx+VlJQIIbxe7+mnn55Yppd8ZsqrBqF3D+n6H/pYyH3cIQ4AgMFQP02SKw2XWCwmy3JXV5fWhQAAMAButzsxH0d94Ha7hRCXXnppT0/P3r179+7dGwqF1FxJCHH22WfHkyRyJVVKriSEuPzyy2VZ9vv977zzzk033XTppZf2W1Iu5ziJBXpA/uLTPwAAOaq4uFiSpFAoxIdOAMDYcN99991777333nvvfffdl2hcsGDBjh07GhoaFEXJphOXy7V//36dTldXVzdt2rRAIJD5/GXLlj322GNqbrV9+/abbropm1EGtNfSQBmNxvr6+kgk8vzzz1988cUjNAowaoiWAADIUXq9Xr1XDhOXAAD5qLy8PKVl3rx5iqLE4/GLLroo0Xjbbbe1tbXNnTvX6XTOnz9/8+bNaru6xXXv7a4nTZr03nvvTZkyRZKkJUuW7Nq1K3EocWbySzZu3NjW1lZXV1dXV9fR0bFx48aU/lN+qmKxWPZznfocN0P/6tZLDodjx44dO3fuzHIUIGexwhMAgNzl9/ubmpoMBsOkSZOGpUP2WgIAjITkvZa0rgXICey1BAAAcoLVatXr9dFoNHEnZgAAACCnEC0BAEYc99YdNEmSbDabYE0cAAAAchXREgBgZEWj0YaGhpS7vSB7arTk9/uz3NwUAAAAGE1ESwCAkSXLcigUCgQC0WhU61ryUkFBgclkisfjTFwCAABADiJaAgCMLIvFUllZWVdXZzAYtK4lX9ntdiFEZ2en1oUAAAAAqYiWAAAjzmazGY1GravIY8XFxTqdTpblnp4erWsBAAAAvoRoCQCAXKfT6YqKigQTlwAAAJB7iJYAAMgD6po4v98fi8W0rgUAAAD4AtESAAB5oKCgwGw2s5k3AACakyRJw6E1HB1Ih2gJAID8wGbeAID8UlVVNfROgsFg9ifbbLaR7kcIEY/Hs+9qQOP2K8uhh+t9ALJEtAQA0MyAPpnBZrPpdLpIJMKHQgBAXmhubk5+GgqFVq9eXVFRUVVV9cQTT0yZMkVtV2fi+Hy+lStX2my2tWvXqu1tbW2zZs2yWq0VFRW33npr8j9/q1atmjp1qtVqveSSS1555RW10el0+v1+6YTEyRn66VO6foQQe/bsSWlUnz788MM2m23fvn07d+602Wz19fX9jjt79uzZs2dn8zYGAoHly5cXFRWdddZZBw4cSD40ou8DkD2iJQCABhRFaW5uTvnEicx0Op36JSQTlwAA+eiuu+6SZfnAgQNHjx61Wq0ej0dtV79qWrRo0dy5c91u97e+9S21fe3atVu3bpVl+ciRI/PmzUtETkKIBx544NChQz6fb/369VdccYXaqHYYPyFxcoZ++pSuHyHEwoULU1rUp7FY7PHHH7/ssssOHDjw+OOPL1mypN9xe3eezh133FFVVeXxeF566aVnn302+dCIvg9A9iS+MQYAjL5QKNTQ0BCPx10uV0lJidbl5I1wOHzs2DFJkiZOnGg0GgfRw5w5c+6555758+cPe20AgPEsHo/rdDq/32+1WmtqahobG5OPVldXu93uqqqqDz74wOl09n65JEnd3d3q7VATSktLE/GTEMLlcrW2tgohPvnkkzVr1uzbty8cDs+YMWPv3r2Jv2olqY+/cNP1k0Gf/aQ7mnia8mAQ4/bJ6XQePnxYfd86OjrKysrUUUbhfcBQbN682e12b9u2TetCRgOzlgAAGigoKCgtLRVCtLe3h0IhrcvJG2az2WKxxONxn8+ndS0AAPTN7XYn5suoD9xutxAiGo1meFVKriSEOPvss+NJEjnItddeO2fOnA8//NDn8/3yl79M16Esy5n7yVKin4Ea4rj9FjPK7wOQAdESAEAbDofDarXG4/Hm5mam0GavpKREr9cPbsoSAAAaWrx48datW4UQbW1t9fX1N954Y+bzFyxYsGPHjoaGBkVRktvdbvfMmTOLi4sPHjz4yCOPJB8yGo319fWRSOT555+/+OKLM/eTQZ/9DFTmcbPfa2np0qUPPfRQJBJpbGx88MEHE+2j8D4AWSJaAgBoprKy0mAwRCKRtrY2rWvJG1arddKkSawiBADkvvLy8uSnW7du9fl85eXl06dP371795YtW9R2davp3ttO33bbbW1tbXPnznU6nfPnz9+8ebPavn379pUrVzqdzvXr1y9btizRgxBi165dS5YscTgcO3bs2LlzZ+Z+Muizn0SRKQ+SC8imflUsFsvyq7UtW7Y0NDQ4HI4FCxasWLEiMcoovA9AlthrCQCgpWAwqE6Sr66utlqtWpcz9rHXEgBgJCTvtaR1LUBOYK8lAABGicViUSfg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zFoCACATnU6nflhh4hIAABhpP/7xj9evX68oysqVK998883u7u5AILB///5//ud/VhTljjvueOSRRxInx78sQ2Pvl7S2tj7zzDOTJ09uaWnZsGFD8jnr1q374IMPampqHn/88ePHj4fDYZ/P98Ybb2zatOnMM88c+jVmX/ZAK7noootCodCTTz6Z3PiLX/wiFArNmzcvy/LuvvvuRx991GAwrFu37qOPPgqHwy0tLb/4xS/OOeecIVz0GMesJQAA+vHpp59Go9G6urqCggKtawEAAGPW8ePHTznlFFmWf/rTn958880pRx9//PEVK1aYTKYjR47U1tb2fnnyzKAsj77++utz5swpLy9vaWlJNJaWlno8njfeeOPcc88d4hVlU1uGQ9lXonby5JNPXn/99TNmzHj77bcTh2bMmPHuu+8+9dRT1113XbqBEj7++OPTTjtNUZQ+fwVIh1lLAAD0g+2WAADAKPjJT34iy/LixYv7DDVuvvnmq6++Wpbln/zkJ8M14le/+lUhRGdnZ3JjIBAQQpx66qn9vrzP3YsGtKVRZtlXolq0aJHT6XznnXfee+89teXdd9999913nU7nVVddlU0P27dvVxTl/PPPJ1caEKIlAAD6QbQEAABGwUsvvSSE+Pa3v53uBPXQH/7wh+Ea8Z133hFCpMyBOuuss4QQK1euPHz48HANNDgDrcRsNqvbeO/cuVNtUR/ceOONZrM5mx5effVVIcRNN900qHrHLxbEAQDQj+bm5u7u7rKyMofDoXUtAABgzHI6nV6vt6Ojw+l09nlCe3u7y+UqLS1tb2/vfXRAC+La29v37t27Zs2azz777N57773vvvsSZ+7du/fSSy8NhUJCiMmTJ3/ta18744wzvvGNb1x44YXq922ZR8y+sd9Dg6jk/fff/9rXvuZwOBobG4UQVVVVPp/v/fffP/PMMzO/PyqHw+Hz+d57771Dhw5t3br1wIEDBoPh9NNPX7p06b/+678a/397dxrU1PU+cPwELwGqKLIM1qLIOgpO3bWW6qh1GZeqVamFilq0Flu3jtVanKHTOv60tS9sa10Hp+rIWLVI3WVRpFJcwEGrlbrhigqyJhocQvJ7kf/v/jOBhEuwRvT7eeEk55z7nOcc3pgn5944O9u49mVGaQkAgAaUlJRUVFS0bdvW29vb0bkAAIAXlrOzs16vr6mp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</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/Delete.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKbXkgJENvbW1hbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkRlbGV0ZScpOwoKIyBnZXQgaGVscGVyIG9iamVjdCwgZGF0YWJhc2UgY2hhbmdlcyBzaG91bGQgYmUgcmVzdG9yZWQKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZQpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCm15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlOwppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiQWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkRlbGV0ZSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIG9wdGlvbiAtLWFsbCBhbmQgYXJndW1lbnQgLS1hY2NlcHQgbiAoIGNhbmNlbCBkZWxldGluZyBhbGwgY29uZmlnIGl0ZW0pCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwnLCAnbicgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJPcHRpb24gJy0tYWxsJyBuIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNsYXNzIG9wdGlvbnMgKGludmFsaWQgY2xhc3MpCm15ICRSYW5kb21DbGFzcyA9ICdUZXN0Q2xhc3MnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdjbGFzcycgKGJ1dCBjbGFzcyAkUmFuZG9tQ2xhc3MgZG9lc24ndCBleGlzdCkgIiwKKTsKCiMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgpteSAkQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBhZGQgdGVzdCBnZW5lcmFsIGNhdGFsb2cgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dJdGVtSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21DbGFzcywKICAgIFZhbGlkSUQgPT4gMSwKICAgIENvbW1lbnQgPT4gJ0NvbW1lbnQnLAogICAgVXNlcklEICA9PiAxLAopOwoKJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCwKICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCik7CiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCm9rKAogICAgJEdlbmVyYWxDYXRhbG9nSXRlbUlELAogICAgIlRlc3QgZ2VuZXJhbCBjYXRhbG9nIGl0ZW0gaXMgY3JlYXRlZCAtICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCAiLAopOwoKIyBBZGQgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMKbXkgJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbiA9IHsKICAgIFBhZ2VzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnRGVzY3JpcHRpb24nLCAgICAjIHdpbGwgYmUgcmV1c2VkIGluIGNsYXNzIG5hbWUKICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICB9LAogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgIH0KICAgIF0sCiAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgfQogICAgfSwKfTsKCiMgZ2V0IENvbmZpZ0l0ZW0gb2JqZWN0Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBsaXN0IG9mIGFsbCBkZXBsb3ltZW50IHN0YXRlcwpteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGxpc3Qgb2YgYWxsIGluY2lkZW50IHN0YXRlcwpteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbU51bWJlcnM7Cm15ICRDb25maWdJdGVtSUQ7CgpteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgojIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCm15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgRGF0YSA9PiAkQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uLAopOwpvayggJFlBTUxEZWZpbml0aW9uLCAnZ290IHNvbWUgWUFNTCcgKTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJEdlbmVyYWxDYXRhbG9nSXRlbUlELAogICAgRGVmaW5pdGlvbiA9PiAkWUFNTERlZmluaXRpb24sCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwpvayggJFJlc3VsdC0+e0RlZmluaXRpb25JRH0sICdnb3QgRGVmaW5pdGlvbklEJyApOwoKZm9yICggMSAuLiAxMCApIHsKCiAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgQ2xhc3NJRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICApOwoKICAgICMgYWRkIHRlc3QgQ29uZmlnSXRlbQogICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NJJyAuICRSYW5kb21JRCsrLAogICAgICAgIENsYXNzSUQgICAgICA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHtPcGVyYXRpb25hbH0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKCiAgICAjIGFkZCBuZXcgdmVyc2lvbnMgZm9yIHRoZSBsYXN0IGFkZGVkIGluIHByZXZpb3VzIGxvb3AKICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICdUZXN0Q29uZmlnSXRlbScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgIENPVU5UOgogICAgZm9yIG15ICRDb3VudCAoIDEgLi4gNTAgKSB7CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICctJyAuICRDb3VudCwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7UGxhbm5lZH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkUmV2ZXJzZUluY2lTdGF0ZUxpc3R7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uICRDb3VudCBmb3IgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1JRCBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OYW1lIiwKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSB0aGUgZGF0ZSBpbnRvIHBhc3QgZm9yIHRoZSBmaXJzdCAyMCB2ZXJzaW9ucwogICAgICAgIG5leHQgQ09VTlQgaWYgJENvdW50ID4gMTA7CgogICAgICAgIG15ICRWZXJzaW9uVGVzdENyZWF0ZVRpbWUgPSAnMjAxMC0wMS0wMSAwMDowMDowMCc7CgogICAgICAgICMgaW5zZXJ0IG5ldyB2ZXJzaW9uCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW1fdmVyc2lvbgogICAgICAgICAgICAgICAgU0VUIGNyZWF0ZV90aW1lID0gPwogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFZlcnNpb25UZXN0Q3JlYXRlVGltZSwKICAgICAgICAgICAgICAgIFwkVmVyc2lvbklELAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBjb21tYW5kIHdpdGggYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBvcHRpb25zIChkZWxldGUgYWxsIHZlcnNpb25zIG9sZGVyIHRoYW4gb25lIGRheSkKICAgICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgMSApOwoKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIDEiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgIGlzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgNDEsCiAgICAgICAgIk51bWJlciBvZiByZW1haW5pbmcgdmVyc2lvbnMgYWZ0ZXIgcnVubmluZyBjb21tYW5kIHdpdGggT3B0aW9ucyAtLWFsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMgMSIsCiAgICApOwoKICAgICMgY2hlY2sgY29tbWFuZCB3aXRoIGFsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgMzAgdmVyc2lvbnMpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMnLCAzMCApOwoKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAzMCIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgcmVzdWx0IHNob3VsZCBvbmx5IGJlIDQwIHZlcnNpb25zIG5vdwogICAgaXMoCiAgICAgICAgc2NhbGFyIEB7JFZlcnNpb25MaXN0fSwKICAgICAgICAzMCwKICAgICAgICAiTnVtYmVyIG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBhZnRlciBydW5uaW5nIGNvbW1hbmQgd2l0aCBPcHRpb25zIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgMzAiLAogICAgKTsKCiAgICAjIGNoZWNrIGNvbW1hbmQgd2l0aCBhbGwtb2xkLXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgb2xkIHZlcnNpb25zIGV4Y2VwdCB0aGUgbGFzdCBvbmUpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgnLS1hbGwtb2xkLXZlcnNpb25zJyk7CgogICAgaXMoCiAgICAgICAgJEV4aXRDb2RlLAogICAgICAgIDAsCiAgICAgICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbC1vbGQtdmVyc2lvbnMiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgIGlzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgMSwKICAgICAgICAiTnVtYmVyIG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBhZnRlciBydW5uaW5nIGNvbW1hbmQgd2l0aCBPcHRpb25zIC0tYWxsLW9sZC12ZXJzaW9ucyIsCiAgICApOwp9CgojIGNoZWNrIGNvbW1hbmQgd2l0aCBjbGFzcyBvcHRpb25zICgkUmFuZG9tQ2xhc3MgY2xhc3MpIGFuZCBkZXBsb3ltZW50LXN0YXRlICdQbGFubmVkJwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY2xhc3MnLCAkUmFuZG9tQ2xhc3MsICctLWRlcGxveW1lbnQtc3RhdGUnLCAnUGxhbm5lZCcgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jbGFzcyAkUmFuZG9tQ2xhc3MgLS1kZXBsb3ltZW50LXN0YXRlJyBQbGFubmVkIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNvbmZpZ2l0ZW0tbnVtYmVyIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoCiAgICAnLS1jb25maWdpdGVtLW51bWJlcicsICRDb25maWdJdGVtTnVtYmVyc1swXSwgJy0tY29uZmlnaXRlbS1udW1iZXInLAogICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdCik7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb25zIC0tY29uZmlnaXRlbS1udW1iZXIiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY2xhc3Mgb3B0aW9ucyAoJFJhbmRvbUNsYXNzIGNsYXNzKQojIHRocmVlIGNvbmZpZyBJdGVtcyBvZiB0ZW4gY3JlYXRlZCBpbiB0ZXN0IHdlcmUgZGVsZXRlZCB3aXRoIHRoZSBwcmV2aW91cyBjb21tYW5kcwojIHdpdGggdGhlIG5leHQgY29tbWFuZCBvdGhlciBzZXZlbiB3aWxsIGJlIGRlbGV0ZWQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb24gLS1jbGFzcyAkUmFuZG9tQ2xhc3MiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucyBhbmQgbm90IGFsbG93ZWQgYWRkaXRpb25hbCBjbGFzcyBvcHRpb24KJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNvbmZpZ2l0ZW0tbnVtYmVyJywgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWNvbmZpZ2l0ZW0tbnVtYmVyIC0tY2xhc3MiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucyBhbmQgbm90IGFsbG93ZWQgYWRkaXRpb25hbCBkZXBsb3ltZW50IHN0YXRlIG9wdGlvbgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY29uZmlnaXRlbS1udW1iZXInLCAkQ29uZmlnSXRlbU51bWJlcnNbMF0sICctLWRlcGxveW1lbnQtc3RhdGUnLCAnUGxhbm5lZCcgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jb25maWdpdGVtLW51bWJlciAtLWRlcGxveW1lbnQtc3RhdGUiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucywgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIG1peGVkIHRvZ2V0aGVyLgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgKICAgICctLWFsbCcsICctLWFsbC1vbGQtdmVyc2lvbnMnLCAgICAgICAgICAgICAnLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycsCiAgICAyLCAgICAgICAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgJzEwJwopOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbCAtLWFsbC1vbGQtdmVyc2lvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAyIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyAxMCIsCik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/ListDuplicates.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKCm91ciAkU2VsZjsKCiMgZ2V0IGNvbW1hbmQgb2JqZWN0Cm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBjaGVjayBjb21tYW5kIHdpdGhvdXQgYW55IG9wdGlvbnMKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiTm8gb3B0aW9ucyAtIGxpc3QgYWxsIGNvbmZpZyBpdGVtcyBpbiBwcm9kdWN0aXZlIHN0YXRlcyIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLWNsYXNzIG9wdGlvbnMgKGludmFsaWQgY2xhc3MpCm15ICRSYW5kb21DbGFzcyA9ICdOb25FeGlzdGluZ0NsYXNzJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJPcHRpb24gJ2NsYXNzJyAoYnV0IGNsYXNzICRSYW5kb21DbGFzcyBkb2Vzbid0IGV4aXN0KSAiLAopOwoKIyBhZGQgdGVzdCBjb25maWcgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAxLAopOwoKIyBhZGQgdGVzdCBnZW5lcmFsIGNhdGFsb2cgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dIYXJkd2FyZUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tQ2xhc3MgLiAnSGFyZHdhcmUnLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCik7CgokR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICBJdGVtSUQgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCik7CiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dIYXJkd2FyZUlELAogICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10sCik7CgojIGFkZCB0ZXN0IGdlbmVyYWwgY2F0YWxvZyBpdGVtCm15ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21DbGFzcyAuICdTb2Z0d2FyZScsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dTb2Z0d2FyZUlELAogICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgIFZhbHVlICA9PiBbJENvbmZpZ0l0ZW1Hcm91cElEXSwKKTsKJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCiMgZ2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcwpteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIKbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgIENsYXNzSUQgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKKTsKCm15ICRDb25maWdJdGVtTmFtZSA9ICdUZXN0Q29uZmlnSXRlbScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQENvbmZpZ0l0ZW1JRDsKCiMgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbQpteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzSUQgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0hhcmR3YXJlSUQsCiAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiMgYWRkIHRoZSBuZXcgZHVwbGljYXRlIENvbmZpZ0l0ZW0KJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTmFtZSAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgQ2xhc3NJRCAgICAgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKcHVzaCBAQ29uZmlnSXRlbUlELCAkQ29uZmlnSXRlbUlEOwoKIyBhZGQgdGhlIG5ldyBkdXBsaWNhdGUgQ29uZmlnSXRlbSBpbiBTb2Z0d2FyZSBjYXRhbG9nIGNsYXNzCiRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzSUQgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQsCiAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tY2xhc3MgSGFyZHdhcmUgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY2xhc3MnLCAiJHtSYW5kb21DbGFzc31IYXJkd2FyZSIgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdjbGFzcycgKCR7UmFuZG9tQ2xhc3N9SGFyZHdhcmUpICIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLXNjb3BlIG9wdGlvbnMgKGludmFsaWQgc2NvcGUpCm15ICRSYW5kb21TY29wZSA9ICdzY29wZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAkUmFuZG9tU2NvcGUgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdzY29wZScgKGJ1dCBwcm92aWRlZCBpbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gJy0tc2NvcGUnIC0gJFJhbmRvbVNjb3BlICkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgY2xhc3Mgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAnY2xhc3MnICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAnc2NvcGUnIChjbGFzcykgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgZ2xvYmFsIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXNjb3BlJywgJ2dsb2JhbCcgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGdsb2JhbCkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tYWxsLXN0YXRlcyBvcHRpb25zCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCctLWFsbC1zdGF0ZXMnKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGFsbC1zdGF0ZXMpICIsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJzZQoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/UpgradeTo11.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGRlY29kZV9iYXNlNjQpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBUT0RPOiB0ZXN0IHRoZSBjb21tYW5kCiNteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTEnKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QsIGRhdGFiYXNlIGNoYW5nZXMgc2hvdWxkIGJlIHJlc3RvcmVkCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7ICAgICMjIG5vIGNyaXRpYyBxdyhWYXJpYWJsZXM6OlByb2hpYml0VW51c2VkVmFyc1N0cmljdGVyKQoKI215ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlOwojaXMoCiMgICAgJEV4aXRDb2RlLAojICAgIDEsCiMgICAgIkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpVcGdyYWRlVG8xMSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKIyk7CgpteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiMgU2V0dXAgb2YgdGVzdCBkYXRhLCB3aGljaCBjb25mb3JtcyB0byB0aGUgT1RPQk8gMTAuMSBmb3JtYXQKCiMgdGFibGUgZ2VuZXJhbF9jYXRhbG9nCm15ICVDb25maWdJdGVtQ2xhc3NOYW1lMklEOwp7CiAgICAjIFRoZSBuYW1lcyBvZiB0aGUgY29uZmlnIGl0ZW0gY2xhc3NlcyBhcmUga2VwdCBpbiB0aGUgZ2VuZXJhbCBjYXRhbG9nLgogICAgIyBMZXQncyBhZGQgY2xhc3NlcyB3aXRoIG5hbWVzIHRoYXQgaGF2ZSB0aGUgcHJlZml4ICdUZXN0VXBncmFkZScsCiAgICAjIFRyeSB0byBub3cgbWVkZGxlIHdpdGggZXhpc3RpbmcgZGF0YS4KICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzID0gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJzsKICAgIG15ICRWYWxpZElEICAgICAgICAgICAgID0gMTsKICAgIG15IEBOYW1lcyAgICAgICAgICAgICAgID0gbWFwIHsgam9pbiAnXycsICdUZXN0VXBncmFkZScsICRfIH0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSk7CiAgICBteSAkTnVtUm93cyAgICAgICAgICAgICA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGdlbmVyYWxfY2F0YWxvZyAoCiAgICBnZW5lcmFsX2NhdGFsb2dfY2xhc3MsCiAgICBuYW1lLAogICAgdmFsaWRfaWQsCiAgICBjcmVhdGVfdGltZSwKICAgIGNyZWF0ZV9ieSwKICAgIGNoYW5nZV90aW1lLAogICAgY2hhbmdlX2J5CiAgKQogIFZBTFVFUyAoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsIDEsIGN1cnJlbnRfdGltZXN0YW1wLCAxKQpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLCBcQE5hbWVzLCAkVmFsaWRJRCBdLAogICAgKTsKICAgIGlzKCAkTnVtUm93cywgc2NhbGFyIEBOYW1lcywgJ251bWJlciBvZiByb3dzIGluc2VydGVkIGludG8gZ2VuZXJhbF9jYXRhbG9nJyApOwoKICAgICVDb25maWdJdGVtQ2xhc3NOYW1lMklEID0gJERCT2JqZWN0LT5TZWxlY3RNYXBwaW5nKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIG5hbWUsIGlkIEZST00gZ2VuZXJhbF9jYXRhbG9nIFdIRVJFIG5hbWUgTElLRSAiVGVzdFVwZ3JhZGVfJSInLAogICAgKTsKICAgIG15ICVFeHBlY3RlZENvbmZpZ0l0ZW1DbGFzc05hbWUySUQgPSBtYXAgeyAkXyA9PiBtYXRjaChxci9bMC05XSsvKSB9IEBOYW1lczsKICAgIGlzKAogICAgICAgIFwlQ29uZmlnSXRlbUNsYXNzTmFtZTJJRCwKICAgICAgICBcJUV4cGVjdGVkQ29uZmlnSXRlbUNsYXNzTmFtZTJJRCwKICAgICAgICAnY29uZmlnIGl0ZW0gbmFtZXMgd2VyZSBpbnNlcnRlZCcKICAgICk7Cn0KCiMgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uCnsKICAgICMgYWRkIHNhbXBsZSBkYXRhIGZvciB0aGUgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgICBteSAkUm93cyA9IEdldENvbmZpZ0l0ZW1EZWZpbml0aW9uUm93cygpOwoKICAgICMgQWRkIHRoZSBjbGFzc19pZCBmb3IgdGhpcyBydW4gb2YgdGhlIHRlc3Qgc2NyaXB0CiAgICBteSBAQ2xhc3NJRHMgICAgPSBtYXAgeyAwICsgJENvbmZpZ0l0ZW1DbGFzc05hbWUySUR7ICRfLT57Y2xhc3NfbmFtZX0gfSB9ICRSb3dzLT5AKjsKICAgIG15IEBEZWZpbml0aW9ucyA9IG1hcCB7ICRfLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufSB9ICRSb3dzLT5AKjsKCiAgICBteSAkTnVtUm93cyA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiAoCiAgICBjbGFzc19pZCwKICAgIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwKICAgIGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uLAogICAgdmVyc2lvbiwKICAgIGNyZWF0ZV90aW1lLAogICAgY3JlYXRlX2J5CiAgKQogIFZBTFVFUyAoID8sID8sICctLS0ge30nLCAxLCBjdXJyZW50X3RpbWVzdGFtcCwgMSApCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXEBDbGFzc0lEcywgXEBEZWZpbml0aW9ucyBdLAogICAgKTsKICAgIGlzKCAkTnVtUm93cywgc2NhbGFyIEBDbGFzc0lEcywgJ251bWJlciBvZiByb3dzIGluc2VydGVkIGludG8gY29uZmlnaXRlbV9kZWZpbml0aW9uJyApOwoKICAgICMgcmV0cmlldmUgdGhlIGRlZmluaXRpb25zIGFzIGEgc2FuaXR5IGNoZWNrCiAgICBteSAkUGxhY2Vob2xkZXJzICAgICAgICAgPSBqb2luICcsICcsIG1hcCB7Jz8nfSBAQ2xhc3NJRHM7CiAgICBteSBAQmluZHMgICAgICAgICAgICAgICAgPSBtYXAgeyBcJF8gfSBAQ2xhc3NJRHM7CiAgICBteSBAUmV0cmlldmVkRGVmaW5pdGlvbnMgPSAkREJPYmplY3QtPlNlbGVjdENvbEFycmF5KAogICAgICAgIFNRTCA9PiA8PCJFTkRfU1FMIiwKU0VMRUNUIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbgogIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgV0hFUkUgY2xhc3NfaWQgSU4gKCAkUGxhY2Vob2xkZXJzICkKICBPUkRFUiBCWSBjb25maWdpdGVtX2RlZmluaXRpb24KRU5EX1NRTAogICAgICAgIEJpbmQgPT4gXEBCaW5kcywKICAgICk7CiAgICBpcygKICAgICAgICBcQFJldHJpZXZlZERlZmluaXRpb25zLAogICAgICAgIFsgc29ydCBARGVmaW5pdGlvbnMgXSwKICAgICAgICAnaW5zZXJ0IGludG8gY29uZmlnaXRlbV9kZWZpbml0aW9uJwogICAgKTsKfQoKc3ViIEdldENvbmZpZ0l0ZW1EZWZpbml0aW9uUm93cyB7CgogICAgIyBUaGlzIGlzIGJhc2VkIG9uIHRoZSBKU09OIGR1bXAgb2YgY29uZmlnaXRlbV9kZWZpbml0aW9uIGZyb20gREJlYXZlci4KICAgICMgVGhlIGNsYXNzIG5hbWUgd2FzIGFkZGVkIG1hbnVhbGx5LCBiZWNhdXNlIHRoZSBjbGFzc19pZCBjaGFuZ2VzIGZvciBldmVyeSBydW4uCiAgICAjIFJlbWVtYmVyIHRoYXQgSlNPTiBkb2VzIG5vdCBhbGxvdyB0cmFpbGluZyBjb21tYXMuCiAgICBteSAkSlNPTiA9IDw8J0VORF9KU09OJzsKewoiY29uZmlnaXRlbV9kZWZpbml0aW9uIjogWwogICAgewogICAgICAgICJjbGFzc19uYW1lIiA6ICJUZXN0VXBncmFkZV9Db21wdXRlciIsCiAgICAgICAgImNsYXNzX2lkIiA6IG51bGwsCiAgICAgICAgImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiIgOiAiTFMwdENpMGdTMlY1T2lCV1pXNWtiM0lLSUNCT1lXMWxPaUJXWlc1a2IzSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQlRhWHBsT2lBMU1Bb2dJQ0FnVFdGNFRHVnVaM1JvT2lBMU1Bb2dJQ0FnSXlCRmVHRnRjR3hsSUdadmNpQkRTU0JoZEhSeWFXSjFkR1VnYzNsdWRHRjRJR05vWldOcklHWnZjaUIwWlhoMElHRnVaQ0IwWlhoMFlYSmxZU0JtYVdWc1pITUtJQ0FnSUNOU1pXZEZlRG9nWGtGQ1F5NHFDaUFnSUNBalVtVm5SWGhGY25KdmNrMWxjM05oWjJVNklGWmhiSFZsSUcxMWMzUWdjM1JoY25RZ2QybDBhQ0JCUWtNaENnb3RJRXRsZVRvZ1RXOWtaV3dLSUNCT1lXMWxPaUJOYjJSbGJBb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURVd0Nnb3RJRXRsZVRvZ1JHVnpZM0pwY0hScGIyNEtJQ0JPWVcxbE9pQkVaWE5qY21sd2RHbHZiZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhSQmNtVmhDZ290SUV0bGVUb2dWSGx3WlFvZ0lFNWhiV1U2SUZSNWNHVUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkhaVzVsY21Gc1EyRjBZV3h2WndvZ0lDQWdRMnhoYzNNNklFbFVVMDA2T2tOdmJtWnBaMGwwWlcwNk9rTnZiWEIxZEdWeU9qcFVlWEJsQ2lBZ0lDQlVjbUZ1YzJ4aGRHbHZiam9nTVFvS0xTQkxaWGs2SUVOMWMzUnZiV1Z5U1VRS0lDQk9ZVzFsT2lCRGRYTjBiMjFsY2lCRGIyMXdZVzU1Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nUTNWemRHOXRaWEpEYjIxd1lXNTVDZ290SUV0bGVUb2dUM2R1WlhJS0lDQk9ZVzFsT2lCUGQyNWxjZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlDZ290SUV0bGVUb2dVMlZ5YVdGc1RuVnRZbVZ5Q2lBZ1RtRnRaVG9nVTJWeWFXRnNJRTUxYldKbGNnb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFOXdaWEpoZEdsdVoxTjVjM1JsYlFvZ0lFNWhiV1U2SUU5d1pYSmhkR2x1WnlCVGVYTjBaVzBLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUUtJQ0FnSUZOcGVtVTZJRFV3Q2lBZ0lDQk5ZWGhNWlc1bmRHZzZJREV3TUFvS0xTQkxaWGs2SUVOUVZRb2dJRTVoYldVNklFTlFWUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2lBZ1EyOTFiblJOWVhnNklERTJDZ290SUV0bGVUb2dVbUZ0Q2lBZ1RtRnRaVG9nVW1GdENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQlRhWHBsT2lBMU1Bb2dJQ0FnVFdGNFRHVnVaM1JvT2lBeE1EQUtJQ0JEYjNWdWRFMWhlRG9nTVRBS0NpMGdTMlY1T2lCSVlYSmtSR2x6YXdvZ0lFNWhiV1U2SUVoaGNtUWdSR2x6YXdvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTVRBd0NpQWdRMjkxYm5STllYZzZJREV3Q2lBZ1UzVmlPZ29nSUMwZ1MyVjVPaUJEWVhCaFkybDBlUW9nSUNBZ1RtRnRaVG9nUTJGd1lXTnBkSGtLSUNBZ0lFbHVjSFYwT2dvZ0lDQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQWdJRk5wZW1VNklESXdDaUFnSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEFLQ2kwZ1MyVjVPaUJHVVVST0NpQWdUbUZ0WlRvZ1JsRkVUZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhRS0lDQWdJRk5wZW1VNklEVXdDaUFnSUNCTllYaE1aVzVuZEdnNklERXdNQW9LTFNCTFpYazZJRTVKUXdvZ0lFNWhiV1U2SUU1bGRIZHZjbXNnUVdSaGNIUmxjZ29nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2lBZ0lDQlNaWEYxYVhKbFpEb2dNUW9nSUVOdmRXNTBUV2x1T2lBd0NpQWdRMjkxYm5STllYZzZJREV3Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF4Q2lBZ1UzVmlPZ29nSUMwZ1MyVjVPaUJKVUc5MlpYSkVTRU5RQ2lBZ0lDQk9ZVzFsT2lCSlVDQnZkbVZ5SUVSSVExQUtJQ0FnSUVsdWNIVjBPZ29nSUNBZ0lDQlVlWEJsT2lCSFpXNWxjbUZzUTJGMFlXeHZad29nSUNBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNldXVnpUbThLSUNBZ0lDQWdWSEpoYm5Oc1lYUnBiMjQ2SURFS0lDQWdJQ0FnVW1WeGRXbHlaV1E2SURFS0lDQXRJRXRsZVRvZ1NWQkJaR1J5WlhOekNpQWdJQ0JPWVcxbE9pQkpVQ0JCWkdSeVpYTnpDaUFnSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnSUNCSmJuQjFkRG9LSUNBZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ0lDQlRhWHBsT2lBME1Bb2dJQ0FnSUNCTllYaE1aVzVuZEdnNklEUXdDaUFnSUNBZ0lGSmxjWFZwY21Wa09pQXhDaUFnSUNCRGIzVnVkRTFwYmpvZ01Bb2dJQ0FnUTI5MWJuUk5ZWGc2SURJd0NpQWdJQ0JEYjNWdWRFUmxabUYxYkhRNklEQUtDaTBnUzJWNU9pQkhjbUZ3YUdsalFXUmhjSFJsY2dvZ0lFNWhiV1U2SUVkeVlYQm9hV01nUVdSaGNIUmxjZ29nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2dvdElFdGxlVG9nVDNSb1pYSkZjWFZwY0cxbGJuUUtJQ0JPWVcxbE9pQlBkR2hsY2lCRmNYVnBjRzFsYm5RS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFJCY21WaENpQWdJQ0JTWlhGMWFYSmxaRG9nTVFvZ0lFTnZkVzUwVFdsdU9pQXdDaUFnUTI5MWJuUkVaV1poZFd4ME9pQXdDZ290SUV0bGVUb2dWMkZ5Y21GdWRIbEZlSEJwY21GMGFXOXVSR0YwWlFvZ0lFNWhiV1U2SUZkaGNuSmhiblI1SUVWNGNHbHlZWFJwYjI0Z1JHRjBaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRVJoZEdVS0lDQWdJRmxsWVhKUVpYSnBiMlJRWVhOME9pQXlNQW9nSUNBZ1dXVmhjbEJsY21sdlpFWjFkSFZ5WlRvZ01UQUtDaTBnUzJWNU9pQkpibk4wWVd4c1JHRjBaUW9nSUU1aGJXVTZJRWx1YzNSaGJHd2dSR0YwWlFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUVSaGRHVUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdJQ0JaWldGeVVHVnlhVzlrVUdGemREb2dNakFLSUNBZ0lGbGxZWEpRWlhKcGIyUkdkWFIxY21VNklERXdDaUFnUTI5MWJuUk5hVzQ2SURBS0lDQkRiM1Z1ZEVSbFptRjFiSFE2SURBS0NpMGdTMlY1T2lCT2IzUmxDaUFnVG1GdFpUb2dUbTkwWlFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUkJjbVZoQ2lBZ0lDQlNaWEYxYVhKbFpEb2dNUW9nSUVOdmRXNTBUV2x1T2lBd0NpQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0NnPT0iLAogICAgICAgICJkeW5hbWljZmllbGRfZGVmaW5pdGlvbiIgOiAiTFMwdElIdDlDZz09IiwKICAgICAgICAidmVyc2lvbiIgOiAxLAogICAgICAgICJjcmVhdGVfdGltZSIgOiAiMjAyMy0wNy0xM1QxMDoyNTo1OS4wMDBaIiwKICAgICAgICAiY3JlYXRlX2J5IiA6IDEKICAgIH0sCiAgICB7CiAgICAgICAgImNsYXNzX25hbWUiIDogIlRlc3RVcGdyYWRlX0hhcmR3YXJlIiwKICAgICAgICAiY2xhc3NfaWQiIDogbnVsbCwKICAgICAgICAiY29uZmlnaXRlbV9kZWZpbml0aW9uIiA6ICJMUzB0Q2kwZ1MyVjVPaUJXWlc1a2IzSUtJQ0JPWVcxbE9pQldaVzVrYjNJS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUExTUFvS0xTQkxaWGs2SUUxdlpHVnNDaUFnVG1GdFpUb2dUVzlrWld3S0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUExTUFvS0xTQkxaWGs2SUVSbGMyTnlhWEIwYVc5dUNpQWdUbUZ0WlRvZ1JHVnpZM0pwY0hScGIyNEtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwUVhKbFlRb0tMU0JMWlhrNklGUjVjR1VLSUNCT1lXMWxPaUJVZVhCbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1IyVnVaWEpoYkVOaGRHRnNiMmNLSUNBZ0lFTnNZWE56T2lCSlZGTk5PanBEYjI1bWFXZEpkR1Z0T2pwSVlYSmtkMkZ5WlRvNlZIbHdaUW9nSUNBZ1ZISmhibk5zWVhScGIyNDZJREVLQ2kwZ1MyVjVPaUJEZFhOMGIyMWxja2xFQ2lBZ1RtRnRaVG9nUTNWemRHOXRaWElnUTI5dGNHRnVlUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlRMjl0Y0dGdWVRb0tMU0JMWlhrNklFOTNibVZ5Q2lBZ1RtRnRaVG9nVDNkdVpYSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkRkWE4wYjIxbGNnb0tMU0JMWlhrNklGTmxjbWxoYkU1MWJXSmxjZ29nSUU1aGJXVTZJRk5sY21saGJDQk9kVzFpWlhJS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUF4TURBS0NpMGdTMlY1T2lCWFlYSnlZVzUwZVVWNGNHbHlZWFJwYjI1RVlYUmxDaUFnVG1GdFpUb2dWMkZ5Y21GdWRIa2dSWGh3YVhKaGRHbHZiaUJFWVhSbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1JHRjBaUW9nSUNBZ1dXVmhjbEJsY21sdlpGQmhjM1E2SURJd0NpQWdJQ0JaWldGeVVHVnlhVzlrUm5WMGRYSmxPaUF4TUFvS0xTQkxaWGs2SUVsdWMzUmhiR3hFWVhSbENpQWdUbUZ0WlRvZ1NXNXpkR0ZzYkNCRVlYUmxDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dSR0YwWlFvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lGbGxZWEpRWlhKcGIyUlFZWE4wT2lBeU1Bb2dJQ0FnV1dWaGNsQmxjbWx2WkVaMWRIVnlaVG9nTVRBS0lDQkRiM1Z1ZEUxcGJqb2dNQW9nSUVOdmRXNTBUV0Y0T2lBeENpQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0Nnb3RJRXRsZVRvZ1RtOTBaUW9nSUU1aGJXVTZJRTV2ZEdVS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBRWEpsWVFvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNCRGIzVnVkRTFwYmpvZ01Bb2dJRU52ZFc1MFRXRjRPaUF4Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF3Q2c9PSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfTG9jYXRpb24iLAogICAgICAgICJjbGFzc19pZCIgOiBudWxsLAogICAgICAgICJjb25maWdpdGVtX2RlZmluaXRpb24iIDogIkxTMHRDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlRHOWpZWFJwYjI0Nk9sUjVjR1VLSUNBZ0lGUnlZVzV6YkdGMGFXOXVPaUF4Q2dvdElFdGxlVG9nUTNWemRHOXRaWEpKUkFvZ0lFNWhiV1U2SUVOMWMzUnZiV1Z5SUVOdmJYQmhibmtLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJEZFhOMGIyMWxja052YlhCaGJua0tDaTBnUzJWNU9pQlBkMjVsY2dvZ0lFNWhiV1U2SUU5M2JtVnlDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dRM1Z6ZEc5dFpYSUtDaTBnUzJWNU9pQlFhRzl1WlRFS0lDQk9ZVzFsT2lCUWFHOXVaU0F4Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2dvdElFdGxlVG9nVUdodmJtVXlDaUFnVG1GdFpUb2dVR2h2Ym1VZ01nb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFWmhlQW9nSUU1aGJXVTZJRVpoZUFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUUtJQ0FnSUZOcGVtVTZJRFV3Q2lBZ0lDQk5ZWGhNWlc1bmRHZzZJREV3TUFvS0xTQkxaWGs2SUVVdFRXRnBiQW9nSUU1aGJXVTZJRVV0VFdGcGJBb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFRmtaSEpsYzNNS0lDQk9ZVzFsT2lCQlpHUnlaWE56Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRFRnlaV0VLQ2kwZ1MyVjVPaUJPYjNSbENpQWdUbUZ0WlRvZ1RtOTBaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhSQmNtVmhDaUFnSUNCU1pYRjFhWEpsWkRvZ01Rb2dJRU52ZFc1MFRXbHVPaUF3Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF3Q2c9PSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfTmV0d29yayIsCiAgICAgICAgImNsYXNzX2lkIiA6IG51bGwsCiAgICAgICAgImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiIgOiAiTFMwdENpMGdTMlY1T2lCRVpYTmpjbWx3ZEdsdmJnb2dJRTVoYldVNklFUmxjMk55YVhCMGFXOXVDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlRtVjBkMjl5YXpvNlZIbHdaUW9nSUNBZ1ZISmhibk5zWVhScGIyNDZJREVLQ2kwZ1MyVjVPaUJEZFhOMGIyMWxja2xFQ2lBZ1RtRnRaVG9nUTNWemRHOXRaWElnUTI5dGNHRnVlUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlRMjl0Y0dGdWVRb0tMU0JMWlhrNklFOTNibVZ5Q2lBZ1RtRnRaVG9nVDNkdVpYSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkRkWE4wYjIxbGNnb0tMU0JMWlhrNklFNWxkSGR2Y210QlpHUnlaWE56Q2lBZ1RtRnRaVG9nVG1WMGQyOXlheUJCWkdSeVpYTnpDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEFvZ0lDQWdVMmw2WlRvZ016QUtJQ0FnSUUxaGVFeGxibWQwYURvZ01qQUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdRMjkxYm5STmFXNDZJREFLSUNCRGIzVnVkRTFoZURvZ01UQXdDaUFnUTI5MWJuUkVaV1poZFd4ME9pQXhDaUFnVTNWaU9nb2dJQzBnUzJWNU9pQlRkV0p1WlhSTllYTnJDaUFnSUNCT1lXMWxPaUJUZFdKdVpYUWdUV0Z6YXdvZ0lDQWdTVzV3ZFhRNkNpQWdJQ0FnSUZSNWNHVTZJRlJsZUhRS0lDQWdJQ0FnVTJsNlpUb2dNekFLSUNBZ0lDQWdUV0Y0VEdWdVozUm9PaUF5TUFvZ0lDQWdJQ0JXWVd4MVpVUmxabUYxYkhRNklESTFOUzR5TlRVdU1qVTFMakFLSUNBZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lFTnZkVzUwVFdsdU9pQXdDaUFnSUNCRGIzVnVkRTFoZURvZ01Rb2dJQ0FnUTI5MWJuUkVaV1poZFd4ME9pQXdDaUFnTFNCTFpYazZJRWRoZEdWM1lYa0tJQ0FnSUU1aGJXVTZJRWRoZEdWM1lYa0tJQ0FnSUVsdWNIVjBPZ29nSUNBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNBZ0lGTnBlbVU2SURNd0NpQWdJQ0FnSUUxaGVFeGxibWQwYURvZ01qQUtJQ0FnSUNBZ1VtVnhkV2x5WldRNklERUtJQ0FnSUVOdmRXNTBUV2x1T2lBd0NpQWdJQ0JEYjNWdWRFMWhlRG9nTVRBS0lDQWdJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bb0tMU0JMWlhrNklFNXZkR1VLSUNCT1lXMWxPaUJPYjNSbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lGUjVjR1U2SUZSbGVIUkJjbVZoQ2lBZ1EyOTFiblJOYVc0NklEQUtJQ0JEYjNWdWRFMWhlRG9nTVFvZ0lFTnZkVzUwUkdWbVlYVnNkRG9nTUFvPSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfU29mdHdhcmUiLAogICAgICAgICJjbGFzc19pZCIgOiBudWxsLAogICAgICAgICJjb25maWdpdGVtX2RlZmluaXRpb24iIDogIkxTMHRDaTBnUzJWNU9pQldaVzVrYjNJS0lDQk9ZVzFsT2lCV1pXNWtiM0lLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJVWlhoMENpQWdJQ0JUYVhwbE9pQTFNQW9nSUNBZ1RXRjRUR1Z1WjNSb09pQTFNQW9LTFNCTFpYazZJRlpsY25OcGIyNEtJQ0JPWVcxbE9pQldaWEp6YVc5dUNpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTlRBS0NpMGdTMlY1T2lCRVpYTmpjbWx3ZEdsdmJnb2dJRTVoYldVNklFUmxjMk55YVhCMGFXOXVDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlUyOW1kSGRoY21VNk9sUjVjR1VLSUNBZ0lGUnlZVzV6YkdGMGFXOXVPaUF4Q2dvdElFdGxlVG9nUTNWemRHOXRaWEpKUkFvZ0lFNWhiV1U2SUVOMWMzUnZiV1Z5SUVOdmJYQmhibmtLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJEZFhOMGIyMWxja052YlhCaGJua0tDaTBnUzJWNU9pQlBkMjVsY2dvZ0lFNWhiV1U2SUU5M2JtVnlDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dRM1Z6ZEc5dFpYSUtDaTBnUzJWNU9pQlRaWEpwWVd4T2RXMWlaWElLSUNCT1lXMWxPaUJUWlhKcFlXd2dUblZ0WW1WeUNpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTlRBS0NpMGdTMlY1T2lCTWFXTmxibU5sVkhsd1pRb2dJRTVoYldVNklFeHBZMlZ1WTJVZ1ZIbHdaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRWRsYm1WeVlXeERZWFJoYkc5bkNpQWdJQ0JEYkdGemN6b2dTVlJUVFRvNlEyOXVabWxuU1hSbGJUbzZVMjltZEhkaGNtVTZPa3hwWTJWdVkyVlVlWEJsQ2lBZ0lDQlVjbUZ1YzJ4aGRHbHZiam9nTVFvS0xTQkxaWGs2SUV4cFkyVnVZMlZMWlhrS0lDQk9ZVzFsT2lCTWFXTmxibU5sSUV0bGVRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURVd0NpQWdJQ0JTWlhGMWFYSmxaRG9nTVFvZ0lFTnZkVzUwVFdsdU9pQXdDaUFnUTI5MWJuUk5ZWGc2SURFd01Bb2dJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bb2dJRk4xWWpvS0lDQXRJRXRsZVRvZ1VYVmhiblJwZEhrS0lDQWdJRTVoYldVNklGRjFZVzUwYVhSNUNpQWdJQ0JKYm5CMWREb0tJQ0FnSUNBZ1ZIbHdaVG9nU1c1MFpXZGxjZ29nSUNBZ0lDQldZV3gxWlUxcGJqb2dNUW9nSUNBZ0lDQldZV3gxWlUxaGVEb2dNVEF3TUFvZ0lDQWdJQ0JXWVd4MVpVUmxabUYxYkhRNklERUtJQ0FnSUNBZ1VtVnhkV2x5WldRNklERUtJQ0FnSUVOdmRXNTBUV2x1T2lBd0NpQWdJQ0JEYjNWdWRFMWhlRG9nTVFvZ0lDQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0NpQWdMU0JMWlhrNklFVjRjR2x5WVhScGIyNUVZWFJsQ2lBZ0lDQk9ZVzFsT2lCRmVIQnBjbUYwYVc5dUlFUmhkR1VLSUNBZ0lFbHVjSFYwT2dvZ0lDQWdJQ0JVZVhCbE9pQkVZWFJsQ2lBZ0lDQWdJRkpsY1hWcGNtVmtPaUF4Q2lBZ0lDQWdJRmxsWVhKUVpYSnBiMlJRWVhOME9pQXlNQW9nSUNBZ0lDQlpaV0Z5VUdWeWFXOWtSblYwZFhKbE9pQXhNQW9nSUNBZ1EyOTFiblJOYVc0NklEQUtJQ0FnSUVOdmRXNTBUV0Y0T2lBeENpQWdJQ0JEYjNWdWRFUmxabUYxYkhRNklEQUtDaTBnUzJWNU9pQk5aV1JwWVFvZ0lFNWhiV1U2SUUxbFpHbGhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJVWlhoMENpQWdJQ0JUYVhwbE9pQTBNQW9nSUNBZ1RXRjRUR1Z1WjNSb09pQXlNQW9LTFNCTFpYazZJRTV2ZEdVS0lDQk9ZVzFsT2lCT2IzUmxDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdRMjkxYm5STmFXNDZJREFLSUNCRGIzVnVkRTFoZURvZ01Rb2dJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bbz0iLAogICAgICAgICJkeW5hbWljZmllbGRfZGVmaW5pdGlvbiIgOiAiTFMwdElIdDlDZz09IiwKICAgICAgICAidmVyc2lvbiIgOiAxLAogICAgICAgICJjcmVhdGVfdGltZSIgOiAiMjAyMy0wNy0xM1QxMDoyNTo1OS4wMDBaIiwKICAgICAgICAiY3JlYXRlX2J5IiA6IDEKICAgIH0KXX0KRU5EX0pTT04KCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAkVGhhd2VkICAgICA9ICRKU09OT2JqZWN0LT5EZWNvZGUoIERhdGEgPT4gJEpTT04gKTsKCiAgICAjIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBhbmQgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24gYXJlIHN0b3JlZCBhcyBMT05HQkxPQgogICAgIyBpbiB0aGUgZGF0YWJhc2UuIER1bXBpbmcgdGhlIGJpbmFyeSBjb250ZW50IGJyZWFrcyB0aGUgSlNPTiBleHBvcnQsCiAgICAjIHRoZXJlZm9yZSB0aGVzZSBjb2x1bXMgYXJlIHNlcmlhbGl6ZWQgYXMgYmFzZTY0LgogICAgZm9yIG15ICRSb3cgKCAkVGhhd2VkLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufS0+QCogKSB7CiAgICAgICAgJFJvdy0+e2NvbmZpZ2l0ZW1fZGVmaW5pdGlvbn0gICA9IGRlY29kZV9iYXNlNjQoICRSb3ctPntjb25maWdpdGVtX2RlZmluaXRpb259ICk7CiAgICAgICAgJFJvdy0+e2R5bmFtaWNmaWVsZF9kZWZpbml0aW9ufSA9IGRlY29kZV9iYXNlNjQoICRSb3ctPntkeW5hbWljZmllbGRfZGVmaW5pdGlvbn0gKTsKICAgIH0KCiAgICAjIHJldHVybiB0aGUgYXJyYXlyZWYKICAgIHJldHVybiAkVGhhd2VkLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ImportExport/Export.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgUGF0aDo6Q2xhc3MgcXcoZGlyIGZpbGUpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbW1hbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbXBvcnRFeHBvcnQ6OkV4cG9ydCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKb2soICRSYW5kb21JRCwgJ2dvdCBhIHJhbmRvbSBJRCcgKTsKZGlhZygiUmFuZG9tSUQ6ICRSYW5kb21JRCIpOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCAtLXRlbXBsYXRlLW51bWJlciBvcHRpb24KbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGU7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gLS10ZW1wbGF0ZS1udW1iZXIgIC0gZXhpdCBjb2RlIiwKKTsKCiMgY3JlYXRlIGRlZmF1bHQgY29uZmlnIGl0ZW0gY2xhc3NlcwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyktPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyLAopOwoKIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElECm15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAopOwpyZWZfb2soICRDb25maWdJdGVtRGF0YVJlZiwgJ0hBU0gnLCAnQ29uZmlnSXRlbURhdGFSZWYnICk7Cm15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07Cm9rKCAkSGFyZHdhcmVDb25maWdJdGVtSUQsICdnb3QgYW4gSUQgZm9yIGNvbmZpZyBpdGVtIGNsYXNzIEhhcmR3YXJlJyApOwoKIyBnZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzCm15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwpyZWZfb2soICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiwgJ0hBU0gnICk7Cm15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwpvayggJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwgJ2dvdCBhbiBJRCBmb3IgZGVwbG95bWVudCBzdGF0ZSBQcm9kdWN0aW9uJyApOwoKIyBhZGQgdGVzdCBjb25maWcgaXRlbXMKbXkgQENvbmZpZ0l0ZW1JRHM7CnN1YnRlc3QgJ2NyZWF0ZSBzYW1wbGUgY29uZmlnIGl0ZW1zJyA9PiBzdWIgewogICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMTAgKSB7CgogICAgICAgICMgY3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICApOwogICAgICAgIGRpYWcoIkNvbmZpZ0l0ZW1OdW1iZXI6ICckQ29uZmlnSXRlbU51bWJlciciKTsKICAgICAgICBvayggJENvbmZpZ0l0ZW1OdW1iZXIsICdnb3QgYSBjb25maWcgaXRlbSBudW1iZXInICk7CgogICAgICAgICMgYWRkIHNhbXBsZSBDb25maWdJdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICA9PiBqb2luKCAnXycsICdUZXN0Q29uZmlnSXRlbfCfjJ4nLCAkUmFuZG9tSUQsICRDb3VudCApLAogICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWcgaXRlbSBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1JRCIgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgIH0KfTsKCiMgZ2V0IEltcG9ydEV4cG9ydCBvYmplY3QKbXkgJEltcG9ydEV4cG9ydE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKTsKCiMgYWRkIHRlc3QgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdUZW1wbGF0ZScgLiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRUZW1wbGF0ZUlELCAiSW1wb3J0L0V4cG9ydCB0ZW1wbGF0ZSBpcyBjcmVhdGVkIiApOwpkaWFnKCJUZW1wbGF0ZUlEOiAkVGVtcGxhdGVJRCIpOwoKIyBnZXQgb2JqZWN0IGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUKbXkgJVRlbXBsYXRlUmVmID0gKAogICAgJ0NsYXNzSUQnICA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAnQ291bnRNYXgnID0+IDEwLAopOwpteSAkT2JqZWN0RGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgT2JqZWN0RGF0YSA9PiBcJVRlbXBsYXRlUmVmLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKb2soICRPYmplY3REYXRhU2F2ZVN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIGFkZGVkIiApOwoKIyBhZGQgdGhlIGZvcm1hdCBkYXRhIG9mIHRoZSB0ZXN0IHRlbXBsYXRlCm15ICVGb3JtYXREYXRhID0gKAogICAgQ2hhcnNldCAgICAgICAgICAgICAgPT4gJ1VURi04JywKICAgIENvbHVtblNlcGFyYXRvciAgICAgID0+ICdDb21tYScsCiAgICBJbmNsdWRlQ29sdW1uSGVhZGVycyA9PiAxLAopOwpteSAkRm9ybWF0RGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+Rm9ybWF0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgRm9ybWF0RGF0YSA9PiBcJUZvcm1hdERhdGEsCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkRm9ybWF0RGF0YVNhdmVTdWNjZXNzLCAiZm9ybWF0IGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIHNhdmUgdGhlIHNlYXJjaCBkYXRhIG9mIGEgdGVtcGxhdGUKbXkgJVNlYXJjaERhdGEgPSAoCiAgICBOYW1lID0+ICdUZXN0Q29uZmlnSXRlbSonLAopOwpteSAkU2VhcmNoRGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+U2VhcmNoRGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgU2VhcmNoRGF0YSA9PiBcJVNlYXJjaERhdGEsCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkU2VhcmNoRGF0YVNhdmVTdWNjZXNzLCAic2VhcmNoIGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIGFkZCBtYXBwaW5nIGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUKZm9yIG15ICRPYmplY3REYXRhVmFsdWUgKHF3KCBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUgKSkgewoKICAgIG15ICRNYXBwaW5nSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nQWRkKAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhU2F2ZSgKICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IHsgS2V5ID0+ICRPYmplY3REYXRhVmFsdWUgfSwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIG1hcHBlZCAtICRPYmplY3REYXRhVmFsdWUiICk7Cn0KCiMgbWFrZSBkaXJlY3RvcnkgZm9yIGV4cG9ydCBmaWxlCm15ICRIb21lICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKbXkgJFRlbXBEaXIgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGVtcERpcicpOwpteSAkRGVzdGluYXRpb25QYXRoID0gam9pbiAnLycsICRUZW1wRGlyLCAnSW1wb3J0RXhwb3J0JzsKbXkgJEV4cG9ydEZpbGVuYW1lICA9ICIkRGVzdGluYXRpb25QYXRoL1RlbXBsYXRlRXhwb3J0XyRSYW5kb21JRC5jc3YiOwpvayggIS1mICRFeHBvcnRGaWxlbmFtZSwgJ25vIGxlZnRvdmVyIGV4cG9ydCBmaWxlJyApOwpkaXIoJERlc3RpbmF0aW9uUGF0aCktPm1rcGF0aDsKb2soIC1kICREZXN0aW5hdGlvblBhdGgsICdleHBvcnQgZGlyIHdhcyBjcmVhdGVkJyApOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aCB3cm9uZyB0ZW1wbGF0ZSBudW1iZXIKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoCiAgICAnLS10ZW1wbGF0ZS1udW1iZXInLCAkSGVscGVyLT5HZXRSYW5kb21OdW1iZXIsCiAgICAkRXhwb3J0RmlsZW5hbWUKKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJDb21tYW5kIHdpdGggd3JvbmcgdGVtcGxhdGUgbnVtYmVyIC0gZXhpdCBjb2RlIiwKKTsKb2soICEtZSAkRXhwb3J0RmlsZW5hbWUsICdubyBleHBvcnQgZmlsZSB3YXMgZ2VuZXJhdGVkJyApOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCBkZXN0aW5hdGlvbiBhcmd1bWVudAokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJFRlbXBsYXRlSUQgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJObyBkZXN0aW5hdGlvbiBhcmd1bWVudCAtIGV4aXQgY29kZSIsCik7Cm9rKCAhLWUgJEV4cG9ydEZpbGVuYW1lLCAnbm8gZXhwb3J0IGZpbGUgd2FzIGdlbmVyYXRlZCcgKTsKCiMgdGVzdCBjb21tYW5kIHdpdGggLS10ZW1wbGF0ZS1udW1iZXIgb3B0aW9uIGFuZCBkZXN0aW5hdGlvbiBhcmd1bWVudAokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJFRlbXBsYXRlSUQsICRFeHBvcnRGaWxlbmFtZSApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIC0tdGVtcGxhdGUtbnVtYmVyIG9wdGlvbiBhbmQgZGVzdGluYXRpb24gYXJndW1lbnQiLAopOwpvayggLWUgJEV4cG9ydEZpbGVuYW1lLCAnZXhwb3J0IGZpbGUgd2FzIGZpbmFsbHkgZ2VuZXJhdGVkJyApOwoKIyBDb250ZW50IG9mIHRoZSBleHBvcnRlZCBmaWxlLCB3aXRoIGNvbnNpZGVyaW5nIHRoZSByYW5kb20gaWQgaW4gdGhlIGNvbmZpZyBpdGVtIG5hbWUKewogICAgbXkgJEV4cGVjdGVkUmVzdWx0RmlsZSA9IGRpcigkSG9tZSktPmZpbGUoJ3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlRXhwb3J0LmNzdicpOwogICAgbXkgQEV4cGVjdGVkTGluZXMgICAgICA9IG1hcCB7cy88PFJBTkRPTV9JRD4+LyRSYW5kb21JRC9yfSAkRXhwZWN0ZWRSZXN1bHRGaWxlLT5zbHVycDsKICAgIGlzKCBzY2FsYXIgQEV4cGVjdGVkTGluZXMsIDExLCAnZ290IHNvbWUgZXhwZWN0ZWQgY29udGVudCcgKTsKICAgIGlzKAogICAgICAgIFsgZmlsZSgkRXhwb3J0RmlsZW5hbWUpLT5zbHVycCBdLAogICAgICAgIFxARXhwZWN0ZWRMaW5lcywKICAgICAgICAiQ29udGVudCBvZiAkRXhwb3J0RmlsZW5hbWUiCiAgICApOwp9CgojIHJlbW92ZSB0ZXN0IGRlc3RpbmF0aW9uIHBhdGgKZGlhZygiZGVsZXRpbmcgJERlc3RpbmF0aW9uUGF0aCIpOwpkaXIoJERlc3RpbmF0aW9uUGF0aCktPnJtdHJlZTsKb2soICEtZCAkRGVzdGluYXRpb25QYXRoLCAndGVzdCBkaXJlY3RvcnkgZGVsZXRlZCcgKTsKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ImportExport/Import.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbW1hbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbXBvcnRFeHBvcnQ6OkltcG9ydCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCAtLXRlbXBsYXRlLW51bWJlciBvcHRpb24KbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGU7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gLS10ZW1wbGF0ZS1udW1iZXIgIC0gZXhpdCBjb2RlIiwKKTsKCiMgYWRkIHRlc3QgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdUZW1wbGF0ZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAkVGVtcGxhdGVJRCwgIkltcG9ydC9FeHBvcnQgdGVtcGxhdGUgaXMgY3JlYXRlZCAtICRUZW1wbGF0ZUlEIiApOwoKIyBjcmVhdGUgZGVmYXVsdCBjb25maWcgaXRlbSBjbGFzc2VzCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKS0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIsCik7CgojIGdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSUQKbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdIYXJkd2FyZScsCik7Cm15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBvYmplY3QgZGF0YSBmb3IgdGVzdCB0ZW1wbGF0ZQpteSAlVGVtcGxhdGVSZWYgPSAoCiAgICAnQ2xhc3NJRCcgID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICdDb3VudE1heCcgPT4gMTAsCik7Cm15ICRTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgT2JqZWN0RGF0YSA9PiBcJVRlbXBsYXRlUmVmLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKb2soICRTdWNjZXNzLCAiT2JqZWN0RGF0YSBmb3IgdGVzdCB0ZW1wbGF0ZSBpcyBhZGRlZCIgKTsKCiMgYWRkIHRoZSBmb3JtYXQgZGF0YSBvZiB0aGUgdGVzdCB0ZW1wbGF0ZQpteSAlRm9ybWF0RGF0YSA9ICgKICAgIENoYXJzZXQgICAgICAgICAgICAgID0+ICdVVEYtOCcsCiAgICBDb2x1bW5TZXBhcmF0b3IgICAgICA9PiAnQ29tbWEnLAogICAgSW5jbHVkZUNvbHVtbkhlYWRlcnMgPT4gMSwKKTsKJFN1Y2Nlc3MgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5Gb3JtYXREYXRhU2F2ZSgKICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICBGb3JtYXREYXRhID0+IFwlRm9ybWF0RGF0YSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCm9rKCAkU3VjY2VzcywgIkZvcm1hdERhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIHNhdmUgdGhlIHNlYXJjaCBkYXRhIG9mIGEgdGVtcGxhdGUKbXkgJVNlYXJjaERhdGEgPSAoCiAgICBOYW1lID0+ICdUZXN0Q29uZmlnSXRlbSonLAopOwokU3VjY2VzcyA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFTYXZlKAogICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgIFNlYXJjaERhdGEgPT4gXCVTZWFyY2hEYXRhLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKIyBhZGQgbWFwcGluZyBkYXRhIGZvciB0ZXN0IHRlbXBsYXRlCmZvciBteSAkT2JqZWN0RGF0YVZhbHVlIChxdyggTmFtZSBEZXBsU3RhdGUgSW5jaVN0YXRlICkpIHsKCiAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgbXkgJU1hcHBpbmdPYmplY3REYXRhID0gKCBLZXkgPT4gJE9iamVjdERhdGFWYWx1ZSApOwogICAgbXkgJFN1Y2Nlc3MgICAgICAgICAgID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gXCVNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIG1hcHBlZCAtICRPYmplY3REYXRhVmFsdWUiICk7Cn0KCiMgbWFrZSBkaXJlY3RvcnkgZm9yIGV4cG9ydCBmaWxlCm15ICRTb3VyY2VQYXRoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAiL3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlRXhwb3J0LmNzdiI7CgojIHRlc3QgY29tbWFuZCB3aXRoIHdyb25nIHRlbXBsYXRlIG51bWJlcgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJEhlbHBlci0+R2V0UmFuZG9tSUQoKSwgJFNvdXJjZVBhdGggLiAnVGVtcGxhdGVFeHBvcnQuY3N2JyApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkNvbW1hbmQgd2l0aCB3cm9uZyB0ZW1wbGF0ZSBudW1iZXIgLSBleGl0IGNvZGUiLAopOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCBTb3VyY2UgYXJndW1lbnQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXRlbXBsYXRlLW51bWJlcicsICRUZW1wbGF0ZUlEICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gU291cmNlIGFyZ3VtZW50IC0gZXhpdCBjb2RlIiwKKTsKCiMgdGVzdCBjb21tYW5kIHdpdGggLS10ZW1wbGF0ZS1udW1iZXIgb3B0aW9uIGFuZCBTb3VyY2UgYXJndW1lbnQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXRlbXBsYXRlLW51bWJlcicsICRUZW1wbGF0ZUlELCAkU291cmNlUGF0aCApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIC0tdGVtcGxhdGUtbnVtYmVyIG9wdGlvbiBhbmQgU291cmNlIGFyZ3VtZW50IiwKKTsKCiMgZ2V0IG51bWJlciBvZiBjb25maWcgaXRlbSBJRHMKbXkgJE51bUNvbmZpZ0l0ZW1zSW1wb3J0ZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgIE5hbWUgICA9PiAnVGVzdENvbmZpZ0l0ZW0qJywKICAgIFJlc3VsdCA9PiAnQ09VTlQnLAopOwoKIyBjaGVjayBpZiB0aGUgY29uZmlnIGl0ZW1zIGFyZSBpbXBvcnRlZAojIDEwIGl0ZW1zIHNob3VsZCBiZSBleHBvcnRlZCwgYXMgdGhhdCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzYW1wbGUgZmlsZQppcygKICAgICROdW1Db25maWdJdGVtc0ltcG9ydGVkLAogICAgMTAsCiAgICAiVGhlcmUgYXJlIHRlbiBpbXBvcnRlZCBjb25maWcgaXRlbXMiCik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/IncidentState/Recalculate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKCm91ciAkU2VsZjsKCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbmNpZGVudFN0YXRlOjpSZWNhbGN1bGF0ZScpOwoKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiQWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlIGV4aXQgY29kZSIsCik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemCreate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgU2tpcCBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIENoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQuCmlzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0LgpteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CmlzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBTZXQgd2Vic2VydmljZSBuYW1lLgpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAkV2Vic2VydmljZUlELCAiYWRkZWQgd2ViIHNlcnZpY2UiICk7CgojIEdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMuCm15ICRIb3N0ID0gJEhlbHBlci0+R2V0VGVzdEhUVFBIb3N0bmFtZTsKCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgVXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZy4KbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRXZWJzZXJ2aWNlVXBkYXRlLCAidXBkYXRlZCB3ZWIgc2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiApOwoKIyBEZWJ1Z2dlciBvYmplY3QuCm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgIERlYnVnZ2VyQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgV2Vic2VydmljZUlEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIENvbW11bmljYXRpb25UeXBlID0+ICdQcm92aWRlcicsCik7CmlzYV9vaygKICAgICREZWJ1Z2dlck9iamVjdCwKICAgIFsnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlciddLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlZCBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklELgojIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgpteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CmlzYV9vaygKICAgICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgWydLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlciddLAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgQ3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdC4KbXkgJFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgU3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UuCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CnJlZl9vayggJFJlcXVlc3RlclNlc3Npb25SZXN1bHQsICdIQVNIJywgJ2dvdCByZXN1bHQgZnJvbSBTZXNzaW9uSUQnICk7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07Cmxpa2UoICROZXdTZXNzaW9uSUQsIHFyL1xBW1s6YWxudW06XV17MzJ9XHovLCAnc2FuZSBzZXNzaW9uIElEJyApOwoKIyBBY3R1YWwgdGVzdHMuCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRW1wdHkgUmVxdWVzdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHt9LAogICAgICAgIEV4cGVjdGVkRGF0YSAgID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbSBwYXJhbWV0ZXIgaXMgbWlzc2luZyBvciBub3QgdmFsaWQhJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gMSwgICAgIyBzaG91bGQgYmUgYSBoYXNocmVmCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtIHBhcmFtZXRlciBpcyBtaXNzaW5nIG9yIG5vdCB2YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgVG9kbyAgICAgICAgICAgPT4gJ21hbmRhdG9yeSBjaGVja3MgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EeW5hbWljRmllbGQtPk5JQy0+SVBvdmVyREhDUCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQ2xhc3MnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q2xhc3MgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5OYW1lIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EZXBsU3RhdGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEluY2lTdGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5JbmNpU3RhdGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNsYXNzIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgRGVwbFN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+RGVwbFN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+SW5jaVN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPk5JQyBwYXJhbWV0ZXIgdmFsdWUgaXMgcmVxdWlyZWQgYW5kIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+SXBPdmVyREhDUCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMtPklQb3ZlckRIQ1AgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+TklDIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMgcGFyYW1ldGVyIHZhbHVlIGlzIHJlcXVpcmVkIGFuZCBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDWzFdLT5JUG92ZXJESENQIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDLT5JUG92ZXJESENQIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nIFwnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm9cJyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBOSUMtPklwT3ZlckRIQ1AgR2VuZXJhbCBDYXRhbG9nIGluIEFycmF5IEhhc2gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDWzFdLT5JUG92ZXJESENQIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nIFwnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm9cJyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBWZW5kb3IgTG9uZyBUZXh0ICcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdhJyB4IDUxLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPlZlbmRvciBwYXJhbWV0ZXIgdmFsdWUgZXhjZWRlcyB0aGUgbWF4aXVtIGxlbmd0aCEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlIERhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTkzMC0zMC0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5XYXJyYW50eUV4cGlyYXRpb25EYXRlIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBPd25lciBDdXN0b21lcicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5Pd25lciBwYXJhbWV0ZXIgdmFsdWUgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgUmFtIFRvbyBNYW55JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIDExLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5SYW0gcGFyYW1ldGVyIHJlcGV0aXRpb25zIGlzIGhpZ2hlciB0aGFuIHRoZSBtYXhpdW0gdmFsdWUhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQXR0YWNobWVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5BdHRhY2htZW50IHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkNvbnRlbnQgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBBdHRhY2htZW50LT5Db250ZW50VHlwZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+RmlsZW5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBBdHRhY2htZW50LT5GaWxlbmFtZSBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3QnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgID0+ICdUaGlua3BhZCBYMzAwJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnNDAwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICcyMDAwJywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiAnNTAwMDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBHcmFwaGljQWRhcHRlciAgICAgICAgID0+ICdBVEkgUmFkZW9uIDMwMCcsCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1pc28tODg1OS0xJywKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtIHdpdGhvdXQgWFNMRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0xvY2F0aW9uJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKKTsKCiMgU3RhcnQgdGVzdGluZy4KZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIHN1YnRlc3QgJFRlc3QtPntOYW1lfSA9PiBzdWIgewoKICAgICAgICBteSAkVG9kbyA9IGRlZmluZWQgJFRlc3QtPntUb2RvfSA/IHRvZG8oICRUZXN0LT57VG9kb30gKSA6IHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoVmFyaWFibGVzOjpQcm9oaWJpdFVudXNlZFZhcnNTdHJpY3RlcikKCiAgICAgICAgIyBDcmVhdGUgbG9jYWwgb2JqZWN0LgogICAgICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgKTsKICAgICAgICBpc2Ffb2soCiAgICAgICAgICAgICRMb2NhbE9iamVjdCwKICAgICAgICAgICAgWyJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Il0sCiAgICAgICAgICAgICJDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24uCiAgICAgICAgbXkgJENsb25lZFJlcXVlc3REYXRhID0gU3RvcmFibGU6OmRjbG9uZSggJFRlc3QtPntSZXF1ZXN0RGF0YX0gKTsKCiAgICAgICAgIyBTdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZSBsb2NhbGx5CiAgICAgICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIFJlc3RvcmUgY2xvbmVkIGRhdGEuCiAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0gPSAkQ2xvbmVkUmVxdWVzdERhdGE7CgogICAgICAgICMgQ2hlY2sgcmVzdWx0LgogICAgICAgIHJlZl9vaygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgogICAgICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgICAgIGlzYV9vaygKICAgICAgICAgICAgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAgICAgWydLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlciddLAogICAgICAgICAgICAiQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAogICAgICAgICk7CgogICAgICAgICMgU3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UuCiAgICAgICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayByZXN1bHQuCiAgICAgICAgcmVmX29rKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICAgICAgKTsKCiAgICAgICAgaXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAgICAgJFRlc3QtPntTdWNjZXNzUmVxdWVzdH0sCiAgICAgICAgICAgICJSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQiLAogICAgICAgICk7CgogICAgICAgICMgVGVzdHMgc3VwcG9zZWQgdG8gc3VjY2VlZC4KICAgICAgICBpZiAoICRUZXN0LT57U3VjY2Vzc0NyZWF0ZX0gKSB7CgogICAgICAgICAgICAjIExvY2FsIHJlc3VsdHMuCiAgICAgICAgICAgIG9rKCAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sICJMb2NhbCByZXN1bHQgZ290IENvbmZpZ0l0ZW1JRCIgKTsKICAgICAgICAgICAgb2soICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwgICAgICAgIkxvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBUcnVlLiIgKTsKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVxdWVzdGVyIHJlc3VsdHMuCiAgICAgICAgICAgIG9rKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LCAiUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIgKTsKICAgICAgICAgICAgb2soICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sICAgICAgICJSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIlJlcXVlc3RlciByZXN1bHQgRXJyb3IgaXMgdW5kZWZpbmVkLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdldCB0aGUgQ29uZmlnSXRlbSBlbnRyeSAoZnJvbSBsb2NhbCByZXN1bHQpLgogICAgICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkTG9jYWxWZXJzaW9uRGF0YSksCiAgICAgICAgICAgICAgICAiY3JlYXRlZCBsb2NhbCB2ZXJzaW9uIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIGNvbmZpZyBpdGVtIGVudHJ5IChmcm9tIHJlcXVlc3RlciByZXN1bHQpLgogICAgICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCRSZXF1ZXN0ZXJWZXJzaW9uRGF0YSksCiAgICAgICAgICAgICAgICAiY3JlYXRlZCByZXF1ZXN0ZXIgY29uZmlnIGl0ZW0gc3RyY3R1cmUgd2l0aCBUcnVlLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgdGVzdC4KICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSApIHsKCiAgICAgICAgICAgICAgICAjIFRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0LgogICAgICAgICAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAgICAgICAgICMgTWFrZSBhIGRlZXAgY29weSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgcmVzdWx0LgogICAgICAgICAgICAgICAgbXkgJENsb25lZFhNTERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgICAgICAgICAgbXkgJEZvcm1hdGVkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+SW52ZXJ0Rm9ybWF0WE1MRGF0YSgKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhID0+ICRDbG9uZWRYTUxEYXRhLT5bMV0tPntWZXJzaW9ufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+SW52ZXJ0UmVwbGFjZVhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkRm9ybWF0ZWRYTUxEYXRhLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgQ29tcGFyZSBYTUwgZGF0YS4KICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgICRSZXBsYWNlZFhNTERhdGEsCiAgICAgICAgICAgICAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0NJWE1MRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgImxvY2FsIENvbmZpZ0l0ZW0tPkNJWE1MRGF0YSBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0F0dGFjaG1lbnR9ICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgYXR0YWNobWVudHMuCiAgICAgICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWxlTmFtZSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIE5leHQgaWYgbm90IGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudCk7CgogICAgICAgICAgICAgICAgICAgICMgQ29udmVydCBjb250ZW50IHRvIGJhc2U2NC4KICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+e0NvbnRlbnR9ID0gZW5jb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnQtPntDb250ZW50fSwgJycgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBEZWxldGUgbm90IG5lZWRlZCBhdHRpYnV0ZXMuCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFByZWZlcmVuY2VzIEZpbGVzaXplIFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICAgICAgaWYgKCByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntBdHRhY2htZW50fSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUmVxdWVzdGVkQXR0YWNobWVudHMsICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPntBdHRhY2htZW50fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBSZXF1ZXN0ZWRBdHRhY2htZW50cyA9IEB7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPntBdHRhY2htZW50fSB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgIFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgXEBSZXF1ZXN0ZWRBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAibG9jYWwgQ29uZmlnSXRlbS0+QXR0YWNobWVudCBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUmVtb3ZlIGF0dHJpYnV0ZXMgdGhhdCBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSBsb2NhbCBhbmQgcmVxdWVzdGVyIHJlc3BvbnNlcy4KICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKAogICAgICAgICAgICAgICAgcXcoQ29uZmlnSXRlbUlEIE51bWJlciBDcmVhdGVUaW1lIFZlcnNpb25JRCBMYXN0VmVyc2lvbklEKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkZWxldGUgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YSwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJWZXJzaW9uRGF0YSwKICAgICAgICAgICAgICAgICJMb2NhbCBjb25maWcgaXRlbSByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgRGVsZXRlIHRoZSBjb25maWcgaXRlbXMuCiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICgKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGVsZXRlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgU2FuaXR5IGNoZWNrLgogICAgICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1EZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBUZXN0cyBzdXBwb3NlZCB0byBmYWlsLgogICAgICAgIGVsc2UgewogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICEkTG9jYWxSZXN1bHQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICEkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgICAgICAuICc6ICcKICAgICAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbC4KICAgICAgICAgICAgIyBSZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQuCiAgICAgICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNhbml0eSBjaGVjay4KICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAhJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgICAgIC4gIiBsb2NhbCBhbmQgcmVtb3RlIHRlc3RzLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICAgICAiTG9jYWwgcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQoKIyBDbGVhbiB1cCB3ZWJzZXJ2aWNlLgpteSAkV2Vic2VydmljZURlbGV0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlRGVsZXRlKAogICAgSUQgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRXZWJzZXJ2aWNlRGVsZXRlLCAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiICk7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemDelete.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkU2VsZjsKCiMgc2V0IFVzZXJJRCB0byByb290Cm15ICRVc2VySUQgPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgR2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcy4KbXkgJEhvc3QgPSAkSGVscGVyLT5HZXRUZXN0SFRUUEhvc3RuYW1lOwoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbURlbGV0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtRGVsZXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwoKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJFJlcXVlc3RlclNlc3Npb25SZXN1bHQgPSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdC0+UnVuKAogICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBJbnZva2VyICAgICAgPT4gJ1Nlc3Npb25DcmVhdGUnLAogICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgfSwKKTsKCm15ICROZXdTZXNzaW9uSUQgPSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdC0+e0RhdGF9LT57U2Vzc2lvbklEfTsKCiNDb25maWdJdGVtdHMgY29udGFpbmVyICh1c2VmdWxsIGZvciBsb29rdXAgY29tcGFyZSkKbXkgJUFkZGVkQ29uZmlnSXRlbXM7Cm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTItJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0zLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ0hhcmR3YXJlIFZlbmRvcicsCiAgICAgICAgICAgIE1vZGVsICAgICAgICA9PiAnSGFyZHdhcmUgTW9kZWwnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1Rlc2l0bmcgSGFucmR3YXJlJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdDYW1lcmEnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNhbWM0NTYnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnTG9jYXRpb24nLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgID0+ICdCdWlsZGluZycsCiAgICAgICAgICAgIFBob25lMSAgID0+ICcxMjMnLAogICAgICAgICAgICBQaG9uZTIgICA9PiAnNDU2JywKICAgICAgICAgICAgRmF4ICAgICAgPT4gJzc4OScsCiAgICAgICAgICAgICdFLU1haWwnID0+ICdzb2Vtb25lQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgQWRkcmVzcyAgPT4gJ1NvbWUgYWRkcmVzcycsCiAgICAgICAgICAgIE5vdGUgICAgID0+ICdUaGlzIGlzIGEgdGVzdCBsb2NhdGlvbicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdOZXR3b3JrJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS01LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnTmV0d29yayBDSSBmb3IgdGVzdGluZycsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICdMQU4nLAogICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjEuMScsCiAgICAgICAgICAgICAgICAgICAgU3VibmV0TWFzayAgICAgPT4gJzI1NS4yNTUuMjU1LjAnLAogICAgICAgICAgICAgICAgICAgIEdhdGV3YXkgICAgICAgID0+ICcxOTIuMS4xLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+ICcxOTIuMS41MC4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjUwLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBOb3RlID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTctJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0Rvd25sb2FkJywKICAgICAgICAgICAgTm90ZSAgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS04LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIiwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgbXkgJExvY2FsT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUtPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICAjIFRPRE86IHN3aXRjaCB0byBDb25maWdJdGVtVXBkYXRlKCkgPz8/CiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRSZXZlcnNlRGVwbFN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGV9IH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgIG9rKCAkVmVyc2lvbklELCAiQWRkZWQgdmVyc2lvbiAkVmVyc2lvbklEIiApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtRGVsZXRlIG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtRGVsZXRlLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzBdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEIDEgKHdhcyBhbHJlYWR5IGRlbGV0ZWQgYmVmb3JlKScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbICRBZGRlZENvbmZpZ0l0ZW1JRHNbMV0gXSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1syXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbM10sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzRdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzRdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzVdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNy04JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbUlEc1s2XSwKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbN10sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbUlEc1s2XSwKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbN10sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBjcmVhdGUgbG9jYWwgb2JqZWN0CiAgICBteSAkTG9jYWxPYmplY3QgPSAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OiRUZXN0LT57T3BlcmF0aW9ufSItPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259IiwKICAgICAgICByZWYgJExvY2FsT2JqZWN0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3JlYXRlIGxvY2FsIG9iamVjdCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzRGVsZXRlfSApIHsKCiAgICAgICAgIyByZXF1ZXN0ZXIgcmVzdWx0cwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgaXMgbm90IHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgIG15ICRFeHBlY3RlZFJlc3VsdFR5cGUgPSByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9OwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEIHJlZmVyZW5jZS4iLAogICAgICAgICk7CgogICAgICAgIGlmICggJEV4cGVjdGVkUmVzdWx0VHlwZSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW1JRCByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdGVzdHMgc3VwcG9zZWQgdG8gZmFpbAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvck1lc3NhZ2Ugd2l0aCB0cnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemGet.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7Cgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKbXkgJFVzZXJJRCA9IDE7CgojIGhlbHBlciBvYmplY3QKIyBza2lwIFNTTCBjZXJ0aWNpYXRlIHZlcmlmaWNhdGlvbgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgY2hlY2sgaWYgU1NMIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZAokU2VsZi0+SXMoCiAgICAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9LAogICAgMCwKICAgICdEaXNhYmxlZCBTU0wgY2VydGl0aWNhdGVzIHZlcmlmaWNhdGlvbiBpbiBlbnZpcm9ubWVudCcsCik7CgojIGNyZWF0ZSBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgY3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0Cm15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKJFNlbGYtPklzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBzZXQgd2Vic2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJFJhbmRvbUlEOwoKbXkgJFdlYnNlcnZpY2VJRCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlQWRkKAogICAgTmFtZSAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyA9PiB7CiAgICAgICAgRGVidWdnZXIgPT4gewogICAgICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIH0sCiAgICAgICAgUHJvdmlkZXIgPT4gewogICAgICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZUlELAogICAgIkFkZGVkIFdlYnNlcnZpY2UiLAopOwoKIyBnZXQgcmVtb3RlIGhvc3Qgd2l0aCBzb21lIHByZWNhdXRpb25zIGZvciBjZXJ0YWluIHVuaXQgdGVzdCBzeXN0ZW1zCm15ICRIb3N0OwpteSAkRlFETiA9ICRDb25maWdPYmplY3QtPkdldCgnRlFETicpOwoKIyB0cnkgdG8gcmVzb2x2ZSBmcWRuIGhvc3QKaWYgKCAkRlFETiBuZSAneW91cmhvc3QuZXhhbXBsZS5jb20nICYmIGdldGhvc3RieW5hbWUoJEZRRE4pICkgewogICAgJEhvc3QgPSAkRlFETjsKfQoKIyB0cnkgdG8gcmVzb2x2ZSBsb2NhbGhvc3QgaW5zdGVhZAppZiAoICEkSG9zdCAmJiBnZXRob3N0YnluYW1lKCdsb2NhbGhvc3QnKSApIHsKICAgICRIb3N0ID0gJ2xvY2FsaG9zdCc7Cn0KCiMgdXNlIGhhcmRjb2RlZCBsb2NhbGhvc3QgaXAgYWRkcmVzcwppZiAoICEkSG9zdCApIHsKICAgICRIb3N0ID0gJzEyNy4wLjAuMSc7Cn0KCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yIENvbmZpZ0l0ZW0gQ29ubmVjdG9yIHVzaW5nIFNPQVAgdHJhbnNwb3J0IGJhY2tlbmQuJywKICAgIERlYnVnZ2VyID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgUHJvdmlkZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTBfMDAwXzAwMCwKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Nlc3Npb246OlNlc3Npb25DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgUmVxdWVzdGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmNvZGluZyAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgSW52b2tlciA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCn07CgojIHVwZGF0ZSB3ZWJzZXJ2aWNlIHdpdGggcmVhbCBjb25maWcKbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7CgpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdCA9ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnU2Vzc2lvbkNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICB9LAopOwoKbXkgJE5ld1Nlc3Npb25JRCA9ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0LT57RGF0YX0tPntTZXNzaW9uSUR9OwoKI0NvbmZpZ0l0ZW10cyBjb250YWluZXIgKHVzZWZ1bGwgZm9yIGxvb2t1cCBjb21wYXJlKQpteSAlQWRkZWRDb25maWdJdGVtczsKbXkgQEFkZGVkQ29uZmlnSXRlbUlEczsKCiMgQ29uZmlnSXRlbSBzZXR0aW5ncwpteSBAQ29uZmlnSXRlbXMgPSAoCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMS0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0xvMCcsCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUmVwYWlyJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ1dhcm5pbmcnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnTGVub3ZvJywKICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnRGVza3RvcCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgT3BlcmF0aW5nU3lzdGVtID0+ICdDZW50T1MgNi4wJywKICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAyMDAwLAogICAgICAgICAgICBdLAogICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiAnL2RldicsCiAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiA1MDAwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcxOTIuMTY4LjMwLjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBHcmFwaGljQWRhcHRlciA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICBJbnN0YWxsRGF0ZSAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgIE5vdGUgICAgICAgICAgID0+ICdUaGlzIGlzIGEgRGVtbyBDSScsCiAgICAgICAgfSwKICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0LnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0Mi50eHQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnSGFyZHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTMtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnSGFyZHdhcmUgVmVuZG9yJywKICAgICAgICAgICAgTW9kZWwgICAgICAgID0+ICdIYXJkd2FyZSBNb2RlbCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnVGVzaXRuZyBIYW5yZHdhcmUnLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0NhbWVyYScsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM2FtYzQ1NicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdMb2NhdGlvbicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNC0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0J1aWxkaW5nJywKICAgICAgICAgICAgUGhvbmUxICAgPT4gJzEyMycsCiAgICAgICAgICAgIFBob25lMiAgID0+ICc0NTYnLAogICAgICAgICAgICBGYXggICAgICA9PiAnNzg5JywKICAgICAgICAgICAgJ0UtTWFpbCcgPT4gJ3NvZW1vbmVAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBBZGRyZXNzICA9PiAnU29tZSBhZGRyZXNzJywKICAgICAgICAgICAgTm90ZSAgICAgPT4gJ1RoaXMgaXMgYSB0ZXN0IGxvY2F0aW9uJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ05ldHdvcmsnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTUtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdOZXR3b3JrIENJIGZvciB0ZXN0aW5nJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ0xBTicsCiAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiAnMTkyLjEuMS4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjEuMjU0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjUwLjEnLAogICAgICAgICAgICAgICAgICAgIFN1Ym5ldE1hc2sgICAgID0+ICcyNTUuMjU1LjI1NS4wJywKICAgICAgICAgICAgICAgICAgICBHYXRld2F5ICAgICAgICA9PiAnMTkyLjEuNTAuMjU0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE5vdGUgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS02LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIiwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgbXkgJExvY2FsT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUtPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRSZXZlcnNlRGVwbFN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGV9IH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtR2V0IG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwgXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMl0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzNdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCA1JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1s0XSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEtNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFxAQWRkZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzR2V0fSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbSBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZSBpcyBub3QgZW1wdHkuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBteSAkRXhwZWN0ZWRSZXN1bHRUeXBlID0gcmVmICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB8fCAnSEFTSCc7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBJc0FycmF5UmVmV2l0aERhdGEoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW0gcmVmZXJlbmNlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICMgbG9vcCBhbGwgQ29uZmlnSXRlbUlEcyBpbiB0aGUgcmVzcG9uc2UKICAgICAgICAgICAgZm9yIG15ICRDb3VudGVyICggMCAuLiBzY2FsYXIgQHsgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9IH0gLSAxICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LT5bJENvdW50ZXJdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1zeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW1JRH0tPlskQ291bnRlcl0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IG1hdGNoIENvbmZpZ0l0ZW0tPlskQ291bnRlcl0gJEF0dHJpYnV0ZSBjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIgZGF0YS4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcyBmb3IgdGhlIG9ubHkgMSByZXN1bHQKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfS0+WzBdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB9LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2ggQ29uZmlnSXRlbSAkQXR0cmlidXRlIGNyZWF0ZSBkYXRhLiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbWFrZSBSZXF1ZXN0ZXIgcmVzdWx0IGFuIGFycmF5IGZvciBlYXN5IGNvbXBhcmUKICAgICAgICAgICAgbXkgJFJlcXVlc3RlckNvbmZpZ0l0ZW0gPSBkZWxldGUgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbX07CiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ID0gWyRSZXF1ZXN0ZXJDb25maWdJdGVtXTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIGNvbmZpZyBpdGVtIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBmYWlsCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIHdpdGggdHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvck1lc3NhZ2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfQogICAgICAgICAgICAgICAgLiAnOiAnCiAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAuICIgb2YgRXJyb3JDb2RlIGFuZCBFcnJvck1lc3NhZ2Ugd2l0aGluIERhdGEgaGFzaC4iLAogICAgICAgICk7CgogICAgICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgICAgICMgcmVzdWx0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBTT0FQIGNhbGwgcmVzdWx0CiAgICAgICAgaWYgKCAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgICAgICB9CgogICAgICAgICMgc2FuaXR5IGNoZWNrCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvTWVzc2FnZSAob3V0c2lzZSBEYXRhIGhhc2gpIGdvdCByZW1vdmVkIHRvIGNvbXBhcmUiCiAgICAgICAgICAgICAgICAuICIgbG9jYWwgYW5kIHJlbW90ZSB0ZXN0cy4iLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJUFkZGVkQ29uZmlnSXRlbXMgKSB7CgogICAgIyBkZWxldGUgdGhlIENvbmZpZ0l0ZW1zCiAgICBteSAkU3VjY2Vzc0RlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVjawogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3NEZWxldGUsCiAgICAgICAgIlN1Y2Nlc3NEZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAogICAgKTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemSearch.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgU3RvcmFibGU7CgojIENQQU4gbW9kdWxlcwp1c2UgVGVzdDI6OlYwOwoKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgR2VuZXJpYyBJbnRlcmZhY2UgdGVzdHMgdGVtcG9yYXJpbHkuJyk7CmRvbmVfdGVzdGluZzsKZXhpdDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKIyBUT0RPOiB3aHkgaXMgJFNlbGYtPntVc2VySUR9IHVzZWQgYXMgd2VsbD8KbXkgJFRlc3RVc2VySUQgPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlSUQsCiAgICAiQWRkZWQgV2Vic2VydmljZSIsCik7CgojIGdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMKbXkgJEhvc3Q7Cm15ICRGUUROID0gJENvbmZpZ09iamVjdC0+R2V0KCdGUUROJyk7CgojIHRyeSB0byByZXNvbHZlIGZxZG4gaG9zdAppZiAoICRGUUROIG5lICd5b3VyaG9zdC5leGFtcGxlLmNvbScgJiYgZ2V0aG9zdGJ5bmFtZSgkRlFETikgKSB7CiAgICAkSG9zdCA9ICRGUUROOwp9CgojIHRyeSB0byByZXNvbHZlIGxvY2FsaG9zdCBpbnN0ZWFkCmlmICggISRIb3N0ICYmIGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpICkgewogICAgJEhvc3QgPSAnbG9jYWxob3N0JzsKfQoKIyB1c2UgaGFyZGNvZGVkIGxvY2FsaG9zdCBpcCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CgogICAgIyAgICBOYW1lID0+ICcnLAogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1TZWFyY2ggPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7Cm15ICRQYXNzd29yZCA9ICRVc2VyTG9naW47CgojIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWJzZXJ2aWNlCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07CgojQ29uZmlnSXRlbXRzIGNvbnRhaW5lciAodXNlZnVsbCBmb3IgbG9va3VwIGNvbXBhcmUpCm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0yLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdSZXBhaXInLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnQXBwbGUnLAogICAgICAgICAgICBNb2RlbCAgICAgICAgICAgPT4gJ2lNYWMnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ0FwcGxlIENvbXB1dGVyJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgT3duZXIgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ09TWCAxMC44LjMnLAogICAgICAgICAgICBDUFUgICAgICAgICAgICAgPT4gJ0ludGVsIENvcmUgaTMnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgIDIwMDAsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgIENhcGFjaXR5ID0+IDgwMDAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGUUROID0+ICdob3RzLmV4YW1wbGUuY29tJywKICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRW4wJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0VuMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ252aWRpYScsCiAgICAgICAgICAgIEluc3RhbGxEYXRlICAgID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgTm90ZSAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICB9LAogICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTEnLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMy0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0NELVJPTScsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgojIGNyZWF0ZSBsb2NhbCBvYmplY3QKbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKKTsKCmZvciBteSAkQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1zKSB7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkQ29uZmlnSXRlbSA9IFN0b3JhYmxlOjpkY2xvbmUoJENvbmZpZ0l0ZW0pOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgICMgYWRkIG5ldyBDb25maWdJdGVtcwogICAgbXkgJENyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkICAgPT4gJFBhc3N3b3JkLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICRDbG9uZWRDb25maWdJdGVtLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9IHx8ICcnOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIC0gJENyZWF0ZVJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgcHVzaCBAQWRkZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgfQp9CgojIGFjdHVhbCB0ZXN0cyBmb3IgQ29uZmlnSXRlbVNlYXJjaCBvcGVyYXRpb24KbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBUZXN0ID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtIGZvcm1hdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAxCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtLT5DbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTm9uRXhpc3RpbmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgPT4gJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzIEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+SW5jaVN0YXRlcyBBUlJBWScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEIF0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZXMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5EZXBsU3RhdGVzIEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+RGVwbFN0YXRlcyBBUlJBWScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgPT4gWyAnUHJvZHVjdGlvbicsICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCBdLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5PcmRlckJ5IEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLldyb25nU3RydWN0dXJlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPk9yZGVyQnlEaXJlY3Rpb24gSEFTSCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q3JlYXRlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q2hhbmdlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q2hhbmdlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+TGltaXQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgICAgICAgICAgICA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbmxpbWl0ZWQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhIEdlbmVyYWwgQ2F0YWxvZycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENJWE1MRGF0YSBUZXh0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnYScgeCA1MSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgTnVtYmVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciAgICAgPT4gJ2EnIHggNTAsCiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ID0+ICdOb3RFeGlzdGluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb21wdXRlciBObyBMaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJywgJ1JlcGFpcicgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ1BVID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSwgJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb21wdXRlciBMaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJywgJ1JlcGFpcicgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ1BVID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBTb2Z0d2FyZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSA9PiBbICczJywgJzQnIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzJdLCAkQWRkZWRDb25maWdJdGVtSURzWzNdIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkUmVxdWVzdERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkVGVzdC0+e1JlcXVlc3REYXRhfSApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRMb2NhbFJlc3VsdCA9ICRMb2NhbE9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXN0b3JlIGNsb25lZCBkYXRhCiAgICAkVGVzdC0+e1JlcXVlc3REYXRhfSA9ICRDbG9uZWRSZXF1ZXN0RGF0YTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzU2VhcmNofSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEcyBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSURzIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIGlzIGEgbm9uIGVtcHRyeSBhcnJheSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEc30gKSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIGEgbm9uIGVtcHRyeSBhcnJheSB3aXRoIHRydWUuIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgSXNOdW1iZXIoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEcyBpcyBudW1iZXIgd2l0aCB0cnVlLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2UgUmVxdWVzdGVyIHJlc3VsdCBhbiBhcnJheSBmb3IgZWFzeSBjb21wYXJlCiAgICAgICAgICAgIG15ICRSZXF1ZXN0ZXJDb25maWdJdGVtSURzID0gZGVsZXRlICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9OwogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSA9IFskUmVxdWVzdGVyQ29uZmlnSXRlbUlEc107CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaCBleHBlY3RlZCBkYXRhLiIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgTnVtYmVyIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0tPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgbG9jYWwgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwKICAgICAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX07CiAgICAgICAgfQoKICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9ICAgICNlbmQgbG9vcAoKIyBjbGVhbiB1cAoKIyBjbGVhbiB1cCB3ZWJzZXJ2aWNlCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBBZGRlZENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgIyBkZWxldGUgdGhlIENvbmZpZ0l0ZW1zCiAgICBteSAkU3VjY2Vzc0RlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkU3VjY2Vzc0RlbGV0ZSwKICAgICAgICAiU3VjY2Vzc0RlbGV0ZSgpIHN1Y2Nlc3NmdWwgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICApOwp9CgojZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemUpdate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwp1c2UgU3RvcmFibGUgICAgIHF3KGRjbG9uZSk7CgojIENQQU4gbW9kdWxlcwp1c2UgVGVzdDI6OlYwOwoKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgR2VuZXJpYyBJbnRlcmZhY2UgdGVzdHMgdGVtcG9yYXJpbHkuJyk7CmRvbmVfdGVzdGluZzsKZXhpdDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgZ2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcwpteSAkSG9zdDsKbXkgJEZRRE4gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKTsKCiMgdHJ5IHRvIHJlc29sdmUgZnFkbiBob3N0CmlmICggJEZRRE4gbmUgJ3lvdXJob3N0LmV4YW1wbGUuY29tJyAmJiBnZXRob3N0YnluYW1lKCRGUUROKSApIHsKICAgICRIb3N0ID0gJEZRRE47Cn0KCiMgdHJ5IHRvIHJlc29sdmUgbG9jYWxob3N0IGluc3RlYWQKaWYgKCAhJEhvc3QgJiYgZ2V0aG9zdGJ5bmFtZSgnbG9jYWxob3N0JykgKSB7CiAgICAkSG9zdCA9ICdsb2NhbGhvc3QnOwp9CgojIHVzZSBoYXJkY29kZWQgbG9jYWxob3N0IGlwIGFkZHJlc3MKaWYgKCAhJEhvc3QgKSB7CiAgICAkSG9zdCA9ICcxMjcuMC4wLjEnOwp9CgojIHByZXBhcmUgd2Vic2VydmljZSBjb25maWcKbXkgJFJlbW90ZVN5c3RlbSA9CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKQogICAgLiAnL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2VJRC8nCiAgICAuICRXZWJzZXJ2aWNlSUQ7CgpteSAkV2Vic2VydmljZUNvbmZpZyA9IHsKCiAgICAjICAgIE5hbWUgPT4gJycsCiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtVXBkYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdCA9ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnU2Vzc2lvbkNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICB9LAopOwoKbXkgJE5ld1Nlc3Npb25JRCA9ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0LT57RGF0YX0tPntTZXNzaW9uSUR9OwoKIyBjcmVhdGUgYSBuZXcgY29uZmlnIGl0ZW0gd2l0aCB0aGUgYmFzaWMgb3B0aW9ucwpteSAkQ29uZmlnSXRlbSA9IHsKICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICBOSUMgPT4gewogICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgfSwKICAgIH0sCn07CgojIGNyZWF0ZSBsb2NhbCBvYmplY3QKbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKKTsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJENyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiAgPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgID0+ICRQYXNzd29yZCwKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgfSwKKTsKCm15ICRDb25maWdJdGVtSUQgPSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9IHx8ICcnOwoKJFNlbGYtPlRydWUoCiAgICAkQ29uZmlnSXRlbUlELAogICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCAtICRDcmVhdGVSZXN1bHQtPntEYXRhfS0+e051bWJlcn0iLAopOwoKIyBhY3R1YWwgdGVzdHMKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IDEsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtSUQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOYW1lJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgRGVwbFN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5OSUMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQyBpbiBhcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+SXBPdmVyREhDUCBpbiBhcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgTklDLT5JcE92ZXJESENQIEdlbmVyYWwgQ2F0YWxvZyBpbiBIYXNoJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gQXJyYXkgSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIFZlbmRvciBMb25nIFRleHQgJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ2EnIHggNTEsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlIERhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTkzMC0zMC0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE93bmVyIEN1c3RvbWVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgUmFtIFRvbyBNYW55JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIDExLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIEF0dGFjaG1lbnQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+RmlsZW5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yICAgICAgICAgID0+ICdMZW5vdm8nLAogICAgICAgICAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ0NlbnRPUyA2LjAnLAogICAgICAgICAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJzQwMDAnLAogICAgICAgICAgICAgICAgICAgICAgICAnMjAwMCcsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gJzUwMDAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgICAgICAgICA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCik7CgojIHN0YXJ0IHRlc3RpbmcKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkUmVxdWVzdERhdGEgPSBkY2xvbmUoICRUZXN0LT57UmVxdWVzdERhdGF9ICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJlc3RvcmUgY2xvbmVkIGRhdGEKICAgICRUZXN0LT57UmVxdWVzdERhdGF9ID0gJENsb25lZFJlcXVlc3REYXRhOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkTG9jYWxSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFVwZGF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkTmV3U2Vzc2lvbklELAogICAgICAgICAgICAleyAkVGVzdC0+e1JlcXVlc3REYXRhfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHN1Y2Nlc3NmdWwgcmVzdWx0IiwKICAgICk7CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBzdWNjZWVkCiAgICBpZiAoICRUZXN0LT57U3VjY2Vzc1VwZGF0ZX0gKSB7CgogICAgICAgICMgbG9jYWwgcmVzdWx0cwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW1JRCB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IEVycm9yIGlzIHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBDb25maWdJdGVtIGVudHJ5IChmcm9tIGxvY2FsIHJlc3VsdCkKICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJExvY2FsVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgbG9jYWwgdmVyc2lvbiBzdHJjdHVyZSB3aXRoIFRydWUuIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIGl0ZW0gZW50cnkgKGZyb20gcmVxdWVzdGVyIHJlc3VsdCkKICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkUmVxdWVzdGVyVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgcmVxdWVzdGVyIGNvbmZpZyBpdGVtIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW0gYXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSB0ZXN0CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0CiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIHJlc3VsdAogICAgICAgIG15ICRDbG9uZWRYTUxEYXRhID0gZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgIG15ICRGb3JtYXRlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkludmVydEZvcm1hdFhNTERhdGEoCiAgICAgICAgICAgIFhNTERhdGEgPT4gJENsb25lZFhNTERhdGEtPlsxXS0+e1ZlcnNpb259LAogICAgICAgICk7CgogICAgICAgIG15ICRSZXBsYWNlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkludmVydFJlcGxhY2VYTUxEYXRhKAogICAgICAgICAgICBYTUxEYXRhICAgID0+ICRGb3JtYXRlZFhNTERhdGEsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBjb21wYXJlIFhNTCBkYXRhCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkUmVwbGFjZWRYTUxEYXRhLAogICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT5DSVhNTERhdGEgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBhdHRhY2htZW50cwogICAgICAgIGlmICggZGVmaW5lZCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9ICkgewogICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkRmlsZU5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBuZXh0IGlmIG5vdCBhdHRhY2htZW50CiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgY29udGVudCB0byBiYXNlNjQKICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9LCAnJyApOwoKICAgICAgICAgICAgICAgICMgZGVsZXRlIG5vdCBuZWVkZWQgYXR0aWJ1dGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoUHJlZmVyZW5jZXMgRmlsZXNpemUgVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEF0dGFjaG1lbnQtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICBpZiAoIHJlZiAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJlcXVlc3RlZEF0dGFjaG1lbnRzLCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAUmVxdWVzdGVkQXR0YWNobWVudHMgPSBAeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgIFxAUmVxdWVzdGVkQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGxvY2FsIENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFZlcnNpb25EYXRhLAogICAgICAgICAgICAkUmVxdWVzdGVyVmVyc2lvbkRhdGEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgTnVtYmVyIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0tPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgbG9jYWwgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwKICAgICAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX07CiAgICAgICAgfQoKICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9CgojIGNsZWFuIHVwIGNvbmZpZyBpdGVtcwpteSAkQ29uZmlnSXRlbURlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiMgc2FuaXR5IGNoZWNrCiRTZWxmLT5UcnVlKAogICAgJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAiQ29uZmlnSXRlbURlbGV0ZSgpIHN1Y2Nlc3NmdWwgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRCIsCik7CgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKb3VyICRTZWxmOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkVXNlck9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY3JlYXRlIG5lZWRlZCB1c2VycwpteSBAVXNlcklEczsKewoKICAgICMgZGlzYWJsZSBlbWFpbCBjaGVja3MgdG8gY3JlYXRlIG5ldyB1c2VyCiAgICBteSAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZyA9ICRDb25maWdPYmplY3QtPkdldCgnQ2hlY2tFbWFpbEFkZHJlc3NlcycpIHx8IDE7CiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwoKICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gMyApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IHVzZXJzIGZvciB0aGUgdGVzdHMKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJ0lUU01Db25maWdJdGVtJyAuICRDb3VudGVyLAogICAgICAgICAgICBVc2VyTGFzdG5hbWUgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJ1VuaXRUZXN0LUlUU01Db25maWdJdGVtLScgLiAkQ291bnRlciAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAnVW5pdFRlc3QtSVRTTUNvbmZpZ0l0ZW0tJyAuICRDb3VudGVyIC4gJ0Bsb2NhbGhvc3QnLAogICAgICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgICAgIENoYW5nZVVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBVc2VySURzLCAkVXNlcklEOwogICAgfQoKICAgICMgcmVzdG9yZSBvcmlnaW5hbCBlbWFpbCBjaGVjayBwYXJhbQogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgICAgICBWYWx1ZSA9PiAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZywKICAgICk7Cn0KCm15ICRUZXN0SURTdWZmaXggPSAnVW5pdFRlc3QnIC4gJFJhbmRvbUlEOwpteSAkT3JkZXIgICAgICAgID0gMTAwMDA7CgpteSAlRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnMgPSAoCiAgICBUZXN0MSA9PiB7CiAgICAgICAgJ0RlZmF1bHRWYWx1ZScgPT4gJycsCiAgICAgICAgJ1JlZ0V4TGlzdCcgICAgPT4gW10sCiAgICAgICAgJ011bHRpVmFsdWUnICAgPT4gJzAnLAogICAgICAgICdMaW5rJyAgICAgICAgID0+ICcnLAogICAgICAgICdUb29sdGlwJyAgICAgID0+ICcnLAogICAgICAgICdMaW5rUHJldmlldycgID0+ICcnLAogICAgICAgICdGaWVsZFR5cGUnICAgID0+ICdUZXh0JwogICAgfSwKICAgIFRlc3QyID0+IHsKICAgICAgICAnTGluaycgICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnVG9vbHRpcCcgICAgICAgICAgICA9PiAnJywKICAgICAgICAnUG9zc2libGVOb25lJyAgICAgICA9PiAnMScsCiAgICAgICAgJ011bHRpVmFsdWUnICAgICAgICAgPT4gJzEnLAogICAgICAgICdEZWZhdWx0VmFsdWUnICAgICAgID0+ICcnLAogICAgICAgICdUcmFuc2xhdGFibGVWYWx1ZXMnID0+ICcwJywKICAgICAgICAnUG9zc2libGVWYWx1ZXMnICAgICA9PiB7CiAgICAgICAgICAgICdWQUxVRSAxJyA9PiAnVkFMVUUgMScsCiAgICAgICAgICAgICdWQUxVRSAyJyA9PiAnVkFMVUUgMicKICAgICAgICB9LAogICAgICAgICdUcmVlVmlldycgICAgPT4gJzEnLAogICAgICAgICdMaW5rUHJldmlldycgPT4gJycsCiAgICAgICAgJ0ZpZWxkVHlwZScgICA9PiAnRHJvcGRvd24nCiAgICB9LAogICAgVGVzdDMgPT4gewogICAgICAgICdZZWFyc0luRnV0dXJlJyAgID0+ICc1JywKICAgICAgICAnRGF0ZVJlc3RyaWN0aW9uJyA9PiAnJywKICAgICAgICAnWWVhcnNQZXJpb2QnICAgICA9PiAnMCcsCiAgICAgICAgJ0xpbmtQcmV2aWV3JyAgICAgPT4gJycsCiAgICAgICAgJ1llYXJzSW5QYXN0JyAgICAgPT4gJzUnLAogICAgICAgICdNdWx0aVZhbHVlJyAgICAgID0+ICcwJywKICAgICAgICAnRGVmYXVsdFZhbHVlJyAgICA9PiAwLAogICAgICAgICdMaW5rJyAgICAgICAgICAgID0+ICcnLAogICAgICAgICdUb29sdGlwJyAgICAgICAgID0+ICcnLAogICAgICAgICdGaWVsZFR5cGUnICAgICAgID0+ICdEYXRlJwogICAgfSwKICAgIFRlc3Q0ID0+IHsKICAgICAgICAnQ29scycgICAgICAgICA9PiAnJywKICAgICAgICAnUm93cycgICAgICAgICA9PiAnJywKICAgICAgICAnRGVmYXVsdFZhbHVlJyA9PiAnJywKICAgICAgICAnUmVnRXhMaXN0JyAgICA9PiBbXSwKICAgICAgICAnTXVsdGlWYWx1ZScgICA9PiAnMCcsCiAgICAgICAgJ1Rvb2x0aXAnICAgICAgPT4gJycsCiAgICAgICAgJ0ZpZWxkVHlwZScgICAgPT4gJ1RleHRBcmVhJwogICAgfSwKICAgIFRlc3Q1ID0+IHsKICAgICAgICAnWWVhcnNJbkZ1dHVyZScgICA9PiAnNScsCiAgICAgICAgJ0RhdGVSZXN0cmljdGlvbicgPT4gJycsCiAgICAgICAgJ1llYXJzUGVyaW9kJyAgICAgPT4gJzAnLAogICAgICAgICdMaW5rUHJldmlldycgICAgID0+ICcnLAogICAgICAgICdZZWFyc0luUGFzdCcgICAgID0+ICc1JywKICAgICAgICAnTXVsdGlWYWx1ZScgICAgICA9PiAnMCcsCiAgICAgICAgJ0RlZmF1bHRWYWx1ZScgICAgPT4gMCwKICAgICAgICAnTGluaycgICAgICAgICAgICA9PiAnJywKICAgICAgICAnVG9vbHRpcCcgICAgICAgICA9PiAnJywKICAgICAgICAnRmllbGRUeXBlJyAgICAgICA9PiAnRGF0ZVRpbWUnCiAgICB9LAopOwoKIyBBZGQgZHluYW1pYyBmaWVsZHMgZm9yIHRlc3RpbmcuIFRoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgcmVmZXJlbmNlZAojIGJ5IG5hbWUgaW4gZHluYW1pYyBmaWVsZCBkZWZpbml0aW9ucy4KZm9yIG15ICROYW1lICggc29ydCBrZXlzICVEeW5hbWljRmllbGREZWZpbml0aW9ucyApIHsKICAgIG15ICRERk5hbWUgPSAkTmFtZSAuICRUZXN0SURTdWZmaXg7CiAgICBteSAkSXRlbUlEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAkREZOYW1lLAogICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJE9yZGVyKyssCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LT57RmllbGRUeXBlfSwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LAogICAgICAgIFJlb3JkZXIgICAgICAgPT4gMSwKICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkSXRlbUlELCAiY3JlYXRlZCBkeW5hbWljIGZpZWxkICRERk5hbWUiICk7Cn0KCm15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwoKIyBkZWZpbmUgdGhlIGZpcnN0IHRlc3QgZGVmaW5pdGlvbiAoYmFzaWMgZGVmaW5pdGlvbiB3aXRob3V0IER5bmFtaWNGaWVsZHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzBdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QxJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QyJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlY3Rpb24yID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QzJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q0JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAp9CiI7CgojIGRlZmluZSB0aGUgc2Vjb25kIHRlc3QgZGVmaW5pdGlvbiAoZGVmaW5pdGlvbiB3aXRoIER5bmFtaWNGaWVsZHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzFdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgU2VjdGlvbnMgPT4gewogICAgICAgICAgICBTZWN0aW9uMSA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdUZXN0MSRUZXN0SURTdWZmaXgnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdUZXN0MiRUZXN0SURTdWZmaXgnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKfQoiOwoKIyBkZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiAoZXNwZWNpYWxseSBmb3Igc2VhcmNoIHRlc3RzIHdpdGggWE1MRGF0YSkKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMl0gPSAiCnsKICAgICAgICBQYWdlcyAgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50JywKICAgICAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA9PiAyLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnIgMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24yJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDEkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDIkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VjdGlvbjIgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDMkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDQkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCn0KIjsKCiMgZGVmaW5lIHRoZSBmb3VydGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzNdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QxJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QyJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlY3Rpb24yID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QzJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q0JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAp9CiI7CgojIGRlZmluZSB0aGUgZmlmdGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1s0XSA9ICIKewogICAgICAgIFBhZ2VzICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q1JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCn0KIjsKCiMgZGVmaW5lIHRoZSBzaXh0aCB0ZXN0IGRlZmluaXRpb24gKG9ubHkgZm9yIHNlYXJjaCB0ZXN0cykKCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzVdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDEkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDQkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAp9CiI7CgpteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgpteSBAQ29uZmlnSXRlbURlZmluaXRpb25zOwpmb3IgbXkgJFBlcmxEZWZpbml0aW9uIChAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucykgewogICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiBldmFsICRQZXJsRGVmaW5pdGlvbiwgICAgIyMgbm8gY3JpdGljIHF3KEJ1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neUV2YWwpCiAgICApOwogICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25zLCAkWUFNTERlZmluaXRpb247Cn0KCiMgYWRkIGEgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApteSAkQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbUNsYXNzZXM7Cm15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKZm9yIG15ICREZWZpbml0aW9uIChAQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBpZAogICAgaWYgKCAhJENsYXNzSUQgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCiAgICApOwoKICAgICMgU2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZS4KICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXJzLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25UcmlnZ2VyJywKICAgICAgICBWYWx1ZSAgPT4gWyAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcgXSwKICAgICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ2xhc3NJRDsKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc2VzLCAgJENsYXNzTmFtZTsKCiAgICAjIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFJlc3VsdC0+e1N1Y2Nlc3N9LCAgICAgICdhZGRlZCBuZXcgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbicgKTsKICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgJ2dvdCBhIGRlZmluaXRpb24gSUQnICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRSZXN1bHQtPntEZWZpbml0aW9uSUR9Owp9CgojIHRlc3QgRGVmaW5pdGlvbkxpc3QgZm9yIHRob3NlIHNpbXBsZSBjYXNlcwpteSAkQ291bnRlciA9IDA7CmZvciBteSAkQ2xhc3NJRCAoQENvbmZpZ0l0ZW1DbGFzc0lEcykgewogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25MaXN0KAogICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICApOwoKICAgICMgZXhwZWN0IGEgc2luZ2xlIGRlZmluaXRpb24gcGVyIGNvbmZpZyBpdGVtIGNsYXNzCiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyIEB7JERlZmluaXRpb25MaXN0UmVmfSwKICAgICAgICAxLAogICAgICAgICJEZWZpbml0aW9uTGlzdCgpIGZvciBjbGFzcyBpZCAkQ2xhc3NJRDogZ290IGEgc2luZ2xlIHJlc3VsdCIsCiAgICApOwoKICAgICMgZXhwZWN0IHRoZSByZW1lbWJlcmVkIGRlZmluaXRpb24gaWQgaW4gdGhlIGZpcnN0IGRlZmluaXRpb24KICAgICRTZWxmLT5JcygKICAgICAgICAkRGVmaW5pdGlvbkxpc3RSZWYtPlswXS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWyRDb3VudGVyXSwKICAgICAgICAiRGVmaW5pdGlvbkxpc3QoKSBmb3IgY2xhc3MgaWQgJENsYXNzSUQ6IGdvdCBleHBlY3RlZCBkZWZpbml0aW9uIGlkIiwKICAgICk7CgogICAgJENvdW50ZXIrKzsKfQoKIyBjcmVhdGUgc29tZSByYW5kb20gbnVtYmVycwpteSBAQ29uZmlnSXRlbU51bWJlcnM7CmZvciAoIDEgLi4gMTAwICkgewogICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRIZWxwZXItPkdldFJhbmRvbU51bWJlcigpOwp9CgojIGdldCBjbGFzcyBsaXN0Cm15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKKTsKCiMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdApteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKbXkgJEluY2lTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAopOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRDb25maWdJdGVtVGVzdHMgPSBbCgogICAgI0NvbmZpZ0l0ZW1BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIENvbmZpZ0l0ZW1BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWy0xXSArIDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgY29uZmlnIGl0ZW0gdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgcmV0dXJuZWQgY29uZmlnIGl0ZW0gdmFsdWVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSAxIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgY29uZmlnIGl0ZW0gdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgbnVtYmVyIGF0dHJpYnV0ZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gMiIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIHdpdGggdGhpcyBudW1iZXIgYWxyZWFkeSBleGlzdHMgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gMyIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIGNvbmZpZyBpdGVtIHZhbHVlcyBhcmUgZ2l2ZW4gcGx1cyBub3QgZGVmaW5lZCBEeW5hbWljRmllbGRzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzM1XSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSAzNSIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1szNV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBDb25maWdJdGVtVXBkYXRlIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpIChNaXNzaW5nIFVzZXJJRCkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW52YWxpZCBkZXBsb3ltZW50IHN0YXRlIGlkIGlzIGdpdmVuIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSA1IiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtVXBkYXRlID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIDUiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW52YWxpZCBpbmNpZGVudCBzdGF0ZSBpZCBpcyBnaXZlbiAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNiIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChnZW5lcmFsIGNoZWNrIHdpdGggdHdvIHZlcnNpb25zKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSA3IiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDkgVmVyc2lvbiAyIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIDgiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIENvbmZpZ0l0ZW0gMTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0gLSA1MCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSBDb25maWdJdGVtIDUwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSAtIDUxIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDIiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTEgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSBDb25maWdJdGVtIDUxIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cywgaW5jbHVkaW5nIER5bmFtaWNGaWVsZERhdGEKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0gfSAtIDUzIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzVdIENvbmZpZ0l0ZW0gNTMgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDEkVGVzdElEU3VmZml4IiA9PiAnVGVzdCB2YWx1ZSBmb3IgdGV4dCBmaWVsZCBUZXN0MScsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1s1XSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzVdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzVdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1s1XSBDb25maWdJdGVtIDUzIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1s1XSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDQkVGVzdElEU3VmZml4IiA9PiAnVGVzdCB2YWx1ZSBmb3IgdGV4dCBhcmVhIGZpZWxkIFRlc3Q0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzLCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkRGF0YQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9IC0gNTIiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTIgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDIkVGVzdElEU3VmZml4IiA9PiBbICdWQUxVRTEnLCAnVkFMVUUyJyBdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wOS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTIgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzJdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgICAgICAgICAgICAgICAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgICAgICAgICAgICAgICAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDIkVGVzdElEU3VmZml4IiA9PiBbICdWQUxVRTEnLCAnVkFMVUUyJyBdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wOS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMsIGluY2x1ZGluZyBEeW5hbWljRmllbGREYXRhCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzgwXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzRdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzRdIH0gLSA4MCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbNF0gQ29uZmlnSXRlbSA4MCBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDUkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wMS0wMSAxMjowMDowMCcKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbNF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1s0XSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbODBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzRdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1s0XSBDb25maWdJdGVtIDgwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1s0XSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NSRUZXN0SURTdWZmaXgiID0+ICcyMDIzLTAxLTAxIDEyOjAwOjAwJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cwogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9IC0gNjAiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbM10gQ29uZmlnSXRlbSA2MCBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBDb25maWdJdGVtIDYwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbM10sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCB0byBjaGVjayBoaXN0b3J5IGZ1bmN0aW9ucwogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNzAiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSGlzdG9yeVRlc3QnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBIaXN0b3J5VGVzdCcsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UGxhbm5lZH0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUGxhbm5lZCcsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJlcHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhpc3RvcnlHZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiA2LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnSW5jaWRlbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnNDE5NgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIEJ1Z2ZpeDQxOTYiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzFdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0MTk2JywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1BCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcyXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSBCdWcgNDM3NyAtIENJLUEiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1CCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzczXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSBCdWcgNDM3NyAtIENJLUIiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgpdOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHJ1biBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRUZXN0Q291bnQgPSAxOwpteSBAQ29uZmlnSXRlbUlEczsKClRFU1Q6CmZvciBteSAkVGVzdCAoIEB7JENvbmZpZ0l0ZW1UZXN0c30gKSB7CgogICAgIyBjaGVjayBTb3VyY2VEYXRhIGF0dHJpYnV0ZQogICAgaWYgKCAhJFRlc3QtPntTb3VyY2VEYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VEYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBObyBTb3VyY2VEYXRhIGZvdW5kIGZvciB0aGlzIHRlc3QuIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgIyBleHRyYWN0IHNvdXJjZSBkYXRhCiAgICBteSAkU291cmNlRGF0YSA9ICRUZXN0LT57U291cmNlRGF0YX07CgogICAgIyBhZGQgYSBuZXcgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbUFkZH0gKSB7CgogICAgICAgICMgYWRkIHRoZSBuZXcgY29uZmlnIGl0ZW0KICAgICAgICAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICV7ICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbUFkZH0gfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbQogICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICYmICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENvbmZpZ0l0ZW1BZGQoKSAtIEFkZCBuZXcgY29uZmlnIGl0ZW0uIEluc2VydCBzdWNjZXNzLiIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUlEOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUFkZCgpIC0gQWRkIG5ldyBjb25maWcgaXRlbS4gUmV0dXJuIGZhbHNlLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBhbGwgZGVmaW5lZCB2ZXJzaW9ucwogICAgbXkgQFZlcnNpb25JRHM7CiAgICBteSAlVmVyc2lvbklEc1NlZW47CiAgICBpZiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbVVwZGF0ZX0gKSB7CgogICAgICAgIGZvciBteSAkVmVyc2lvbiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbVVwZGF0ZX0tPkAqICkgewoKICAgICAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSA9ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHRoZSBsYXN0IHZlcnNpb24gaWQgYmVmb3JlIENvbmZpZ0l0ZW1VcGRhdGUKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbklEID0gJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICV7JFZlcnNpb259LAogICAgICAgICAgICAgICAgRm9yY2VBZGQgPT4gMQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIGxhc3QgdmVyc2lvbiBpZCBhZnRlciBDb25maWdJdGVtVXBkYXRlCiAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICBpZiAoICRWZXJzaW9uSUQgbmUgJExhc3RWZXJzaW9uSUQgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWZXJzaW9uSURzLCAkVmVyc2lvbklEIGlmICEkVmVyc2lvbklEc1NlZW57JFZlcnNpb25JRH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1EYXRhOwogICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICYmICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fSApIHsKCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAkQ29uZmlnSXRlbURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1EYXRhICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldCgpIC0gZ2V0IGNvbmZpZyBpdGVtIGRhdGEuIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBhbGwgY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0gfSApIHsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57JEF0dHJpYnV0ZX0gPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0NvbmZpZ0l0ZW1HZXR9LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0tPnskQXR0cmlidXRlfSA9ICdVTkRFRi11bml0dGVzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgYXR0cmlidXRlcwogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbURhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldCgpIC0gJEF0dHJpYnV0ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSB2ZXJzaW9ucwogICAgaWYgKAogICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0KICAgICAgICAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0KICAgICAgICAmJiBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQFZlcnNpb25JRHMsCiAgICAgICAgICAgIHNjYWxhciBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0gfSwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbVVwZGF0ZSgpIC0gY29ycmVjdCBudW1iZXIgb2YgdmVyc2lvbnMiLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1JRDsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgIHNjYWxhciBAVmVyc2lvbklEcywKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIC0gbm8gdmVyc2lvbnMgZXhpdHMiLAogICAgICAgICk7CiAgICB9CgogICAgbmV4dCBURVNUIHVubGVzcyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9OwogICAgbmV4dCBURVNUIHVubGVzcyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH07CgogICAgbXkgJENvdW50ZXIgICAgICAgICAgID0gMDsKICAgIG15ICRMYXN0VmVyc2lvbklETXVzdCA9ICdVTkRFRi11bml0dGVzdCc7CgogICAgIyBSZWZyZXNoIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCBjYWNoZSB0byBhdm9pZCBpc3N1ZXMgd2l0aCBwcmV2aW91c2x5IGNhY2hlZCB2YWx1ZXMuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnLAogICAgKTsKCiAgICBWRVJTSU9OSUQ6CiAgICBmb3IgbXkgJFZlcnNpb25JRCAoQFZlcnNpb25JRHMpIHsKCiAgICAgICAgIyBnZXQgdGhpcyB2ZXJzaW9uCiAgICAgICAgbXkgJFZlcnNpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFZlcnNpb25EYXRhICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldChWZXJzaW9uIEdldCkgLSBnZXQgdmVyc2lvbiBkYXRhLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVkVSU0lPTklEOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGxhc3QgdmVyc2lvbiBpZAogICAgICAgICRMYXN0VmVyc2lvbklETXVzdCA9ICRWZXJzaW9uRGF0YS0+e1ZlcnNpb25JRH07CgogICAgICAgICMgY2hlY2sgYWxsIHZlcnNpb24gYXR0cmlidXRlcwogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntWZXJzaW9uR2V0fS0+WyRDb3VudGVyXSB9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBuZWVkZWQgYXR0cmlidXRlcwogICAgICAgICAgICBteSAkVmVyc2lvbkF0dHJpYnV0ZSAgID0gJFZlcnNpb25EYXRhLT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0tPlskQ291bnRlcl0tPnskQXR0cmlidXRlfTsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRWZXJzaW9uQXR0cmlidXRlICkgewogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFJlZmVyZW5jZUF0dHJpYnV0ZSApIHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGF0dHJpYnV0ZXMKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAkUmVmZXJlbmNlQXR0cmlidXRlLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldChWZXJzaW9uIEdldCkgLSAkQXR0cmlidXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyBwcmVwYXJlIGxhc3QgdmVyc2lvbiBpZAogICAgbXkgJExhc3RWZXJzaW9uSURBY3R1YWwgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgaWYgKCAkQ29uZmlnSXRlbURhdGEtPntMYXN0VmVyc2lvbklEfSApIHsKICAgICAgICAkTGFzdFZlcnNpb25JREFjdHVhbCA9ICRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9OwogICAgfQoKICAgICMgY2hlY2sgbGFzdCB2ZXJzaW9uIGlkCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgJExhc3RWZXJzaW9uSURNdXN0LAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IGxhc3QgdmVyc2lvbiBpZCBpZGVudGljYWwiLAogICAgKTsKCiAgICAjIGNoZWNrIGhpc3RvcnkgZW50cmllcwogICAgaWYgKAogICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0KICAgICAgICAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0KICAgICAgICAmJiBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0gfQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkQ29tcGxldGVIaXN0b3J5ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbnIgb2YgaGlzdG9yeSBlbnRyaWVzCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0hpc3RvcnlHZXR9IH0sCiAgICAgICAgICAgIHNjYWxhciBAeyRDb21wbGV0ZUhpc3Rvcnl9LAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBuciBvZiBoaXN0b3J5IGVudHJpZXMiLAogICAgICAgICk7CgogICAgICAgICMgQ0hFQ0tOUjogZm9yIG15ICRDaGVja05yICggMCAuLiAkI3skQ29tcGxldGVIaXN0b3J5fSApIHsKICAgICAgICAjICAgICBteSAkQ2hlY2sgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0tPlskQ2hlY2tOcl07CiAgICAgICAgIyAgICAgbXkgJERhdGEgID0gJENvbXBsZXRlSGlzdG9yeS0+WyRDaGVja05yXTsKCiAgICAgICAgIyAgICAgbmV4dCBDSEVDS05SIGlmICEoICRDaGVjayAmJiAkRGF0YSApOwoKICAgICAgICAjICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRDaGVja30gKSB7CgogICAgICAgICMgICAgICAgICAjIGNoZWNrIGhpc3RvcnkgZGF0YQogICAgICAgICMgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgIyAgICAgICAgICAgICAkQ2hlY2stPnskS2V5fSwKICAgICAgICAjICAgICAgICAgICAgICREYXRhLT57JEtleX0sCiAgICAgICAgIyAgICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiAkS2V5IiwKICAgICAgICAjICAgICAgICAgKTsKICAgICAgICAjICAgICB9CiAgICAgICAgIyB9CiAgICB9Cn0KY29udGludWUgewogICAgJFRlc3RDb3VudCsrOwp9CgojIEZvbGxvd2luZyBzZWN0aW9uIGlzIHBlbmRpbmcgZm9yIGNoZWNrIGFmdGVyIG5vcm1hbGl6ZSBkZQojIEluY2lkZW50IHJlY2FsY3VsYXRpb24gZnVuY2lvbgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZm9yIGJ1Z2ZpeCA0Mzc3CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgewoKIyAgICAgbXkgJENJMSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAojICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAojICAgICApOwoKIyAgICAgbXkgJENJMiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAojICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAojICAgICApOwoKIyAgICAgIyBsaW5rIHRoZSBDSSB3aXRoIGEgQ0kKIyAgICAgbXkgJExpbmtSZXN1bHQgPSAkTGlua09iamVjdC0+TGlua0FkZCgKIyAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAojICAgICAgICAgU291cmNlS2V5ICAgID0+ICRDSTEsCiMgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKIyAgICAgICAgIFRhcmdldEtleSAgICA9PiAkQ0kyLAojICAgICAgICAgVHlwZSAgICAgICAgID0+ICdEZXBlbmRzT24nLAojICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMQojICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQScsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMQojICAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAojICAgICApOwoKIyAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTIKIyAgICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgaXMgJ1dhcm5pbmcnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdXYXJuaW5nJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiMgICAgICk7CgojICAgICAjIHVwZGF0ZSBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgdG8gJ0luY2lkZW50JwojICAgICAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMiwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQicsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yIENJICRDSTIgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgojICAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTIsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMiBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTIiLAojICAgICApOwoKIyAgICAgIyB1cGRhdGUgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIHRvICdPcGVyYXRpb25hbCcKIyAgICAgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAojICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKIyAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAojICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIHZlcnNpb24gY291bGQgYmUgYWRkZWQKIyAgICAgJFNlbGYtPlRydWUoCiMgICAgICAgICAkVmVyc2lvbklELAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIGZvciBDSSAkQ0kxIC0gU2V0IHRvICdPcGVyYXRpb25hbCciLAojICAgICApOwoKIyAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTEKIyAgICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kxLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTEgaXMgJ1dhcm5pbmcnIChiZWNhdXNlIG9mIGxpbmtlZCBDSTIgaW4gc3RhdGUgJ2luY2lkZW50JykKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ1dhcm5pbmcnLAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBDSSAkQ0kxIiwKIyAgICAgKTsKCiMgICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMiB0byAnT3BlcmF0aW9uYWwnCiMgICAgICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAojICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQzNzcgLSBDSS1CJywKIyAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiMgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKIyAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiB2ZXJzaW9uIGNvdWxkIGJlIGFkZGVkCiMgICAgICRTZWxmLT5UcnVlKAojICAgICAgICAgJFZlcnNpb25JRCwKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IFZlcnNpb25BZGQoKSBmb3IgQ0kgJENJMiAtIFNldCB0byAnT3BlcmF0aW9uYWwnIiwKIyAgICAgKTsKCiMgICAgICMgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgQ0kxCiMgICAgICRWZXJzaW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIGlzICdPcGVyYXRpb25hbCcKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ09wZXJhdGlvbmFsJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMSIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgojICAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTIsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMiBpcyAnV2FybmluZycKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ09wZXJhdGlvbmFsJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiMgICAgICk7CgojICAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKIyAgICAgJFRlc3RDb3VudCsrOwojIH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGZvciBidWdmaXggMTAzNTYKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyB7CgojICAgICBteSAkQ0kxID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiMgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1s3Ml0sCiMgICAgICk7CgojICAgICAjIGFkZCBhIHZlcnNpb24sIHNldCBpbmNpZGVudCBzdGF0ZSB0byBpbmNpZGVudAojICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXgxMDM1NicsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMQojICAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAojICAgICApOwoKIyAgICAgIyBkZWxldGUgdGhlIGxhc3QgdmVyc2lvbgojICAgICBteSAkVmVyc2lvbkRlbGV0ZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKIyAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvblJlZi0+e1ZlcnNpb25JRH0sCiMgICAgICAgICBVc2VySUQgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBkZWxldGVkCiMgICAgICRTZWxmLT5UcnVlKAojICAgICAgICAgJFZlcnNpb25EZWxldGVTdWNjZXNzLAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkRlbGV0ZSgpIGZvciAkQ0kxJyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgaGlzdG9yeQojICAgICBteSAkSGlzdG9yeVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICBteSAkTGFzdEhpc3RvcnlFbnRyeSA9IHBvcCBAeyRIaXN0b3J5UmVmfTsKCiMgICAgICMgY2hlY2sgaWYgbGFzdCBoaXN0b3J5IGVudHJ5IGhhcyB0aGUgY29ycmVjdCBoaXN0b3J5IHR5cGUKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJExhc3RIaXN0b3J5RW50cnktPntIaXN0b3J5VHlwZX0sCiMgICAgICAgICAnVmVyc2lvbkRlbGV0ZScsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBIaXN0b3J5VHlwZSBvZiBsYXN0IHZlcnNpb24gb2YgQ0kgJENJMSIsCiMgICAgICk7CgojICAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKIyAgICAgJFRlc3RDb3VudCsrOwojIH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBkZWZpbmUgZ2VuZXJhbCBjb25maWcgaXRlbSBzZWFyY2ggdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKbXkgQFNlYXJjaFRlc3RzID0gKAoKICAgICMgc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBudW1iZXIgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG51bWJlciBwYXJhbSB3aXRoIHdpbGRjYXJkcwogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE51bWJlciA9PiAnJScgLiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdIC4gJyUnLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbnVtYmVyIHBhcmFtIHdpdGggd2lsZGNhcmRzIGJ1dCB3aXRoIGludmFsaWQgQ29uZmlnSXRlbSBudW1iZXIKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJyVkdW1teW5hbWUlJywKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBSZXN1bHQgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgI3Rlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSBdLAogICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICN0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEwMCwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAzLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICBPcmRlckJ5ICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgID0+ICdVcCcKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbGltaXQgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgTGltaXQgICAgPT4gMSwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAwLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICBPcmRlckJ5ICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMgdXNpbmcgdGhlIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgbmFtZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MiBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIGFuIHdpbGRjYXJkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ1VuaXRUZXN0IC0gKiAxJywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0gd2l0aCBhbiB3aWxkY2FyZCBhbmQgYSBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSAqIDEnLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBuYW1lIHBhcmFtIHdpdGggd2lsZGNhcmRzCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSoiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIHdpbGRjYXJkcyBidXQgd2l0aCBkZWFjdGl2YXRlZCB3aWxkY2FyZCBmZWF0dXJlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSoiLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbGFzdCB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgUHJldmlvdXNWZXJzaW9uU2VhcmNoIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAxMDAsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDMsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyAgICAgICAgICA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICAgICAgID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgICAgICAgICAgPT4gWyAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9IF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgICAgICAgID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBUZXh0IHR5cGUgRHluYW1pY0ZpZWxkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggVGV4dCB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBMaWtlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdUZXN0IHZhbHVlIGZvcionIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggVGV4dCB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBMaWtlIChub3QgZXhpc3RpbmcpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdVbmtub3duIGRhdGEqJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIFRleHRBcmVhIHR5cGUgRHluYW1pY0ZpZWxkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q0JFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgYXJlYSBmaWVsZCBUZXN0NCcgfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBUZXh0QXJlYSB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBsaWtlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q0JFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEqJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1M10sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIFRleHRBcmVhIHR5cGUgRHluYW1pY0ZpZWxkIHVzaW5nIGxpa2UgKG5vdCBleGlzdGluZykKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDQkVGVzdElEU3VmZml4IiA9PiB7IExpa2UgPT4gJ1Vua25vd24gZGF0YSonIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggRGF0ZSB0eXBlIER5bmFtaWNGaWVsZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0MyRUZXN0SURTdWZmaXgiID0+IHsgRXF1YWxzID0+ICcyMDIzLTA5LTAxIDAwOjAwOjAwJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGUgdHlwZSBEeW5hbWljRmllbGQgKG5vdCBtYXRjaGluZykKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiB7IEVxdWFscyA9PiAnMjAyMy0wOS0xMiAwMDowMDowMCcgfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBEYXRlVGltZSB0eXBlIER5bmFtaWNGaWVsZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NSRUZXN0SURTdWZmaXgiID0+IHsgRXF1YWxzID0+ICcyMDIzLTAxLTAxIDEyOjAwOjAwJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGVUaW1lIHR5cGUgRHluYW1pY0ZpZWxkIChub3QgbWF0Y2hpbmcpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q1JFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJzIwMjMtMDktMDEgMTI6MDA6MDAnIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggRGF0ZVRpbWUgdHlwZSBEeW5hbWljRmllbGQgLSBCZXR3ZWVuCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q1JFRlc3RJRFN1ZmZpeCIgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJzIwMjMtMDEtMDEgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzIwMjMtMDEtMDIgMDA6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGVUaW1lIHR5cGUgRHluYW1pY0ZpZWxkIC0gQmV0d2VlbiBub3QgbWF0Y2hpbmcKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDUkVGVzdElEU3VmZml4IiA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnMjAyMi0wMS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnMjAyMi0wMS0wMiAwMDowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIGdlbmVyYWwgY29uZmlnIGl0ZW0gc2VhcmNoIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgJFNlYXJjaFRlc3RDb3VudCBwcm92aWRlcyBncm91cGluZyBvZiB0ZXN0IGNhc2VzCm15ICRTZWFyY2hUZXN0Q291bnQgPSAxOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAU2VhcmNoVGVzdHMpIHsKCiAgICAjIGNoZWNrIFNlYXJjaERhdGEgYXR0cmlidXRlCiAgICBpZiAoICEkVGVzdC0+e1NlYXJjaERhdGF9IHx8IHJlZiAkVGVzdC0+e1NlYXJjaERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6IE5vIFNlYXJjaERhdGEgZm91bmQgZm9yIHRoaXMgdGVzdC4iLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBpZiAoICEkVGVzdC0+e0Z1bmN0aW9ufSB8fCByZWYgJFRlc3QtPntGdW5jdGlvbn0gbmUgJ0FSUkFZJyB8fCAhQHsgJFRlc3QtPntGdW5jdGlvbn0gfSApIHsKICAgICAgICAkVGVzdC0+e0Z1bmN0aW9ufSA9IFsnQ29uZmlnSXRlbVNlYXJjaCddOwogICAgfQoKICAgIGZvciBteSAkRnVuY3Rpb24gKCBAeyAkVGVzdC0+e0Z1bmN0aW9ufSB9ICkgewoKICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgIG15ICRDb25maWdJdGVtTGlzdDsKCiAgICAgICAgaWYgKCAkRnVuY3Rpb24gZXEgJ0NvbmZpZ0l0ZW1TZWFyY2gnICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgPSBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+JEZ1bmN0aW9uKAogICAgICAgICAgICAgICAgICAgICV7ICRUZXN0LT57U2VhcmNoRGF0YX0gfSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDb25maWdJdGVtTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT4kRnVuY3Rpb24oCiAgICAgICAgICAgICAgICAleyAkVGVzdC0+e1NlYXJjaERhdGF9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbSBsaXN0CiAgICAgICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgJiYgcmVmICRDb25maWdJdGVtTGlzdCBlcSAnQVJSQVknLAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBMaXN0IGlzIGFuIGFycmF5IHJlZmVyZW5jZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUxpc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBSZXR1cm4gZmFsc2UuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1MaXN0OwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgZm91bmQgY29uZmlnIGl0ZW1zCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHskQ29uZmlnSXRlbUxpc3R9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSB9LAogICAgICAgICAgICAiU2VhcmNoVGVzdCAkU2VhcmNoVGVzdENvdW50OiAkRnVuY3Rpb24oKSAtIGNvcnJlY3QgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFJlZmVyZW5jZUxpc3Q7CiAgICAgICAgZm9yIG15ICROdW1iZXIgKCBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9IH0gKSB7CgogICAgICAgICAgICAjIGZpbmQgaWQgb2YgdGhlIGl0ZW0KICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICIKICAgICAgICAgICAgICAgICAgICAuICJjb25maWdpdGVtX251bWJlciA9ICckTnVtYmVyJyAiCiAgICAgICAgICAgICAgICAgICAgLiAiT1JERVIgQlkgaWQgREVTQyIsCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQFJlZmVyZW5jZUxpc3QsICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGFycmF5cwogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICBcQFJlZmVyZW5jZUxpc3QsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6ICRGdW5jdGlvbigpIC0gTGlzdCIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CiAgICAkU2VhcmNoVGVzdENvdW50Kys7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIGFkZGluZyBvZiBpbnZhbGlkIGRlZmluaXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCnsKICAgICMgZGVmaW5lIHNvbWUgaW52YWxpZCBkZWZpbml0aW9ucwogICAgbXkgQEludmFsaWRDb25maWdJdGVtRGVmaW5pdGlvbnM7CgogICAgIyBEYXRhIHNjdHJ1Y3R1cmUgaGFzaCBlbGVtZW50cyBjb250YWluIG5vIGRhdGEuCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIjsKCiAgICAjIERhdGEgd2l0aCBTeW50YXggZXJyb3JzCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIFsKICAgIHsKICAgICAgICBQYWdlcyBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDIsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmciAxZnInCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQogICAgXSI7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBpZAogICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAVGVzdENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKICAgIGZvciBteSAkUGVybERlZmluaXRpb24gKEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CiAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgICAgICk7CgogICAgICAgIHB1c2ggQFRlc3RDb25maWdJdGVtRGVmaW5pdGlvbnMsICRZQU1MRGVmaW5pdGlvbjsKICAgIH0KCiAgICBmb3IgbXkgJERlZmluaXRpb24gKEBUZXN0Q29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGRlZmluaXRpb24gaWQsIG11c3QgYmUgZmFsc2UsIGJlY2F1c2UgYWxsIGRlZmluaXRpb25zIGhhdmUgZXJyb3JzCiAgICAgICAgb2soICEkUmVzdWx0LT57U3VjY2Vzc30sICJBcyBleHBlY3RlZCwgY291bGQgbm90IGFkZCBuZXcgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbi4iICk7CiAgICB9Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIHN1cHBvcnQgZm9yIGF0dGFjaG1lbnRzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWzBdOwoKIyB2ZXJpZnkgdGhhdCBpbml0aWFsbHkgbm8gYXR0YWNobWVudCBleGlzdHMKbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIgQEF0dGFjaG1lbnRMaXN0LAogICAgMCwKICAgICdObyBhdHRhY2htZW50cyBpbml0aWFsbHknLAopOwoKbXkgQFRlc3RGaWxlTGlzdCA9ICgKICAgIHsKICAgICAgICBGaWxlbmFtZSAgICA9PiAnZmlyc3QgYXR0YWNobWVudCcsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ0ZpcnN0IGF0dGFjaG1lbnQgZnJvbSBJVFNNQ29uZmlnSXRlbS50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICB9LAogICAgewogICAgICAgIEZpbGVuYW1lICAgID0+ICdzZWNvbmQgYXR0YWNobWVudCcsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ1NlY29uZCBhdHRhY2htZW50IGZyb20gSVRTTUNvbmZpZ0l0ZW0udCcsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgfSwKKTsKCm15ICRGaWxlQ291bnQ7CmZvciBteSAkVGVzdEZpbGUgKEBUZXN0RmlsZUxpc3QpIHsKCiAgICAkRmlsZUNvdW50Kys7CgogICAgbXkgJEFkZE9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICV7JFRlc3RGaWxlfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBZGRPaywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGFkZGVkIiwKICAgICk7CgogICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICBzY2FsYXIgQEF0dGFjaG1lbnRMaXN0LAogICAgICAgICRGaWxlQ291bnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogbnVtYmVyIG9mIGF0dGFjaG1lbnRzIGFmdGVyIGFkZGluZyIsCiAgICApOwoKICAgICMgY2hlY2sgd2hldGhlciB0aGUgbGFzdCBhZGRlZCBhdHRhY2htZW50IGlzIGluIHRoZSBsaXN0CiAgICBteSAlQXR0YWNobWVudExvb2t1cCA9IG1hcCB7ICRfID0+IDEgfSBAQXR0YWNobWVudExpc3Q7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudExvb2t1cHsgJFRlc3RGaWxlLT57RmlsZW5hbWV9IH0sCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogZmlsZW5hbWUgZnJvbSBDb25maWdJdGVtQXR0YWNobWVudExpc3QoKSIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBhdHRhY2htZW50CiAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIEZpbGVuYW1lICAgICA9PiAkVGVzdEZpbGUtPntGaWxlbmFtZX0sCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEF0dGFjaG1lbnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogQ29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoKSByZXR1cm5lZCB0cnVlIiwKICAgICk7CgogICAgIyBjaGVjayBhdHRhY2htZW50IGZpbGUgYXR0cmlidXRlcwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KEZpbGVuYW1lIENvbnRlbnQgQ29udGVudFR5cGUpKSB7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAkVGVzdEZpbGUtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogJEF0dHJpYnV0ZSBmcm9tIENvbmZpZ0l0ZW1BdHRhY2htZW50R2V0IiwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZXhpc3RlbmNlIG9mIGF0dGFjaG1lbnQKICAgIG15ICRBdHRhY2htZW50RXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RXhpc3RzKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudEV4aXN0cywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGV4aXN0cyIsCiAgICApOwoKfQoKIyBub3cgZGVsZXRlIHRoZSBhdHRhY2htZW50cwokRmlsZUNvdW50ID0gMDsKbXkgJE1heFRlc3RGaWxlcyA9IHNjYWxhciBAVGVzdEZpbGVMaXN0Owpmb3IgbXkgJFRlc3RGaWxlIChAVGVzdEZpbGVMaXN0KSB7CgogICAgJEZpbGVDb3VudCsrOwoKICAgIG15ICREZWxldGVPayA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIEZpbGVuYW1lICAgICA9PiAkVGVzdEZpbGUtPntGaWxlbmFtZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZU9rLAogICAgICAgICJBdHRhY2htZW50ICRGaWxlQ291bnQ6IGF0dGFjaG1lbnQgZGVsZXRlZCIsCiAgICApOwoKICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgIHNjYWxhciBAQXR0YWNobWVudExpc3QsCiAgICAgICAgJE1heFRlc3RGaWxlcyAtICRGaWxlQ291bnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogbnVtYmVyIG9mIGF0dGFjaG1lbnRzIGFmdGVyIGRlbGV0aW9uIiwKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRFeGlzdHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMoCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkQXR0YWNobWVudEV4aXN0cywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGlzIGdvbmUiLAogICAgKTsKfQoKIyBjaGVjayBjb25maWcgaXRlbSBkZWxldGUKbXkgJERlbGV0ZVRlc3RDb3VudCA9IDE7CmZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgbXkgJERlbGV0ZU9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZU9rLAogICAgICAgICJEZWxldGVUZXN0ICREZWxldGVUZXN0Q291bnQgLSBDb25maWdJdGVtRGVsZXRlKCkgKENvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEKSIKICAgICk7CgogICAgIyBkb3VibGUgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgcmVhbGx5IGRlbGV0ZWQKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIENhY2hlICAgICAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkQ29uZmlnSXRlbURhdGEtPntDb25maWdJdGVtSUR9LAogICAgICAgICJEZWxldGVUZXN0ICREZWxldGVUZXN0Q291bnQgLSBkb3VibGUgY2hlY2sgKENvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEKSIsCiAgICApOwoKICAgICREZWxldGVUZXN0Q291bnQrKzsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/CIAutoLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IGF1dG8gaW5rcwojIGJldHdlZW4gQ0kgaXRlbXMgYW5kIFRpY2tldHMKIyBleGFtcGxlIGlzCiMgIFN1YnNpZGlhcnkgLT4gVGlja2V0UmVmCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwpteSAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCAgID0gX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBzdWJzaWRpYXJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRTdWJzaWRpYXJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTdWJzaWRpYXJ5JywKKTsKb2soICRTdWJzaWRpYXJ5Q2xhc3NJRCwgIlN1YnNpZGlhcnkgY2xhc3MgZm91bmQuIiApOwoKIyBwb3NzaWJsZSBsaW5rIHR5cGVzIGNvbmZpZ3VyZWQKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0aW5nIExpbmtUeXBlPSRMaW5rVHlwZSIgPT4gc3ViIHsKCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBteSAlVHlwZURhdGEgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJElzUG9pbnRlZCA9ICRUeXBlRGF0YXtQb2ludGVkfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9IF9DcmVhdGVERlJlZmVyZW5jZVRvVGlja2V0KCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKICAgICAgICBvayggJER5bmFtaWNGaWVsZENvbmZpZywgIlJlZmVyZW5jZVRvVGlja2V0IERGICRMaW5rVHlwZSBjcmVhdGVkLiIgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvbkFkZFRpY2tldFJlZkRGKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKSwKICAgICAgICAgICAgJ1VwZGF0ZWQgU3Vic2lkaWFyeSBEZWZpbml0aW9uIHRvIGluY2x1ZGUgUmVmZXJlbmNlVG9UaWNrZXQgREYgc3VjY2Vzc2Z1bGx5LicKICAgICAgICApOwogICAgICAgIF9TeW5jQ29uZmlnSXRlbURGcyggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgbXkgJFRlc3RUaWNrZXQxSUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhIHRlc3Qgc3Vic2lkaWFyeSB3aXRoIGEgREYgcmVmZXJlbmNlIHRvIFRpY2tldAogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0RlckJhdWVybmhvZicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UaWNrZXRSZWYiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RUaWNrZXQxSUQKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICBzdWJ0ZXN0ICJTaW5nbGUgTGluayBoYXMgYmVlbiBjcmVhdGVkIGZvciBMaW5rVHlwZT0kTGlua1R5cGUiID0+IHN1YiB7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5ICdEZXJCYXVlcm5ob2YkTGlua1R5cGUkUmFuZG9tSUQnICgkVGVzdFN1YnNpZGlhcnlJRCkgd2l0aCBsaW5rIHRvIFRpY2tldCAkVGVzdFRpY2tldDFJRCBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAogICAgICAgICAgICAgICAgICAgIFN1YnNpZGlhcnlJRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgICAgIExpbmtzICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RUaWNrZXQxSUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFRpY2tldDFJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiSGFzIE9uZSBMaW5rIFNvdXJjZSA9PiBUaWNrZXRJRDokVGVzdFRpY2tldDFJRC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgc3VidGVzdCAiQ2hhbmdlIGxpbmsgZGlyZWN0aW9uIGRvZXMgbm90IGNoYW5nZSBleGlzdGluZyBsaW5rcyIgPT4gc3ViIHsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSBfVXBkYXRlUmVmZXJlbmNlVG9UaWNrZXRERkxpbmtEaXJlY3Rpb24oCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgT25lIExpbmsgU291cmNlID0+IFRpY2tldElEOiRUZXN0VGlja2V0MUlELiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICBteSAkVGVzdFRpY2tldDJJRDsKICAgICAgICBzdWJ0ZXN0ICJBZGQgYW5vdGhlciBsaW5rIiA9PiBzdWIgewoKICAgICAgICAgICAgJFRlc3RUaWNrZXQySUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDJfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGlja2V0UmVmIiAuICRMaW5rVHlwZSAuICIkUmFuZG9tSUQiID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJFRlc3RUaWNrZXQySUQKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJVcGRhdGVkIENvbmZpZ0l0ZW0gdG8gcG9pbnQgdG8gVGVzdFRpY2t0IDIiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MklEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgVHdvIExpbmtzICgkVGVzdFRpY2tldDFJRCwgJFRlc3RUaWNrZXQySUQpLiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICAjIGFkZCBsaW5rcyB0d2ljZQogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gZmlyc3QgbGlua2VkIG9iamVjdCwKICAgICAgICAjIGFuZCBhZ2FpbiB0byBzZWNvbmQgb25lLiBubyBuZXcKICAgICAgICAjIGxpbmtzIGV4cGVjdGVkIHRvIGJlIGNyZWF0ZWQKCiAgICAgICAgc3VidGVzdCAiQWRkIGxpbmtzIHR3aWNlIC0gbm8gZHVwbGljYXRpb24gb2YgZXhpc3RpbmcgbGlua3MiID0+IHN1YiB7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UaWNrZXRSZWYiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkVGVzdFRpY2tldDFJRAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlVwZGF0ZWQgQ29uZmlnSXRlbSB0byBwb2ludCB0byBUZXN0VGlja2V0IDEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MklEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgVHdvIExpbmtzICgkVGVzdFRpY2tldDFJRCwgJFRlc3RUaWNrZXQySUQpLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1RpY2tldFJlZiIgLiAkTGlua1R5cGUgLiAiJFJhbmRvbUlEIiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRUZXN0VGlja2V0MklECiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVXBkYXRlZCBDb25maWdJdGVtIHRvIHBvaW50IHRvIFRlc3RUaWNrZXQgMSIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcygKICAgICAgICAgICAgICAgICAgICBTdWJzaWRpYXJ5SUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkSXNQb2ludGVkCiAgICAgICAgICAgICAgICAgICAgICAgID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgVGFyZ2V0ID0+ICRUZXN0VGlja2V0MUlEIF0KICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBTb3VyY2UgPT4gJFRlc3RUaWNrZXQxSUQgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWyBTb3VyY2UgPT4gJFRlc3RUaWNrZXQySUQgXSwKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkhhcyBUd28gTGlua3MgKCRUZXN0VGlja2V0MUlELCAkVGVzdFRpY2tldDJJRCkuIgogICAgICAgICAgICApOwoKICAgICAgICB9OwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgb2soCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5IGRlbGV0ZWQiCiAgICAgICAgKTsKCiAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhbmQgbGlua19yZWxhdGlvbnMKICAgICAgICBteSAkRmluYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKICAgICAgICBteSAkRmluYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKICAgICAgICBpcygKICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAkRmluYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICApOwoKICAgICAgICBpcygKICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICJObyBDSSBsaW5rcyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgJEZpbmFsTGlua1JlbGF0aW9uc0NvdW50LAogICAgICAgICAgICAiTm8gTGlua09iamVjdHMgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICApOwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2NlZHVyYWwgaGVscGVyIG1ldGhvZHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBQcmVwYXJlIHRoZSBHZW5lcmFsIENhdGFsb2cgY2xhc3NlcyBieSByZWxvYWRpbmcKIyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbGUKCnN1YiBfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzIHsKCiAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKCiAgICAgICAgIyAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMi55bWwiLAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MaW5rcy91bml0dGVzdC55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkLiIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAqIEZST00gbGlua19yZWxhdGlvbicsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfQ3JlYXRlREZSZWZlcmVuY2VUb1RpY2tldCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgICAgICAgPT4gJ1RpY2tldE51bWJlclRpdGxlJywKICAgICAgICBFZGl0RmllbGRNb2RlICAgICAgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSAgICAgID0+ICcnLAogICAgICAgIExpbmtEaXJlY3Rpb24gICAgICAgICAgICAgID0+ICdSZWZlcmVuY2luZ0lzU291cmNlJywKICAgICAgICBMaW5rT2JqZWN0Rm9yUmVmZXJlbmNlVHlwZSA9PiAkUGFyYW17TGlua1R5cGV9LCAgICAgICAgIydSZWxldmFudFRvJywKICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgTXVsdGlzZWxlY3QgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgUXVldWUgICAgICAgICAgICAgICAgICAgICAgPT4gWyAxLCAyLCAzLCA0IF0sCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdCAgICAgICAgPT4gW10sCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGUgICAgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRJRCAgICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgTGFiZWwgICAgICA9PiAnVGlja2V0IFJlZmVyZW5jZScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIEZpZWxkT3JkZXIgPT4gNDcxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgZGlzcGxheSBvcmRlcgogICAgICAgIEZpZWxkVHlwZSAgPT4gJ1RpY2tldCcsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgUmVvcmRlciAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgdG8gdHJpZ2dlciByZW9yZGVyIGZ1bmN0aW9uLCBkZWZhdWx0IDEKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkSUQgKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkQ29uZmlnOwp9CgpzdWIgX0NoYW5nZVN1YnNpZGlhcnlEZWZpbml0aW9uQWRkVGlja2V0UmVmREYgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICApOwoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICAjIGFkZCB0aGUgVGlja2V0UmVmIERGCgogICAgJERlZmluaXRpb25SZWYtPntTZWN0aW9uc30tPntBZGRyZXNzfS0+e0NvbnRlbnR9ID0gWwogICAgICAgIHsKICAgICAgICAgICAgJ0hlYWRlcicgPT4gJ0FkZHJlc3MnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLVN0cmVldCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tQ2l0eScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1MYXRpdHVkZScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTG9uZ2l0dWRlJwogICAgICAgIH0sCgogICAgICAgICMgYWRkIHRoaXMgb25lOgogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQKICAgICAgICB9LAogICAgXTsKCiAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CiAgICBteSAkWUFNTFN0cmluZyA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb25SZWYsCiAgICApOwoKICAgIHJldHVybiAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICBDbGFzc0lEICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MU3RyaW5nLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKCiAgICAgICAgIyAgICBGb3JjZSAgICAgID0+IDEsICAgICAgICAjIGhtCiAgICApLT57U3VjY2Vzc307Cn0KCnN1YiBfQ3JlYXRlVGVzdFRpY2tldCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgIFRpdGxlICAgICAgICA9PiAkUGFyYW17VGl0bGV9LAogICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3RvYm8ub3JnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgb2soICRUaWNrZXRJRCwgIlRpY2tldCAnJFBhcmFte1RpdGxlfScgKCRUaWNrZXRJRCkgY3JlYXRlZCIgKTsKCiAgICByZXR1cm4gJFRpY2tldElEOwp9CgojIGNhbGwgYXMKIyBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAojICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAojICAgTGlua1R5cGUgPT4gJExpbmtUeXBlLAojICAgTGlua3MgPT4gWwojICAgICAgIFsgU291cmNlID0+ICRTb21lSUQgXSwKIyAgICAgICBbIFNvdXJjZSA9PiAkU29tZUlEIF0sCiMgICAgICAgWyBUYXJnZXQgPT4gJFNvbWVJRCBdLAojIC4uLi4KIyAgIF0KIyApCgpzdWIgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlICAgICA9ICRQYXJhbXtMaW5rVHlwZX07CiAgICBteSAkU3Vic2lkaWFyeUlEID0gJFBhcmFte1N1YnNpZGlhcnlJRH07CgogICAgbXkgQExpbmtzICAgICAgICAgICAgID0gJFBhcmFte0xpbmtzfS0+QCo7CiAgICBteSAkRXhwZWN0ZWRMaW5rQ291bnQgPSBzY2FsYXIgQExpbmtzOwoKICAgIG15ICRMaW5rUmVsYXRpb25zQ291bnQgPSBfRmV0Y2hMaW5rUmVsYXRpb25zQ291bnQoKSAtICRJbml0aWFsTGlua1JlbGF0aW9uc0NvdW50OwogICAgaXMoICRMaW5rUmVsYXRpb25zQ291bnQsICRFeHBlY3RlZExpbmtDb3VudCwgIlRoZXJlIGFyZSAgJExpbmtSZWxhdGlvbnNDb3VudCBMaW5rT2JqZWN0LUxpbmtzIG9mIFR5cGUgJExpbmtUeXBlLiIgKTsKCiAgICBteSAkTGlua0xpc3QgPSAkTGlua09iamVjdC0+TGlua0xpc3QoCiAgICAgICAgT2JqZWN0ICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgID0+ICRTdWJzaWRpYXJ5SUQsCiAgICAgICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywKICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgZm9yIG15ICRMaW5rIChATGlua3MpIHsKCiAgICAgICAgbXkgJExpbmtEZXN0ID0gJExpbmstPlswXTsKICAgICAgICBteSAkTGlua2VkSUQgPSAkTGluay0+WzFdOwogICAgICAgIGlmICggZXhpc3RzICRMaW5rTGlzdC0+eydUaWNrZXQnfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9ICkgewoKICAgICAgICAgICAgbXkgJElEcyA9ICRMaW5rTGlzdC0+eydUaWNrZXQnfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9OwoKICAgICAgICAgICAgcmV0dXJuIDAgaWYgIWV4aXN0cyAkSURzLT57JExpbmtlZElEfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9VcGRhdGVSZWZlcmVuY2VUb1RpY2tldERGTGlua0RpcmVjdGlvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlICAgICAgPSAkUGFyYW17TGlua1R5cGV9OwogICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkUGFyYW17TGlua0RpcmVjdGlvbn0gfHwgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ1RpY2tldFJlZicgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlEICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICBzdWJ0ZXN0ICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgPT4gc3ViIHsKCiAgICAgICAgb2soICREeW5hbWljRmllbGQsICdUaWNrZXRSZWYgREYgZm91bmQuJyApOwoKICAgICAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sICAgICAgIyBtYW5kYXRvcnkKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJ2EgZGVzY3JpcHRpb24nLCAgICAgICAgICAjIG1hbmRhdG9yeSwgbGFiZWwgdG8gc2hvdwogICAgICAgICAgICBGaWVsZE9yZGVyID0+IDQ3MTEsICAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnVGlja2V0JywgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsICAgICAgICAgIyB0aGlzIGNvbnRyb2xzIHdoaWNoIG9iamVjdCB0aGUgZHluYW1pYyBmaWVsZCBsaW5rcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGxvdyBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBpbmRpdmlkdWFsIGFydGljbGVzLCBvdGhlcndpc2UgdG8gdGlja2V0cwogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgaXMgb25seSB1c2VkIGludGVybmFsbHkgdG8gcHJldmVudCByZWR1bmRhbnQgZXhlY3V0aW9uIG9uIG9yZGVyIGNoYW5nZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyB1cGRhdGUgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgZm9yIDAKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIG9rKCAkU3VjY2VzcywgIlRpY2tldFJlZiBERiBkZWZpbml0aW9uIHVwZGF0ZWQsIGxpbmsgZGlyZWN0aW9uIGNoYW5nZWQgdG8gJExpbmtEaXJlY3Rpb24uIiApOwoKICAgICAgICBfU3luY0NvbmZpZ0l0ZW1ERnMoIExpbmtUeXBlID0+ICRMaW5rVHlwZSApOwoKICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkRHluYW1pY0ZpZWxkLT57SUR9ICk7CiAgICB9OwoKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkQ29uZmlnOwp9CgpzdWIgX1N5bmNDb25maWdJdGVtREZzIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gewogICAgICAgICAgICAkU3Vic2lkaWFyeUNsYXNzSUQgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgfSwKICAgICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblN5bmMoKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICByZXR1cm47Cn0K</File>
        <File Location="scripts/test/ITSMConfigItem/ConfigItemLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGJvaWxlcnBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2F0Y2ggc3RhdGUgYmVmb3JlIHRlc3QgcnVuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCm15ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKbXkgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQiICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICdVcGRhdGVkIFZlcnNpb25UcmlnZ2VyJwopOwoKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjEKICAgIG15ICRUZXN0TG9jYXRpb24xSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1dlbGxibGVjaHNIYXVzZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICBvayggJFRlc3RMb2NhdGlvbjFJRCwgIlRlc3RMb2NhdGlvbjEgY3JlYXRlZCIgKTsKCiAgICAjIGFzc2VydCB0aGVyZSBpcyAxIHZlcnNpb24gd2l0aCBnaXZlbiBuYW1lCiAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgXQogICAgKTsKCiAgICAjIGNyZWF0ZSB0ZXN0IHRpY2tldAoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gIlRlc3RUaWNrZXQxXyRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdG9iby5vcmcnLAogICAgICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFRpY2tldElELCAnVGlja2V0IGNyZWF0ZWQnICk7CgogICAgIyBjcmVhdGUgbGluayB0byBUaWNrZXQKICAgIG9rKAogICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRMaW5rVHlwZSwgICAgICAgICAgIydSZWxldmFudFRvJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICksCiAgICAgICAgJ0NJIFRlc3RMb2NhdGlvbjEgTGlua2VkIHRvIFRpY2tldCcKICAgICk7CgogICAgIyBpbnNwZWN0IGxpbmsgZGF0YQoKICAgIG15ICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgKTsKCiAgICBteSAkU291cmNlID0gJExpbmtMaXN0LT57VGlja2V0fS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgPwogICAgICAgICRMaW5rTGlzdC0+e1RpY2tldH0tPnskTGlua1R5cGV9LT57U291cmNlfS0+eyRUaWNrZXRJRH0KICAgICAgICA6CiAgICAgICAgJExpbmtMaXN0LT57VGlja2V0fS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9LT57JFRpY2tldElEfTsKCiAgICBvayggJFNvdXJjZSwgJ0ZvdW5kIExpbmsnICk7CgogICAgb2soCiAgICAgICAgJFNvdXJjZS0+e1RpY2tldE51bWJlcn0sCiAgICAgICAgJ0xpbmtlZCBpdGVtIGxvb2tzIGxpa2UgdGlja2V0JwogICAgKTsKCiAgICBpcygKICAgICAgICAkU291cmNlLT57VGl0bGV9LAogICAgICAgICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICdDb25maWdJdGVtIGlzIGxpbmtlZCB0byBjb3JyZWN0IFRpY2tldCcKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbGVhbnVwCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICksCiAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICk7CgogICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICBpcygKICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7CgogICAgaXMoCiAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkIiApOwoKICAgIHJldHVybjsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1Db3VudCB7CiAgICBteSAoJENvdW50KSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbScsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQgLy8gMDsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDb3VudChpZCkgRlJPTSBjb25maWdpdGVtX2xpbmsnLAogICAgKTsKCiAgICBpZiAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcmV0dXJuICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9IEAkVmVyc2lvbnM7CgogICAgaXMoCiAgICAgICAgc2NhbGFyIEAkVmVyc2lvbkxpc3RSZWYsCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionAdd.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJENsYXNzSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJFJhbmRvbUlELAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwpvayggJENsYXNzSUQsICJDbGFzcyBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWlzc2luZyBDbGFzc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiA8PCdFT0YnLAotLS0KLSBQYWdlczoKICAtIENvbnRlbnQ6CiAgICAtIENvbHVtblN0YXJ0OiAxCiAgICAgIFJvd1N0YXJ0OiAxCiAgICAgIFNlY3Rpb246IFNlY3Rpb24xCiAgICAtIENvbHVtblN0YXJ0OiAyCiAgICAgIFJvd1N0YXJ0OiAxCiAgICAgIFNlY3Rpb246IFNlY3Rpb24yCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyCiAgICAgIENvbHVtbnM6IDIKICAgIE5hbWU6IENvbnRlbnQKRU9GCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgRGVmaW5pdGlvbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgVXNlcklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIFBhZ2VzOgogIC0gQ29udGVudDoKICAgIC0gQ29sdW1uU3RhcnQ6IDEKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjEKICAgIC0gQ29sdW1uU3RhcnQ6IDIKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjIKICAgIExheW91dDoKICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIKICAgICAgQ29sdW1uczogMgogICAgTmFtZTogQ29udGVudApFT0YKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBEZWZpbml0aW9uIChMZWdhY3kgUGVybCknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwnRU9GJywKWwp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXQp9Cl07CkVPRgogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBEZWZpbml0aW9uIChJbnZhbGlkIFlBTUwpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIFBhZ2VzOgogIC0gQ29udGVudDoKICAgIENvbHVtblN0YXJ0OiAxCiAgICAgIFJvd1N0YXJ0IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjEKICAgIENvbHVtblN0YXJ0IDIKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjIKICAgIExheW91dDoKICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIKICAgICAgQ29sdW1uczogMgogICAgTmFtZTogQ29udGVudApFT0YKICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ29ycmVjdCBZQU1MJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQpQYWdlczoKICAtIE5hbWU6IFBhZ2UxCiAgICBJbnRlcmZhY2VzOiBbXQogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjIKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCgpTZWN0aW9uczoKICBTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgogIFNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVPRgogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCgopOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICRUZXN0LT57Q29uZmlnfS0+JSoKICAgICk7CiAgICBteSAkRGVmaW5pdGlvbklEID0gJFJlc3VsdC0+e0RlZmluaXRpb25JRH07CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICBvaygKICAgICAgICAgICAgISREZWZpbml0aW9uSUQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25BZGQoKSAtIGZhaWx1cmUgZXhwZWN0ZWQiLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBvaygKICAgICAgICAoICREZWZpbml0aW9uSUQgLy8gMCApID4gMCwKICAgICAgICAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uQWRkKCkgLSBEZWZpbml0aW9uSUQiCiAgICApOwoKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionGet.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7Cm9rKCAkQ2xhc3NJRCwgIkNsYXNzIGFkZGVkIHRvIEdlbmVyYWxDYXRhbG9nIiApOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAlRGVmaW5pdGlvblRlbXBsYXRlID0gKAogICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgIENsYXNzICAgICAgPT4gJFJhbmRvbUlELAogICAgQ3JlYXRlQnkgICA9PiAkVXNlcklELAogICAgVmVyc2lvbiAgICA9PiAxLAogICAgRGVmaW5pdGlvbiA9PiA8PCdFTkRfWUFNTCcsCi0tLQpQYWdlczoKICAtIE5hbWU6IFBhZ2UxCiAgICBJbnRlcmZhY2VzOiBbXQogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjIKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCgpTZWN0aW9uczoKICBTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgogIFNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVORF9ZQU1MCik7CgpteSAkRGVmaW5pdGlvblJlZiA9IHsKICAgIFBhZ2VzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAiU2VjdGlvbjEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEludGVyZmFjZXMgPT4gW10sCiAgICAgICAgICAgIExheW91dCAgICAgPT4gewogICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMywKICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICIxZnIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWUgPT4gIlBhZ2UxIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJTZWN0aW9uMiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDMsCiAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAiMWZyIgogICAgICAgICAgICB9LAogICAgICAgICAgICBOYW1lID0+ICJQYWdlMiIsCiAgICAgICAgfSwKICAgIF0sCiAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgU2VjdGlvbjEgPT4geyBDb250ZW50ID0+IFsgeyBIZWFkZXIgPT4gIlRoaXMgaXMgc2VjdGlvbiAxIiB9IF0gfSwKICAgICAgICBTZWN0aW9uMiA9PiB7IENvbnRlbnQgPT4gWyB7IEhlYWRlciA9PiAiVGhpcyBpcyBzZWN0aW9uIDIiIH0gXSB9LAogICAgfSwKfTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkRlZmluaXRpb25BZGQoKSB3YXMgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRCA9ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwpvayggJERlZmluaXRpb25JRCwgIkRlZmluaXRpb25BZGQoKSIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgRGVmaW5pdGlvbklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgICA9PiAkRGVmaW5pdGlvblJlZiwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiB7fSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IENsYXNzSUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAlRGVmaW5pdGlvblRlbXBsYXRlLAogICAgICAgICAgICBEZWZpbml0aW9uUmVmICAgPT4gJERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICBEeW5hbWljRmllbGRSZWYgPT4ge30sCiAgICAgICAgfSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgJFRlc3QtPntDb25maWd9LT4lKgogICAgKTsKCiAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgIG9rKCAhJERlZmluaXRpb24sICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25HZXQoKSAtIGZhaWx1cmUgZXhwZWN0ZWQiICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBkZWxldGUgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfTsKCiAgICBpcygKICAgICAgICAkRGVmaW5pdGlvbiwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gRGVmaW5pdGlvbkdldCgpIC0gRGVmaW5pdGlvbiIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionList.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgQENvbmZpZ0l0ZW1ZQU1MRGVmaW5pdGlvbnMgPSA8PCdFTkRfWUFNTCc7Ci0tLQpQYWdlczoKICAtIE5hbWU6IENJXzFfUGFnZTEKICAgIEludGVyZmFjZXM6IFtdCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDMKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBDSV8xX1NlY3Rpb24xCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQogIC0gTmFtZTogQ0lfMV9QYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogQ0lfMV9TZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKClNlY3Rpb25zOgogIENJXzFfU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMSIKICBDSV8xX1NlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVORF9ZQU1MCgojIHNlY29uZCBpdGVtIGlzIGEgdmFyaWFudCBvZiB0aGUgZmlyc3QgaXRlbQpwdXNoIEBDb25maWdJdGVtWUFNTERlZmluaXRpb25zLCAoICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdID1+IHMvQ0lfMV8vQ0lfMl8vcmcgKTsKCm15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21JRCwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gJFVzZXJJRCwKKTsKb2soICRDbGFzc0lELCAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciICk7CgpteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFJlc3VsdDEgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdCik7Cm9rKCAkUmVzdWx0MS0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIDEgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRDEgPSAkUmVzdWx0MS0+e0RlZmluaXRpb25JRH07Cm9rKCAkRGVmaW5pdGlvbklEMSwgIkRlZmluaXRpb25BZGQoKSAxIGdvdCBkZWZpbml0aW9uIElEIiApOwoKbXkgJFJlc3VsdDIgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzFdCik7Cm9rKCAkUmVzdWx0MS0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIDIgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRDIgPSAkUmVzdWx0Mi0+e0RlZmluaXRpb25JRH07Cm9rKCAkRGVmaW5pdGlvbklEMSwgIkRlZmluaXRpb25BZGQoKSAyIGdvdCBkZWZpbml0aW9uIElEICIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgQ2xhc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdLAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzFdLAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgRGVmaW5pdGlvblJlZiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3QKICAgIG15ICREZWZpbml0aW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICAkVGVzdC0+e0NvbmZpZ30tPiUqCiAgICApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgb2soCiAgICAgICAgICAgICEkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBmYWlsdXJlIGV4cGVjdGVkIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZm9yIG15ICREZWZpbml0aW9uICggJERlZmluaXRpb25MaXN0LT5AKiApIHsKICAgICAgICBkZWxldGUgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfTsKICAgIH0KCiAgICBpcygKICAgICAgICAkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBEZWZpbml0aW9uIgogICAgKTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/Role.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCggVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luICk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiMgYWRkIGR5bmFtaWMgZmllbGRzIGZvciB0ZXN0aW5nCm15ICRGaWVsZE9yZGVyID0gMTsKbXkgJUR5bmFtaWNGaWVsZFNob3J0TmFtZTJJRDsKZm9yIG15ICRTaG9ydE5hbWUgKHF3KERGMSBERjIgREYzIERGNCkpIHsKCiAgICAjIGFkZCBhIG5ldyBpdGVtCiAgICBteSAkREZOYW1lICAgICAgICAgPSBqb2luICctJywgJFNob3J0TmFtZSwgJFJhbmRvbUlEOwogICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAiJERGTmFtZSDimJQiLAogICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJEZpZWxkT3JkZXIrKywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiZGVmYXVsdCB2YWx1ZSBmb3IgJERGTmFtZSDimJQiLAogICAgICAgIH0sCiAgICAgICAgUmVvcmRlciA9PiAxLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwogICAgb2soICREeW5hbWljRmllbGRJRCwgImNyZWF0ZWQgZHluYW1pYyBmaWVsZCAkREZOYW1lIiApOwogICAgJER5bmFtaWNGaWVsZFNob3J0TmFtZTJJRHskU2hvcnROYW1lfSA9ICREeW5hbWljRmllbGRJRDsKfQoKIyBhZGQgUm9sZQp7CiAgICAjIGRlY2xhcmUgdGhlIHJvbGUgaW4gdGhlIGdlbmVyYWwgY2F0YWxvZwogICAgbXkgJFJvbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgIE5hbWUgICAgPT4gIlJvbGVfJFJhbmRvbUlEIiwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgKTsKICAgIG9rKCAkUm9sZUlELCAiUm9sZSBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCiAgICBteSAkWUFNTERlZmluaXRpb24gPSA8PCJFTkRfWUFNTCI7Ci0tLQpTZWN0aW9uczoKICBOb0R5bmFtaWNGaWVsZDoKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIk5vIGR5bmFtaWMgZmllbGQiCiAgT25lRHluYW1pY0ZpZWxkOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiTm8gZHluYW1pYyBmaWVsZCIKICAgICAgIC0gREY6IERGMS0kUmFuZG9tSUQKICBUd29EeW5hbWljRmllbGRzOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiTm8gZHluYW1pYyBmaWVsZCIKICAgICAgIC0gREY6IERGMS0kUmFuZG9tSUQKICAgICAgIC0gREY6IERGMi0kUmFuZG9tSUQKICBUaHJlZUR5bmFtaWNGaWVsZHM6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJObyBkeW5hbWljIGZpZWxkIgogICAgICAgLSBERjogREYxLSRSYW5kb21JRAogICAgICAgLSBERjogREYyLSRSYW5kb21JRAogICAgICAgLSBERjogREYzLSRSYW5kb21JRAogIE9ubHlERjQ6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJvbmx5IHRoZSBkeW5hbWljIGZpZWxkIERGNCwgbm90IHJlZmVyZW5jZWQgaW4gYW55IHBhZ2UiCiAgICAgICAtIERGOiBERjQtJFJhbmRvbUlECkVORF9ZQU1MCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgIFJvbGVJRCAgICAgPT4gJFJvbGVJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIlJvbGVfJFJhbmRvbUlEIHN1Y2Nlc3NmdWxseSBhZGRlZCIgKTsKfQoKIyBUT0RPOiByZWZlciB0byBSb2xlIGluIERlZmluaXRpb24KCm15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwpvayggJENsYXNzSUQsICJDbGFzcyBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCm15ICVEZWZpbml0aW9uVGVtcGxhdGUgPSAoCiAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgQ2xhc3MgICAgICA9PiAiQ2xhc3NfJFJhbmRvbUlEIiwKICAgIENyZWF0ZUJ5ICAgPT4gJFVzZXJJRCwKICAgIFZlcnNpb24gICAgPT4gMSwKICAgIERlZmluaXRpb24gPT4gPDwiRU5EX1lBTUwiLAotLS0KUGFnZXM6CiAgLSBOYW1lOiBQYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IEVtcHR5U2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogRW1wdHlTZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKICAtIE5hbWU6IFBhZ2UzCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDMKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCiAgICAgIC0gU2VjdGlvbjogVGVzdFJvbGU6Ok9uZUR5bmFtaWNGaWVsZAogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKICAgICAgLSBTZWN0aW9uOiBUZXN0Um9sZTo6VGhyZWVEeW5hbWljRmllbGRzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMgoKU2VjdGlvbnM6CiAgRW1wdHlTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgdGhlIGVtcHR5IHNlY3Rpb24gMSIKICBFbXB0eVNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyB0aGUgZW1wdHkgc2VjdGlvbiAyIgpSb2xlczoKICBUZXN0Um9sZToKICAgIE5hbWU6ICJSb2xlXyRSYW5kb21JRCIKICAgIFZlcnNpb246IDEKRU5EX1lBTUwKKTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkRlZmluaXRpb25BZGQoKSB3YXMgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRCA9ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwpvayggJERlZmluaXRpb25JRCwgIkRlZmluaXRpb25BZGQoKSByZXR1cm5lZCBhIGRlZmluaXRpb24gSUQiICk7CgpteSAkRXhwZWN0ZWREZWZpbml0aW9uUmVmID0gewogICAgUGFnZXMgPT4gWwogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJFbXB0eVNlY3Rpb24xIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW50ZXJmYWNlcyA9PiBbXSwKICAgICAgICAgICAgTGF5b3V0ICAgICA9PiB7CiAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAzLAogICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gIjFmciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSA9PiAiUGFnZTEiLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ICAgID0+IDIsCiAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgPT4gIkVtcHR5U2VjdGlvbjIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMywKICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICIxZnIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWUgPT4gIlBhZ2UyIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMiwKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAiVGVzdFJvbGU6Ok9uZUR5bmFtaWNGaWVsZCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJUZXN0Um9sZTo6VGhyZWVEeW5hbWljRmllbGRzIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAzLAogICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gIjFmciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSA9PiAiUGFnZTMiLAogICAgICAgIH0sCiAgICBdLAogICAgUm9sZXMgPT4gewogICAgICAgIFRlc3RSb2xlID0+IHsKICAgICAgICAgICAgTmFtZSAgICA9PiAiUm9sZV8kUmFuZG9tSUQiLAogICAgICAgICAgICBWZXJzaW9uID0+IDEKICAgICAgICB9LAogICAgfSwKICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAiRW1wdHlTZWN0aW9uMSIgICAgICAgICAgICAgPT4geyBDb250ZW50ID0+IFsgeyBIZWFkZXIgPT4gIlRoaXMgaXMgdGhlIGVtcHR5IHNlY3Rpb24gMSIgfSBdIH0sCiAgICAgICAgIkVtcHR5U2VjdGlvbjIiICAgICAgICAgICAgID0+IHsgQ29udGVudCA9PiBbIHsgSGVhZGVyID0+ICJUaGlzIGlzIHRoZSBlbXB0eSBzZWN0aW9uIDIiIH0gXSB9LAogICAgICAgICJUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQiICA9PiB7IENvbnRlbnQgPT4gWyB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSBdIH0sCiAgICAgICAgIlRlc3RSb2xlOjpPbmVEeW5hbWljRmllbGQiID0+IHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjEtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgIlRlc3RSb2xlOjpPbmx5REY0IiA9PiB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgeyBIZWFkZXIgPT4gIm9ubHkgdGhlIGR5bmFtaWMgZmllbGQgREY0LCBub3QgcmVmZXJlbmNlZCBpbiBhbnkgcGFnZSIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjQtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgIlRlc3RSb2xlOjpUaHJlZUR5bmFtaWNGaWVsZHMiID0+IHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjEtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICAgICAgeyBERiAgICAgPT4gIkRGMi0kUmFuZG9tSUQiIH0sCiAgICAgICAgICAgICAgICB7IERGICAgICA9PiAiREYzLSRSYW5kb21JRCIgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICJUZXN0Um9sZTo6VHdvRHluYW1pY0ZpZWxkcyIgPT4gewogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsgSGVhZGVyID0+ICJObyBkeW5hbWljIGZpZWxkIiB9LAogICAgICAgICAgICAgICAgeyBERiAgICAgPT4gIkRGMS0kUmFuZG9tSUQiIH0sCiAgICAgICAgICAgICAgICB7IERGICAgICA9PiAiREYyLSRSYW5kb21JRCIgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKfTsKbXkgJEV4cGVjdGVkRHluYW1pY0ZpZWxkUmVmID0gewogICAgIkRGMS0kUmFuZG9tSUQiID0+IHsKICAgICAgICBDSUNsYXNzID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgICAgIENvbmZpZyAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gImRlZmF1bHQgdmFsdWUgZm9yIERGMS0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIH0sCiAgICAgICAgRmllbGRUeXBlICA9PiAiVGV4dCIsCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU2hvcnROYW1lMklEe0RGMX0sCiAgICAgICAgTGFiZWwgICAgICA9PiAiREYxLSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgTmFtZSAgICAgICA9PiAiREYxLSRSYW5kb21JRCIsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAiSVRTTUNvbmZpZ0l0ZW0iLAogICAgfSwKICAgICJERjItJFJhbmRvbUlEIiA9PiB7CiAgICAgICAgQ0lDbGFzcyA9PiAiQ2xhc3NfJFJhbmRvbUlEIiwKICAgICAgICBDb25maWcgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICJkZWZhdWx0IHZhbHVlIGZvciBERjItJFJhbmRvbUlEIFx4ezI2MTR9IiwKICAgICAgICB9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gIlRleHQiLAogICAgICAgIElEICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFNob3J0TmFtZTJJRHtERjJ9LAogICAgICAgIExhYmVsICAgICAgPT4gIkRGMi0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIE5hbWUgICAgICAgPT4gIkRGMi0kUmFuZG9tSUQiLAogICAgICAgIE9iamVjdFR5cGUgPT4gIklUU01Db25maWdJdGVtIiwKICAgIH0sCiAgICAiREYzLSRSYW5kb21JRCIgPT4gewogICAgICAgIENJQ2xhc3MgPT4gIkNsYXNzXyRSYW5kb21JRCIsCiAgICAgICAgQ29uZmlnICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiZGVmYXVsdCB2YWx1ZSBmb3IgREYzLSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgfSwKICAgICAgICBGaWVsZFR5cGUgID0+ICJUZXh0IiwKICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGRTaG9ydE5hbWUySUR7REYzfSwKICAgICAgICBMYWJlbCAgICAgID0+ICJERjMtJFJhbmRvbUlEIFx4ezI2MTR9IiwKICAgICAgICBOYW1lICAgICAgID0+ICJERjMtJFJhbmRvbUlEIiwKICAgICAgICBPYmplY3RUeXBlID0+ICJJVFNNQ29uZmlnSXRlbSIsCiAgICB9LAogICAgIkRGNC0kUmFuZG9tSUQiID0+IHsKICAgICAgICBDSUNsYXNzID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgICAgIENvbmZpZyAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gImRlZmF1bHQgdmFsdWUgZm9yIERGNC0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIH0sCiAgICAgICAgRmllbGRUeXBlICA9PiAiVGV4dCIsCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU2hvcnROYW1lMklEe0RGNH0sCiAgICAgICAgTGFiZWwgICAgICA9PiAiREY0LSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgTmFtZSAgICAgICA9PiAiREY0LSRSYW5kb21JRCIsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAiSVRTTUNvbmZpZ0l0ZW0iLAogICAgfSwKfTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IERlZmluaXRpb25JRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAlRGVmaW5pdGlvblRlbXBsYXRlLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgRGVmaW5pdGlvblJlZiAgID0+ICRFeHBlY3RlZERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRXhwZWN0ZWREeW5hbWljRmllbGRSZWYsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdCeSBDbGFzc0lEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgJURlZmluaXRpb25UZW1wbGF0ZSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgICA9PiAkRXhwZWN0ZWREZWZpbml0aW9uUmVmLAogICAgICAgICAgICBEeW5hbWljRmllbGRSZWYgPT4gJEV4cGVjdGVkRHluYW1pY0ZpZWxkUmVmLAogICAgICAgIH0sCiAgICB9LAopOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICRUZXN0LT57Q29uZmlnfS0+JSoKICAgICk7CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICBvayggISREZWZpbml0aW9uLCAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uR2V0KCkgLSBmYWlsdXJlIGV4cGVjdGVkIiApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZGVsZXRlICREZWZpbml0aW9uLT57Q3JlYXRlVGltZX07CgogICAgaXMoCiAgICAgICAgJERlZmluaXRpb24sCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25HZXQoKSAtIERlZmluaXRpb24iCiAgICApOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/DynamicFieldImportExport.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKIyBJbXBvcnQgYW5kIGV4cG9ydCBvZiBkeW5hbWljIGZpZWxkIGNvbmZpZ3Mgd2l0aCBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgaW5zdGFsbGVkLAojIHNlZSBPVE9CTyBpc3N1ZSAjNjIyNy4gQ291bnRlcnBhcnQgb2Ygc2NyaXB0cy90ZXN0L0R5bmFtaWNGaWVsZC9JbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnLnQKIyBpbiB0aGUgT1RPQk8gZnJhbWV3b3JrLgojCiMgQ292ZXJzIHRoZSBmaWVsZCB0eXBlcyBvZiB0aGUgSVRTTSBwYWNrYWdlcyAoQ29uZmlnSXRlbSwgQ29uZmlnSXRlbVZlcnNpb24sIEdlbmVyYWxDYXRhbG9nLAojIFNlcnZpY2UpIGFuZCBhIExlbnMgZmllbGQgZnJvbSBhIHRpY2tldCB0byBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZS4KIwojIFRoZSBMZW5zIGRyaXZlciBpdHNlbGYsIHdoaWNoIHRoaXMgcGFja2FnZSBvdmVycmlkZXMgd2l0aAojIEN1c3RvbS9LZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvTGVucy5wbSwgaXMgdGVzdGVkIGJ5IHRoZSBmcmFtZXdvcmsgdGVzdAojIHNjcmlwdHMvdGVzdC9EeW5hbWljRmllbGQvSW1wb3J0RXhwb3J0UHJlcGFyZUNvbmZpZy50LCB3aGljaCB1c2VzIHRoZSBvdmVycmlkZGVuCiMgZHJpdmVyIHdoZW4gdGhpcyBwYWNrYWdlIGlzIGluc3RhbGxlZC4KIwojIFBhcnQgMTogSW1wb3J0RXhwb3J0UHJlcGFyZUNvbmZpZygpIG9mIHRoZSBkcml2ZXJzLCBjaGVja2VkIGFnYWluc3QgdGhlaXIgUE9EOgojICAgICAgICAgIkZvciBleHBvcnQsIHRoZSBOYW1lIGlzIG5lZWRlZCAuLi4gRHVyaW5nIGltcG9ydCwgdGhlIE5hbWUgbmVlZHMgdG8gYmUKIyAgICAgICAgIHRyYW5zbGF0ZWQgYmFjayBpbnRvIHRoZSBJRCIuIFNob3dzIHdoaWNoIGRpcmVjdGlvbiBlYWNoIGRyaXZlciBpbXBsZW1lbnRzLgojIFBhcnQgMjogRHluYW1pY0ZpZWxkQ29uZmlnSUQyTmFtZSgpIChleHBvcnQpIGFuZCBEeW5hbWljRmllbGRDb25maWdOYW1lMklEKCkgKGltcG9ydCkuCiMgUGFydCAzOiBjb21wbGV0ZSByb3VuZCB0cmlwIGxpa2UgQWRtaW5EeW5hbWljRmllbGRJbXBvcnRFeHBvcnQgZG9lcyBpdDoKIyAgICAgICAgICAgY3JlYXRlIC0+IGV4cG9ydCAtPiBkZWxldGUgLT4gaW1wb3J0IChuZXcgSURzLCBsaWtlIGFub3RoZXIgc3lzdGVtKSAtPiBjb21wYXJlCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJFpudW55SGVscGVyT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7Cm15ICRTdG9yYWJsZU9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdG9yYWJsZScpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyB3b3JrIG9uIGNvcGllcywgdGhlIHRlc3RlZCBmdW5jdGlvbnMgY2hhbmdlIHRoZSBwYXNzZWQgY29uZmlnIGluIHBsYWNlCnN1YiBDbG9uZSB7CiAgICBteSAoJERhdGEpID0gQF87CgogICAgcmV0dXJuICRTdG9yYWJsZU9iamVjdC0+Q2xvbmUoIERhdGEgPT4gJERhdGEgKTsKfQoKIyB0aGUgZHJpdmVyIG9iamVjdCBvZiBhIGZpZWxkIHR5cGUsIHRha2VuIGZyb20gdGhlIHJlZ2lzdHJhdGlvbgpzdWIgRHJpdmVyT2JqZWN0R2V0IHsKICAgIG15ICgkRmllbGRUeXBlKSA9IEBfOwoKICAgIG15ICREcml2ZXJDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZHM6OkRyaXZlcicpIC8vIHt9OwogICAgbXkgJERyaXZlck1vZHVsZSA9ICREcml2ZXJDb25maWctPnskRmllbGRUeXBlfS0+e01vZHVsZX07CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJERyaXZlck1vZHVsZSk7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBzZXR1cDogb2JqZWN0cyB3aGljaCBhcmUgcmVmZXJlbmNlZCBieSBJRCBpbiBmaWVsZCBjb25maWdzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRDbGFzc05hbWUgPSAiQ2xhc3MkUmFuZG9tSUQiOwpteSAkQ2xhc3NJRCAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkQ2xhc3NOYW1lLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnVW5pdCB0ZXN0IGNsYXNzJywKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRDbGFzc0lELCAiY29uZmlnIGl0ZW0gY2xhc3MgJENsYXNzTmFtZSBjcmVhdGVkIiApOwoKbXkgJURlcGxTdGF0ZU5hbWUySUQgPSByZXZlcnNlICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnICktPiUqOwpteSAkRGVwbFN0YXRlTmFtZSAgICA9ICdQcm9kdWN0aW9uJzsKbXkgJERlcGxTdGF0ZUlEICAgICAgPSAkRGVwbFN0YXRlTmFtZTJJRHskRGVwbFN0YXRlTmFtZX07Cm9rKCAkRGVwbFN0YXRlSUQsICJkZXBsb3ltZW50IHN0YXRlICREZXBsU3RhdGVOYW1lIGV4aXN0cyIgKTsKCm15ICRTZXJ2aWNlTmFtZSA9ICJTZXJ2aWNlJFJhbmRvbUlEIjsKbXkgJFNlcnZpY2VJRCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUFkZCgKICAgIE5hbWUgICAgICAgID0+ICRTZXJ2aWNlTmFtZSwKICAgIENvbW1lbnQgICAgID0+ICdVbml0IHRlc3Qgc2VydmljZScsCiAgICBWYWxpZElEICAgICA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKICAgIFR5cGVJRCAgICAgID0+IDEsCiAgICBDcml0aWNhbGl0eSA9PiAnMyBub3JtYWwnLAopOwpvayggJFNlcnZpY2VJRCwgInNlcnZpY2UgJFNlcnZpY2VOYW1lIGNyZWF0ZWQiICk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgc2V0dXA6IG9uZSBkeW5hbWljIGZpZWxkIG9mIGV2ZXJ5IElUU00gZmllbGQgdHlwZSBhbmQgYSBMZW5zIGZpZWxkCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15IEBGaWVsZERlZmluaXRpb25zID0gKAoKICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlLCB1c2VkIGJ5IHRoZSBMZW5zIGZpZWxkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAiQ0lUZXh0JFJhbmRvbUlEIiwKICAgICAgICBGaWVsZFR5cGUgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICA9PiB7IERlZmF1bHRWYWx1ZSA9PiAnJyB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICJDb25maWdJdGVtJFJhbmRvbUlEIiwKICAgICAgICBGaWVsZFR5cGUgID0+ICdDb25maWdJdGVtJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBFZGl0RmllbGRNb2RlICAgICAgICA9PiAnQXV0b0NvbXBsZXRlJywKICAgICAgICAgICAgTXVsdGlWYWx1ZSAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICAgICAgPT4gWyREZXBsU3RhdGVJRF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAiQ29uZmlnSXRlbVZlcnNpb24kUmFuZG9tSUQiLAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbVZlcnNpb24nLAogICAgICAgICAgICBFZGl0RmllbGRNb2RlICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICA9PiAwLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgICAgICAgICA9PiBbJERlcGxTdGF0ZUlEXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICJHZW5lcmFsQ2F0YWxvZyRSYW5kb21JRCIsCiAgICAgICAgRmllbGRUeXBlICA9PiAnR2VuZXJhbENhdGFsb2cnLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICJTZXJ2aWNlJFJhbmRvbUlEIiwKICAgICAgICBGaWVsZFR5cGUgID0+ICdTZXJ2aWNlJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZSA9PiAnU2VydmljZScsCiAgICAgICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgICAgIE11bHRpVmFsdWUgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgIEFsbG93ZWRTZXJ2aWNlSURzICAgID0+IFskU2VydmljZUlEXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIExlbnM6IHRpY2tldCAtPiBjb25maWcgaXRlbSAtPiBhdHRyaWJ1dGUsIEF0dHJpYnV0ZURGIGFuZCBSZWZlcmVuY2VERiBhcmUgc3RvcmVkIGFzIElEcwogICAgewogICAgICAgIE5hbWUgICAgICAgPT4gIkxlbnNUb0NJJFJhbmRvbUlEIiwKICAgICAgICBGaWVsZFR5cGUgID0+ICdMZW5zJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4geyBNdWx0aVZhbHVlID0+IDAgfSwKICAgICAgICBMZW5zT2YgICAgID0+IHsKICAgICAgICAgICAgQXR0cmlidXRlREYgPT4gIkNJVGV4dCRSYW5kb21JRCIsCiAgICAgICAgICAgIFJlZmVyZW5jZURGID0+ICJDb25maWdJdGVtJFJhbmRvbUlEIgogICAgICAgIH0sCiAgICB9LAopOwoKbXkgJUZpZWxkSUQ7ICAgICMgbmFtZSAtPiBJRCBpbiB0aGUgInNvdXJjZSIgc3lzdGVtCm15ICRGaWVsZE9yZGVyID0gOTAwMDsKZm9yIG15ICREZWZpbml0aW9uIChARmllbGREZWZpbml0aW9ucykgewogICAgbXkgJUNvbmZpZyA9ICREZWZpbml0aW9uLT57Q29uZmlnfS0+JSo7CgogICAgIyByZXBsYWNlIGZpZWxkIG5hbWVzIGJ5IHRoZSBJRHMgb2YgdGhlIGFscmVhZHkgY3JlYXRlZCBmaWVsZHMKICAgIGlmICggJERlZmluaXRpb24tPntMZW5zT2Z9ICkgewogICAgICAgIGZvciBteSAkQXR0cmlidXRlICgga2V5cyAkRGVmaW5pdGlvbi0+e0xlbnNPZn0tPiUqICkgewogICAgICAgICAgICAkQ29uZmlneyRBdHRyaWJ1dGV9ID0gJEZpZWxkSUR7ICREZWZpbml0aW9uLT57TGVuc09mfXskQXR0cmlidXRlfSB9OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAkRGVmaW5pdGlvbi0+e05hbWV9LAogICAgICAgIExhYmVsICAgICAgPT4gIkxhYmVsICREZWZpbml0aW9uLT57TmFtZX0iLAogICAgICAgIEZpZWxkT3JkZXIgPT4gJEZpZWxkT3JkZXIrKywKICAgICAgICBGaWVsZFR5cGUgID0+ICREZWZpbml0aW9uLT57RmllbGRUeXBlfSwKICAgICAgICBPYmplY3RUeXBlID0+ICREZWZpbml0aW9uLT57T2JqZWN0VHlwZX0sCiAgICAgICAgQ29uZmlnICAgICA9PiBcJUNvbmZpZywKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMCwKICAgICk7CiAgICBvayggJElELCAic291cmNlIHN5c3RlbTogJERlZmluaXRpb24tPntGaWVsZFR5cGV9IGZpZWxkICREZWZpbml0aW9uLT57TmFtZX0gY3JlYXRlZCIgKTsKICAgICRGaWVsZElEeyAkRGVmaW5pdGlvbi0+e05hbWV9IH0gPSAkSUQ7Cn0KCm15IEBGaWVsZE5hbWVzID0gbWFwIHsgJF8tPntOYW1lfSB9IEBGaWVsZERlZmluaXRpb25zOwpteSAlT3JpZ2luYWwgICA9IG1hcCB7ICRfID0+ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAkXyApIH0gQEZpZWxkTmFtZXM7CgpzdWJ0ZXN0ICdldmVyeSBJVFNNIGZpZWxkIHR5cGUgaXMgY292ZXJlZCcgPT4gc3ViIHsKICAgIG15ICVDb3ZlcmVkID0gbWFwIHsgJF8tPntGaWVsZFR5cGV9ID0+IDEgfSBARmllbGREZWZpbml0aW9uczsKICAgIGZvciBteSAkRmllbGRUeXBlIChxdyhDb25maWdJdGVtIENvbmZpZ0l0ZW1WZXJzaW9uIEdlbmVyYWxDYXRhbG9nIFNlcnZpY2UpKSB7CiAgICAgICAgb2soICRDb3ZlcmVkeyRGaWVsZFR5cGV9LCAiZmllbGQgdHlwZSAkRmllbGRUeXBlIGlzIHBhcnQgb2YgdGhlIHJvdW5kIHRyaXAiICk7CiAgICB9Cn07CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcGFydCAxOiBkcml2ZXJzLCBkaXJlY3Rpb24gYXMgZG9jdW1lbnRlZCBpbiB0aGVpciBQT0QKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBEaXJlY3Rpb24gJ0V4cG9ydCcgbXVzdCB0dXJuIElEcyBpbnRvIG5hbWVzLCBEaXJlY3Rpb24gJ0ltcG9ydCcgbmFtZXMgaW50byBJRHMuCm15IEBEcml2ZXJUZXN0cyA9ICgKICAgIHsKICAgICAgICBGaWVsZFR5cGUgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIElEcyAgICAgICA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyREZXBsU3RhdGVJRF0KICAgICAgICB9LAogICAgICAgIE5hbWVzID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NOYW1lXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFskRGVwbFN0YXRlTmFtZV0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBGaWVsZFR5cGUgPT4gJ0NvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBJRHMgICAgICAgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFskRGVwbFN0YXRlSURdCiAgICAgICAgfSwKICAgICAgICBOYW1lcyA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbJENsYXNzTmFtZV0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbJERlcGxTdGF0ZU5hbWVdCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRmllbGRUeXBlID0+ICdTZXJ2aWNlJywKICAgICAgICBJRHMgICAgICAgPT4geyBBbGxvd2VkU2VydmljZUlEcyA9PiBbJFNlcnZpY2VJRF0gfSwKICAgICAgICBOYW1lcyAgICAgPT4geyBBbGxvd2VkU2VydmljZUlEcyA9PiBbJFNlcnZpY2VOYW1lXSB9LAogICAgfSwKKTsKCmZvciBteSAkVGVzdCAoQERyaXZlclRlc3RzKSB7CiAgICBzdWJ0ZXN0ICJkcml2ZXIgJFRlc3QtPntGaWVsZFR5cGV9OiBJbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnKCkgYXMgZG9jdW1lbnRlZCIgPT4gc3ViIHsKICAgICAgICBteSAkRHJpdmVyT2JqZWN0ID0gRHJpdmVyT2JqZWN0R2V0KCAkVGVzdC0+e0ZpZWxkVHlwZX0gKTsKCiAgICAgICAgbXkgJUV4cG9ydGVkOwogICAgICAgIG9rKAogICAgICAgICAgICBsaXZlcyB7CiAgICAgICAgICAgICAgICAlRXhwb3J0ZWQgPSAkRHJpdmVyT2JqZWN0LT5JbXBvcnRFeHBvcnRQcmVwYXJlQ29uZmlnKAogICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgICA9PiAnRXhwb3J0JywKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgPT4gJ0RyaXZlclRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWcgPT4gQ2xvbmUoICRUZXN0LT57SURzfSApCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJEaXJlY3Rpb24gJ0V4cG9ydCcgZG9lcyBub3QgZGllIiwKICAgICAgICApIHx8IGRpYWcoJEApOwogICAgICAgIGlzKCBcJUV4cG9ydGVkLCAkVGVzdC0+e05hbWVzfSwgIkRpcmVjdGlvbiAnRXhwb3J0JyB0cmFuc2xhdGVzIElEcyBpbnRvIG5hbWVzIiApOwoKICAgICAgICBteSAlSW1wb3J0ZWQ7CiAgICAgICAgb2soCiAgICAgICAgICAgIGxpdmVzIHsKICAgICAgICAgICAgICAgICVJbXBvcnRlZCA9ICREcml2ZXJPYmplY3QtPkltcG9ydEV4cG9ydFByZXBhcmVDb25maWcoCiAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgICAgID0+ICdJbXBvcnQnLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAnRHJpdmVyVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZyA9PiBDbG9uZSggJFRlc3QtPntOYW1lc30gKQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9LAogICAgICAgICAgICAiRGlyZWN0aW9uICdJbXBvcnQnIGRvZXMgbm90IGRpZSIsCiAgICAgICAgKSB8fCBkaWFnKCRAKTsKICAgICAgICBpcyggXCVJbXBvcnRlZCwgJFRlc3QtPntJRHN9LCAiRGlyZWN0aW9uICdJbXBvcnQnIHRyYW5zbGF0ZXMgbmFtZXMgaW50byBJRHMiICk7CiAgICB9Owp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcGFydCAyOiBEeW5hbWljRmllbGRDb25maWdJRDJOYW1lKCkgYW5kIER5bmFtaWNGaWVsZENvbmZpZ05hbWUySUQoKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpteSBAVHJhbnNsYXRpb25UZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICA9PiAiQ29uZmlnSXRlbSRSYW5kb21JRCIsCiAgICAgICAgTmFtZXMgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc05hbWVdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyREZXBsU3RhdGVOYW1lXQogICAgICAgIH0sCiAgICAgICAgSURzID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbJERlcGxTdGF0ZUlEXQogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICJDb25maWdJdGVtVmVyc2lvbiRSYW5kb21JRCIsCiAgICAgICAgTmFtZXMgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc05hbWVdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyREZXBsU3RhdGVOYW1lXQogICAgICAgIH0sCiAgICAgICAgSURzID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbJERlcGxTdGF0ZUlEXQogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICJTZXJ2aWNlJFJhbmRvbUlEIiwKICAgICAgICBOYW1lcyA9PiB7IEFsbG93ZWRTZXJ2aWNlSURzID0+IFskU2VydmljZU5hbWVdIH0sCiAgICAgICAgSURzICAgPT4geyBBbGxvd2VkU2VydmljZUlEcyA9PiBbJFNlcnZpY2VJRF0gfSwKICAgIH0sCik7Cgpmb3IgbXkgJFRlc3QgKEBUcmFuc2xhdGlvblRlc3RzKSB7CiAgICBzdWJ0ZXN0ICJEeW5hbWljRmllbGRDb25maWdJRDJOYW1lKCkgYW5kIER5bmFtaWNGaWVsZENvbmZpZ05hbWUySUQoKTogJE9yaWdpbmFseyAkVGVzdC0+e05hbWV9IH17RmllbGRUeXBlfSIgPT4gc3ViIHsKICAgICAgICBteSAkRXhwb3J0ZWQ7CiAgICAgICAgb2soCiAgICAgICAgICAgIGxpdmVzIHsKICAgICAgICAgICAgICAgICRFeHBvcnRlZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZENvbmZpZ0lEMk5hbWUoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IENsb25lKCAkT3JpZ2luYWx7ICRUZXN0LT57TmFtZX0gfSApLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZENvbmZpZ0lEMk5hbWUoKSBkb2VzIG5vdCBkaWUnLAogICAgICAgICkgfHwgZGlhZygkQCk7CgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICRUZXN0LT57TmFtZXN9LT4lKiApIHsKICAgICAgICAgICAgaXMoICRFeHBvcnRlZC0+e0NvbmZpZ317JEF0dHJpYnV0ZX0sICRUZXN0LT57TmFtZXN9eyRBdHRyaWJ1dGV9LCAiZXhwb3J0OiAkQXR0cmlidXRlIGFzIG5hbWUiICk7CiAgICAgICAgfQoKICAgICAgICBteSAkSW1wb3J0Q29uZmlnID0gQ2xvbmUoICRPcmlnaW5hbHsgJFRlc3QtPntOYW1lfSB9ICk7CiAgICAgICAgJEltcG9ydENvbmZpZy0+e0NvbmZpZ30gPSB7CiAgICAgICAgICAgICRJbXBvcnRDb25maWctPntDb25maWd9LT4lKiwKICAgICAgICAgICAgQ2xvbmUoICRUZXN0LT57TmFtZXN9ICktPiUqLAogICAgICAgIH07CgogICAgICAgIG15ICRJbXBvcnRlZDsKICAgICAgICBvaygKICAgICAgICAgICAgbGl2ZXMgewogICAgICAgICAgICAgICAgJEltcG9ydGVkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQ29uZmlnTmFtZTJJRCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEltcG9ydENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdEeW5hbWljRmllbGRDb25maWdOYW1lMklEKCkgZG9lcyBub3QgZGllJywKICAgICAgICApIHx8IGRpYWcoJEApOwoKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAkVGVzdC0+e0lEc30tPiUqICkgewogICAgICAgICAgICBpcyggJEltcG9ydGVkLT57Q29uZmlnfXskQXR0cmlidXRlfSwgJFRlc3QtPntJRHN9eyRBdHRyaWJ1dGV9LCAiaW1wb3J0OiAkQXR0cmlidXRlIGFzIElEIiApOwogICAgICAgIH0KICAgIH07Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBwYXJ0IDM6IHJvdW5kIHRyaXAgZXhwb3J0IC0+IGRlbGV0ZSAtPiBpbXBvcnQsIGxpa2UgaW50byBhbm90aGVyIHN5c3RlbQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpzdWJ0ZXN0ICdyb3VuZCB0cmlwIG9mIGFsbCBJVFNNIGZpZWxkIHR5cGVzJyA9PiBzdWIgewoKICAgICMgZXhwb3J0LCBzYW1lIHBhcmFtZXRlcnMgYXMgS2VybmVsOjpNb2R1bGVzOjpBZG1pbkR5bmFtaWNGaWVsZEltcG9ydEV4cG9ydAogICAgbXkgJEV4cG9ydDsKICAgIG9rKAogICAgICAgIGxpdmVzIHsKICAgICAgICAgICAgJEV4cG9ydCA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNDb25maWdFeHBvcnQoCiAgICAgICAgICAgICAgICBGb3JtYXQgICAgICAgICAgICAgICAgPT4gJ3ZhcicsCiAgICAgICAgICAgICAgICBJbmNsdWRlSW50ZXJuYWxGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgIEluY2x1ZGVBbGxDb25maWdLZXlzICA9PiAxLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgID0+IFxARmllbGROYW1lcywKICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICA9PiAnSEFTSCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICAnZXhwb3J0IGRvZXMgbm90IGRpZScsCiAgICApIHx8IGRpYWcoJEApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRFeHBvcnQpICkgewogICAgICAgIGZhaWwoJ25vdGhpbmcgZXhwb3J0ZWQsIHJvdW5kIHRyaXAgbm90IHBvc3NpYmxlJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlzKCBbIHNvcnQga2V5cyAkRXhwb3J0LT4lKiBdLCBbIHNvcnQgQEZpZWxkTmFtZXMgXSwgJ2FsbCBmaWVsZHMgYXJlIGV4cG9ydGVkJyApOwoKICAgICMgc2ltdWxhdGUgdGhlIHRyYW5zZmVyIGludG8gYW5vdGhlciBzeXN0ZW0gdmlhIFlBTUwsIGxpa2UgdGhlIGRvd25sb2FkIGRvZXMKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICRUcmFuc2ZlciAgID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkWUFNTE9iamVjdC0+RHVtcCggRGF0YSA9PiB7IER5bmFtaWNGaWVsZHMgPT4gJEV4cG9ydCB9ICksCiAgICApOwoKICAgICMgcmVtb3ZlIHRoZSBmaWVsZHMsIGRlcGVuZGVudCBmaWVsZHMgZmlyc3QsIGFuZCBjcmVhdGUgYSBmaWxsZXIgZmllbGQsCiAgICAjIHNvIHRoZSByZS1jcmVhdGVkIGZpZWxkcyB3aWxsIHN1cmVseSBnZXQgb3RoZXIgSURzCiAgICBmb3IgbXkgJE5hbWUgKCByZXZlcnNlIEBGaWVsZE5hbWVzICkgewogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICBJRCAgICAgPT4gJEZpZWxkSUR7JE5hbWV9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgIG9rKCAkU3VjY2VzcywgIiROYW1lIGRlbGV0ZWQiICk7CiAgICB9CiAgICBteSAkRmlsbGVySUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAiRmlsbGVyJFJhbmRvbUlEIiwKICAgICAgICBMYWJlbCAgICAgID0+ICdGaWxsZXInLAogICAgICAgIEZpZWxkT3JkZXIgPT4gOTk5OSwKICAgICAgICBGaWVsZFR5cGUgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4ge30sCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICBSZW9yZGVyICAgID0+IDAsCiAgICApOwogICAgb2soICRGaWxsZXJJRCwgJ2ZpbGxlciBmaWVsZCBjcmVhdGVkJyApOwoKICAgICMgaW1wb3J0LCBzYW1lIGZ1bmN0aW9uIGFzIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5EeW5hbWljRmllbGRJbXBvcnRFeHBvcnQgd2l0aCBvdmVyd3JpdGUKICAgIG15IEBJbXBvcnRGaWVsZHMgPSBtYXAgeyAkVHJhbnNmZXItPntEeW5hbWljRmllbGRzfXskX30gfSBARmllbGROYW1lczsKICAgIG15ICRSZXR1cm47CiAgICBvaygKICAgICAgICBsaXZlcyB7ICRSZXR1cm4gPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzQ3JlYXRlKEBJbXBvcnRGaWVsZHMpIH0sCiAgICAgICAgJ2ltcG9ydCBkb2VzIG5vdCBkaWUnLAogICAgKSB8fCBkaWFnKCRAKTsKICAgIG9rKCAkUmV0dXJuICYmICRSZXR1cm4tPntTdWNjZXNzfSwgJ2ltcG9ydCByZXBvcnRzIHN1Y2Nlc3MnICk7CgogICAgbXkgJU5ld0ZpZWxkSUQ7CiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lIChARmllbGROYW1lcykgewogICAgICAgIG15ICRJbXBvcnRlZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAkTmFtZSApOwogICAgICAgIG5leHQgTkFNRSB1bmxlc3Mgb2soIElzSGFzaFJlZldpdGhEYXRhKCRJbXBvcnRlZCksICIkTmFtZSBleGlzdHMgYWZ0ZXIgaW1wb3J0IiApOwoKICAgICAgICAkTmV3RmllbGRJRHskTmFtZX0gPSAkSW1wb3J0ZWQtPntJRH07CiAgICAgICAgaXNudCggJEltcG9ydGVkLT57SUR9LCAkRmllbGRJRHskTmFtZX0sICIkTmFtZSBoYXMgYSBuZXcgSUQiICk7CiAgICB9CgogICAgIyBjb21wYXJlIGV2ZXJ5IGltcG9ydGVkIGZpZWxkIHdpdGggdGhlIG9yaWdpbmFsIG9uZQogICAgTkFNRToKICAgIGZvciBteSAkTmFtZSAoQEZpZWxkTmFtZXMpIHsKICAgICAgICBuZXh0IE5BTUUgdW5sZXNzICROZXdGaWVsZElEeyROYW1lfTsKCiAgICAgICAgbXkgJEltcG9ydGVkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBOYW1lID0+ICROYW1lICk7CgogICAgICAgICMgZXhwZWN0ZWQ6IHRoZSBvcmlnaW5hbCBjb25maWcsIHJlZmVyZW5jZXMgdG8gb3RoZXIgZmllbGRzIHBvaW50IHRvIHRoZSBuZXcgSURzCiAgICAgICAgbXkgJEV4cGVjdGVkID0gQ2xvbmUoICRPcmlnaW5hbHskTmFtZX17Q29uZmlnfSApOwogICAgICAgIGlmICggJE9yaWdpbmFseyROYW1lfXtGaWVsZFR5cGV9IGVxICdMZW5zJyApIHsKICAgICAgICAgICAgbXkgJU9sZElEMk5hbWUgPSByZXZlcnNlICVGaWVsZElEOwogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQXR0cmlidXRlREYgUmVmZXJlbmNlREYpKSB7CiAgICAgICAgICAgICAgICBteSAkUmVmZXJlbmNlZE5hbWUgPSAkT2xkSUQyTmFtZXsgJEV4cGVjdGVkLT57JEF0dHJpYnV0ZX0gfTsKICAgICAgICAgICAgICAgICRFeHBlY3RlZC0+eyRBdHRyaWJ1dGV9ID0gJE5ld0ZpZWxkSUR7JFJlZmVyZW5jZWROYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkZWxldGUgJEV4cGVjdGVkLT57UGFydE9mU2V0fTsKCiAgICAgICAgbXkgJEdvdCA9IENsb25lKCAkSW1wb3J0ZWQtPntDb25maWd9ICk7CiAgICAgICAgZGVsZXRlICRHb3QtPntQYXJ0T2ZTZXR9OwoKICAgICAgICBpcygKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICA9PiAkSW1wb3J0ZWQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBGaWVsZFR5cGUgID0+ICRJbXBvcnRlZC0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlID0+ICRJbXBvcnRlZC0+e09iamVjdFR5cGV9LAogICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkR290LAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRPcmlnaW5hbHskTmFtZX17TGFiZWx9LAogICAgICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkT3JpZ2luYWx7JE5hbWV9e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlID0+ICRPcmlnaW5hbHskTmFtZX17T2JqZWN0VHlwZX0sCiAgICAgICAgICAgICAgICBDb25maWcgICAgID0+ICRFeHBlY3RlZCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIiRPcmlnaW5hbHskTmFtZX17RmllbGRUeXBlfSBmaWVsZCAkTmFtZTogaW1wb3J0ZWQgY29uZmlnIG1hdGNoZXMgdGhlIG9yaWdpbmFsIiwKICAgICAgICApOwogICAgfQoKICAgICMgYSBzZWNvbmQgZXhwb3J0IG11c3QgZGVsaXZlciB0aGUgc2FtZSBkYXRhIGFzIHRoZSBmaXJzdCBvbmUKICAgIG15ICRSZWV4cG9ydDsKICAgIG9rKAogICAgICAgIGxpdmVzIHsKICAgICAgICAgICAgJFJlZXhwb3J0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0NvbmZpZ0V4cG9ydCgKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgICAgICAgICAgICA9PiAndmFyJywKICAgICAgICAgICAgICAgIEluY2x1ZGVJbnRlcm5hbEZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgSW5jbHVkZUFsbENvbmZpZ0tleXMgID0+IDAsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgPT4gXEBGaWVsZE5hbWVzLAogICAgICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdIQVNIJywKICAgICAgICAgICAgKTsKICAgICAgICB9LAogICAgICAgICdzZWNvbmQgZXhwb3J0IGRvZXMgbm90IGRpZScsCiAgICApIHx8IGRpYWcoJEApOwoKICAgIGZvciBteSAkTmFtZSAoQEZpZWxkTmFtZXMpIHsKICAgICAgICBteSAlRmlyc3QgPSAkRXhwb3J0LT57JE5hbWV9LT4lKjsKICAgICAgICBkZWxldGUgQEZpcnN0e3F3KENoYW5nZVRpbWUgQ3JlYXRlVGltZSBJRCBJbnRlcm5hbEZpZWxkIFZhbGlkSUQgRmllbGRPcmRlcil9OwogICAgICAgIG15ICVTZWNvbmQgPSAoICRSZWV4cG9ydC0+eyROYW1lfSAvLyB7fSApLT4lKjsKICAgICAgICBkZWxldGUgQFNlY29uZHtxdyhGaWVsZE9yZGVyKX07CgogICAgICAgIGlzKCBcJVNlY29uZCwgXCVGaXJzdCwgIiROYW1lOiBzZWNvbmQgZXhwb3J0IGVxdWFscyB0aGUgZmlyc3QgZXhwb3J0IiApOwogICAgfQp9OwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/StaticLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IHN0YXRpYyB2ZXJzaW9uZWQgbGlua3MKIyBiZXR3ZWVuIENJIGl0ZW1zCiMgZXhhbXBsZSBpcwojICBTdWJzaWRpYXJ5IC0+IHN0YXRpYwojICAgICAgICAgICAgICAgICAodmVyc2lvbmVkKQojICAgICAgICAgICAgICAgICBMb2NhdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBib2lsZXJwbGF0ZQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwoKbXkgJFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4KKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJUNvdW50cnlMb29rdXA7Cm15ICVTdWJzaWRpYXJ5TG9va3VwOwoKIyBhc3N1cmUgc3RkIGNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2xvYmFsIE9NIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRMaW5rT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKIyBjYXRjaCBzdGF0ZSBiZWZvcmUgdGVzdCBydW4KbXkgJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwpteSAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKbXkgJEluaXRpYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZXBhcmUgZW52aXJvbm1lbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBhbmQgc3Vic2lkaWFyeSBjbGFzc2VzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQuIiApOwoKbXkgJFN1YnNpZGlhcnlDbGFzc0lEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ1N1YnNpZGlhcnknLAopOwpvayggJFN1YnNpZGlhcnlDbGFzc0lELCAiU3Vic2lkaWFyeSBjbGFzcyBmb3VuZC4iICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICJVcGRhdGVkIFZlcnNpb25UcmlnZ2VyIG9uIENvdW50cnkgQ2xhc3MgdG8gJ09uTmFtZUNoYW5nZS4nICIKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0IFN0YXRpYyBERiBSZWZlcmVuY2VzIGZvciBMaW5rVHlwZT0nJExpbmtUeXBlJyIgPT4gc3ViIHsKCiAgICAgICAgIyBjcmVhdGUgREYgc2ltaWxhciB0byBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkKICAgICAgICAjIGJ1dCB3aXRoIExpbmtSZWZlcmVuY2luZ1R5cGUgPT4gU3RhdGljIGFuZAogICAgICAgICMgUmVmZXJlbmNlZE9iamVjdFR5cGUgPT4gSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uCiAgICAgICAgb2soCiAgICAgICAgICAgIF9DcmVhdGVERlN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeSggTGlua1R5cGUgPT4gJExpbmtUeXBlICksCiAgICAgICAgICAgICJERiAnU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyBDcmVhdGVkLiIKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSBTdWJzaWRpYXJ5IENsYXNzIERlZiB0byB1c2UgTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5CiAgICAgICAgb2soCiAgICAgICAgICAgIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvblRvVXNlU3RhdGljQ291bnRyeSggTGlua1R5cGUgPT4gJExpbmtUeXBlICksCiAgICAgICAgICAgICdVcGRhdGVkIFN1YnNpZGlhcnkgQ2xhc3MgRGVmaW5pdGlvbiB0byB1c2UgU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5IERGLicKICAgICAgICApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjEKICAgICAgICBteSAkVGVzdExvY2F0aW9uMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1dlbGxibGVjaHNIYXVzZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKICAgICAgICAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMUlEfSA9ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICBvayggJFRlc3RMb2NhdGlvbjFJRCwgIlRlc3RMb2NhdGlvbjEgJyIgLiAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMUlEfSAuICInICgkVGVzdExvY2F0aW9uMUlEKSBjcmVhdGVkLiIgKTsKCiAgICAgICAgc3VidGVzdCAiQXNzZXJ0IHRoZXJlIGlzIDEgdmVyc2lvbiBvZiBUZXN0TG9jYXRpb24xIElEICRUZXN0TG9jYXRpb24xSUQiID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyBnZXQgY3VycmVudCBWZXJzaW9uSUQgZm9yIFRlc3RMb2NhdGlvbgogICAgICAgIG15ICRUZXN0TG9jYXRpb25GaXJzdFZlcnNpb25JRCA9IF9HZXRDb25maWdJdGVtQ3VycmVudFZlcnNpb24oCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkgd2l0aCBhIGxpbmsgdG8gdGVzdGxvY2F0aW9uMSB2MQogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0RlckJhdWVybmhvZicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1TdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbkZpcnN0VmVyc2lvbklECiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgICAgICAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gPSAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICBvaygKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSIgLiAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gLiAiICgkVGVzdFN1YnNpZGlhcnlJRCkgd2l0aCBzdGF0aWMgbGluayB0byAiIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gLiAiIGNyZWF0ZWQuIgogICAgICAgICk7CgogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgU3Vic2lkaWFyeSBoYXMgMSB2ZXJzaW9uIHRoYXQgcG9pbnRzIHRvICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gLiAiJyIgPT4gc3ViIHsKICAgICAgICAgICAgX0Fzc2VydFN1YnNpZGlhcnlWZXJzaW9uc0FuZExvY2F0aW9uKAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uTmFtZSA9PiAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2hhbmdlIFRlc3RMb2NhdGlvbiBOYW1lCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICBteSAkQ291bnRyeURlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvdW50cnlEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgTmFtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseSB0byBOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlELiIKICAgICAgICApOwogICAgICAgICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24xSUR9ID0gIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IHR3byB2ZXJzaW9ucwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgdGhlcmUgYXJlIHR3byB2ZXJzaW9ucyBvZiBUZXN0TG9jYXRpb24xICRUZXN0TG9jYXRpb24xSUQgYWZ0ZXIgbmFtZSBjaGFuZ2UiID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMiBdLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH07CiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgbm93IGxvb2sgYXQgdGhlIFN1YnNpZGlhcnkKICAgICAgICAjIGFnYWluIGFuZCBhc3NlcnQgaXQgKnN0aWxsKgogICAgICAgICMgaGFzIDEgdmVyc2lvbiBhbmQgKnN0aWxsKgogICAgICAgICMgcG9pbnRzIHRvIHN0YXRpYyBMb2NhdGlvbiB2MQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiQXNzZXJ0IFN1YnNpZGlhcnkgKnN0aWxsKiBoYXMgMSB2ZXJzaW9uIGFuZCAqc3RpbGwqIHBvaW50cyB0byAnIiAuICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24xSUR9IC4gIiciID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbk5hbWUgPT4gIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjIKICAgICAgICBteSAkVGVzdExvY2F0aW9uMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1R1bnRlbmhhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24ySUR9ID0gJ1R1bnRlbmhhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQ7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24ySUQsICJUZXN0TG9jYXRpb24yICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjJJRH0gLiAiJ2NyZWF0ZWQuIiApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgdGhlcmUgaXMgb25lIHZlcnNpb24gb2YgVGVzdExvY2F0aW9uMiAkVGVzdExvY2F0aW9uMklEIGFmdGVyIGNyZWF0aW9uIiA9PiBzdWIgewoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgICAgIFZlcnNpb25zICAgPT4gWwogICAgICAgICAgICAgICAgICAgIFsgIlR1bnRlbmhhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgY2hhbmdlIExpbmsgRGlyZWN0aW9uIGluIFN0YXRpY1JlZnJlbmNlVG9DT3VudHJ5IERGCiAgICAgICAgX1VwZGF0ZVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgVmVyc2lvbklEIGZvciBUZXN0TG9jYXRpb24KICAgICAgICBteSAkVGVzdExvY2F0aW9uMkZpcnN0VmVyc2lvbklEID0gX0dldENvbmZpZ0l0ZW1DdXJyZW50VmVyc2lvbigKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24ySUQKICAgICAgICApOwoKICAgICAgICAjIG5vdyB1cGRhdGUgdGhlIHN1YnNpZGlhcnkgbGluayB0byBwb2ludCB0byB0ZXN0bG9jYXRpb24yIGluc3RlYWQKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeSRMaW5rVHlwZSRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJGaXJzdFZlcnNpb25JRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgU3Vic2lkaWFyeSBoYXMgMSB2ZXJzaW9uIGFuZCBub3cgcG9pbnRzIHRvICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjJJRH0gLiAiJyIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbk5hbWUgPT4gIlR1bnRlbmhhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2xlYW51cAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgIHN1YnRlc3QgIkNsZWFudXAgYW5kIGRlbGV0ZSBhbGwgVGVzdCBDb25maWdJdGVtcyIgPT4gc3ViIHsKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdFN1YnNpZGlhcnkgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjIgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgc3VidGVzdCAiYXNzZXJ0IHdlIGRpZG4ndCBsZWFrIGNvbmZpZyBpdGVtcyBhbmQgY29uZmlnIGl0ZW0gbGlua3MiID0+IHN1YiB7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKICAgICAgICAgICAgbXkgJEZpbmFsTGlua1JlbGF0aW9uc0NvdW50ICAgPSBfRmV0Y2hMaW5rUmVsYXRpb25zQ291bnQoKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBoYXZlIGJlZW4gbGVha2VkLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQuIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICJObyBMaW5rT2JqZWN0cyBoYXZlIGJlZW4gbGVha2VkLiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2NlZHVyYWwgaGVscGVyIG1ldGhvZHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBQcmVwYXJlIHRoZSBHZW5lcmFsIENhdGFsb2cgY2xhc3NlcyBieSByZWxvYWRpbmcKIyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbGUKCnN1YiBfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzIHsKCiAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKCiAgICAgICAgIyAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMi55bWwiLAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MaW5rcy91bml0dGVzdC55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkLiIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAqIEZST00gbGlua19yZWxhdGlvbicsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfQ3JlYXRlREZTdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRDb25maWdIYXNoUmVmID0gewogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbIiRDb3VudHJ5Q2xhc3NJRCJdLAogICAgICAgIERpc3BsYXlUeXBlICAgICAgICAgICA9PiAnQ29uZmlnSXRlbU5hbWUnLAogICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSA9PiAnJywKICAgICAgICBMaW5rRGlyZWN0aW9uICAgICAgICAgPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnLAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGUgICA9PiAnU3RhdGljJywKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwKICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICAgPT4gJzAnLAogICAgICAgIE11bHRpc2VsZWN0ICAgICAgICAgICA9PiAwLAogICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICAgICA9PiAnMScsCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdCAgID0+IFtdLAogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlICA9PiAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBTZWFyY2hBdHRyaWJ1dGUgICAgICAgPT4gJ05hbWUnLAogICAgICAgIFRvb2x0aXAgICAgICAgICAgICAgICA9PiAnJywKICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgTGFiZWwgICAgICA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICBOYW1lc3BhY2UgID0+ICdMb2NhdGlvbicsCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbVZlcnNpb24nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBDb25maWcgICAgID0+ICRDb25maWdIYXNoUmVmLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgdG8gdHJpZ2dlciByZW9yZGVyIGZ1bmN0aW9uLCBkZWZhdWx0IDEKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKfQoKc3ViIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvblRvVXNlU3RhdGljQ291bnRyeSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25SZWYgPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57QWRkcmVzc30tPntDb250ZW50fSA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdIZWFkZXInID0+ICdBZGRyZXNzJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1TdHJlZXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUNpdHknCiAgICAgICAgfSwKCiAgICAgICAgIyBoZXJlIGl0IGlzLCB0aGUgY2hhbmdlOgogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTGF0aXR1ZGUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUxvbmdpdHVkZScKICAgICAgICB9CiAgICBdOwoKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICRZQU1MU3RyaW5nID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvblJlZiwKICAgICk7CgogICAgcmV0dXJuICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgICAgIERlZmluaXRpb24gPT4gJFlBTUxTdHJpbmcsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKS0+e1N1Y2Nlc3N9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICAgIFsiV2VsbGJsZWNoc0hhdXNlbiRSYW5kb21JRCIgICAgPT4gMSBdLAojICAgICAgIFsiTmllZGVya2FsdGVua2lyY2hlbiRSYW5kb21JRCIgPT4gMiBdLAojICAgXQojICk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9uSUR9OwoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMb2NhdGlvbklELAogICAgKTsKCiAgICBteSAkVmVyc2lvbkNvdW50ID0gQCRWZXJzaW9uczsKCiAgICBpcygKICAgICAgICBzY2FsYXIgQCRWZXJzaW9uTGlzdFJlZiwKICAgICAgICAkVmVyc2lvbkNvdW50LAogICAgICAgICJDb3VudCBvZiBWZXJzaW9ucyBpcyAkVmVyc2lvbkNvdW50IGZvciBDSSAkTG9jYXRpb25JRC4iCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBmb3IgdmVyc2lvbiAkXyBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgojIGFzc2VydHMgdGhhdCB2ZXJzaW9uIGNvdW50IG9mIFRlc3RMb2NhdGlvbgojIGlzIG9uZSBhbmQgcG9pbnRzIHRvIGZpcnN0IHZlcnNpb24gb2YgQ291bnRyeQoKc3ViIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbiB7CgogICAgbXkgJVBhcmFtICAgICAgICA9IEBfOwogICAgbXkgJExvY2F0aW9uSUQgICA9ICRQYXJhbXtMb2NhdGlvbklEfTsKICAgIG15ICRMb2NhdGlvbk5hbWUgPSAkUGFyYW17TG9jYXRpb25OYW1lfTsKICAgIG15ICRMaW5rVHlwZSAgICAgPSAkUGFyYW17TGlua1R5cGV9OwogICAgbXkgJERpcmVjdGlvbiAgICA9ICRQYXJhbXtEaXJlY3Rpb259IHx8ICdUYXJnZXQnOwoKICAgIG15ICRTdWJzaWRpYXJ5VmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFN1YnNpZGlhcnlWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgVmVyc2lvbnMgICAgICA9PiAkU3Vic2lkaWFyeVZlcnNpb25MaXN0UmVmLAogICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJzEnCiAgICApOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFN1YnNpZGlhcnlWZXJzaW9uTGlzdFJlZiwKICAgICAgICAxLAogICAgICAgICJUaGVyZSBpcyBvbmUgVmVyc2lvbiBvZiBUZXN0U3Vic2lkaWFyeSAkTG9jYXRpb25JRCBWZXJzaW9uICRTdWJzaWRpYXJ5VmVyc2lvbklELiIKICAgICk7CgogICAgbXkgJFRlc3RTdWJzaWRpYXJ5Q0lWZXJzaW9uZW5kID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkTG9jYXRpb25JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRTdWJzaWRpYXJ5VmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJExvY2F0aW9uUmVmSUQgPSAkVGVzdFN1YnNpZGlhcnlDSVZlcnNpb25lbmQtPnsgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1TdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkiIC4gJFBhcmFte0xpbmtUeXBlfSAuICIkUmFuZG9tSUQiIH0tPlswXTsKCiAgICAjIG5vdGUgbG9va3VwIGJ5ICpWZXJzaW9uSUQqCiAgICBteSAkU3RhdGljTG9jYXRpb25DSSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJExvY2F0aW9uUmVmSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlzKAogICAgICAgICRTdGF0aWNMb2NhdGlvbkNJLT57TmFtZX0sCiAgICAgICAgJExvY2F0aW9uTmFtZSwKICAgICAgICAibmFtZSAnJExvY2F0aW9uTmFtZScgaXMgY29ycmVjdCBmb3IgQ0kgVmVyc2lvbklEOiAkTG9jYXRpb25SZWZJRC4iCiAgICApOwoKICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKCiAgICAgICAgI0NvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICAgICBWZXJzaW9uSUQgPT4gJFN1YnNpZGlhcnlWZXJzaW9uSUQsCgogICAgICAgICMgVHlwZXMgICAgICAgID0+IFsgJExpbmtUeXBlIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gPT4gJ0JvdGgnLCAgICAjIG9uZSBvZiBTb3VyY2UsIFRhcmdldCwgQm90aAogICAgICAgIFVzZXJJRCAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBpcyggc2NhbGFyICRMaW5rZWRDb25maWdJdGVtcy0+QCosICAgICAgICAxLCAgICAgICAgICAgICAgJ1RoZXJlIGlzIG9uZSBDSSBsaW5rJyApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57RGlyZWN0aW9ufSwgJERpcmVjdGlvbiwgICAgICJDSSBMaW5rIERpcmVjdGlvbiBpcyAnJERpcmVjdGlvbicuIiApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57VmVyc2lvbklEfSwgJExvY2F0aW9uUmVmSUQsICJDSSBMaW5rIHBvaW50cyB0byAqVmVyc2lvbklEKiAkTG9jYXRpb25SZWZJRC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0dldENvbmZpZ0l0ZW1DdXJyZW50VmVyc2lvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENJID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwogICAgcmV0dXJuICRDSS0+e1ZlcnNpb25JRH07Cn0KCnN1YiBfVXBkYXRlU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5REZMaW5rRGlyZWN0aW9uIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQgKTsKCiAgICBvayggJER5bmFtaWNGaWVsZCwgJ0dvdCBSZWZyZW5jZVRvQ291bnRyeSBERicgKTsKCiAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICRDb25maWdIYXNoUmVmLT57TGlua0RpcmVjdGlvbn0gPSAnUmVmZXJlbmNpbmdJc1RhcmdldCc7CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LCAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgTGFiZWwgICAgICA9PiAnYSBkZXNjcmlwdGlvbicsICAgICAgICAgICMgbWFuZGF0b3J5LCBsYWJlbCB0byBzaG93CiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbVZlcnNpb24nLCAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywgICAgICAgICAjIHRoaXMgY29udHJvbHMgd2hpY2ggb2JqZWN0IHRoZSBkeW5hbWljIGZpZWxkIGxpbmtzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGluZGl2aWR1YWwgYXJ0aWNsZXMsIG90aGVyd2lzZSB0byB0aWNrZXRzCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBwcmV2ZW50IHJlZHVuZGFudCBleGVjdXRpb24gb24gb3JkZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJERiBkZWZpbml0aW9uIHVwZGF0ZWQsIGxpbmsgZGlyZWN0aW9uIGNoYW5nZWQgdG8gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnIC4iICk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgX1N5bmNDb25maWdJdGVtREZzKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfU3luY0NvbmZpZ0l0ZW1ERnMgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRMaW5rVHlwZSA9ICRQYXJhbXtMaW5rVHlwZX07CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gewogICAgICAgICAgICAkU3Vic2lkaWFyeUNsYXNzSUQgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgfSwKICAgICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblN5bmMoKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICByZXR1cm47Cn0K</File>
        <File Location="scripts/test/ITSMConfigItem/TicketAutoLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRlc3QgYXV0byBpbmtzCiMgYmV0d2VlbiBUaWNrZXQgaXRlbXMgYW5kIENJcwojIGV4YW1wbGUgaXMKIyAgVGlja2V0REYgLT4gQ29uZmlnSXRlbVJlZmVyZW5jZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRCYWNrZW5kT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwpteSAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCAgID0gX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBzdWJzaWRpYXJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRTdWJzaWRpYXJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTdWJzaWRpYXJ5JywKKTsKb2soICRTdWJzaWRpYXJ5Q2xhc3NJRCwgIlN1YnNpZGlhcnkgY2xhc3MgZm91bmQiICk7CgojIHBvc3NpYmxlIGxpbmsgdHlwZXMgY29uZmlndXJlZApteSAlUG9zc2libGVUeXBlc0xpc3QgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAopOwoKbXkgQExpbmtUeXBlcyA9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGl0ZXJhdGUgb3ZlciBhdmFpbCBMaW5rVHlwZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKbXkgJFRlc3RTdWJzaWRpYXJ5SUQ7Cm15ICRUaWNrZXRJRDsKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0aW5nIHdpdGggTGlua1R5cGUgJExpbmtUeXBlIiA9PiBzdWIgewoKICAgICAgICBteSAkVHlwZUlEID0gJExpbmtPYmplY3QtPlR5cGVMb29rdXAoCiAgICAgICAgICAgIE5hbWUgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIG15ICVUeXBlRGF0YSA9ICRMaW5rT2JqZWN0LT5UeXBlR2V0KAogICAgICAgICAgICBUeXBlSUQgPT4gJFR5cGVJRCwKICAgICAgICApOwoKICAgICAgICBteSAkSXNQb2ludGVkID0gJFR5cGVEYXRhe1BvaW50ZWR9OwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gX0NyZWF0ZURGUmVmZXJlbmNlVG9DSSggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CiAgICAgICAgb2soICREeW5hbWljRmllbGRDb25maWcsICJERiAkTGlua1R5cGUgQ3JlYXRlZC4iICk7CgogICAgICAgIHN1YnRlc3QgImEpIEF1dG9MaW5rIGdldHMgY3JlYXRlZCIgPT4gc3ViIHsKCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEZXJCYXVlcm5ob2YnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSAkVGVzdFN1YnNpZGlhcnlJRCBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgICAgICRUaWNrZXRJRCA9IF9DcmVhdGVUZXN0VGlja2V0KAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGhlcmUgaXMgb25lIExpbmsgb2YgdHlwZSAkTGlua1R5cGUgdG8gQ0kgJFRlc3RTdWJzaWRpYXJ5SUQuIgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgIHN1YnRlc3QgImIpIGNoYW5nZSBMaW5rIERpcmVjdGlvbiIgPT4gc3ViIHsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSBfVXBkYXRlUmVmZXJlbmNlVG9DSURGTGlua0RpcmVjdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbiA9PiAnUmVmZXJlbmNpbmdJc1RhcmdldCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGhlcmUgaXMgb25lIExpbmsgb2YgdHlwZSAkTGlua1R5cGUgdG8gQ0kgJFRlc3RTdWJzaWRpYXJ5SUQuIgogICAgICAgICAgICApOwoKICAgICAgICB9OwoKICAgICAgICBzdWJ0ZXN0ICJjKSBuZXcgVGlja2V0IHdpdGggbmV3IExpbmtEaXJlY3Rpb24iID0+IHN1YiB7CgogICAgICAgICAgICAkVGlja2V0SUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDJfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUaGVyZSBpcyBvbmUgTGluayBvZiB0eXBlICRMaW5rVHlwZSB0byBDSSAkVGVzdFN1YnNpZGlhcnlJRC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2xlYW51cAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiZCkgQ2xlYW51cCAkTGlua1R5cGUiID0+IHN1YiB7CgogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgICAgICMgY2xlYW51cAogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSBkZWxldGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhbmQgbGlua19yZWxhdGlvbnMKICAgICAgICAgICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgICAgICAgICAgbXkgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwogICAgICAgICAgICBteSAkRmluYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgICAgICAgICAkRmluYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGhhdmUgYmVlbiBsZWFrZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBsaW5rcyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICJObyBMaW5rT2JqZWN0cyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH07Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZC4iICk7CgogICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICk7CgogICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICRDb250ZW50ID0gWyRDb250ZW50XTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJ1VQREFURScsCiAgICApOwoKICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICgkQ291bnQpID0gJERCT2JqZWN0LT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDT1VOVChpZCkgRlJPTSBjb25maWdpdGVtJywKICAgICk7CgogICAgcmV0dXJuICRDb3VudCAvLyAwOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQgewoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENvdW50KGlkKSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwoKICAgIGlmICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICByZXR1cm4gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKc3ViIF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgKiBGUk9NIGxpbmtfcmVsYXRpb24nLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgIHJldHVybiAkQ291bnQ7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0NyZWF0ZURGUmVmZXJlbmNlVG9DSSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZScsCiAgICAgICAgRWRpdEZpZWxkTW9kZSAgICAgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlID0+ICcnLAogICAgICAgIExpbmtEaXJlY3Rpb24gICAgICAgICA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScsCiAgICAgICAgTGlua1R5cGUgICAgICAgICAgICAgID0+ICRQYXJhbXtMaW5rVHlwZX0sICAgICAgICAjJ1JlbGV2YW50VG8nLAogICAgICAgIE11bHRpVmFsdWUgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgTXVsdGlzZWxlY3QgICAgICAgICAgID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lICAgICAgICAgID0+ICcxJywKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0ICAgPT4gW10sCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGUgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgID0+ICdOYW1lJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgPT4gJycsCiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkSUQgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICAgICBMYWJlbCAgICAgID0+ICdDb25maWcgSXRlbSBSZWZlcmVuY2UnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICAgICBGaWVsZE9yZGVyID0+IDQ3MTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgZGlzcGxheSBvcmRlcgogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiAgICAgICAgQ29uZmlnICAgICA9PiAkQ29uZmlnSGFzaFJlZiwKICAgICAgICBSZW9yZGVyICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggSUQgPT4gJElEICk7CiAgICByZXR1cm4gJER5bmFtaWNGaWVsZENvbmZpZzsKfQoKc3ViIF9DaGFuZ2VUaWNrZXREZWZpbml0aW9uQWRkQ29uZmlnSXRlbVJlZkRGIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgKTsKCiAgICBteSAkRGVmaW5pdGlvblJlZiA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CgogICAgIyBhZGQgdGhlIFRpY2tldFJlZiBERgoKICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57QWRkcmVzc30tPntDb250ZW50fSA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdIZWFkZXInID0+ICdBZGRyZXNzJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1TdHJlZXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUNpdHknCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTGF0aXR1ZGUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUxvbmdpdHVkZScKICAgICAgICB9LAoKICAgICAgICAjIGFkZCB0aGlzIG9uZToKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ1RpY2tldFJlZicgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlECiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJFlBTUxTdHJpbmcgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICBEYXRhID0+ICREZWZpbml0aW9uUmVmLAogICAgKTsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkWUFNTFN0cmluZywKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCgogICAgICAgICMgICAgRm9yY2UgICAgICA9PiAxLCAgICAgICAgIyBobQogICAgKS0+e1N1Y2Nlc3N9Owp9CgpzdWIgX0NyZWF0ZVRlc3RUaWNrZXQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gJFBhcmFte1RpdGxlfSwKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3VuaXR0ZXN0QG90b2JvLm9yZycsCiAgICAgICAgT3duZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG9rKCAkVGlja2V0SUQsICJUaWNrZXQgJyRQYXJhbXtUaXRsZX0nICgkVGlja2V0SUQpIGNyZWF0ZWQiICk7CgogICAgb2soCiAgICAgICAgJEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICksCiAgICAgICAgIkRGIFZhbHVlIHNldCB0byAkUGFyYW17Q29uZmlnSXRlbUlEfS4iCiAgICApOwoKICAgIHJldHVybiAkVGlja2V0SUQ7Cn0KCiMgY2FsbCBhcwojIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiMgICBUaWNrZXRJRCA9PiAkVGlja2V0LAojICAgTGlua1R5cGUgPT4gJExpbmtUeXBlLAojICAgTGlua3MgPT4gWwojICAgICAgIFsgU291cmNlID0+ICRTb21lSUQgXSwKIyAgICAgICBbIFNvdXJjZSA9PiAkU29tZUlEIF0sCiMgICAgICAgWyBUYXJnZXQgPT4gJFNvbWVJRCBdLAojIC4uLi4KIyAgIF0KIyApCgpzdWIgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlID0gJFBhcmFte0xpbmtUeXBlfTsKICAgIG15ICRUaWNrZXRJRCA9ICRQYXJhbXtUaWNrZXRJRH07CgogICAgbXkgQExpbmtzICAgICAgICAgICAgID0gJFBhcmFte0xpbmtzfS0+QCo7CiAgICBteSAkRXhwZWN0ZWRMaW5rQ291bnQgPSBzY2FsYXIgQExpbmtzOwoKICAgIG15ICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdCgKICAgICAgICBPYmplY3QgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5ICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBPYmplY3QyICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgIERpcmVjdGlvbiA9PiAnQm90aCcsCiAgICAgICAgVXNlcklEICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIGZvciBteSAkTGluayAoQExpbmtzKSB7CgogICAgICAgIG15ICRMaW5rRGVzdCA9ICRMaW5rLT5bMF07CiAgICAgICAgbXkgJExpbmtlZElEID0gJExpbmstPlsxXTsKICAgICAgICBpZiAoIGV4aXN0cyAkTGlua0xpc3QtPnsnSVRTTUNvbmZpZ0l0ZW0nfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9ICkgewoKICAgICAgICAgICAgbXkgJElEcyA9ICRMaW5rTGlzdC0+eydJVFNNQ29uZmlnSXRlbSd9LT57JExpbmtUeXBlfS0+eyRMaW5rRGVzdH07CgogICAgICAgICAgICByZXR1cm4gMCBpZiAhZXhpc3RzICRJRHMtPnskTGlua2VkSUR9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1VwZGF0ZVJlZmVyZW5jZVRvQ0lERkxpbmtEaXJlY3Rpb24gewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRMaW5rVHlwZSAgICAgID0gJFBhcmFte0xpbmtUeXBlfTsKICAgIG15ICRMaW5rRGlyZWN0aW9uID0gJFBhcmFte0xpbmtEaXJlY3Rpb259IHx8ICdSZWZlcmVuY2luZ0lzU291cmNlJzsKCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICBzdWJ0ZXN0ICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgPT4gc3ViIHsKCiAgICAgICAgb2soICREeW5hbWljRmllbGQsICdUaWNrZXRSZWYgREYgZm91bmQuJyApOwoKICAgICAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sICAgICAgIyBtYW5kYXRvcnkKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLCAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgc2VsZWN0cyB0aGUgREYgYmFja2VuZCB0byB1c2UgZm9yIHRoaXMgZmllbGQKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywgICAgICAgICAgICAgICAgICMgdGhpcyBjb250cm9scyB3aGljaCBvYmplY3QgdGhlIGR5bmFtaWMgZmllbGQgbGlua3MgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgICAgICBDb25maWcgICAgID0+ICRDb25maWdIYXNoUmVmLCAgICAgICAgICAgIyBpdCBpcyBzdG9yZWQgb24gWUFNTCBmb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gaW5kaXZpZHVhbCBhcnRpY2xlcywgb3RoZXJ3aXNlIHRvIHRpY2tldHMKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICBSZW9yZGVyICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHRvIHByZXZlbnQgcmVkdW5kYW50IGV4ZWN1dGlvbiBvbiBvcmRlciBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBvayggJFN1Y2Nlc3MsICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLiIgKTsKCiAgICAgICAgX1N5bmNDb25maWdJdGVtREZzKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKCiAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggSUQgPT4gJER5bmFtaWNGaWVsZC0+e0lEfSApOwogICAgfTsKCiAgICByZXR1cm4gJER5bmFtaWNGaWVsZENvbmZpZzsKfQoKc3ViIF9TeW5jQ29uZmlnSXRlbURGcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlID0gJFBhcmFte0xpbmtUeXBlfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IHsKICAgICAgICAgICAgJFN1YnNpZGlhcnlDbGFzc0lEID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgIH0sCiAgICApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/TicketLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IFRpY2tldCB0byBDSSBpdGVtIGxpbmtpbmUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgYm9pbGVycGxhdGUKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZXBhcmUgZW52aXJvbm1lbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBjbGFzcyBmcm9tIGdlbmVyYWwgY2F0YWxvZwpteSAkQ291bnRyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnQ291bnRyeScsCik7Cm9rKCAkQ291bnRyeUNsYXNzSUQsICJDb3VudHJ5IGNsYXNzIGZvdW5kIiApOwoKIyBhZGQgYSB2ZXJzaW9uIHRyaWdnZXIgdG8gQ291bnRyeSBvbiBOYW1lIGF0dHJpYnV0ZQpvaygKICAgIF9BZGRWZXJzaW9uVHJpZ2dlck9uTmFtZUNoYW5nZVRvQ291bnRyeUNsYXNzKCksCiAgICAnVXBkYXRlZCBWZXJzaW9uVHJpZ2dlcicKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCik7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgaXRlcmF0ZSBvdmVyIGF2YWlsIExpbmtUeXBlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpmb3IgbXkgJExpbmtUeXBlIChATGlua1R5cGVzKSB7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIGNyZWF0ZSBUZXN0TG9jYXRpb24xCiAgICBteSAkVGVzdExvY2F0aW9uMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xIGNyZWF0ZWQiICk7CgogICAgIyBhc3NlcnQgdGhlcmUgaXMgMSB2ZXJzaW9uIHdpdGggZ2l2ZW4gbmFtZQogICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgIF0KICAgICk7CgogICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3RvYm8ub3JnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgb2soICRUaWNrZXRJRCwgJ1RpY2tldCBjcmVhdGVkJyApOwoKICAgICMgY3JlYXRlIGxpbmsgdG8gQ29uZmlnSXRlbQogICAgb2soCiAgICAgICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLCAgICAgICAgICAjJ1JlbGV2YW50VG8nLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKSwKICAgICAgICAnVGlja2V0IExpbmtlZCB0byBDSSBUZXN0TG9jYXRpb24xICgkTGlua1R5cGUpJwogICAgKTsKCiAgICAjIGluc3BlY3QgbGluayBkYXRhCgogICAgbXkgJExpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgIEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICApOwoKICAgIG15ICRTb3VyY2UgPSBleGlzdHMgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1NvdXJjZX0KICAgICAgICA/CiAgICAgICAgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1NvdXJjZX0tPnskVGVzdExvY2F0aW9uMUlEfQogICAgICAgIDoKICAgICAgICAkTGlua0xpc3QtPntJVFNNQ29uZmlnSXRlbX0tPnskTGlua1R5cGV9LT57VGFyZ2V0fS0+eyRUZXN0TG9jYXRpb24xSUR9OwogICAgb2soICRTb3VyY2UsICdGb3VuZCBMaW5rJyApOwoKICAgIGlzKAogICAgICAgICRTb3VyY2UtPntDbGFzc30sCiAgICAgICAgJ0NvdW50cnknLAogICAgICAgICdUaWNrZXQgbGluayBoYXMgY2xhc3MgQ291bnRyeScKICAgICk7CgogICAgaXMoCiAgICAgICAgJFNvdXJjZS0+e05hbWV9LAogICAgICAgICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAnVGlja2V0IGxpbmsgaGFzIGNvcnJlY3QgTG9jYXRpb24gTmFtZScKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjaGFuZ2UgVGVzdExvY2F0aW9uIE5hbWUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBteSAkQ291bnRyeURlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvdW50cnlEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKSwKICAgICAgICAnVGVzdExvY2F0aW9uMSBOYW1lIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LicKICAgICk7CgogICAgIyBjaGVjayBsaW5rIGRhdGEKICAgICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICBLZXkgICAgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgKTsKCiAgICAkU291cmNlID0gZXhpc3RzICRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgPwogICAgICAgICRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9LT57JFRlc3RMb2NhdGlvbjFJRH0KICAgICAgICA6CiAgICAgICAgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1RhcmdldH0tPnskVGVzdExvY2F0aW9uMUlEfTsKCiAgICBvayggJFNvdXJjZSwgJ0ZvdW5kIExpbmsnICk7CgogICAgaXMoCiAgICAgICAgJFNvdXJjZS0+e0NsYXNzfSwKICAgICAgICAnQ291bnRyeScsCiAgICAgICAgJ1RpY2tldCBsaW5rIHN0aWxsIGhhcyBjbGFzcyBDb3VudHJ5JwogICAgKTsKCiAgICBpcygKICAgICAgICAkU291cmNlLT57TmFtZX0sCiAgICAgICAgJ05pZWRlcmthbHRlbmtpcmNoZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICdUaWNrZXQgbGluayBoYXMgY29ycmVjdCBuZXcgTG9jYXRpb24gTmFtZScKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbGVhbnVwCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICksCiAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICk7CgogICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICBpcygKICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7CgogICAgaXMoCiAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkIiApOwoKICAgIHJldHVybjsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1Db3VudCB7CiAgICBteSAoJENvdW50KSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbScsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQgLy8gMDsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDb3VudChpZCkgRlJPTSBjb25maWdpdGVtX2xpbmsnLAogICAgKTsKCiAgICBpZiAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcmV0dXJuICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9IEAkVmVyc2lvbnM7CgogICAgaXMoCiAgICAgICAgc2NhbGFyIEAkVmVyc2lvbkxpc3RSZWYsCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/TicketRef.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyB0ZXN0IFRpY2tldCBERiBSZWZlcmVuY2UKIyB0byBzdGF0aWMgQ29uZmlnSXRlbVZlcnNpb24KCiMgYm9pbGVycGxhdGUKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwoKbXkgJFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4KKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBhc3N1cmUgc3RkIGNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2xvYmFsIE9NIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJFRpY2tldE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cm15ICRCYWNrZW5kT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwpteSAkTGF5b3V0T2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKIyBjYXRjaCBzdGF0ZSBiZWZvcmUgdGVzdCBydW4KbXkgJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwpteSAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiMgcHJlcGFyZSBlbnZpcm9ubWVudAoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBjbGFzcyBmcm9tIGdlbmVyYWwgY2F0YWxvZwpteSAkQ291bnRyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnQ291bnRyeScsCik7Cm9rKCAkQ291bnRyeUNsYXNzSUQsICJDb3VudHJ5IGNsYXNzIGZvdW5kIiApOwoKIyBhZGQgYSB2ZXJzaW9uIHRyaWdnZXIgdG8gQ291bnRyeSBvbiBOYW1lIGF0dHJpYnV0ZQpvaygKICAgIF9BZGRWZXJzaW9uVHJpZ2dlck9uTmFtZUNoYW5nZVRvQ291bnRyeUNsYXNzKCksCiAgICAnVXBkYXRlZCBWZXJzaW9uVHJpZ2dlcicKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIE9iamVjdDIgPT4gJ1RpY2tldCcsCik7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7CgojIGl0ZXJhdGUgb3ZlciBhdmFpbCBMaW5rVHlwZXMKZm9yIG15ICRMaW5rVHlwZSAoQExpbmtUeXBlcykgewoKICAgIHN1YnRlc3QgIlRlc3QgTGlua1R5cGU9JExpbmtUeXBlIiA9PiBzdWIgewoKICAgICAgICAjIGNyZWF0ZSBhIHZlcnNpb25lZCBjb25maWcgaXRlbSByZWZlcmVuY2UgREYgb24gVGlja2V0CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9IF9DcmVhdGVUaWNrZXRERkNvbmZpZ0l0ZW0oIExpbmtUeXBlID0+ICRMaW5rVHlwZSApOwogICAgICAgIG9rKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAnREYgY3JlYXRlZCcKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwoKICAgICAgICAjIGNyZWF0ZSBUZXN0TG9jYXRpb24xCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xIGNyZWF0ZWQiICk7CgogICAgICAgICMgYXNzZXJ0IHRoZXJlIGlzIDEgdmVyc2lvbiB3aXRoIGdpdmVuIG5hbWUKICAgICAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICAjIGdldCBjdXJyZW50IFZlcnNpb25JRCBmb3IgVGVzdExvY2F0aW9uCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFGaXJzdFZlcnNpb25JRCA9IF9HZXRDb25maWdJdGVtQ3VycmVudFZlcnNpb24oCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgbXkgJFRpY2tldElEID0gX0NyZWF0ZVRlc3RUaWNrZXQoCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDFfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgTG9jYXRpb25WZXJzaW9uSUQgID0+ICRUZXN0TG9jYXRpb24xRmlyc3RWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEOiAxIiwKICAgICAgICAgICAgIlRpY2tldCBERiBMb2NhdGlvbiBOYW1lIGlzOiBXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSBUZXN0TG9jYXRpb24gTmFtZQogICAgICAgIG15ICRDb3VudHJ5RGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBvaygKICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ291bnRyeURlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICAgICAgIk5hbWUiICAgICAgID0+ICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApLAogICAgICAgICAgICAnTG9jYXRpb24gTmFtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4nCiAgICAgICAgKTsKCiAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbnMKICAgICAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAxIF0sCiAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAyIF0sCiAgICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICAjIC4uLiBidXQgdGlja2V0IHN0aWxsIHJlZmVyZW5jZXMgdmVyc2lvbiB2MQogICAgICAgIGlzKAogICAgICAgICAgICBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEOiAxIiwKICAgICAgICAgICAgIkRGIFRpdGxlIGlzIFdlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgc3VidGVzdCAiQ2xlYW51cCAkTGlua1R5cGUiID0+IHN1YiB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0TG9jYXRpb24xIGRlbGV0ZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB3ZSBkaWRuJ3QgbGVhayBjb25maWcgaXRlbXMgYW5kIGNvbmZpZyBpdGVtIGxpbmtzCiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50LAogICAgICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICAgICAgKTsKICAgICAgICB9OwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCgojIFByZXBhcmUgdGhlIEdlbmVyYWwgQ2F0YWxvZyBjbGFzc2VzIGJ5IHJlbG9hZGluZwojIChhbmQgdXBkYXRpbmcpIHRoZSB3aG9sZSByZWFkeTJsb2FkIGJ1bmRsZQpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQsICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZCIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0dldFZlcnNpb25JREZyb21WZXJzaW9uU3RyaW5nIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVmVyc2lvbnMgICAgICA9ICRQYXJhbXtWZXJzaW9uc307CiAgICBteSAkVmVyc2lvblN0cmluZyA9ICRQYXJhbXtWZXJzaW9uU3RyaW5nfTsKCiAgICBmb3IgbXkgJFZlcnNpb24gKCAkVmVyc2lvbnMtPkAqICkgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9ICRWZXJzaW9ucy0+QCo7CgogICAgaXMoCiAgICAgICAgc2NhbGFyICRWZXJzaW9uTGlzdFJlZi0+QCosCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICJWZXJzaW9uICRWZXJzaW9uU3RyaW5nIE5hbWUgJyROYW1lJyBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0NyZWF0ZVRpY2tldERGQ29uZmlnSXRlbSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsiJENvdW50cnlDbGFzc0lEIl0sCiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZVZlcnNpb25TdHJpbmcnLAogICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSA9PiAnJywKICAgICAgICBMaW5rRGlyZWN0aW9uICAgICAgICAgPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnLAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGUgICA9PiAnU3RhdGljJywKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwgICAgICAgICAgICAgICAgIyAnUmVsZXZhbnRUbycsCiAgICAgICAgTXVsdGlWYWx1ZSAgICAgICAgICAgID0+ICcwJywKICAgICAgICBNdWx0aXNlbGVjdCAgICAgICAgICAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgICAgPT4gJzEnLAogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3QgICA9PiBbXSwKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZSAgPT4gJ0lUU01Db25maWdJdGVtVmVyc2lvbicsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgID0+ICdOYW1lJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgPT4gJycsCiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkSUQgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIExhYmVsICAgICAgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIEZpZWxkT3JkZXIgPT4gNDcxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgTmFtZXNwYWNlICA9PiAnTG9jYXRpb24nLAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgUmVvcmRlciAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIElEID0+ICRJRCApOwogICAgcmV0dXJuICREeW5hbWljRmllbGRDb25maWc7Cn0KCnN1YiBfR2V0Q29uZmlnSXRlbUN1cnJlbnRWZXJzaW9uIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkQ0kgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICk7CiAgICByZXR1cm4gJENJLT57VmVyc2lvbklEfTsKfQoKc3ViIF9DcmVhdGVUZXN0VGlja2V0IHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgICAgID0+ICRQYXJhbXtUaXRsZX0sCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdG9iby5vcmcnLAogICAgICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBzdWJ0ZXN0ICJUaWNrZXQgY3JlYXRpb24iID0+IHN1YiB7CgogICAgICAgIG9rKCAkVGlja2V0SUQsICdUaWNrZXQgY3JlYXRlZCcgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xvY2F0aW9uVmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApLAogICAgICAgICAgICAnREYgVmFsdWUgc2V0JwogICAgICAgICk7CiAgICB9OwoKICAgIHJldHVybiAkVGlja2V0SUQ7Cn0KCnN1YiBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkVXNlcklELAogICAgICAgIEV4dGVuZGVkICAgICAgPT4gMSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRWYWx1ZSA9ICRUaWNrZXR7ICJEeW5hbWljRmllbGRfTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5IiAuICRQYXJhbXtMaW5rVHlwZX0gLiAiJFJhbmRvbUlEIiB9OwoKICAgIG15ICRSZXN1bHQgPSAkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgKTsKCiAgICByZXR1cm4gJFJlc3VsdC0+e1RpdGxlfTsKfQo=</File>
        <File Location="scripts/test/ITSMConfigItem/DynamicLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IHNpbXBsZSBkeW5hbWljIGxpbmtzCiMgYmV0d2VlbiBDSSBpdGVtcwojIGV4YW1wbGUgaXMKIyAgU3Vic2lkaWFyeSAtPiBMb2NhdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyB0ZXN0IGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIGNhdGNoIERCIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcmVwYXJlIGVudmlyb25tZW50CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGFuZCBzdWJzaWRpYXJ5IGNsYXNzZXMgZnJvbSBnZW5lcmFsIGNhdGFsb2cKbXkgJENvdW50cnlDbGFzc0lEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ0NvdW50cnknLAopOwpvayggJENvdW50cnlDbGFzc0lELCAiQ291bnRyeSBjbGFzcyBmb3VuZC4iICk7CgpteSAkU3Vic2lkaWFyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnU3Vic2lkaWFyeScsCik7Cm9rKCAkU3Vic2lkaWFyeUNsYXNzSUQsICJTdWJzaWRpYXJ5IGNsYXNzIGZvdW5kLiIgKTsKCiMgcG9zc2libGUgbGluayB0eXBlcyBmb3IgQ29uZmlnSXRlbSA8LT4gQ29uZmlnSXRlbQpteSAlUG9zc2libGVUeXBlc0xpc3QgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCik7CgpteSAlQ291bnRyeUxvb2t1cDsKbXkgJVN1YnNpZGlhcnlMb29rdXA7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7Cgpmb3IgbXkgJExpbmtUeXBlIChATGlua1R5cGVzKSB7CgogICAgc3VidGVzdCAiRHluYW1pYyBMaW5rcyB3aXRoIExpbmtUeXBlPSckTGlua1R5cGUnIiA9PiBzdWIgewoKICAgICAgICBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcygKICAgICAgICAgICAgVmFsdWUgPT4gW10KICAgICAgICApOwoKICAgICAgICBfVXBkYXRlUmVmZXJlbmNlVG9Db3VudHJ5REZMaW5rRGlyZWN0aW9uKCBMaW5rRGlyZWN0aW9uID0+ICdSZWZlcmVuY2luZ0lzVGFyZ2V0JyApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY3JlYXRlIFRlc3QgQ29uZmlnIEl0ZW1zCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgZmlyc3QgdGVzdGxvY2F0aW9uCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xICRUZXN0TG9jYXRpb24xSUQgY3JlYXRlZC4iICk7CiAgICAgICAgJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gPSAnV2VsbGJsZWNoc0hhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQ7CgogICAgICAgICMgY3JlYXRlIHNlY29uZCB0ZXN0bG9jYXRpb24KICAgICAgICBteSAkVGVzdExvY2F0aW9uMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ05pZWRlcmthbHRlbmtpcmNoZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKICAgICAgICBvayggJFRlc3RMb2NhdGlvbjJJRCwgIlRlc3RMb2NhdGlvbjIgJFRlc3RMb2NhdGlvbjJJRCBjcmVhdGVkLiIgKTsKICAgICAgICAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMklEfSA9ICdOaWVkZXJrYWx0ZW5raXJjaGVuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGEpIG1ha2UgdXBkYXRlcyB3aXRoIG5vCiAgICAgICAgIyB2ZXJzaW9uIHRyaWdnZXJzCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkgd2l0aCBhIGxpbmsgdG8gdGVzdGxvY2F0aW9uMQogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkiID0+IFsKICAgICAgICAgICAgICAgICRUZXN0TG9jYXRpb24xSUQKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICBvaygKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSAkVGVzdFN1YnNpZGlhcnlJRCB3aXRoIGxpbmsgdG8gVGVzdExvY2F0aW9uMSBjcmVhdGVkLiIKICAgICAgICApOwoKICAgICAgICAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gPSAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgc3VidGVzdCAiYSkgQXNzZXJ0IG9uIENJcyB3aXRoIExpbmtUeXBlICckTGlua1R5cGUnIChubyB2ZXJzaW9uIHRyaWdnZXJzKSIgPT4gc3ViIHsKICAgICAgICAgICAgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnVGFyZ2V0JywKICAgICAgICAgICAgICAgIFRhcmdldElEICAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uSUQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnROb0xlYWtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgKyAxLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBub3cgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsKICAgICAgICAjIHRvIHBvaW50IHRvIHRlc3Rsb2NhdGlvbjIKICAgICAgICAjIGluc3RlYWQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJJRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJhKSBBc3NlcnQgb24gQ0lzIHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScgKG5vIHZlcnNpb24gdHJpZ2dlcnMpIGFmdGVyIENJIFJlZmVyZW5jZVRvQ291bnRyeSBjaGFuZ2UiID0+IHN1YiB7CgogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2hhbmdlIExpbmtEaXJlY3Rpb24KICAgICAgICAjIG9uIFJlZmVyZW5jZVRvQ291bnRyeSBERgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICk7CgogICAgICAgIHN1YnRlc3QgImEpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAobm8gdmVyc2lvbiB0cmlnZ2VycykgYWZ0ZXIgTGlua0RpcmVjdGlvbiBjaGFuZ2VkIHRvICdSZWZlcmVuY2luZ0lzU291cmNlJyIgPT4gc3ViIHsKCiAgICAgICAgICAgICMgdGhpcyBtdXN0IGhhdmUgdXBkYXRlZCB0aGUgRGlyZWN0aW9uIG9mIHRoZSBMaW5rIQogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdTb3VyY2UnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGIpIG5vdyBzZXQgYSB2ZXJzaW9uIHRyaWdnZXIKICAgICAgICAjIG9uIHN1YnNpZGlhcnkgZm9yIGNoYW5nZXMgb2YKICAgICAgICAjIHRoZSBDb3VudHJ5IFJlZmVyZW5jZSBhbmQKICAgICAgICAjIHVwZGF0ZSBhZ2FpbgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIG9rKAogICAgICAgICAgICBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcygKICAgICAgICAgICAgICAgIFZhbHVlID0+IFsiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSJdCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJTZXQgU3Vic2lkaWFyeSBWZXJzaW9uIFRyaWdnZXIgb24gJ1JlZmVyZW5jZVRvQ291bnRyeScgREYuIgogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gcmVmZXJlbmNlIGlzIHRhcmdldAogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnICk7CgogICAgICAgICMgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsgdG8gcG9pbnQgdG8gdGVzdGxvY2F0aW9uMSBhZ2FpbgogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5IiA9PiBbCiAgICAgICAgICAgICAgICAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgIHN1YnRlc3QgImIpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzKSBhZnRlciBMaW5rRGlyZWN0aW9uIGNoYW5nZWQgYmFjayB0byAnUmVmZXJlbmNpbmdJc1RhcmdldCciID0+IHN1YiB7CgogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMiBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnROb0xlYWtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgKyAxLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBERiB1cGRhdGUgY2hhbmdlIGxpbmsgZGlyIG9uCiAgICAgICAgIyBSZWZlcmVuY2VUb0NvdW50cnlERgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICk7CgogICAgICAgIHN1YnRlc3QgImIpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzKSBhZnRlciBMaW5rRGlyZWN0aW9uIGNoYW5nZWQgdG8gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnIiA9PiBzdWIgewoKICAgICAgICAgICAgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgICAgIFRhcmdldElEICAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uSUQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYXNzZXJ0IHRoZXJlIGFyZSBub3cgdHdvIHZlcnNpb24gc25hcHNob3RzCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgIFsgIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiICAgID0+IDIgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0Tm9MZWFrcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zQ291bnQgICAgID0+ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCArIDMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTGlua3NDb3VudCA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ICsgMSwKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsgdG8KICAgICAgICAjIHBvaW50IHRvIHRlc3Rsb2NhdGlvbjEgYWdhaW4KICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJJRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJiKSBBc3NlcnQgb24gQ0lzIHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScgKHdpdGggdmVyc2lvbiB0cmlnZ2VycykgYWZ0ZXIgUmVmZXJlbmNlVG9Db3VudHJ5IGNoYW5nZSIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBUYXJnZXRJRCAgICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgTG9jYXRpb25JRCAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IHRocmVlIHZlcnNpb24gc25hcHNob3RzCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgIFsgIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiICAgID0+IDIgXSwKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAzIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGMpIG5vdyBzZXQgYSB2ZXJzaW9uIHRyaWdnZXIKICAgICAgICAjIG9uIHN1YnNpZGlhcnkgZm9yIGNoYW5nZXMgb2YKICAgICAgICAjIHRoZSBEZWZpbml0aW9uCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgb2soCiAgICAgICAgICAgIF9TZXRWZXJzaW9uVHJpZ2dlck9uU3Vic2lkaWFyeUNsYXNzKAogICAgICAgICAgICAgICAgVmFsdWUgPT4gWyJEZWZpbml0aW9uVXBkYXRlIl0KICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlNldCBTdWJzaWRpYXJ5IFZlcnNpb24gVHJpZ2dlciB0byAnRGVmaW5pdGlvblVwZGF0ZScuIgogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gcmVmZXJlbmNlIGlzIHRhcmdldAogICAgICAgICMgdGhpcyBub3cgdHJpZ2dlcnMgYSBuZXcgdmVyc2lvbgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnICk7CgogICAgICAgIHN1YnRlc3QgImMpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzIG9uIENvdW50cnkgYW5kIERlZmluaXRpb25VcGRhdGUgdHJpZ2dlciBvbiBTdWJzaWRpYXJ5KSIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBUYXJnZXRJRCAgICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgTG9jYXRpb25JRCAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IGZvdXIgdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMiBdLAogICAgICAgICAgICAgICAgICAgIFsgIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiID0+IDMgXSwKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiA0IF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIERGIHVwZGF0ZSBjaGFuZ2UgbGluayBkaXIgb24KICAgICAgICAjIFJlZmVyZW5jZVRvQ291bnRyeURGCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBhbHNvIHRyaWdnZXJzIG5ldyB2ZXJzaW9uCiAgICAgICAgX1VwZGF0ZVJlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiggTGlua0RpcmVjdGlvbiA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScgKTsKCiAgICAgICAgc3VidGVzdAogICAgICAgICAgICAiYykgQXNzZXJ0IG9uIENJcyB3aXRoIExpbmtUeXBlICckTGlua1R5cGUnICh3aXRoIHZlcnNpb24gdHJpZ2dlcnMgb24gQ291bnRyeSBhbmQgU3Vic2lkaWFyeSkgYWZ0ZXIgTGlua0RpcmVjdGlvbiBjaGFuZ2VkIHRvICdSZWZlcmVuY2luZ0lzU291cmNlJyIgPT4gc3ViIHsKCiAgICAgICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAyIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiID0+IDMgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gNCBdLAogICAgICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiA1IF0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTGlua3NDb3VudCA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ICsgMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiQ2xlYW51cCBMaW5rVHlwZT0nJExpbmtUeXBlJzogZGVsZXRlIGFsbCB0ZXN0IENJIG9iamVjdHMiID0+IHN1YiB7CiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5IGRlbGV0ZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdExvY2F0aW9uMiBkZWxldGVkIgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgIHN1YnRlc3QgIkFzc2VydCBubyBDSSBpdGVtcyBhbmQgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIgPT4gc3ViIHsKICAgICAgICAgICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAoKICAgICAgICAgICAgICAgICMgVHlwZXMgICAgICAgID0+IFsgJExpbmtUeXBlIF0sICMgb3B0aW9uYWwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiA9PiAnQm90aCcsICAgICMgb25lIG9mIFNvdXJjZSwgVGFyZ2V0LCBCb3RoCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKCBzY2FsYXIgJExpbmtlZENvbmZpZ0l0ZW1zLT5AKiwgMCwgJ1RoZXJlIGFyZSBubyBDSSBsaW5rcyBsZWZ0JyApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhZ2FpbiwgYWZ0ZXIgY2xlYW51cAogICAgICAgICAgICBfQXNzZXJ0Tm9MZWFrcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zQ291bnQgICAgID0+ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgIH07Cn0KZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIFByZXBhcmUgdGhlIEdlbmVyYWwgQ2F0YWxvZyBjbGFzc2VzIGJ5IHJlbG9hZGluZyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbAoKc3ViIF9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMgewoKICAgIG15ICRIb21lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAoKICAgICAgICAjICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZC4iICk7CgogICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICk7CgogICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICRDb250ZW50ID0gWyRDb250ZW50XTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJ1VQREFURScsCiAgICApOwoKICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICgkQ291bnQpID0gJERCT2JqZWN0LT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDT1VOVChpZCkgRlJPTSBjb25maWdpdGVtJywKICAgICk7CgogICAgcmV0dXJuICRDb3VudCAvLyAwOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENvdW50KGlkKSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwoKICAgIGlmICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICByZXR1cm4gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcyB7CgogICAgbXkgJVBhcmFtID0gQF87CiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiAkVmFsdWUsCiAgICApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgIHJldHVybiAkUmVzdWx0Owp9CgojIGNhbGwgbGlrZQojIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiMgICAgTG9jYXRpb25JRCA9PiAkVGVzdExvY2FpdG9uMUlELAojICAgIFZlcnNpb25zID0+IFsKIyAgICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgICBbIk5pZWRlcmthbHRlbmtpcmNoZW4kUmFuZG9tSUQiID0+IDIgXSwKIyAgICAgXQojKTsKCnN1YiBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uIHsKCiAgICBteSAlUGFyYW0gICAgICA9IEBfOwogICAgbXkgJFZlcnNpb25zICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJExvY2F0aW9uSUQgPSAkUGFyYW17TG9jYXRpb25JRH07CgogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25ab29tTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2F0aW9uSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uQ291bnQgPSBAJFZlcnNpb25zOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFZlcnNpb25MaXN0UmVmLAogICAgICAgICRWZXJzaW9uQ291bnQsCiAgICAgICAgIkNvdW50IG9mIFZlcnNpb25zIGlzICRWZXJzaW9uQ291bnQgZm9yICIgLiAkU3Vic2lkaWFyeUxvb2t1cHskTG9jYXRpb25JRH0gLiAiICgkTG9jYXRpb25JRCkiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRSZWZlcmVuY2VkQ29uZmlnSXRlbUlEID0gJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkLT57IkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkifS0+WzBdOwoKICAgICAgICBteSAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUmVmZXJlbmNlZENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICJWZXJzaW9uICIgLiAoICRfICsgMSApIC4gIiBSZWZlcmVuY2VUb0NvdW50cnkgREYgUG9pbnRzIHRvICckTmFtZScuIgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX1VwZGF0ZVJlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkUGFyYW17TGlua0RpcmVjdGlvbn0gfHwgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgKTsKCiAgICBvayggJER5bmFtaWNGaWVsZCwgJ1JlZmVyZW5jZVRvQ291bnRyeSBERiBmb3VuZC4nICk7CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfTsKCiAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LCAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgTGFiZWwgICAgICA9PiAnYSBkZXNjcmlwdGlvbicsICAgICAgICAgICMgbWFuZGF0b3J5LCBsYWJlbCB0byBzaG93CiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbScsICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywgICAgICAgICAjIHRoaXMgY29udHJvbHMgd2hpY2ggb2JqZWN0IHRoZSBkeW5hbWljIGZpZWxkIGxpbmtzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGluZGl2aWR1YWwgYXJ0aWNsZXMsIG90aGVyd2lzZSB0byB0aWNrZXRzCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBwcmV2ZW50IHJlZHVuZGFudCBleGVjdXRpb24gb24gb3JkZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJSZWZlcmVuY2VUb0NvdW50cnkgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgKTsKCiAgICBfU3luY0NvbmZpZ0l0ZW1ERnMoKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfU3luY0NvbmZpZ0l0ZW1ERnMgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IHsKICAgICAgICAgICAgJFN1YnNpZGlhcnlDbGFzc0lEID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgIH0sCiAgICApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJERpcmVjdGlvbiAgICA9ICRQYXJhbXtEaXJlY3Rpb259OwogICAgbXkgJFRhcmdldElEICAgICA9ICRQYXJhbXtUYXJnZXRJRH07CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAoKICAgICAgICAjIFR5cGVzICAgICAgICA9PiBbICRMaW5rVHlwZSBdLCAjIG9wdGlvbmFsCiAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywgICAgIyBvbmUgb2YgU291cmNlLCBUYXJnZXQsIEJvdGgKICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgaXMoIHNjYWxhciAkTGlua2VkQ29uZmlnSXRlbXMtPkAqLCAgICAgICAgICAgMSwgICAgICAgICAgJ1RoZXJlIGlzIG9uZSBDSSBsaW5rIGZvciAnIC4gJFN1YnNpZGlhcnlMb29rdXB7JENvbmZpZ0l0ZW1JRH0gKTsKICAgIGlzKCAkTGlua2VkQ29uZmlnSXRlbXMtPlswXS0+e0RpcmVjdGlvbn0sICAgICREaXJlY3Rpb24sICJDSSBMaW5rIERpcmVjdGlvbiBpcyAnJERpcmVjdGlvbicuIiApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57Q29uZmlnSXRlbUlEfSwgJFRhcmdldElELCAgIkNJIExpbmsgcG9pbnRzIHRvIiAuICRDb3VudHJ5TG9va3VweyRUYXJnZXRJRH0gLiAiICgkVGFyZ2V0SUQpLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfQXNzZXJ0Tm9MZWFrcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJEV4cGVjdGVkQ29uZmlnSXRlbXNDb3VudCAgICAgPSAkUGFyYW17Q29uZmlnSXRlbXNDb3VudH07CiAgICBteSAkRXhwZWN0ZWRDb25maWdJdGVtTGlua3NDb3VudCA9ICRQYXJhbXtDb25maWdJdGVtTGlua3NDb3VudH07CgogICAgbXkgJEN1cnJlbnRDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgbXkgJEN1cnJlbnRDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgogICAgaXMoCiAgICAgICAgJEN1cnJlbnRDb25maWdJdGVtc0NvdW50LAogICAgICAgICRFeHBlY3RlZENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgIk5vIENJIGhhdmUgYmVlbiBsZWFrZWQiCiAgICApOwoKICAgIGlzKAogICAgICAgICRDdXJyZW50Q29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgJEV4cGVjdGVkQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQiCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIF9Bc3NlcnRMb2NhdGlvbklEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTG9jYXRpb25JRCAgID0gJFBhcmFte0xvY2F0aW9uSUR9OwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgIG15ICRVcGRhdGVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJFRlc3RMb2NhdGlvbklkID0gJFVwZGF0ZWQtPnsiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSJ9LT5bMF07CiAgICBpcygKICAgICAgICAkVGVzdExvY2F0aW9uSWQsCiAgICAgICAgJExvY2F0aW9uSUQsCiAgICAgICAgIkNJIFJlZmVyZW5jZVRvQ291bnR5IERGIGdvdCB1cGRhdGVkIHRvICIgLiAkQ291bnRyeUxvb2t1cHskTG9jYXRpb25JRH0gLiAiICgkTG9jYXRpb25JRCkiCiAgICApOwoKICAgIHJldHVybjsKfQo=</File>
        <File Location="scripts/test/ITSMConfigItemLinkTest.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJFNlcnZpY2VPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkTGlua09iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJENvbmZpZ0l0ZW1OYW1lID0gIlVuaXRUZXN0Q29uZmlnSXRlbV8kUmFuZG9tSUQiOwpteSAkU2VydmljZU5hbWUgICAgPSAiVW5pdFRlc3RTZXJ2aWNlXyRSYW5kb21JRCI7CgpzdWIgQ2hlY2tFeHBlY3RlZFJlc3VsdHMgewogICAgbXkgKCVQYXJhbSkgPSBAXzsKCiAgICBteSAlRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9ICV7ICRQYXJhbXtFeHBlY3RlZEluY2lkZW50U3RhdGVzfSB9OwogICAgbXkgJU9iamVjdE5hbWVTdWZmaXgySUQgICAgPSAleyAkUGFyYW17T2JqZWN0TmFtZVN1ZmZpeDJJRH0gfTsKCiAgICAjIGNoZWNrIHRoZSByZXN1bHRzCiAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQga2V5cyAlRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyApIHsKCiAgICAgICAgaWYgKCAkT2JqZWN0IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHskT2JqZWN0fS0+eyROYW1lU3VmZml4fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgIkNoZWNrIGluY2lkZW50IHN0YXRlIG9mIGNvbmZpZyBpdGVtICROYW1lU3VmZml4LiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9iamVjdCBlcSAnU2VydmljZScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBzZXJ2aWNlIGRhdGEgKGluY2x1ZGluZyB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSkKICAgICAgICAgICAgICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICAkRXhwZWN0ZWRJbmNpZGVudFN0YXRlc3skT2JqZWN0fS0+eyROYW1lU3VmZml4fSwKICAgICAgICAgICAgICAgICAgICAiQ2hlY2sgaW5jaWRlbnQgc3RhdGUgb2Ygc2VydmljZSAkTmFtZVN1ZmZpeC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIERvbmUgZm9yIHNlY29uZCBydW4gKGFmdGVyIHJlY2FsY3VsYXRpb24pLgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1JlY2FsY3VsYXRlfTsKCiAgICAjIFRyaWdnZXIgcmVjYWxjdWxhdGlvbiBvZiBpbmNpZGVudCBzdGF0ZXMgZm9yIGVhY2ggY29uZmlnIGl0ZW0uCiAgICBteSAkRXhpdENvZGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlJyktPkV4ZWN1dGUoKTsKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGUgZXhpdCBjb2RlIgogICAgKTsKCiAgICAjIENoZWNrIHJlc3VsdHMgYWdhaW4gYWZ0ZXIgcmVjYWxjdWxhdGlvbiAoY2FsbCBteXNlbGYgcmVjdXJzaXZlbHkpLgogICAgIyBUaGVyZSBpcyBubyBjaGFuZ2UgaW4gdGhlIGV4cGVjdGVkIHJlc3VsdC4KICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZWNhbGN1bGF0ZSA9PiAxLAogICAgKTsKCiAgICAjIERvbmUsIHR3byBydW5zIHdlcmUgZXhlY3V0ZWQKICAgIHJldHVybiAxOwp9CgojIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCik7Cm15ICVEZXBsU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskRGVwbFN0YXRlTGlzdH07CgojIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0Cm15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKKTsKbXkgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRJbmNpU3RhdGVMaXN0fTsKCiMgRGVmaW5pdGlvbnMgYXJlIGFkZGVkIGFzIFlBTUwgc3RyaW5ncwojIGRlZmluZSB0aGUgZmlyc3QgdGVzdCBkZWZpbml0aW9uIChiYXNpYyBkZWZpbml0aW9uIHdpdGhvdXQgRHluYW1pY0ZpZWxkcykKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9ucyA9ICg8PCdFTkRfWUFNTCcpOwotLS0KUGFnZXM6CiAgLSBOYW1lOiBQYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IFNlY3Rpb24xCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQogIC0gTmFtZTogUGFnZTIKICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IFNlY3Rpb24yCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMgoKU2VjdGlvbnM6CiAgU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMSIKICBTZWN0aW9uMjoKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAyIgpFTkRfWUFNTAoKIyBhZGQgYSBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAxLAopOwpvayggJENvbmZpZ0l0ZW1Hcm91cElELCAnZ290IGdyb3VwIGlkIGZvciBpdHNtLWNvbmZpZ2l0ZW0nICk7CgojIGFkZCB0aGUgdGVzdCBjbGFzc2VzLCBhY3R1YWxseSBvbmx5IG9uZSB0ZXN0IGNsYXNzCm15ICggQENvbmZpZ0l0ZW1DbGFzc0lEcywgQENvbmZpZ0l0ZW1DbGFzc2VzLCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMgKTsKZm9yIG15ICREZWZpbml0aW9uIChAQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEOwogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICRDbGFzc05hbWU7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CiAgICBvayggJENsYXNzSUQsICJBZGRlZCBjbGFzcyAkQ2xhc3NOYW1lIHRvIHRoZSBnZW5lcmFsIGNhdGFsb2ciICk7CgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1Blcm1pc3Npb24nLAogICAgICAgIFZhbHVlICA9PiBbJENvbmZpZ0l0ZW1Hcm91cElEXSwKICAgICk7CgogICAgIyBTZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10sCiAgICApOwoKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENsYXNzSUQ7CgogICAgIyBhZGQgYSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcwogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgICAgICAiQWRkZWQgYSBkZWZpbml0aW9uLCBzdWNjZXNzIHdhcyByZXBvcnRlZCIgKTsKICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgIkFkZGVkIGEgZGVmaW5pdGlvbiwgZ290IGEgZGVmaW5pdGlvbiBJRCIgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfTsKfQoKIyBnZXQgZGVmaW5pdGlvbiBmb3IgJ1Rlc3QnIGNsYXNzCm15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCik7CnJlZl9vayggJERlZmluaXRpb25SZWYsICdIQVNIJywgJ2FkZGVkIGRlZmluaXRpb24gY291bGQgYmUgcmV0cmlldmVkJyApOwoKbXkgJU9iamVjdE5hbWVTdWZmaXgySUQ7CgojIGNyZWF0ZSBzb21lIHRlc3QgY29uZmlnIGl0ZW1zLCBhbGwgdGhlIGNvbmZpZyBpdGVtcyBhcmUgb3BlcmF0aW9uYWwgaW5pdGlhbGx5CmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gNywgcXcoQSBCIEMgRCBFIEYgRykgKSB7CgogICAgIyBhZGQgYSBjb25maWdpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gam9pbiggJ18nLCAkQ29uZmlnSXRlbU5hbWUsICdUZXN0SXRlbScsICROYW1lU3VmZml4ICksCiAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkQ29uZmlnSXRlbUlELCAiQWRkZWQgY29uZmlnaXRlbSBpZCAkQ29uZmlnSXRlbUlELiIgKTsKCiAgICAjIHJlbWVtYmVyIHRoZSBjb25maWcgaXRlbSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9ID0gJENvbmZpZ0l0ZW1JRDsKfQoKIyBjcmVhdGUgc2VydmljZXMKbXkgQFNlcnZpY2VJRHM7CmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gMiApIHsKCiAgICBteSAkU2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFNlcnZpY2VOYW1lIC4gJ18nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIFR5cGVJRCAgICAgID0+IDEsCiAgICAgICAgQ3JpdGljYWxpdHkgPT4gJzMgbm9ybWFsJywKICAgICk7CiAgICBvayggJFNlcnZpY2VJRCwgIkFkZGVkIHNlcnZpY2UgaWQgJFNlcnZpY2VJRC4iICk7CgogICAgIyByZW1lbWJlciB0aGUgc2VydmljZSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7U2VydmljZX0tPnskTmFtZVN1ZmZpeH0gPSAkU2VydmljZUlEOwoKICAgIHB1c2ggQFNlcnZpY2VJRHMsICRTZXJ2aWNlSUQ7Cn0KCiMgcmVhZCB0aGUgb3JpZ2luYWwgc2V0dGluZyBmb3IgSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbgpteSAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgojIHNldCBuZXcgY29uZmlnIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJywKICAgIFZhbHVlID0+IHsKICAgICAgICBEZXBlbmRzT24gPT4gJ1RhcmdldCcsCiAgICAgICAgSW5jbHVkZXMgID0+ICdUYXJnZXQnLAogICAgfSwKKTsKCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIERpYWdyYW0KIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIwojCiMgICAgICAgICAgICAgICAgICAgICA2ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2UgMQojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgQyA8KioqKioqKiogNSAtLS0tLS0+IDQgLS0tLS0tPiAzIC0tLS0tLT4gMSAqKioqKioqKio+IEEgKioqKioqKj4gRiAqKioqKioqKioqPiBHCiMgICAgICAgICAqICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICBeCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBCICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICB2ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB2ICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICBEICoqKioqKioqPiA3ICAgICAgICAgICAgICAgICAgICstLS0tLS0tPiAyICoqKioqKioqKioqKiAgICAgICAgICBFCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlIDIKIwojCiMKIwojICBFeHBsYW5hdGlvbjoKIyAgICAgICAgICAgICAgIDEgLi4gNyBhbmQgQSAuLiBHIGFyZSBJVFNNQ29uZmlnSXRlbXMuIFRoZSBhcnJvdyBpbmRpY2F0ZXMgaG93IGluY2lkZW50cyBhbmQgd2FybmluZ3MKIyAgICAgICAgICAgICAgIGFyZSBwcm9wYWdhdGVkIGluIHRoZSBncmFwaC4KIwojICAgICAgICAgICAgICAgRGVwZW5kc09uIHJlbGF0aW9uc2hpcHMgYXJlIHNob3duIGFzIC0tLS0tPgojICAgICAgICAgICAgICAgSW5jbHVkZXMgIHJlbGF0aW9uc2hpcHMgYXJlIHNob3duIGFzICoqKioqPgojCiMgICAgICAgICAgICAgICBUaGUgY29uZmlnIGl0ZW0gNSAoU291cmNlKSBoYXMgYSBEZXBlbmRzT24gcmVsYXRpb25zaGlwIHdpdGggY29uZmlnIGl0ZW0gNiAoVGFyZ2V0KS4KIyAgICAgICAgICAgICAgIFdoZW4gNiBoYXMgYW4gaW5jaWRlbnQgdGhlbiB0aGUgd2FybmluZyBmbGFnIG11c3QgYmUgcmFpc2VkIG9uIDUuIFRoZXJlZm9yZSB0aGUgZGlyZWN0aW9uCiMgICAgICAgICAgICAgICBvZiBwcm9wYWdhdGlvbiBmb3IgRGVwZW5kc09uIG11c3QgYmUgZnJvbSBUYXJnZXQgdG8gU291cmNlLiBJbiB0aGUgY29kZSB0aGlzIGlzIGluZGljYXRlZAojICAgICAgICAgICAgICAgYnkgIkRpcmVjdGlvbiA9PiAnU291cmNlJy4KIwojICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgZGVmaW5lIHRoZSBsaW5rcyBiZXR3ZWVuIENJcyBhbmQgU2VydmljZXMKbXkgJUxpbmtzID0gKAogICAgRGVwZW5kc09uID0+IHsKICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICc3JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzUnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzYnID0+IHsgICAgIyA2IGlzIHRoZSB0YXJnZXQgZm9yIERlcGVuZHNPbgogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc1J10sICAgICMgNSBpcyB0aGUgc291cmNlIG9mIERlcGVuZHNPbgogICAgICAgICAgICB9LAogICAgICAgICAgICAnNScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc0J10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICc0JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzMnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzMnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsgJzEnLCAnMicgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzInID0+IHsKICAgICAgICAgICAgICAgIFNlcnZpY2UgPT4gWycyJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgJzEnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnMSddLAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH0sCiAgICBJbmNsdWRlcyA9PiB7CiAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAnNScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydDJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdDJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0QnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0QnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnNyddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQicgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWycyJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICcyJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0EnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzEnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnQSddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydGJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdGJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0cnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0UnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnRiddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAopOwoKIyBsaW5rIHRoZSBjb25maWcgaXRlbXMgYW5kIHNlcnZpY2VzIGFzIHNob3duIGluIHRoZSBkaWFncmFtCmZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJUxpbmtzICkgewogICAgZm9yIG15ICRUYXJnZXRPYmplY3QgKCBzb3J0IGtleXMgJExpbmtzeyRMaW5rVHlwZX0tPiUqICkgewogICAgICAgIGZvciBteSAkVGFyZ2V0S2V5ICggc29ydCBrZXlzICRMaW5rc3skTGlua1R5cGV9LT57JFRhcmdldE9iamVjdH0tPiUqICkgewogICAgICAgICAgICBmb3IgbXkgJFNvdXJjZU9iamVjdCAoIHNvcnQga2V5cyAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPiUqICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRTb3VyY2VLZXkgKCAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPnskU291cmNlT2JqZWN0fS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBsaW5rcwogICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAkU291cmNlT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JFNvdXJjZU9iamVjdH0tPnskU291cmNlS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICRUYXJnZXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHskVGFyZ2V0T2JqZWN0fS0+eyRUYXJnZXRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBvayggJFN1Y2Nlc3MsICJMaW5rQWRkKCkgLSAkU291cmNlT2JqZWN0OiRTb3VyY2VLZXkgbGlua2VkIHdpdGggJFRhcmdldE9iamVjdDokVGFyZ2V0S2V5IHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScuIiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgojIHNldCBDSTYgdG8gIkluY2lkZW50IiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMKc3VidGVzdCAnQ0k2IHNldCB0byBJbmNpZGVudCB3aXRoIENvbmZpZ0l0ZW1VcGRhdGUoKScgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gNjsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ0luY2lkZW50JzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkVmVyc2lvbklELCAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiApOwoKICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2UgMSBkZXBlbmRzIG9uIDMKICAgICAgICAgICAgICAgICcyJyA9PiAnV2FybmluZycsICAgICAgICMgYmVjYXVzZSAyIGRlcGVuZHMgb24gMwogICAgICAgICAgICAgICAgJzMnID0+ICdXYXJuaW5nJywgICAgICAgIyBiZWNhdXNlIDMgZGVwZW5kcyBvbiA0CiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2UgNCBkZXBlbmRzIG9uIDUKICAgICAgICAgICAgICAgICc1JyA9PiAnV2FybmluZycsICAgICAgICMgYmVjYXVzZSA1IGRlcGVuZHMgb24gNgogICAgICAgICAgICAgICAgJzYnID0+ICdJbmNpZGVudCcsICAgICAgIyBiZWNhdXNlIGl0IHdhcyBleHBsaWNpdGx5IHNldAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2Ugb2YgY29ubmVjdGlvbiB3aXRoIENJIDEKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwp9OwoKIyBzZXQgQ0k2IGJhY2sgdG8gIk9wZXJhdGlvbmFsIiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMKc3VidGVzdCAnQ0k2IHNldCB0byBiYWNrIHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCgpJyA9PiBzdWIgewogICAgbXkgJE5hbWVTdWZmaXggICAgPSA2OwogICAgbXkgJEluY2lkZW50U3RhdGUgPSAnT3BlcmF0aW9uYWwnOwoKICAgICMgY2hhbmdlIGluY2lkZW50IHN0YXRlCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRPYmplY3ROYW1lU3VmZml4MklEe0lUU01Db25maWdJdGVtfS0+eyROYW1lU3VmZml4fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lIC4gJ19UZXN0SXRlbV8nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkVmVyc2lvbklELCAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiApOwoKICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzMnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc1JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdBJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPYmplY3ROYW1lU3VmZml4MklEID0+IFwlT2JqZWN0TmFtZVN1ZmZpeDJJRCwKICAgICk7Cgp9OwoKIyBzZXQgQ0kxIHRvICJJbmNpZGVudCIgYW5kIGNoZWNrIHRoZSByZXN1bHRzCnN1YnRlc3QgJ0NJMSBzZXQgdG8gSW5jaWRlbnQgd2l0aCBWZXJzaW9uQWRkKCknID0+IHN1YiB7CiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDE7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX1Rlc3RJdGVtXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgb2soICRWZXJzaW9uSUQsICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iICk7CgogICAgQ2hlY2tFeHBlY3RlZFJlc3VsdHMoCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc0JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzUnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdHJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKfTsKCiMgc2V0IENJNSB0byAiSW5jaWRlbnQiIGFuZCBjaGVjayB0aGUgcmVzdWx0cyAoQ0kxIGlzIHN0aWxsIGluICJJbmNpZGVudCIpCnN1YnRlc3QgJ0NJNiBzZXQgdG8gSW5jaWRlbnQgd2l0aCBWZXJzaW9uQWRkKCknID0+IHN1YiB7CiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDU7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX1Rlc3RJdGVtXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgb2soICRWZXJzaW9uSUQsICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iICk7CgogICAgQ2hlY2tFeHBlY3RlZFJlc3VsdHMoCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzInID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICczJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzUnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnQScgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0QnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdHJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKCn07CgojIHNldCBDSTEgdG8gIk9wZXJhdGlvbmFsIiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMgKENJNSBpcyBzdGlsbCBpbiAiSW5jaWRlbnQiKQpzdWJ0ZXN0ICdDSTEgc2V0IHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCcgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gMTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfVGVzdEl0ZW1fJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFZlcnNpb25JRCwgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIgKTsKCiAgICBDaGVja0V4cGVjdGVkUmVzdWx0cygKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICcyJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzQnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICc1JyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKfTsKCiMgc2V0IENJNSB0byAiT3BlcmF0aW9uYWwiIGFuZCBjaGVjayB0aGUgcmVzdWx0cwpzdWJ0ZXN0ICdDSTUgc2V0IHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCcgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gNTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfVGVzdEl0ZW1fJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFZlcnNpb25JRCwgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIgKTsKCiAgICBDaGVja0V4cGVjdGVkUmVzdWx0cygKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICczJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzQnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc2JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwp9OwoKIyByZXNldCB0aGUgZW5hYmxlZCBzZXR0aW5nIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZQokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbicsCiAgICBWYWx1ZSA9PiAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nLAopOwoKIyBDaGVjayBDSSdzIGluY2lkZW50IHN0YXRlIHVwZGF0ZSBhZnRlciAnTGlua0FkZCcgYWN0aW9uIChzZWUgYnVnIzE0MzgyKS4KZGlhZyAiVGVzdHMgZm9yIFNldEluY2lkZW50U3RhdGVPbkxpbmsiOwoKIyBTZXQgc29tZSBjb25maWdzIGZvciBsaW5rIHN0YXR1cy4KJENvbmZpZ09iamVjdC0+U2V0KAogICAgVmFsaWQgPT4gMSwKICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6U2V0SW5jaWRlbnRTdGF0ZU9uTGluaycsCiAgICBWYWx1ZSA9PiAxLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzJywKICAgIFZhbHVlID0+IFsnUHJvZHVjdGlvbiddLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcycsCiAgICBWYWx1ZSA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJywgJ09wZXJhdGlvbmFsJyBdLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMnLAogICAgVmFsdWUgPT4gewogICAgICAgIFJlbGV2YW50VG8gPT4gJ0luY2lkZW50JywKICAgIH0sCik7CiRDb25maWdPYmplY3QtPlNldCgKICAgIFZhbGlkID0+IDEsCiAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OlRpY2tldFR5cGVzJywKICAgIFZhbHVlID0+IFsnSW5jaWRlbnQnXSwKKTsKCiRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiMgVGhlIHRpY2tldCB0eXBlICdJbmNpZGVudCcgaXMgdXNlZCBmb3IgdGVzdGluZy4KIyBUaGUgdHlwZSBuZWVkcyB0byBiZSBjcmVhdGVkIHdoZW4gaXQgZG9lcyBub3QgZXhpc3QuCm15ICRJbmNpZGVudFR5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVBZGQoCiAgICBOYW1lICAgID0+ICdJbmNpZGVudCcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAoICFkZWZpbmVkICRJbmNpZGVudFR5cGVJRCB8fCAkSW5jaWRlbnRUeXBlSUQgKSwgInRpY2tldCB0eXBlIEluY2lkZW50IGNyZWF0ZWQsIG9yIGl0IGFscmVhZHkgZXhpc3RlZCIgKTsKCiMgQ3JlYXRlIHRlc3QgdGlja2V0LgpteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICAgICAgPT4gIlROLSRSYW5kb21JRCIsCiAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICBUeXBlICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKb2soICRUaWNrZXRJRCwgIlRpY2tldElEICRUaWNrZXRJRCBpcyBjcmVhdGVkIiApOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICJDSS0wMS0kUmFuZG9tSUQiLAogICAgICAgIERlcGxTdGF0ZUlEICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDItJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDMtJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnUmVsZXZhbnRUbycsCiAgICAgICAgRXhwZWN0ZWRJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gIkNJLTA0LSRSYW5kb21JRCIsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKKTsKCm15IEBDSUlEczsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgc3VidGVzdCAkVGVzdC0+e05hbWV9ID0+IHN1YiB7CgogICAgICAgICMgQ3JlYXRlIENJLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFRlc3QtPntOYW1lfSwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRUZXN0LT57SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCBpcyBjcmVhdGVkIiApOwoKICAgICAgICBwdXNoIEBDSUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAgICAgIyBBZGQgYSB2ZXJzaW9uLgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkVGVzdC0+e05hbWV9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkVGVzdC0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFZlcnNpb25JRCwgIlZlcnNpb25JRCAkVmVyc2lvbklEIGlzIGNyZWF0ZWQiICk7CgogICAgICAgICMgQWRkIGEgbGluay4KICAgICAgICBteSAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRUZXN0LT57TGlua1R5cGV9LAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFN1Y2Nlc3MsICJUaWNrZXRJRCAkVGlja2V0SUQgbGlua2VkIHdpdGggQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQgd2l0aCBMaW5rVHlwZSAnJFRlc3QtPntMaW5rVHlwZX0nIiApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENJJ3MgaW5jaWRlbnQgc3RhdGUuCiAgICAgICAgaXMoCiAgICAgICAgICAgICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZEluY2lTdGF0ZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3VySW5jaVN0YXRlOiAkVGVzdC0+e0V4cGVjdGVkSW5jaVN0YXRlfSIsCiAgICAgICAgKTsKICAgIH07Cn0KCiMgU2V0IHRpY2tldCB0eXBlIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiAnSW5jaWRlbnQnIHRvIHZlcmlmeSBDSSdzIGluY2lkZW50IHN0YXRlIHVwZGF0ZS4KbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgVHlwZSAgICAgPT4gJ1VuY2xhc3NpZmllZCcsCiAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwpvayggJFN1Y2Nlc3MsICJUeXBlIGZvciBUaWNrZXRJRCAkVGlja2V0SUQgaXMgY2hhbmdlZCB0byAnVW5jbGFzc2lmaWVkJyIgKTsKCmZvciBteSAkQ0lJRCAoQENJSURzKSB7CiAgICBteSAkQ0kgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJSUQsCiAgICApOwogICAgaXMoCiAgICAgICAgJENJLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICJDSUlEICRDSUlEIGlzIGluICdPcGVyYXRpb25hbCcgc3RhdGUgYWZ0ZXIgdGlja2V0IHR5cGUgdXBkYXRlIiwKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ITSMConfigItemUniqueCIName.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKb3VyICRTZWxmOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbUNsYXNzZXM7Cm15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKCiMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQpteSAkRmlyc3RDbGFzc05hbWUgID0gJ1VuaXRUZXN0Q2xhc3MxJyAuICRSYW5kb21JRDsKbXkgJFNlY29uZENsYXNzTmFtZSA9ICdVbml0VGVzdENsYXNzMicgLiAkUmFuZG9tSUQ7CgojIHNldCBhIG5hbWUgcHJlZml4Cm15ICROYW1lUHJlZml4ID0gJ1VuaXRUZXN0TmFtZScgLiAkUmFuZG9tSUQ7CgojIGFkZCBib3RoIHVuaXR0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzZXMKbXkgJEZpcnN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJEZpcnN0Q2xhc3NOYW1lLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwoKIyBjaGVjayBmaXJzdCBjbGFzcyBpZAppZiAoICEkRmlyc3RDbGFzc0lEICkgewoKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkNhbid0IGFkZCBmaXJzdCBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgKTsKfQoKIyBzZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRGaXJzdENsYXNzSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCnB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJEZpcnN0Q2xhc3NJRDsKcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkRmlyc3RDbGFzc05hbWU7CgpteSAkU2Vjb25kQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJFNlY29uZENsYXNzTmFtZSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiMgc2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZQokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIEtleSAgICA9PiAnVmVyc2lvblN0cmluZ01vZHVsZScsCiAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAopOwoKIyBjaGVjayBzZWNvbmQgY2xhc3MgaWQKaWYgKCAhJFNlY29uZENsYXNzSUQgKSB7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiQ2FuJ3QgYWRkIHNlY29uZCBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkU2Vjb25kQ2xhc3NJRDsKcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkU2Vjb25kQ2xhc3NOYW1lOwoKbXkgQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnM7CgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIKewogICAgICAgIFBhZ2VzICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCn0iOwoKbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKZm9yIG15ICRQZXJsRGVmaW5pdGlvbiAoQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnMpIHsKICAgIG15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9ucywgJFlBTUxEZWZpbml0aW9uOwp9CgojIGFkZCBhbiBlbXB0eSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcy4gdGhlIGRlZmluaXRpb24gZG9lc24ndCBuZWVkIGFueSBlbGVtZW50cywgYXMgd2UncmUgb25seQojIHRlc3RpbmcgdGhlIG5hbWUgd2hpY2ggaXNuJ3QgcGFydCBvZiB0aGUgZGVmaW5pdGlvbiwgYnV0IG9mIHRoZSBjb25maWcgaXRlbSBpdHNlbGYKbXkgJEZpcnN0UmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbnNbMF0sCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkRmlyc3RSZXN1bHQtPntEZWZpbml0aW9uSUR9LCAnZmlyc3QgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBhZGRlZCcgKTsKCm15ICRGaXJzdERlZmluaXRpb25JRCA9ICRGaXJzdFJlc3VsdC0+e0RlZmluaXRpb25JRH07CnB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkRmlyc3RSZXN1bHQtPntEZWZpbml0aW9uSUR9OwoKbXkgJFNlY29uZFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgQ2xhc3NJRCAgICA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIERlZmluaXRpb24gPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uc1swXSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKb2soICRTZWNvbmRSZXN1bHQtPntEZWZpbml0aW9uSUR9LCAnc2Vjb25kIGNvbmZpZyBpdGVtIGRlZmluaXRpb24gYWRkZWQnICk7CgpteSAkU2Vjb25kRGVmaW5pdGlvbklEID0gJFNlY29uZFJlc3VsdC0+e0RlZmluaXRpb25JRH07CnB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkU2Vjb25kRGVmaW5pdGlvbklEOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbUlEczsKCm15ICRGaXJzdENsYXNzUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+IDw8J0RFRklOSVRJT04nLAotLS0KUGFnZXM6CiAgLSBOYW1lOiBDb250ZW50CiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDEKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQoKU2VjdGlvbnM6CiAgQXR0cmlidXRlczoKICAgIFR5cGU6IERlc2NyaXB0aW9uCkRFRklOSVRJT04KICAgIFVzZXJJRCA9PiAxLAopOwoKIyBmZXRjaCB0aGUgZGVmaW5pdGlvbiBpZApteSAkRmlyc3RDbGFzc0RlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJEZpcnN0Q2xhc3NJRCwKKTsKCiMgYWRkIGEgY29uZmlnaXRlbSB0byBlYWNoIGNsYXNzCm15ICRGaXJzdENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCAgICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnRmlyc3QjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkRmlyc3RDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCnB1c2ggQENvbmZpZ0l0ZW1JRHMsICRGaXJzdENvbmZpZ0l0ZW1JRDsKCm15ICRTZWNvbmRDbGFzc1Jlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgQ2xhc3NJRCAgICA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIERlZmluaXRpb24gPT4gPDwnREVGSU5JVElPTicsCi0tLQpQYWdlczoKICAtIE5hbWU6IENvbnRlbnQKICAgIExheW91dDoKICAgICAgQ29sdW1uczogMQogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IEF0dHJpYnV0ZXMKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCgpTZWN0aW9uczoKICBBdHRyaWJ1dGVzOgogICAgVHlwZTogRGVzY3JpcHRpb24KREVGSU5JVElPTgogICAgVXNlcklEID0+IDEsCik7CgojIGZldGNoIHRoZSBkZWZpbml0aW9uIGlkCm15ICRTZWNvbmRDbGFzc0RlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJFNlY29uZENsYXNzSUQsCik7CgpteSAkU2Vjb25kQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBDbGFzc0lEICAgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMScsCiAgICBEZWZpbml0aW9uSUQgPT4gJFNlY29uZENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRTZWNvbmRDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBzZWNvbmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgpwdXNoIEBDb25maWdJdGVtSURzLCAkU2Vjb25kQ29uZmlnSXRlbUlEOwoKIyBjcmVhdGUgYSAzcmQgY29uZmlnaXRlbSBpbiB0aGUgMm5kIGNsYXNzCm15ICRUaGlyZENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCAgICAgID0+ICRTZWNvbmRDbGFzc0lELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmREZWZpbml0aW9uSUQsCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRUaGlyZENvbmZpZ0l0ZW1JRCApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkZhaWxlZCB0byBhZGQgdGhlIHRoaXJkIGNvbmZpZ2l0ZW0iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUlEcywgJFRoaXJkQ29uZmlnSXRlbUlEOwoKIyBzZXQgYSBuYW1lIGZvciBlYWNoIGNvbmZpZ2l0ZW0KbXkgJEZpcnN0SW5pdGlhbFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRGaXJzdENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdGaXJzdCMwMDEnLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRGaXJzdEluaXRpYWxWZXJzaW9uSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBpbml0aWFsIHZlcnNpb24gZm9yIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCm15ICRTZWNvbmRJbml0aWFsVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICBDb25maWdJdGVtSUQgPT4gJFNlY29uZENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkU2Vjb25kQ2xhc3NEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwoKaWYgKCAhJFNlY29uZEluaXRpYWxWZXJzaW9uSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBpbml0aWFsIHZlcnNpb24gZm9yIHRoZSBzZWNvbmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgpteSAkVGhpcmRJbml0aWFsVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICBDb25maWdJdGVtSUQgPT4gJFRoaXJkQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmRDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkVGhpcmRJbml0aWFsVmVyc2lvbklEICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiRmFpbGVkIHRvIGFkZCB0aGUgaW5pdGlhbCB2ZXJzaW9uIGZvciB0aGUgdGhpcmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIHRoZSBhY3R1YWwgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyByZWFkIHRoZSBvcmlnaW5hbCBzZXR0aW5nIGZvciB0aGUgc2V0dGluZyBFbmFibGVVbmlxdWVuZXNzQ2hlY2sKbXkgJE9yaWdFbmFibGVTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjaycpOwoKIyBlbmFibGUgdGhlIHVuaXF1ZW5lc3MgY2hlY2sKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+IDEsCik7CgojIHJlYWQgdGhlIG9yaWdpbmFsIHNldHRpbmcgZm9yIHRoZSBzY29wZSBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjawpteSAkT3JpZ1Njb3BlID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlJyk7CgojIG1ha2Ugc3VyZSwgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayBpcyBzZXQgdG8gJ2dsb2JhbCcKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJ2dsb2JhbCcsCik7CgpteSAkUmVuYW1lU3VjY2VzczsKCiMgdHJ5IHRvIGdpdmUgdGhlIDFzdCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDJuZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJEZpcnN0Q2xhc3NJRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkUmVuYW1lU3VjY2VzcywKICAgICJTY29wZSA9PiBnbG9iYWw6IFJlbmFtaW5nIEZpcnN0IzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDEgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgdHJ5IHRvIGdpdmUgdGhlIDJuZCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDNyZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2Vjb25kQ29uZmlnSXRlbUlELAogICAgQ2xhc3NJRCAgICAgID0+ICRTZWNvbmRDbGFzc0lELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGdsb2JhbDogUmVuYW1pbmcgU2Vjb25kIzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDIgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgc2V0IHRoZSBzY29wZSBmb3IgdGhlIHVuaXF1ZW5lc3MgY2hlY2sgdG8gJ2NsYXNzJwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScsCiAgICBWYWx1ZSA9PiAnY2xhc3MnLAopOwoKIyB0cnkgdG8gcmVuYW1lIEZpcnN0IzAwMSBhZ2FpbiB0byBTZWNvbmQjMDAxIHdoaWNoIHNob3VsZCB3b3JrIG5vdywgZHVlIHRvIHRoZSBkaWZmZXJlbnQgY2xhc3MKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJEZpcnN0Q2xhc3NJRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGNsYXNzOiBSZW5hbWluZyBGaXJzdCMwMDEgdG8gYWxyZWFkeSBleGlzdGluZyBTZWNvbmQjMDAxIHN1Y2NlZWRlZCIKKTsKCiMgdHJ5aW5nIG5vdyB0byBjcmVhdGUgYSBkdXBsaWNhdGUgbmFtZSB3aXRoaW4gYSBjbGFzcwokUmVuYW1lU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRTZWNvbmRDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMicsCiAgICBEZWZpbml0aW9uSUQgPT4gJFNlY29uZENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGNsYXNzOiBSZW5hbWluZyBTZWNvbmQjMDAxIHRvIGFscmVhZHkgZXhpc3RpbmcgU2Vjb25kIzAwMiBzdWNjZXNzZnVsbHkgcHJldmVudGVkIgopOwoKIyByZXNldCB0aGUgZW5hYmxlZCBzZXR0aW5nIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+ICRPcmlnRW5hYmxlU2V0dGluZywKKTsKCiMgcmVzZXQgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJE9yaWdTY29wZSwKKTsKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ImportExport/ObjectBackend/ITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRDdXN0b21lclVzZXJPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwpteSAlRm9ybWF0QmFja2VuZE9iamVjdCAgPSAoCiAgICBDU1YgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6OkZvcm1hdEJhY2tlbmQ6OkNTVicpLAogICAgSlNPTiA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpGb3JtYXRCYWNrZW5kOjpKU09OJyksCik7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZDo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJFVzZXJPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBjcmVhdGUgdGVzdCB1c2VyCm15ICggdW5kZWYsICRUZXN0VXNlcklEICkgPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7CgojIGFkZCBzb21lIElUU01Db25maWdJdGVtIHRlc3QgdGVtcGxhdGVzIGZvciBsYXRlciBjaGVja3MKIyBtb3N0bHkgd2l0aCBkdW1teSBmb3JtYXRzLCBidXQgdXNlIDUgYW5kIDYgZm9yIENTViBhbmQgSlNPTiB0ZXN0cy4KbXkgQFRlbXBsYXRlSURzOwp7CiAgICBteSAlRm9ybWF0ID0gKAogICAgICAgIDUgPT4gJ0NTVicsCiAgICAgICAgNiA9PiAnSlNPTicsCiAgICApOwoKICAgIGZvciBteSAkaSAoIDAgLi4gMjkgKSB7CiAgICAgICAgbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgICAgICAgICAgT2JqZWN0ICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBGb3JtYXQgID0+ICggJEZvcm1hdHskaX0gfHwgJ1VuaXRUZXN0JyAuICRpIC4gJFJhbmRvbUlEICksCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ1VuaXRUZXN0JyAuICRpIC4gJFJhbmRvbUlELAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAVGVtcGxhdGVJRHMsICRUZW1wbGF0ZUlEOwogICAgfQp9CgojIE9iamVjdExpc3QgdGVzdCAxIChjaGVjayBDU1YgaXRlbSkKewogICAgbXkgJE9iamVjdExpc3QgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RMaXN0OwogICAgb2soCiAgICAgICAgJE9iamVjdExpc3QgJiYgcmVmICRPYmplY3RMaXN0IGVxICdIQVNIJyAmJiAkT2JqZWN0TGlzdC0+e0lUU01Db25maWdJdGVtfSwKICAgICAgICAiT2JqZWN0TGlzdCgpIC0gSVRTTUNvbmZpZ0l0ZW0gZXhpc3RzIiwKICAgICk7Cn0KCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQp7CiAgICBteSAkT2JqZWN0QXR0cmlidXRlc0dldDEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICApOwoKICAgICMgY2hlY2sgb2JqZWN0IGF0dHJpYnV0ZSByZWZlcmVuY2UKICAgIG9rKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSAmJiByZWYgJE9iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGNoZWNrIGFycmF5IHJlZmVyZW5jZSIsCiAgICApOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZGVmaW5lIHRoZSByZWZlcmVuY2UgaGFzaAogICAgbXkgJE9iamVjdEF0dHJpYnV0ZXNHZXQxUmVmZXJlbmNlID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBOYW1lICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMycsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQqIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDb3VudE1heFNldE91dGVyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMCcsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQqIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDb3VudE1heFNldElubmVyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcwJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0lucHV0JyA9PiB7CiAgICAgICAgICAgICAgICAnVHlwZScgPT4gJ0NoZWNrYm94JwogICAgICAgICAgICB9LAogICAgICAgICAgICAnTmFtZScgPT4gJ0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCcsCiAgICAgICAgICAgICdLZXknICA9PiAnRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIElucHV0ID0+IHsgVHlwZSA9PiAiQ2hlY2tib3giIH0sCiAgICAgICAgICAgIEtleSAgID0+ICJJbmNsdWRlQXR0YWNobWVudHMiLAogICAgICAgICAgICBOYW1lICA9PiAiSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSkiLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlzKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSwKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDFSZWZlcmVuY2UsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGF0dHJpYnV0ZXMgb2YgdGhlIHJvdyBhcmUgaWRlbnRpY2FsIiwKICAgICk7Cn0KCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQp7CiAgICBteSAkT2JqZWN0QXR0cmlidXRlc0dldDIgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWy0xXSArIDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICk7CiAgICBpcygKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDIsCiAgICAgICAgdW5kZWYsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGV4cGVjdGVkIHRvIGZhaWwiLAogICAgKTsKfQoKIyBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQp7CiAgICBteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbMF0sCiAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICk7CgogICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBhdHRyaWJ1dGUgcmVmZXJlbmNlCiAgICBvaygKICAgICAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxICYmIHJlZiAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkgLSBjaGVjayBhcnJheSByZWZlcmVuY2UiLAogICAgKTsKfQoKIyBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQp7CiAgICBteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKCiAgICBpcygKICAgICAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyLAogICAgICAgIHVuZGVmLAogICAgICAgICJNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpIC0gZXhwZWN0ZWQgdG8gZmFpbCIsCiAgICApOwp9CgojIGFkZCBhIGdlbmVyYWwgY2F0YWxvZyB0ZXN0IGxpc3QKbXkgJENvbmZpZ0l0ZW1Hcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgVXNlcklEID0+ICRUZXN0VXNlcklELAopOwpvayggJENvbmZpZ0l0ZW1Hcm91cElELCAnZ290IGdyb3VwIGlkIGZvciBpdHNtLWNvbmZpZ2l0ZW0nICk7CgojIGRvbid0IGNhcmUgYWJvdXQgdmFsaWQgZW1haWxzCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgIFZhbHVlID0+IDAsCik7CgojIENyZWF0ZSBjdXN0b21lciB1c2VycyB3aGljaCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gQ3VzdG9tZXJVc2VyIGR5bmFtaWMgZmllbGRzOgojIHdpdGggZG91YmxlIHF1b3RlcyBmb3IgdGVzdGluZyBDU1YKIyB3aXRoIGhpZ2ggb3JkZXIgbGV0dGVycwojIHdpdGggcmFuZG9tIGlkLCB1c2VmdWwgZHVyaW5nIGRldmVsb3BtZW50IHdoZW4gUmVzdG9yZURhdGFiYXNlIGlzIGRlYWN0aXZhdGVkCiMKIyBUaGUgY3VzdG9tZXIgaXMgYSBjb21wYW55IHRoYXQgc2VsbHMgZnJ1aXRzLCB2ZWdldGFibGVzLCBhbmQgdHJlZXMuIFRoZSBwcm9kdWNlCiMgaXMgc29sZCBieSBtb25nZXJzIHdoaWNoIGFyZSBtZW1iZXJzIG9mIGEgc2FsZXMgdGVhbS4gVGhlIGNvbXBhbnkgaGFzCiMgY2hpZWYgZmluYW5jaWFsIG9mZmljZXJzIG9mIHZhcmlvdXMgZ2VuZGVycy4KbXkgJUN1c3RvbWVyVXNlcnMgPSAoCgogICAgIyBmb3IgQ3VzdG9tZXJDSU8KICAgIG1hbGVfQ0lPICAgID0+ICdtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJyAuICRSYW5kb21JRCwKICAgIGZlbWFsZV9DSU8gID0+ICdmZW1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+SgSInIC4gJFJhbmRvbUlELAogICAgZGl2ZXJzZV9DSU8gPT4gJ2RpdmVyc2UgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi4oqVIicgLiAkUmFuZG9tSUQsCgogICAgIyBmb3IgQ3VzdG9tZXJTYWxlc1RlYW0sIHRoZSBtZW1iZXJzIG9mIGEgc2FsZXMgdGVhbSBhcmUgbW9uZ2VycwoKICAgICMgZnJ1aXQgYW5kIHZlZ2V0YWJsZSBtb25nZXJzIGZvciBDdXN0b21lclNhbGVzVGVhbQogICAgYXBwbGVfbW9uZ2VyICA9PiAnYXBwbGUgbW9uZ2VyICLwn42OIicgLiAkUmFuZG9tSUQsCiAgICBvbmlvbl9tb25nZXIgID0+ICdvbmlvbiBtb25nZXIgIvCfp4UiJyAuICRSYW5kb21JRCwKICAgIGdhcmxpY19tb25nZXIgPT4gJ2dhcmxpYyBtb25nZXIgIvCfp4QiJyAuICRSYW5kb21JRCwKCiAgICAjIHRyZWUgbW9uZ2VycyBmb3IgQ3VzdG9tZXJTYWxlc1RlYW0KICAgIHRhbmFiYXRlX21vbmdlciA9PiAndGFuYWJhdGUgdHJlZSBtb25nZXIgIvCfjosiJyAuICRSYW5kb21JRCwKICAgIHBhbG1fbW9uZ2VyICAgICA9PiAncGFsbSB0cmVlIG1vbmdlciAi8J+MtCInIC4gJFJhbmRvbUlELAopOwpmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlQ3VzdG9tZXJVc2VycyApIHsKICAgIG15ICRMb2dpbiAgICAgICAgICAgPSAkQ3VzdG9tZXJVc2Vyc3skS2V5fTsKICAgIG15ICRDdXN0b21lclVzZXJBZGQgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJBZGQoCiAgICAgICAgU291cmNlICAgICAgICAgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgVXNlckZpcnN0bmFtZSAgPT4gIiRLZXkgZmlyc3QgbmFtZSAkUmFuZG9tSUQiLAogICAgICAgIFVzZXJMYXN0bmFtZSAgID0+ICIkS2V5IGxhc3QgbmFtZSAkUmFuZG9tSUQiLAogICAgICAgIFVzZXJDdXN0b21lcklEID0+ICdUZXN0Q3VzdG9tZXJDb21wYW55MScgLiAkUmFuZG9tSUQsCiAgICAgICAgVXNlckxvZ2luICAgICAgPT4gJExvZ2luLAogICAgICAgIFVzZXJFbWFpbCAgICAgID0+ICRLZXkgLiAkUmFuZG9tSUQgLiAnQGV4YW1wbGUuY29tJywKICAgICAgICBWYWxpZElEICAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKICAgIGlzKCAkQ3VzdG9tZXJVc2VyQWRkLCAkTG9naW4sICJjdXN0b21lciB1c2VyICckTG9naW4nIGFkZGVkIiApOwp9CgojIGNyZWF0ZSBhZ2VudHMgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gQWdlbnQgZHluYW1pYyBmaWVsZHMKbXkgJUFnZW50MlVzZXJJRDsKewogICAgbXkgJUxhc3ROYW1lID0gKAoKICAgICAgICAjIGZvciB0aGUgbXVsdGkgdmFsdWUgZHluYW1pYyBmaWVsZCBaWlpTZXRPZkFnZW50cwogICAgICAgIERlc2tBZ2VudCAgICAgPT4gJ0lORk9STUFUSU9OIERFU0sgUEVSU09OIPCfkoEnLAogICAgICAgIExvdHVzQWdlbnQgICAgPT4gJ1BFUlNPTiBJTiBMT1RVUyBQT1NJVElPTiDwn6eYJywKICAgICAgICBDbGltYmluZ0FnZW50ID0+ICdQRVJTT04gQ0xJTUJJTkcg8J+nlycsCiAgICAgICAgRnJvd25pbmdBZ2VudCA9PiAnUEVSU09OIEZST1dOSU5HIPCfmY0nLAoKICAgICAgICAjIGZvciB0aGUgc2luZ2xlIHZhbHVlIGR5bmFtaWMgZmllbGQgWlpaU2V0Q29udGluZW50YWxTdXBwb3J0CiAgICAgICAgRmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYSAgPT4gJ0ZpcnN0IExldmVsIFN1cHBvcnRlciBBZnJpY2EnLAogICAgICAgIFNlY29uZExldmVsU3VwcG9ydGVyQWZyaWNhID0+ICdTZWNvbmQgTGV2ZWwgU3VwcG9ydGVyIEFmcmljYScsCiAgICAgICAgRmlyc3RMZXZlbFN1cHBvcnRlckV1cm9wZSAgPT4gJ0ZpcnN0IExldmVsIFN1cHBvcnRlciBFdXJvcGUnLAogICAgICAgIFNlY29uZExldmVsU3VwcG9ydGVyRXVyb3BlID0+ICdTZWNvbmQgTGV2ZWwgU3VwcG9ydGVyIEV1cm9wZScsCiAgICApOwoKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYXN0TmFtZSApIHsKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJEtleSwKICAgICAgICAgICAgVXNlckxhc3RuYW1lICA9PiAkTGFzdE5hbWV7JEtleX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJEtleSAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlclB3ICAgICAgICA9PiAnc29tZS1wYXNzJywKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAkS2V5IC4gJFJhbmRvbUlEIC4gJ2VtYWlsQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAxLAogICAgICAgICAgICBDaGFuZ2VVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFVzZXJJRCwgInVzZXIgJEtleSBhZGRlZCIgKTsKICAgICAgICAkQWdlbnQyVXNlcklEeyRLZXl9ID0gJFVzZXJJRDsKICAgIH0KfQoKIyBBZGQgZ2VuZXJpYyBjYXRhbG9nIGl0ZW1zIGZvciB0ZXN0aW5nIHRoZSBHZW5lcmFsQ2F0YWxvZyBkeW5hbWljIGZpZWxkIGNsYXNzLgojIFRPRE86IGFjdHVhbGx5IHRlc3QgR2VuZXJhbENhdGFsb2cgZHluYW1pYyBmaWVsZHMKbXkgJEdlbmVyYWxDYXRhbG9nQ2xhc3MgPSAnVW5pdFRlc3QnIC4gJFJhbmRvbUlEOwpkaWFnICJHZW5lcmFsQ2F0YWxvZ0NsYXNzOiAnJEdlbmVyYWxDYXRhbG9nQ2xhc3MnIjsKCm15ICRUZXN0SURTdWZmaXggPSAiVW5pdFRlc3QkUmFuZG9tSUQiOwpkaWFnICJUZXN0SURTdWZmaXg6ICckVGVzdElEU3VmZml4JyI7CmZvciBteSAkTmFtZSAocXcoVGVzdDEgVGVzdDIgVGVzdDMgVGVzdDQpKSB7CgogICAgIyBhZGQgYSBuZXcgaXRlbQogICAgbXkgJEl0ZW1JRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICBDbGFzcyAgID0+ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLAogICAgICAgIE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgQ29tbWVudCA9PiAiYWRkZWQgYnkgIiAuIF9fRklMRV9fLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgKTsKICAgIG9rKCAkSXRlbUlELCAiJE5hbWUgYWRkZWQgdG8gdGhlIGdlbmVyYWwgY2F0YWxvZyIgKTsKCiAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgVmFsdWUgID0+IFskQ29uZmlnSXRlbUdyb3VwSURdLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUuCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXIuCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uVHJpZ2dlcicsCiAgICAgICAgVmFsdWUgID0+IFsiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCJdLAogICAgKTsKfQoKIyBBZGQgZHluYW1pYyBmaWVsZHMgZm9yIHRlc3RpbmcuIFRoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgcmVmZXJlbmNlZAojIGJ5IG5hbWUgaW4gZHluYW1pYyBmaWVsZCBkZWZpbml0aW9ucy4KewogICAgbXkgJE9yZGVyID0gMjAwMDA7CgogICAgIyBubyB1bmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBpbiBkeW5hbWljIGZpZWxkIG5hbWVzCiAgICBteSAlRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnMgPSAoCgogICAgICAgICMgRHluYW1pYyBmaWVsZHMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSBzZXQuCiAgICAgICAgQ3VzdG9tZXJDSU8gPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDAsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdUb29sdGlwIGZvciBjdXN0b21lciBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEN1c3RvbWVyU2FsZXNUZWFtID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdDdXN0b21lclVzZXInLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSA9PiAxLAogICAgICAgICAgICAgICAgVG9vbHRpcCAgICA9PiAnVG9vbHRpcCBmb3IgY3VzdG9tZXIgc2FsZXMgdGVhbScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBGaXJzdE1vbmRheSA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDAsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdmaXJzdCBtb25kYXkgb2YgYSB5ZWFyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEZpcnN0V2Vla2VuZCA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDEsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdmaXJzdCB3ZWVrZW5kIG9mIGEgeWVhciwgdHdvIHZhbHVlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBBZ2VudDEgYW5kIEFnZW50MiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBtdWx0aSB2YWx1ZSBTZXQgWlpaU2V0T2ZBZ2VudHMKICAgICAgICBBZ2VudDEgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ29uZmlnICAgID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlzZWxlY3QgID0+IDAsCiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgPT4gMCwKICAgICAgICAgICAgICAgIEdyb3VwRmlsdGVyICA9PiBbXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgICAgICA9PiAnVG9vbHRpcCBmb3IgQWdlbnQxJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEFnZW50MiA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnQWdlbnQnLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXNlbGVjdCAgPT4gMCwKICAgICAgICAgICAgICAgIE11bHRpVmFsdWUgICA9PiAwLAogICAgICAgICAgICAgICAgR3JvdXBGaWx0ZXIgID0+IFtdLAogICAgICAgICAgICAgICAgVG9vbHRpcCAgICAgID0+ICdUb29sdGlwIGZvciBBZ2VudDInLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgWlpaU2V0T2ZBZ2VudHMgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ1NldCcsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDEsCiAgICAgICAgICAgICAgICBJbmNsdWRlICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB7IERGID0+ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCB9LAogICAgICAgICAgICAgICAgICAgIHsgREYgPT4gJ0FnZW50MicgLiAkVGVzdElEU3VmZml4IH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVG9vbHRpcCA9PiAnVG9vbHRpcCBmb3IgWlpaU2V0T2ZBZ2VudHMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgTGV2ZWxGaXJzdCBhbmQgTGV2ZWxTZWNvbmQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgc2luZ2xlIHZhbHVlIFNldCBaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQKICAgICAgICBMZXZlbEZpcnN0ID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdBZ2VudCcsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpc2VsZWN0ICA9PiAwLAogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSAgID0+IDAsCiAgICAgICAgICAgICAgICBHcm91cEZpbHRlciAgPT4gW10sCiAgICAgICAgICAgICAgICBUb29sdGlwICAgICAgPT4gJ1Rvb2x0aXAgZm9yIGZpcnN0IGxldmVsIHN1cHBvcnQnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgTGV2ZWxTZWNvbmQgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ29uZmlnICAgID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlzZWxlY3QgID0+IDAsCiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgPT4gMCwKICAgICAgICAgICAgICAgIEdyb3VwRmlsdGVyICA9PiBbXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgICAgICA9PiAnVG9vbHRpcCBmb3Igc2Vjb25kIGxldmVsIHN1cHBvcnQnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgWlpaU2V0Q29udGluZW50YWxTdXBwb3J0ID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdTZXQnLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSA9PiAwLAogICAgICAgICAgICAgICAgSW5jbHVkZSAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyBERiA9PiAiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBERiA9PiAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgPT4gJ1Rvb2x0aXAgZm9yIFpaWlNldENvbnRpbmVudGFsU3VwcG9ydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVEeW5hbWljRmllbGREZWZpbml0aW9ucyApIHsKICAgICAgICBteSAkREZOYW1lICAgICAgICAgPSAkTmFtZSAuICRUZXN0SURTdWZmaXg7ICAgICAgICAgICAgICAgICAgIyBhZGQgc3VmZml4IHRvIGhhdmUgdW5pcXVlIG5hbWVzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJERGTmFtZSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiAkT3JkZXIrKywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LT57RmllbGRUeXBlfSwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGREZWZpbml0aW9uc3skTmFtZX0tPntDb25maWd9LAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKICAgICAgICBvayggJER5bmFtaWNGaWVsZElELCAiY3JlYXRlZCBkeW5hbWljIGZpZWxkICRERk5hbWUiICk7CiAgICB9Cn0KCiMgQWRkIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zCm15ICggJUNvbmZpZ0l0ZW1DbGFzc0lEcywgJUNvbmZpZ0l0ZW1EZWZpbml0aW9uSURzICk7CnsKICAgIG15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwoKICAgICMgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiB3aXRoIHR3byBDdXN0b21lclVzZXIgZmllbGRzCiAgICBwdXNoIEBDb25maWdJdGVtUGVybERlZmluaXRpb25zLCB7CiAgICAgICAgUGFnZXMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJ1R3b0N1c3RvbWVyVXNlcnMnLCAgICAjIHdpbGwgYmUgcmV1c2VkIGluIGNsYXNzIG5hbWUKICAgICAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnQ3VzdG9tZXJDSU8nIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0N1c3RvbWVyU2FsZXNUZWFtJyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9OwoKICAgICMgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiB3aXRoIHR3byBEYXRlIGZpZWxkcwogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdUd29EYXRlcycsICAgICMgd2lsbCBiZSByZXVzZWQgaW4gY2xhc3MgbmFtZQogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnInCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnVHdvRGF0ZXNTZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgVHdvRGF0ZXNTZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0ZpcnN0TW9uZGF5JyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdGaXJzdFdlZWtlbmQnIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH07CgogICAgIyBkZWZpbml0aW9uIHdpdGggYSBtdWx0aSB2YWx1ZSBTZXQgZHluYW1pYyBmaWVsZAogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywgICAgIyB3aWxsIGJlIHJldXNlZCBpbiBjbGFzcyBuYW1lCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICdTZWN0aW9uMScsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ICAgID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0N1c3RvbWVyQ0lPJyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdaWlpTZXRPZkFnZW50cycgLiAkVGVzdElEU3VmZml4LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfTsKCiAgICAjIGRlZmluaXRpb24gd2l0aCBhIHNpbmdsZSB2YWx1ZSBTZXQgZHluYW1pYyBmaWVsZAogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdTaW5nbGVWYWx1ZVNldCcsICAgICMgd2lsbCBiZSByZXVzZWQgaW4gY2xhc3MgbmFtZQogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnInCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgU2VjdGlvbnMgPT4gewogICAgICAgICAgICBTZWN0aW9uMSA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQnIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH07Cgo9Zm9yIG5ldmVyCgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIgWwogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3VzdG9tZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdDdXN0b21lcicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnRGF0ZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEYXRlJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdEYXRlVGltZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgVGltZSAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0RhdGVUaW1lJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnRHVtbXkxJywKICAgICAgICBOYW1lICA9PiAnRHVtbXkgMScsCiAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEdW1teScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnR2VuZXJhbENhdGFsb2cxJywKICAgICAgICBOYW1lICAgICAgID0+ICdHZW5lcmFsQ2F0YWxvZyAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgICAgIENsYXNzID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnSW50ZWdlcjEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0ludGVnZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdUZXh0MScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dCAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ1RleHRBcmVhMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dEFyZWEgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgfSwKICAgIH0sCl0gIjsKCiMgZGVmaW5lIHRoZSBzZWNvbmQgdGVzdCBkZWZpbml0aW9uIChzdWIgZGF0YSB0eXBlcykKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMV0gPSAiIFsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgU3ViID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMScsCiAgICAgICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgICAgICAgICBTdWIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMScsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMicsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMicsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMVN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICB9LAogICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgIFN1YiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ01haW4yU3ViMScsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdNYWluIDIgU3ViIDEnLAogICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMlN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKXSAiOwoKIyBEZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiB3aXRoIHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScuCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzJdID0gIiBbCiAgICB7CiAgICAgICAgJ0tleScgPT4gJ1R5cGUnLAogICAgICAgICdJbnB1dCcgPT4gewogICAgICAgICAgICAnQ2xhc3MnID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgICAgICdSZXF1aXJlZCcgPT4gMSwKICAgICAgICAgICAgJ1RyYW5zbGF0aW9uJyA9PiAxLAogICAgICAgICAgICAnVHlwZScgPT4gJ0dlbmVyYWxDYXRhbG9nJwogICAgICAgIH0sCiAgICAgICAgJ1NlYXJjaGFibGUnID0+IDEsCiAgICAgICAgJ0NvdW50TWluJyA9PiAxLAogICAgICAgICdDb3VudERlZmF1bHQnID0+IDEsCiAgICAgICAgJ0NvdW50TWF4JyA9PiAzLAogICAgICAgICdOYW1lJyA9PiAnVHlwZScsCiAgICB9LApdICI7Cgo9Y3V0CgogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgICMgYWRkIHRoZSB0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzZXMKICAgIG15ICRpID0gMDsKICAgIGZvciBteSAkUGVybERlZmluaXRpb24gKEBDb25maWdJdGVtUGVybERlZmluaXRpb25zKSB7CgogICAgICAgICMgZ2VuZXJhdGUgYW4gaW5mb3JtYXRpdmUgcmFuZG9tIG5hbWUKICAgICAgICBteSAkU2hvcnROYW1lID0gJFBlcmxEZWZpbml0aW9uLT57UGFnZXN9LT5bMF0tPntOYW1lfTsKICAgICAgICBteSAkQ2xhc3NOYW1lID0gam9pbiAnXycsICdVbml0VGVzdCcsICRTaG9ydE5hbWUsICsrJGksICRSYW5kb21JRDsKCiAgICAgICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgICAgICBteSAkQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkQ2xhc3NJRCwgImFkZGVkIGdlbmVyYWwgY2F0YWxvZyBpdGVtIGZvciBjb25maWcgaXRlbSBjbGFzcyAkQ2xhc3NOYW1lIiApOwogICAgICAgICRDb25maWdJdGVtQ2xhc3NJRHN7JFNob3J0TmFtZX0gPSAkQ2xhc3NJRDsKCiAgICAgICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgVmFsdWUgID0+IFskQ29uZmlnSXRlbUdyb3VwSURdLAogICAgICAgICk7CgogICAgICAgICMgU2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZS4KICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKICAgICAgICApOwoKICAgICAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXIuCiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWwogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCiAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gJFBlcmxEZWZpbml0aW9uLAogICAgICAgICk7CiAgICAgICAgb2soICRZQU1MRGVmaW5pdGlvbiwgJ2dvdCBzb21lIFlBTUwnICk7CiAgICAgICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwogICAgICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgJ2dvdCBEZWZpbml0aW9uSUQnICk7CiAgICAgICAgJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzeyRTaG9ydE5hbWV9ID0gJFJlc3VsdC0+e0RlZmluaXRpb25JRH07CiAgICB9Cn0KCiMgZm9yIHRlc3RzIHdlIG5lZWQgdmFsaWQgYW5kIGludmFsaWQgY2xhc3MgSURzCm15ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lEICAgPSBtaW4oIHZhbHVlcyAlQ29uZmlnSXRlbUNsYXNzSURzICk7Cm15ICRJbnZhbGRpQ29uZmlnSXRlbUNsYXNzSUQgPSBtYXgoIHZhbHVlcyAlQ29uZmlnSXRlbUNsYXNzSURzICkgKyAxOwoKIyBDcmVhdGUgc29tZSByYW5kb20gbnVtYmVycy4gVGhlIG51bWJlcnMgbXVzdCBiZSBzb3J0ZWQgYmVjYXVzZQojIEV4cG9ydERhdGFHZXQoKSBzb3J0cyBwZXIgZGVmYXVsdCBieSB0aGUgY29uZmlnIGl0ZW0gbnVtYmVyIGluIGRlc2NlbmRpbmcgb3JkZXIuCm15IEBDb25maWdJdGVtTnVtYmVycyA9CiAgICBzb3J0CiAgICBtYXAKICAgIHsgJEhlbHBlci0+R2V0UmFuZG9tTnVtYmVyIH0KICAgICggMSAuLiAxMCApOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpyZWZfb2soICREZXBsU3RhdGVMaXN0LCAnSEFTSCcsICdkZXBsb3ltZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7CnJlZl9vayggJERlcGxTdGF0ZUxpc3QsICdIQVNIJywgJ2luY2lkZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApteSAkR2VuZXJhbENhdGFsb2dMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLAopOwpyZWZfb2soICRHZW5lcmFsQ2F0YWxvZ0xpc3QsICdIQVNIJywgJ2dlbmVyYWwgY2F0YWxvZyBsaXN0IGlzIGEgaGFzaHJlZicgKTsKCiMgVE9ETzogcmVhY3RpdmF0ZSB0ZXN0IGNhc2VzCiNteSAlR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskR2VuZXJhbENhdGFsb2dMaXN0fTsKCiMgZGVmaW5lIHRoZSB0ZXN0IGNvbmZpZyBpdGVtcwpteSBAQ29uZmlnSXRlbVNldHVwczsKbXkgJENvbmZpZ0l0ZW1DbnQgPSAwOwoKIyB0d28gY29uZmlnIGl0ZW1zIGZvciBUd29DdXN0b21lclVzZXJzCnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgVHdvQ3VzdG9tZXJVc2VycycsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1DbnQgVmVyc2lvbiAxIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3twYWxtX21vbmdlcn0sCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3t0YW5hYmF0ZV9tb25nZXJ9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ2NvbmZpZyBpdGVtIDIgZm9yIFR3b0N1c3RvbWVyVXNlcnMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkQ29uZmlnSXRlbUNudCsrIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDb25maWdJdGVtICRDb25maWdJdGVtQ250IFZlcnNpb24gMSIsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gJEN1c3RvbWVyVXNlcnN7bWFsZV9DSU99LAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7b25pb25fbW9uZ2VyfSwKICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJze2FwcGxlX21vbmdlcn0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07CgojIHR3byBjb25maWcgaXRlbXMgd2l0aCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0CnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEEgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMiBmb3IgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdLCAgICAgJ0FnZW50MicuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfTsKCiMgdHdvIGNvbmZpZyBpdGVtcyB3aXRoIFNpbmdsZVZhbHVlU2V0CnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgU2luZ2xlVmFsdWVTZXQ6IEFmcmljYScsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkQ29uZmlnSXRlbUNudCsrIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUNudCBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0Q29udGluZW50YWxTdXBwb3J0JFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgeyAiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyQWZyaWNhfSBdLCAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdjb25maWcgaXRlbSAyIGZvciBTaW5nbGVWYWx1ZVNldDogRXVyb3BlJywKICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDb25maWdJdGVtICRDb25maWdJdGVtQ250IFZlcnNpb24gMSIsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJFdXJvcGV9IF0sICJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0gXSB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKIyBjb25maWcgaXRlbXMgZm9yIFR3b0RhdGVzCnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgVHdvRGF0ZXMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sgJENvbmZpZ0l0ZW1DbnQrKyBdLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjQgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI0LTAxLTAxJywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAnMjAyNC0wMS0wNicsCiAgICAgICAgICAgICAgICAnMjAyNC0wMS0wNycsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMiBmb3IgVHdvRGF0ZXMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sgJENvbmZpZ0l0ZW1DbnQrKyBdLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIiwgICAgICMgd2lsbCBiZSBvdmVyd3JpdHRlbiBsYXRlcgogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tUd29EYXRlc30sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjUtMDEtMDcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhY3R1YWxseSB0dWVzZGF5LCB3aWxsIGJlIGZpeGVkIGxhdGVyCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgJzIwMjUtMDEtMDQnLAogICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUnLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWZvciBuZXZlcgoKIDEwLjEgdGVzdCBjYXNlcwoKICgKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBhbGwgcHJvdmlkZWQgZGF0YSB0eXBlcwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhbENhdGFsb2cxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0MSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXJlYTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBhIHNlY29uZCBjb25maWcgaXRlbSBmb3IgYWxsIHByb3ZpZGVkIGRhdGEgdHlwZXMKICAgICMgKGR1cGxpY2F0ZSBuYW1lIG9mIGZpcnN0IHZlcnNpb24gZm9yIHNlYXJjaCBjaGVja3MpCiAgICB7CiAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywgICAgIyBkdXBsaWNhdGUgbmFtZSBmb3IgdGVzdHMKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBcmVhMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdVbml0VGVzdDInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0Mn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0MicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXJlYTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAiVGVzdDJcblRleHQgQXJyYXlcblRlc3QgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3ViIGVsZW1lbnQgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnTWFpbjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ01haW4yICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTWFpbjIgKDEpIFN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJ01haW4yICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnTWFpbjIgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBzdWIgZWxlbWVudCB0ZXN0cwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1szXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA0IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXIgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGVzdCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXN0XHRUZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBVVEYtOCB0ZXN0cwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA2IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICA9PiAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxU3ViU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pmKIOKZiCDimYkg4pmKIOKZiyDimY0g4pmRJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pyIIOKdpCDimK4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnwq4gwqknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCj1jdXQKCiMgYWRkIHRoZSB0ZXN0IGNvbmZpZyBpdGVtcwpteSBAQ29uZmlnSXRlbUlEczsKZm9yIG15ICRTZXR1cCAoQENvbmZpZ0l0ZW1TZXR1cHMpIHsKCiAgICAjIGFkZCBhIGNvbmZpZyBpdGVtCiAgICBkaWFnICJhZGQgY29uZmlnIGl0ZW06ICRTZXR1cC0+e0Rlc2NyaXB0aW9ufSI7CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgJFNldHVwLT57Q29uZmlnSXRlbUFkZH0tPiUqLAogICAgKTsKICAgIG9rKCAkQ29uZmlnSXRlbUlELCAnY29uZmlnIGl0ZW0gYWRkZWQnICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAjIGFkZCB0aGUgdmVyc2lvbnMKICAgIGZvciBteSAkQ29uZmlnSXRlbVVwZGF0ZSAoICggJFNldHVwLT57Q29uZmlnSXRlbVVwZGF0ZX0gLy8gW10gKS0+QCogKSB7CgogICAgICAgICMgYWRkIHVwZGF0ZXMKICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICRDb25maWdJdGVtVXBkYXRlLT4lKiwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICBvayggJFZlcnNpb25JRCwgJ2NvbmZpZyBpdGVtIHZlcnNpb24gYWRkZWQnICk7CiAgICB9Cn0KCiMgZGVjbGFyZSBFeHBvcnREYXRhIHRlc3RzCm15IEBFeHBvcnREYXRhVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydERhdGFHZXQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydERhdGFHZXQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7bm8gZXhpc3RpbmcgdGVtcGxhdGUgaWQgaXMgZ2l2ZW4gKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtubyBjbGFzcyBpZCBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJEludmFsZGlDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXttYXBwaW5nIGxpc3QgaXMgZW1wdHkgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1szXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobnVtYmVyIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobmFtZSBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNhc2UgaW5zZW5zaXRpdmUgbmFtZSBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICd1bml0dGVzdCAtIGNvbmZpZ2l0ZW0gMSB2ZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKG5hbWUgYW5kIG51bWJlciBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgQ1NWIGV4cG9ydHMKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOYW1lLCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgQ3VzdG9tZXJTYWxlc1RlYW0gYXMgQ1NWfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGV2YWx1ZSBmaWVsZC4gVGh1cyBubyBpbmRleCBpcyBwYXNzZWQuCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8ke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyU2FsZXNUZWFtIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0ke1Rlc3RJRFN1ZmZpeH06OjEiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSR7VGVzdElEU3VmZml4fTo6MiIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyB1c3VhbGx5IHNhbWUgYXMgZm9yIEV4cG9ydERhdGFHZXQKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgPT4gJ0NTVicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TZXBhcmF0b3IgPT4gJ1NlbWljb2xvbicsCiAgICAgICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgVGhlIGV4cGVjdGVkIHJvd3MgbmVlZCB0byBiZSBzb3J0ZWQgYnkgY29uZmlnIGl0ZW0gbnVtYmVyIGluIGRlc2NlbmRpbmcgb3JkZXIuCiAgICAgICAgIyBUaGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGUgc29ydCBvcmRlciBpbiBFeHBvcnREYXRhR2V0KCkuCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXtvbmlvbiBtb25nZXIgIvCfp4UiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe2FwcGxlIG1vbmdlciAi8J+NjiIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7WyJvbmlvbiBtb25nZXIgXFwi8J+nhVxcIiRSYW5kb21JRCIsImFwcGxlIG1vbmdlciBcXCLwn42OXFwiJFJhbmRvbUlEIl19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgIHFxe21hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+XhCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7cGFsbSB0cmVlIG1vbmdlciAi8J+MtCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7dGFuYWJhdGUgdHJlZSBtb25nZXIgIvCfjosiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe1sicGFsbSB0cmVlIG1vbmdlciBcXCLwn4y0XFwiJFJhbmRvbUlEIiwidGFuYWJhdGUgdHJlZSBtb25nZXIgXFwi8J+Oi1xcIiRSYW5kb21JRCJdfSwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgICAgIFJlZmVyZW5jZUV4cG9ydENvbnRlbnQgPT4gWwogICAgICAgICAgICBqb2luKAogICAgICAgICAgICAgICAgJzsnLAogICAgICAgICAgICAgICAgcXF7IlVuaXRUZXN0IC0gQ29uZmlnSXRlbSAyIFZlcnNpb24gMSJ9LAogICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyc1sxXSJ9LAogICAgICAgICAgICAgICAgcXF7Im1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAiIvCfl4QiIiRSYW5kb21JRCJ9LCAgICAjIG5vdCBKU09OIGJlY2F1c2Ugc2luZ2xlIHZhbHVlCiAgICAgICAgICAgICAgICBxcXsib25pb24gbW9uZ2VyICIi8J+nhSIiJFJhbmRvbUlEIn0sICAgICAgICAgICAgICAgICAgICAgICMgbm90IEpTT04gYmVjYXVzZSBleHBsaWNpdCBpbmRleAogICAgICAgICAgICAgICAgcXF7ImFwcGxlIG1vbmdlciAiIvCfjY4iIiRSYW5kb21JRCJ9LCAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBKU09OIGJlY2F1c2UgZXhwbGljaXQgaW5kZXgKICAgICAgICAgICAgICAgIHFxeyJbIiJvbmlvbiBtb25nZXIgXFwiIvCfp4VcXCIiJFJhbmRvbUlEIiIsIiJhcHBsZSBtb25nZXIgXFwiIvCfjY5cXCIiJFJhbmRvbUlEIiJdIn0KICAgICAgICAgICAgKSwKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEifSwKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbMF0ifSwKICAgICAgICAgICAgICAgIHFxeyJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIiLwn5eEIiIkUmFuZG9tSUQifSwKICAgICAgICAgICAgICAgIHFxeyJwYWxtIHRyZWUgbW9uZ2VyICIi8J+MtCIiJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsidGFuYWJhdGUgdHJlZSBtb25nZXIgIiLwn46LIiIkUmFuZG9tSUQifSwKICAgICAgICAgICAgICAgIHFxeyJbIiJwYWxtIHRyZWUgbW9uZ2VyIFxcIiLwn4y0XFwiIiRSYW5kb21JRCIiLCIidGFuYWJhdGUgdHJlZSBtb25nZXIgXFwiIvCfjotcXCIiJFJhbmRvbUlEIiJdIn0KICAgICAgICAgICAgKSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOYW1lLCBOdW1iZXIsIEZpcnN0TW9uZGF5LCBhbmQgRmlyc3RXZWVrZW5kIGFzIENTVn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBDdXN0b21lckNJTyBpcyBhIHNpbmdsZXZhbHVlIGZpZWxkLiBUaHVzIG5vIGluZGV4IGlzIHBhc3NlZC4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSR7VGVzdElEU3VmZml4fSIsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgRmlyc3RXZWVrZW5kIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoxIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyB1c3VhbGx5IHNhbWUgYXMgZm9yIEV4cG9ydERhdGFHZXQKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgPT4gJ0NTVicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TZXBhcmF0b3IgPT4gJ0NvbW1hJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzddLAogICAgICAgICAgICAgICAgcXF7MjAyNS0wMS0wNyAwMDowMDowMH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgYmUgbW9uZGF5LCBpcyB0dWVzZGF5CiAgICAgICAgICAgICAgICBxcXtbIjIwMjUtMDEtMDQgMDA6MDA6MDAiLCIyMDI1LTAxLTA1IDAwOjAwOjAwIl19LCAgICAjIHNhdHVyZGF5IGFuZCBzdW5kYXkKICAgICAgICAgICAgICAgIHFxezIwMjUtMDEtMDQgMDA6MDA6MDB9LAogICAgICAgICAgICAgICAgcXF7MjAyNS0wMS0wNSAwMDowMDowMH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjQgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2XSwKICAgICAgICAgICAgICAgIHFxezIwMjQtMDEtMDEgMDA6MDA6MDB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbW9uZGF5CiAgICAgICAgICAgICAgICBxcXtbIjIwMjQtMDEtMDYgMDA6MDA6MDAiLCIyMDI0LTAxLTA3IDAwOjAwOjAwIl19LCAgICAjIHNhdHVyZGF5IGFuZCBzdW5kYXkKICAgICAgICAgICAgICAgIHFxezIwMjQtMDEtMDYgMDA6MDA6MDB9LAogICAgICAgICAgICAgICAgcXF7MjAyNC0wMS0wNyAwMDowMDowMH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICcsJywKICAgICAgICAgICAgICAgIHFxeyJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsiJENvbmZpZ0l0ZW1OdW1iZXJzWzddIn0sCiAgICAgICAgICAgICAgICBxcXsiMjAyNS0wMS0wNyAwMDowMDowMCJ9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBiZSBtb25kYXksIGlzIHR1ZXNkYXkKICAgICAgICAgICAgICAgIHFxeyJbIiIyMDI1LTAxLTA0IDAwOjAwOjAwIiIsIiIyMDI1LTAxLTA1IDAwOjAwOjAwIiJdIn0sICAgICMgc2F0dXJkYXkgYW5kIHN1bmRheQogICAgICAgICAgICAgICAgcXF7IjIwMjUtMDEtMDQgMDA6MDA6MDAifSwKICAgICAgICAgICAgICAgIHFxeyIyMDI1LTAxLTA1IDAwOjAwOjAwIn0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGpvaW4oCiAgICAgICAgICAgICAgICAnLCcsCiAgICAgICAgICAgICAgICBxcXsiVW5pdFRlc3QgLSBUd29EYXRlcyAyMDI0ICRSYW5kb21JRCJ9LAogICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyc1s2XSJ9LAogICAgICAgICAgICAgICAgcXF7IjIwMjQtMDEtMDEgMDA6MDA6MDAifSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtb25kYXkKICAgICAgICAgICAgICAgIHFxeyJbIiIyMDI0LTAxLTA2IDAwOjAwOjAwIiIsIiIyMDI0LTAxLTA3IDAwOjAwOjAwIiJdIn0sICAgICMgc2F0dXJkYXkgYW5kIHN1bmRheQogICAgICAgICAgICAgICAgcXF7IjIwMjQtMDEtMDYgMDA6MDA6MDAifSwKICAgICAgICAgICAgICAgIHFxeyIyMDI0LTAxLTA3IDAwOjAwOjAwIn0sCiAgICAgICAgICAgICksCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtFeHBvcnQgTnVtYmVyLCBDdXN0b21lckNJTywgYW5kIFpaWlNldE9mQWdlbnRzIGFzIENTVn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xldmFsdWUgZmllbGQuIFRodXMgbm8gaW5kZXggaXMgcGFzc2VkLgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBaWlpTZXRPZkFnZW50cyBpcyBhIG11bHRpdmFsdWUgZmllbGQuCiAgICAgICAgICAgICAgICAjIFR3byBjYXNlcyBhcmUgY292ZXJlZCBoZXJlOgogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbmRleCwgdGhhdCBpcyBzZWNvbmQgZWxlbWVudAogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgY29tcGxldGUgbGlzdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnQ1NWJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtblNlcGFyYXRvciA9PiAnU2VtaWNvbG9uJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXt7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfX0sCiAgICAgICAgICAgICAgICBxcXtbeyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfV19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3siQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX19LAogICAgICAgICAgICAgICAgcXF7W3siQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fV0sIkFnZW50MiRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19XX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbM10ifSwKICAgICAgICAgICAgICAgIHFxeyJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIiLwn5eEIiIkUmFuZG9tSUQifSwgICAgIyBub3QgSlNPTiBiZWNhdXNlIHNpbmdsZSB2YWx1ZQogICAgICAgICAgICAgICAgcXF7InsiIkFnZW50MSRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fV0sIiJBZ2VudDIkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfSJ9LAogICAgICAgICAgICAgICAgcXF7Ilt7IiJBZ2VudDEkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV0sIiJBZ2VudDIkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IiJBZ2VudDEkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCIiQWdlbnQyJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XX1dIn0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGpvaW4oCiAgICAgICAgICAgICAgICAnOycsCiAgICAgICAgICAgICAgICBxcXsiJENvbmZpZ0l0ZW1OdW1iZXJzWzJdIn0sCiAgICAgICAgICAgICAgICBxcXsibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICIi8J+XhCIiJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsieyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX1dIn0sCiAgICAgICAgICAgICksCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQgYXMgQ1NWfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnQ1NWJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtblNlcGFyYXRvciA9PiAnU2VtaWNvbG9uJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzVdLAogICAgICAgICAgICAgICAgcXF7W3siTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJFdXJvcGV9XSwiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX1dfV19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICBxcXtbeyJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYX1dLCJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe1NlY29uZExldmVsU3VwcG9ydGVyQWZyaWNhfV19XX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbNV0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfV0sIiJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX1dfV0ifSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbNF0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyQWZyaWNhfV0sIiJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX1dfV0ifSwKICAgICAgICAgICAgKSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEpTT04gZXhwb3J0cwoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7RXhwb3J0IE5hbWUsIE51bWJlciwgQ3VzdG9tZXJDSU8sIGFuZCBDdXN0b21lclNhbGVzVGVhbSBhcyB1Z2x5IGNvbmNhdGVuYXRlZCBKU09OfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGV2YWx1ZSBmaWVsZC4gVGh1cyBubyBpbmRleCBpcyBwYXNzZWQuCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8ke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyU2FsZXNUZWFtIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0ke1Rlc3RJRFN1ZmZpeH06OjEiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSR7VGVzdElEU3VmZml4fTo6MiIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgd2l0aCBKU09OIGZvcm1hdAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgdXN1YWxseSBzYW1lIGFzIGZvciBFeHBvcnREYXRhR2V0CiAgICAgICAgICAgICAgICBGb3JtYXQgICAgID0+ICdKU09OJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFByZXR0eSA9PiAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICAjIFRoZSBleHBlY3RlZCByb3dzIG5lZWQgdG8gYmUgc29ydGVkIGJ5IGNvbmZpZyBpdGVtIG51bWJlciBpbiBkZXNjZW5kaW5nIG9yZGVyLgogICAgICAgICMgVGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgaW4gRXhwb3J0RGF0YUdldCgpLgogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDIgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIHFxe21hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+XhCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7b25pb24gbW9uZ2VyICLwn6eFIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXthcHBsZSBtb25nZXIgIvCfjY4iJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICBxcXtvbmlvbiBtb25nZXIgIvCfp4UiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgICAgICBxcXthcHBsZSBtb25nZXIgIvCfjY4iJFJhbmRvbUlEfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3BhbG0gdHJlZSBtb25nZXIgIvCfjLQiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3RhbmFiYXRlIHRyZWUgbW9uZ2VyICLwn46LIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgcXF7cGFsbSB0cmVlIG1vbmdlciAi8J+MtCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgICAgIHFxe3RhbmFiYXRlIHRyZWUgbW9uZ2VyICLwn46LIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0Q29udGVudCA9PiBbCiAgICAgICAgICAgIHFxe1siVW5pdFRlc3QgLSBDb25maWdJdGVtIDIgVmVyc2lvbiAxIiwiJENvbmZpZ0l0ZW1OdW1iZXJzWzFdIiwibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyIFxcIlx4ezFGNUM0fVxcIiRSYW5kb21JRCIsIm9uaW9uIG1vbmdlciBcXCJceHsxRjlDNX1cXCIkUmFuZG9tSUQiLCJhcHBsZSBtb25nZXIgXFwiXHh7MUYzNEV9XFwiJFJhbmRvbUlEIixbIm9uaW9uIG1vbmdlciBcXCJceHsxRjlDNX1cXCIkUmFuZG9tSUQiLCJhcHBsZSBtb25nZXIgXFwiXHh7MUYzNEV9XFwiJFJhbmRvbUlEIl1dfSwKICAgICAgICAgICAgcXF7WyJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEiLCIkQ29uZmlnSXRlbU51bWJlcnNbMF0iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIiwicGFsbSB0cmVlIG1vbmdlciBcXCJceHsxRjMzNH1cXCIkUmFuZG9tSUQiLCJ0YW5hYmF0ZSB0cmVlIG1vbmdlciBcXCJceHsxRjM4Qn1cXCIkUmFuZG9tSUQiLFsicGFsbSB0cmVlIG1vbmdlciBcXCJceHsxRjMzNH1cXCIkUmFuZG9tSUQiLCJ0YW5hYmF0ZSB0cmVlIG1vbmdlciBcXCJceHsxRjM4Qn1cXCIkUmFuZG9tSUQiXV19LAoKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgWlpaU2V0T2ZBZ2VudHMgYXMgdWdseSBjb25jYXRlbmF0ZWQgSlNPTn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xldmFsdWUgZmllbGQuIFRodXMgbm8gaW5kZXggaXMgcGFzc2VkLgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBaWlpTZXRPZkFnZW50cyBpcyBhIG11bHRpdmFsdWUgZmllbGQuCiAgICAgICAgICAgICAgICAjIFR3byBjYXNlcyBhcmUgY292ZXJlZCBoZXJlOgogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbmRleCwgdGhhdCBpcyBzZWNvbmQgZWxlbWVudAogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgY29tcGxldGUgbGlzdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnSlNPTicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBQcmV0dHkgPT4gMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgcXF7WyIkQ29uZmlnSXRlbU51bWJlcnNbM10iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIix7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfSxbeyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfV1dfSwKICAgICAgICAgICAgcXF7WyIkQ29uZmlnSXRlbU51bWJlcnNbMl0iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIix7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19LFt7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19LHsiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fV0sIkFnZW50MiRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH1dfV1dfSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgWlpaU2V0T2ZBZ2VudHMgYXMgcHJldHR5IGNvbmNhdGVuYXRlZCBKU09OfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnSlNPTicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKCiAgICAgICAgICAgICAgICAgICAgIyBQcmV0dHkgaXMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSIgXSB9LAogICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IiBdIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IiBdIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSIgXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7RGVza0FnZW50fSIgXSB9LAogICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0iIF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsgPDwiSVRFTV8xIiwgPDwiSVRFTV8yIiBdLApbCiAgICIkQ29uZmlnSXRlbU51bWJlcnNbM10iLAogICAibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyIFxcIlx4ezFGNUM0fVxcIiRSYW5kb21JRCIsCiAgIFsKICAgICAgewogICAgICAgICAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RGVza0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0KICAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgICJBZ2VudDEkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0KICAgICAgICAgXQogICAgICB9CiAgIF0KXQpJVEVNXzEKWwogICAiJENvbmZpZ0l0ZW1OdW1iZXJzWzJdIiwKICAgIm1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciBcXCJceHsxRjVDNH1cXCIkUmFuZG9tSUQiLAogICBbCiAgICAgIHsKICAgICAgICAgIkFnZW50MSRUZXN0SURTdWZmaXgiIDogWwogICAgICAgICAgICAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9CiAgICAgICAgIF0sCiAgICAgICAgICJBZ2VudDIkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9CiAgICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0KICAgICAgICAgXSwKICAgICAgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiIDogWwogICAgICAgICAgICAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0KICAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgICJBZ2VudDEkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RGVza0FnZW50fQogICAgICAgICBdCiAgICAgIH0KICAgXQpdCklURU1fMgogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe1paWlNldENvbnRpbmVudGFsU3VwcG9ydCBhcyBwcmV0dHkgSlNPTn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0Q29udGluZW50YWxTdXBwb3J0JHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgd2l0aCBKU09OIGZvcm1hdAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgdXN1YWxseSBzYW1lIGFzIGZvciBFeHBvcnREYXRhR2V0CiAgICAgICAgICAgICAgICBGb3JtYXQgICAgID0+ICdKU09OJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewoKICAgICAgICAgICAgICAgICAgICAjIHJlZHVuZGFudCBzZXR0aW5nIGFzIFByZXR0eSBpcyB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIFByZXR0eSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICAjIFRoZSBleHBlY3RlZCByb3dzIG5lZWQgdG8gYmUgc29ydGVkIGJ5IGNvbmZpZyBpdGVtIG51bWJlciBpbiBkZXNjZW5kaW5nIG9yZGVyLgogICAgICAgICMgVGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgaW4gRXhwb3J0RGF0YUdldCgpLgogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgICAgICBbIHsgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckV1cm9wZX0gXSwgIkxldmVsU2Vjb25kJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe1NlY29uZExldmVsU3VwcG9ydGVyRXVyb3BlfSBdIH0gXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICAgICAgWyB7ICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sICJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX0gXSB9IF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsgPDwiSVRFTV8zIiwgPDwiSVRFTV80IiBdLApbCiAgICIkQ29uZmlnSXRlbU51bWJlcnNbNV0iLAogICBbCiAgICAgIHsKICAgICAgICAgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfQogICAgICAgICBdLAogICAgICAgICAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0KICAgICAgICAgXQogICAgICB9CiAgIF0KXQpJVEVNXzMKWwogICAiJENvbmZpZ0l0ZW1OdW1iZXJzWzRdIiwKICAgWwogICAgICB7CiAgICAgICAgICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYX0KICAgICAgICAgXSwKICAgICAgICAgIkxldmVsU2Vjb25kJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9CiAgICAgICAgIF0KICAgICAgfQogICBdCl0KSVRFTV80CiAgICB9LAoKKTsKCj1mb3IgbmV2ZXIKCjEwLjEgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGRlcGxveW1lbnQgc3RhdGUgc2VhcmNoIGNoZWNrKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1sxXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGluY2lkZW50IHN0YXRlIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY29tYmluZWQgc2VhcmNoIGNoZWNrKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKFhNTCBkYXRhIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgRGF0ZTEgICAgICAgICAgID0+ICcyMDA4LTAyLTAxJywKICAgICAgICAgICAgICAgIFRleHRBcmVhMSAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICBDdXN0b21lcjEgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgIFRleHQxICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgRGF0ZVRpbWUxICAgICAgID0+ICcyMDA4LTAyLTAxIDAzOjU5JywKICAgICAgICAgICAgICAgIEludGVnZXIxICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNvbWJpbmVkIGFsbCBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBEYXRlMSAgICAgICAgICAgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgVGV4dEFyZWExICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgIEN1c3RvbWVyMSAgICAgICA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgVGV4dDEgICAgICAgICAgID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICBEYXRlVGltZTEgICAgICAgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgSW50ZWdlcjEgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgIEdlbmVyYWxDYXRhbG9nMSA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIHJldHVybmVkIGFycmF5KX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0R1bW15MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgIlRlc3RcblRleHQgQXJyYXlcblRlc3QiLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGRvdWJsZSBlbGVtZW50IGNoZWNrcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0R1bW15MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRHVtbXkxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHN1YiBlbGVtZW50IGNoZWNrcyB3aXRoIHVuZGVmIHZhbHVlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3Mgd2l0aCB1bmRlZiB2YWx1ZXMgYW5kIGVtcHR5IHN0cmluZ3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjo0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDQgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoc3BlY2lhbCBjaGFyYWN0ZXIgY2hlY2tzKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzhdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDUgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnPjxAflwnfXtbXVxcJywKICAgICAgICAgICAgICAgICdUZXN0OzpfwrBeISLCpyQlJi8oKT0/wrRgKitUZXN0JywKICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXN0XHRUZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbOV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICfimYog4pmIIOKZiSDimYog4pmLIOKZjSDimZEnLAogICAgICAgICAgICAgICAgJ+KciCDinaQg4piuJywKICAgICAgICAgICAgICAgICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAnwq4gwqknLAogICAgICAgICAgICAgICAgJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCj1jdXQKCiMgcnVuIGdlbmVyYWwgRXhwb3J0RGF0YUdldCB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBFeHBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJFeHBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUV4cG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VFeHBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0KICAgICAgICAgICAgJiYgcmVmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfSBlcSAnSEFTSCcKICAgICAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgc2F2ZSBvYmplY3QgZGF0YQogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCByb3dzCiAgICAgICAgICAgIE1BUFBJTkdPQkpFQ1REQVRBOgogICAgICAgICAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhICggQHsgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSB9ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IG1hcHBpbmcgcm93CiAgICAgICAgICAgICAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nT2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICAgICAgTWFwcGluZ0lEICAgICAgICAgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiAkTWFwcGluZ09iamVjdERhdGEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgc2VhcmNoIGRhdGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntTZWFyY2hEYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBzYXZlIHNlYXJjaCBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFTYXZlKAogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGV4cG9ydCBkYXRhIGFzIGFuIGFycmF5cmVmCiAgICAgICAgbXkgJEV4cG9ydERhdGEgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+RXhwb3J0RGF0YUdldCgKICAgICAgICAgICAgJXsgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9IH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSApIHsKICAgICAgICAgICAgb2soICEkRXhwb3J0RGF0YSwgIkV4cG9ydERhdGFHZXQoKSByZXR1cm5lZCBub3QgZGF0YSBhcyB3YXMgZXhwZWN0ZWQiICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkRXhwb3J0RGF0YSBuZSAnQVJSQVknICkgewoKICAgICAgICAgICAgIyBjaGVjayBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgZmFpbCgiRXhwb3J0RGF0YUdldCgpIC0gcmV0dXJuIHZhbHVlIGlzIG5vdCBhbiBhcnJheSByZWZlcmVuY2UiKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbnVtYmVyIG9mIHJvd3MKICAgICAgICBpcygKICAgICAgICAgICAgc2NhbGFyIEB7JEV4cG9ydERhdGF9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSB9LAogICAgICAgICAgICAiRXhwb3J0RGF0YUdldCgpIC0gY29ycmVjdCBudW1iZXIgb2Ygcm93cyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayB0aGUgaW5kaXZpZHVhbCByb3dzIG9mIGV4cG9ydCBkYXRhCiAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAwOwogICAgICAgIFJPVzoKICAgICAgICBmb3IgbXkgJEV4cG9ydFJvdyAoICRFeHBvcnREYXRhLT5AKiApIHsKICAgICAgICAgICAgc3VidGVzdCAiRXhwb3J0RGF0YUdldCgpOiByb3cgJENvdW50ZXJSb3cgaW4gZXhwb3J0ZWQgZGF0YSIgPT4gc3ViIHsKICAgICAgICAgICAgICAgIHJlZl9vayggJEV4cG9ydFJvdywgJ0FSUkFZJywgJ2V4cG9ydGVkIHJvdyBpcyBhbiBhcnJheXJlZicgKTsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgcmVmZXJlbmNlIHJvdwogICAgICAgICAgICAgICAgbXkgJFJlZmVyZW5jZVJvdyA9ICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0RGF0YX0tPlskQ291bnRlclJvd107CiAgICAgICAgICAgICAgICByZWZfb2soICRSZWZlcmVuY2VSb3csICdBUlJBWScsICdleHBlY3RlZCByb3cgaXMgYW4gYXJyYXlyZWYnICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgY29sdW1ucwogICAgICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAgICAgc2NhbGFyIEB7JEV4cG9ydFJvd30sCiAgICAgICAgICAgICAgICAgICAgc2NhbGFyIEB7JFJlZmVyZW5jZVJvd30sCiAgICAgICAgICAgICAgICAgICAgImNvcnJlY3QgbnVtYmVyIG9mIGNvbHVtbnMiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHZhbHVlcwogICAgICAgICAgICAgICAgaXMoICRFeHBvcnRSb3csICRSZWZlcmVuY2VSb3csICd2YWx1ZXMgaW4gZXhwb3J0ZWQgcm93JyApOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgfQoKICAgICAgICAjIG9wdGlvbmFsbHkgdGVzdCB0aGUgZm9ybWF0dGVkIGV4cG9ydAogICAgICAgIGlmICggJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfSApIHsKICAgICAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnRDb250ZW50fSApIHsKICAgICAgICAgICAgICAgIGZhaWwoIlJlZmVyZW5jZUV4cG9ydENvbnRlbnQgaXMgc2V0IHVwIik7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggcmVmICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0Q29udGVudH0gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIGZhaWwoIlJlZmVyZW5jZUV4cG9ydENvbnRlbnQgaXMgYW4gYXJyYXlyZWYiKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRUZW1wbGF0ZUlEID0gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9OwoKICAgICAgICAgICAgIyBzcGVjaWZ5IHRoZSBmb3JtYXQKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+Rm9ybWF0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgRm9ybWF0RGF0YSA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YVNhdmV9LT57Rm9ybWF0RGF0YX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgZXhwb3J0IGRhdGEgcm93cwogICAgICAgICAgICBteSAkRm9ybWF0ID0gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfS0+e0Zvcm1hdH07CiAgICAgICAgICAgIGRpYWcgIkZvcm1hdCBvZiBjb250ZW50IGlzOiAkRm9ybWF0IjsKICAgICAgICAgICAgbXkgJEZvcm1hdEJhY2tlbmQgPSAkRm9ybWF0QmFja2VuZE9iamVjdHskRm9ybWF0fTsKICAgICAgICAgICAgbXkgQENvbnRlbnQ7CiAgICAgICAgICAgIGZvciBteSAkUm93ICggJEV4cG9ydERhdGEtPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29udGVudCwgJEZvcm1hdEJhY2tlbmQtPkV4cG9ydERhdGFTYXZlKAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRXhwb3J0RGF0YVJvdyA9PiAkUm93LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgXEBDb250ZW50LAogICAgICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VFeHBvcnRDb250ZW50fSwKICAgICAgICAgICAgICAgICdFeHBvcnREYXRhU2F2ZSgpIHByb2R1Y2VkIGV4cGVjdGVkIGNvbnRlbnQnCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIEltcG9ydERhdGFTYXZlIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15IEBJbXBvcnREYXRhVGVzdHMgPSAoCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtJbXBvcnREYXRhU2F2ZSBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7SW1wb3J0RGF0YVNhdmUgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7SW1wb3J0RGF0YVNhdmUgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFtdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IGRhdGEgcm93IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+ICcnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBkYXRhIHJvdyBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjBdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiB7fSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtubyBleGlzdGluZyB0ZW1wbGF0ZSBpZCBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe25vIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsnRHVtbXknXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJEludmFsZGlDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjJdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbJ0R1bW15J10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7bWFwcGluZyBsaXN0IGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe21vcmUgdGhhbiBvbmUgaWRlbnRpZmllciB3aXRoIHRoZSBzYW1lIG5hbWUgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnMTIzJywgJzMyMScgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpZGVudGlmaWVyIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWycnXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpZGVudGlmaWVyIGlzIHVuZGVmIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW3VuZGVmXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtib3RoIGlkZW50aWZpZXJzIGFyZSBlbXB0eSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgJycgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtib3RoIGlkZW50aWZpZXJzIGFyZSB1bmRlZiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyB1bmRlZiwgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgaWRlbnRpZmllcnMgaXMgZW1wdHksIG9uZSBpcyB1bmRlZiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICcxMjMnLCAnJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe29uZSBvZiB0aGUgaWRlbnRpZmllcnMgaXMgdW5kZWYgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syM10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJzEyMycsIHVuZGVmIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7b25lIG9mIHRoZSBpZGVudGlmaWVycyBpcyBlbXB0eSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgJzEyMycgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbIHVuZGVmLCAnMTIzJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIFRPRE8gQWRkIHNvbWUgaWRlbnRpZmllciB0ZXN0cwoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7ZW1wdHkgbmFtZSBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJycsICdQcm9kdWN0aW9uJywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ludmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCAxJywgJ0R1bW15JywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ludmFsaWQgaW5jaWRlbnQgc3RhdGUgaXMgZ2l2ZW4gKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjRdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMicsICdQcm9kdWN0aW9uJywgJ0R1bW15JyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3Qgd2l0aG91dCBhbnkgZHluYW1pYyBmaWVsZHMKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe25vIGR5bmFtaWMgZmllbGRzIChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gdW5kZWYsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyB0ZXN0cyB3aXRoIGEgc2luZ2xlIHZhbHVlIGVudGl0eSBmaWVsZDogQ3VzdG9tZXJDSU8KCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtpbXBvcnQgQ3VzdG9tZXJDSU8gYXMgc2ltcGxlIHN0cmluZyAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJDSU8nLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAoKICAgICAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xlIHZhbHVlIEVudGl0aXkgZmllbGQuIEJvdGggQ1NWIGFuZCBKU09OIGV4cG9ydCB0aGlzIGNhc2UgYXMKICAgICAgICAgICAgICAgICAgICAjIGEgc2ltcGxlIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3tkaXZlcnNlX0NJT30sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJDSU8nLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGUgdmFsdWUgUmVmZXJlbmNlIGZpZWxkLCB0aGVyZWZvcmUgYSBFbnRpdHkgZmllbGQuCiAgICAgICAgICAgICAgICAjIFNpbmdsZSB2YWx1ZSBFbnRpdHkgZmllbGRzIHJldHVybiBhIGxpc3Qgd2l0aCBvbmUgZWxlbWVudC4KICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7ZGl2ZXJzZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiB1bmRlZiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtvbmx5IEN1c3RvbWVyQ0lPIGFzIHJlZmVyZW5jZSB0byBzaW5nbGUgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyQ0lPJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAgICAgIyBDdXN0b21lckNJTyBpcyBhIHNpbmdsZSB2YWx1ZSBSZWZlcmVuY2UgZmllbGQsIHRoZXJlZm9yZSBhIEVudGl0eSBmaWVsZC4KICAgICAgICAgICAgICAgICAgICAjIFNpbmdsZSB2YWx1ZSBFbnRpdHkgZmllbGRzIGNhbiBiZSBjcmVhdGVkIHdpdGggYSBsaXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGNhc2UgZG9lcyBub3QgYXJpc2UgZnJvbSB0aGUgcmVndWxhciBleHBvcnQsIGFzIHRoZSByZWd1bGFyIGV4cG9ydAogICAgICAgICAgICAgICAgICAgICMgZXhwb3J0cyBDdXN0b21lckNJTyBhcyBhIHNpbXBsZSBzdHJpbmcuCiAgICAgICAgICAgICAgICAgICAgWyAkQ3VzdG9tZXJVc2Vyc3tmZW1hbGVfQ0lPfSBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyQ0lPJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xlIHZhbHVlIFJlZmVyZW5jZSBmaWVsZCwgdGhlcmVmb3JlIGEgRW50aXR5IGZpZWxkLgogICAgICAgICAgICAgICAgIyBTaW5nbGUgdmFsdWUgRW50aXR5IGZpZWxkcyByZXR1cm4gYSBsaXN0IHdpdGggb25lIGVsZW1lbnQuCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJze2ZlbWFsZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiB1bmRlZiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSB0d28gZGF0ZSBmaWVsZHM6IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtGaXJzdE1vbmRheSBhbmQgRmlyc3RXZWVrZW5kIGFzIGRhdGEgc3RydWN0dXJlIChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29EYXRlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcyMDI2LTAxLTA1IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgICAgICBbICcyMDI2LTAxLTAzJywgJzIwMjYtMDEtMDQnIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI2LTAxLTA1IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWyAnMjAyNi0wMS0wMyAwMDowMDowMCcsICcyMDI2LTAxLTA0IDAwOjAwOjAwJyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe0ZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQgYXMgSlNPTiBzdHJpbmcgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgRmlyc3RNb25kYXkgYW5kIEZpcnN0V2Vla2VuZCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjctMDEtMDQgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgICAgIHFxe1siMjAyNy0wMS0wMiIsICIyMDI3LTAxLTAzIiBdfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgRmlyc3RNb25kYXkgYW5kIEZpcnN0V2Vla2VuZCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjctMDEtMDQgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiA9PiBbICcyMDI3LTAxLTAyIDAwOjAwOjAwJywgJzIwMjctMDEtMDMgMDA6MDA6MDAnIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7Rml4aW5nIHRoZSBmaXJzdCBtb25kYXkgaW4gMjAyNSwgd2FzIHNldCB0byB0dWVzZGF5fSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUQiLCAgICAjIHdhcyBjcmVhdGVkIGJ5IHNldHVwIG9mIGNvbmZpZyBpdGVtcwogICAgICAgICAgICAgICAgICAgICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgIyBmaXhpbmcgdHVlc2RheSB0byBtb25kYXkKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHFxe1VuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICMgZml4ZWQ6IHR1ZXNkYXkgPT4gbW9uZGF5CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0V2Vla2VuZCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wNCAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtFeHRlbmRpbmcgZmlyc3Qgd2Vla2VuZCAyMDI1IHRvIG1vbmRheX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAiVW5pdFRlc3QgLSBUd29EYXRlcyAyMDI1ICRSYW5kb21JRCIsICAgICMgd2FzIGNyZWF0ZWQgYnkgc2V0dXAgb2YgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICAgICAgICAgcXF7WyIyMDI1LTAxLTA0IiwiMjAyNS0wMS0wNSIsICAgICIyMDI1LTAxLTA2IiBdfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHFxe1VuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICMgZml4ZWQ6IHR1ZXNkYXkgPT4gbW9uZGF5CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0V2Vla2VuZCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wNCAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgICAgICcyMDI1LTAxLTA2IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7RXh0ZW5kaW5nIGZpcnN0IHdlZWtlbmQgMjAyNSB0byBmcmlkYXksIHNraXBwaW5nIHdlZG5lc2RheSBhbmQgdHVlc2RheX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9Ojo3IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9Ojo2IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoxIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIiwgICAgIyB3YXMgY3JlYXRlZCBieSBzZXR1cCBvZiBjb25maWcgaXRlbXMKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0xMCAwMDowMDowMCcsICAgICAgICAgICAgICAgICAgICMgZXh0ZW5kaW5nIHRvIGZyaWRheSwgc2tpcHBpbmcgdHVlc2RheSwgd2VkbmVzZGF5LCBhbmQgdGh1cnNkYXkKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wOSAwMDowMDowMCcsICAgICAgICAgICAgICAgICAgICMgYWRkaW5nIHRodXJzZGF5CiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDItMDQgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAjIHdyb25nIG1vbnRoIGZvciBzYXR1cmRheQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gNCwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gcXF7VW5pdFRlc3QgLSBUd29EYXRlcyAyMDI1ICRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjUtMDEtMDYgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAgIyBmaXhlZDogdHVlc2RheSA9PiBtb25kYXkKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgICcyMDI1LTAyLTA0IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdyb25nIG1vbnRoCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHVlc2RheSBza2lwcGVkCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2VkbmVzZGF5IHNraXBwZWQKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wOSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMTAgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJpZGF5CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGVzdHMgd2l0aCBhIG11bHRpIHZhbHVlIGVudGl0eSBmaWVsZCwgQ3VzdG9tZXJTYWxlc1RlYW0KCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtDdXN0b21lclNhbGVzVGVhbSBhcyByZWZlcmVuY2UgdG8gbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciB0cmVlcyBhbmQgYXBwbGVzJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAgICAgIyBmb3IgZXhhbXBsZSBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICBAQ3VzdG9tZXJVc2Vyc3txdyh0YW5hYmF0ZV9tb25nZXIgcGFsbV9tb25nZXIgYXBwbGVfbW9uZ2VyKX0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclNhbGVzVGVhbSBmb3IgdHJlZXMgYW5kIGFwcGxlcycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgIEBDdXN0b21lclVzZXJze3F3KHRhbmFiYXRlX21vbmdlciBwYWxtX21vbmdlciBhcHBsZV9tb25nZXIpfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7Q3VzdG9tZXJTYWxlc1RlYW0gYXMgQ1NWIHdpdGggbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyBDU1YKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwoKICAgICAgICAgICAgICAgICAgICAjIGZvciBleGFtcGxlIGZyb20gQ1NWIGV4cG9ydCwgdGhlIGV4YWN0IGxheW91dCBkb2VzIG5vdCBtYXR0ZXIKICAgICAgICAgICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHF7In0gaXMgcXVvdGVkIGluIHRoZSBKU09OIHN0cmluZwogICAgICAgICAgICAgICAgICAgIHFxe1sgIkB7WyRDdXN0b21lclVzZXJze29uaW9uX21vbmdlcn0gPX4gcy8iL1xcIi9nciBdfSIgICAgICAgICAsICAgICAgICAgICAgICJAe1skQ3VzdG9tZXJVc2Vyc3tnYXJsaWNfbW9uZ2VyfSA9fiBzLyIvXFwiL2dyIF19IiBdfSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciByb290IHZlZ2V0YWJsZXMnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciByb290IHZlZ2V0YWJsZXMnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9DdXN0b21lckNJTyRUZXN0SURTdWZmaXgiICAgICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICBAQ3VzdG9tZXJVc2Vyc3txdyhvbmlvbl9tb25nZXIgZ2FybGljX21vbmdlcil9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSBzaW5nbGUgdmFsdWUgU2V0IGZpZWxkLCBaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQgYXMgcmVmZXJlbmNlIHRvIHNpbmdsZSB2YWx1ZSBhcnJheSAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBTdXBwb3J0IGZvciBBZnJpY2EnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKCiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICB7ICdMZXZlbEZpcnN0JyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sICdMZXZlbFNlY29uZCcgLiAkVGVzdElEU3VmZml4ID0+ICBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0gfSwKICAgICAgICAgICAgICAgICAgICBdLAoKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBTdXBwb3J0IGZvciBBZnJpY2EnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1paWlNldENvbnRpbmVudGFsU3VwcG9ydCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMZXZlbEZpcnN0JyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICdMZXZlbFNlY29uZCcgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX0gXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe1paWlNldENvbnRpbmVudGFsU3VwcG9ydCBhcyBKU09OIHN0cmluZyB3aXRoIGEgc2luZ2xlIHZhbHVlIGFycmF5IChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldENvbnRpbmVudGFsU3VwcG9ydCRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IFN1cHBvcnQgZm9yIEV1cm9wZScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAoKICAgICAgICAgICAgICAgICAgICAjIEpTT04gc3RyaW5nIGxpa2UgZnJvbSBDU1YgZXhwb3J0LiBUaGUgZXhhY3QgbGF5b3V0IGRvZXMgbm90IG1hdHRlci4KICAgICAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHF7In0gaXMgcXVvdGVkIGluIHRoZSBKU09OIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICA8PCJFTkRfSlNPTiIsClsKICAgIHsgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IjogWyAiQHtbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfSA9fiBzLyIvXFwiL2dyIF19IiBdLCAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IjogWyAiQHtbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0gPX4gcy8iL1xcIi9nciBdfSIgXSB9Cl0KRU5EX0pTT04KCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgU3VwcG9ydCBmb3IgRXVyb3BlJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAnTGV2ZWxGaXJzdCcgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAnTGV2ZWxTZWNvbmQnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJFdXJvcGV9IF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSBtdWx0aSB2YWx1ZSBTZXQgZmllbGQsIFpaWlNldE9mQWdlbnRzCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7WlpaU2V0T2ZBZ2VudHMgYXMgcmVmZXJlbmNlIHRvIG11bHRpIHZhbHVlIGFycmF5IChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywKCiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBpbiB0aGUgbWFwcGluZyBsaXN0CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe1paWlNldE9mQWdlbnRzIGFzIEpTT04gc3RyaW5nIHdpdGggbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRPZkFnZW50cyRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCgogICAgICAgICAgICAgICAgICAgICMgc2ltaWxhciB0byBDU1YgZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgPDwiRU5EX0pTT04iLAogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSB9CiAgICAgICAgICAgICAgICAgICAgXQpFTkRfSlNPTgogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IGluIHRoZSBtYXBwaW5nIGxpc3QKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0sICdBZ2VudDInIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7WlpaU2V0T2ZBZ2VudHMgd2l0aCBpbmRleGVkIGFjY2VzcyAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH06OjIwIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgICAgICA8PCJFTkRfSlNPTl9GT1JfSU5ERVhfMiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSA9fiBzLyIvXFwiL2dyIF19IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0gfQpFTkRfSlNPTl9GT1JfSU5ERVhfMgogICAgICAgICAgICAgICAgICAgIDw8IkVORF9KU09OX0ZPUl9JTkRFWF8yMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSA9fiBzLyIvXFwiL2dyIF19IiBdIH0KRU5EX0pTT05fRk9SX0lOREVYXzIwCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAyLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7bWFsZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IHVuZGVmIH0sCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IF0sICdBZ2VudDInIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSB9LCAgICAjIGNoYW5nZWQKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCAzIHRvIDE5IHNraXBwZWQKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LCAgICAgIyBhZGRlZAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCik7Cgo9Zm9yIG5ldmVyCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoYSBORVcgY29uZmlnIGl0ZW0gbXVzdCBiZSBjcmVhdGVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wNi0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMDgtMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MycsCiAgICAgICAgICAgICAgICAgICAgJzMnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MyBUZXh0MyBUZXN0MycsCiAgICAgICAgICAgICAgICAgICAgIlRlc3QzXG5UZXh0QXJyYXkzXG5UZXN0MyIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA2LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTA4LTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QzfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0MyBUZXh0MyBUZXN0MycsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDNcblRleHRBcnJheTNcblRlc3QzIiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIHNlY29uZCBORVcgY29uZmlnIGl0ZW0gbXVzdCBiZSBjcmVhdGVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wOS0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMTItMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgJzQnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3Q0XG5UZXh0QXJyYXk0XG5UZXN0NCIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA5LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTEyLTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3Q0fSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDRcblRleHRBcnJheTRcblRlc3Q0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gZmlyc3QgdGVzdCBjb25maWcgaXRlbSl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0QXJlYTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjZdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQaWxvdCcsCiAgICAgICAgICAgICAgICAgICAgJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QyJywKICAgICAgICAgICAgICAgICAgICAnMicsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBVUERBVEUxIFRlc3QnLAogICAgICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTFcblRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMiwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQaWxvdCcsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTAyLTAyIDAzOjU5JywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QyfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICcyJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0IFRleHQgVVBEQVRFMSBUZXN0JywKICAgICAgICAgICAgICAgICdUZXh0QXJlYTE6OjEnICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTFcblRlc3QiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGEgbmV3IHZlcnNpb24gbXVzdCBiZSBhZGRlZCB0byBmaXJzdCB0ZXN0IGNvbmZpZyBpdGVtIGFnYWluKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0N1c3RvbWVyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGVUaW1lMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1JlcGFpcicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAzJywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMyAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QzJywKICAgICAgICAgICAgICAgICAgICAnMycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBVUERBVEUyIFRlc3QnLAogICAgICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTJcblRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAzJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdSZXBhaXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDdXN0b21lcjE6OjEnICAgICAgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnRGF0ZTE6OjEnICAgICAgICAgICA9PiAnMjAwOC0wMi0wMycsCiAgICAgICAgICAgICAgICAnRGF0ZVRpbWUxOjoxJyAgICAgICA9PiAnMjAwOC0wMi0wMyAwMzo1OScsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0M30sCiAgICAgICAgICAgICAgICAnSW50ZWdlcjE6OjEnICAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFVQREFURTIgVGVzdCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheSBVUERBVEUyXG5UZXN0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gdGhpcmQgdGVzdCBjb25maWcgaXRlbSl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjddLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIE1haW4yU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMiAoMSkgTWFpbjJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJyA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgID0+ICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnID0+ICdNYWluMiAoMSkgTWFpbjJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHNwZWNpYWwgY2hhcmFjdGVyIGNoZWNrcykKICAgICMgSW4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicgMTYgQXR0cmlidXRlcyB3ZXJlIGltcG9ydGVkLAogICAgIyBzbyB0aGVyZSB3aWxsIGJlIDggbGluZ2VyaW5nIGF0dHJpYnV0ZXMuCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnOCBsaW5nZXJpbmcgYXR0cmlidXRlcycsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3RcblRlc3RcdFRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gIlRlc3RcblRlc3RcdFRlc3QiLAoKICAgICAgICAgICAgICAgICMgbGluZ2VyaW5nIGZyb20gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDMpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJyAgICAgICAgICAgICAgICAgICAgICA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjInID0+ICdNYWluMSAoMSkgTWFpbjFTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpCiAgICAjIEluICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInIDE2IEF0dHJpYnV0ZXMgd2VyZSBpbXBvcnRlZCwKICAgICMgc28gdGhlcmUgd2lsbCBiZSA4IGxpbmdlcmluZyBhdHRyaWJ1dGVzLgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJzggbGluZ2VyaW5nIGF0dHJpYnV0ZXMsIGFnYWluJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI3XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiA0JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnzqsgzrQgzrsnLAogICAgICAgICAgICAgICAgICAgICfPgCDPhyDPmCcsCiAgICAgICAgICAgICAgICAgICAgJ8+6IM+xIM+uJywKICAgICAgICAgICAgICAgICAgICAnya8gypMgyqAnLAogICAgICAgICAgICAgICAgICAgICfKrCDKrycsCiAgICAgICAgICAgICAgICAgICAgJ9C5INGEINGJJywKICAgICAgICAgICAgICAgICAgICAn0Zog0ZEnLAogICAgICAgICAgICAgICAgICAgICfRrCDRpicsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiA0JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMTo6MScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnzqsgzrQgzrsnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfPgCDPhyDPmCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJ8+6IM+xIM+uJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PiAnya8gypMgyqAnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfKrCDKrycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ9C5INGEINGJJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAn0Zog0ZEnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfRrCDRpicsCgogICAgICAgICAgICAgICAgIyBsaW5nZXJpbmcgZnJvbSAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMyknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YSBzaW1wbGUgaW1wb3J0IGZvciB0ZXN0aW5nIHRoZSBvdmVycmlkaW5nIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlc30sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0ltcG9ydHRlc3QgNSBmb3IgYmVoYXZpb3Igb2YgZW1wdHkgdmFsdWVzJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDEnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdJbXBvcnR0ZXN0IDUgZm9yIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlcycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnaW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBUZXh0MScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IHVuZGVmIGZvciBUZXh0MSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYSBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAyLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBhIHNpbmdsZSBzcGFjZSB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnICcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnICcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCB0aGUgc3RyaW5nICcwJyB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnMCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDQsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBubyBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIEdlbmVyYWxDYXRhbG9nMSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGhlIGltcG9ydCBzaG91bGQgZmFpbAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGhlIGltcG9ydCBzaG91bGQgZmFpbAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBEZXBsU3RhdGUsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYW4gZXJyb3Igc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgRGVwbFN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBhbiBlbXB0eSB2YWx1ZSBmb3IgSW5jaVN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYW4gZXJyb3Igc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgSW5jaVN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydCB3aXRob3V0IHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScsIGFuIGVycm9yIHNob3VsZCBiZSBnZW5lcmF0ZWQgKHNlZSBidWcjMTQwOTgpLn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gSW1wb3J0dGVzdCAxICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKPWN1dAoKIyBydW4gZ2VuZXJhbCBJbXBvcnREYXRhVGVzdHMgdGVzdHMKbXkgJEltcG9ydFRlc3RDb3VudCA9IDE7CmZvciBteSAkVGVzdCAoQEltcG9ydERhdGFUZXN0cykgewoKICAgIHN1YnRlc3QgIkltcG9ydERhdGE6ICRUZXN0LT57TmFtZX0iID0+IHN1YiB7CgogICAgICAgICMgY2hlY2sgU291cmNlSW1wb3J0RGF0YSBhdHRyaWJ1dGUKICAgICAgICBpZiAoICEkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IHx8IHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgIGZhaWwoIlNvdXJjZUltcG9ydERhdGEgbm90IGZvdW5kIGZvciB0aGlzIHRlc3QuIik7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgb2JqZWN0IGRhdGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntPYmplY3REYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIE9iamVjdERhdGEgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9CiAgICAgICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9IGVxICdBUlJBWScKICAgICAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3Qgcm93cwogICAgICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICAgICAgZm9yIG15ICRNYXBwaW5nT2JqZWN0RGF0YSAoIEB7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntNYXBwaW5nT2JqZWN0RGF0YX0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgICAgICAgICAgICAgbXkgJE1hcHBpbmdJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdBZGQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+ICRNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW1wb3J0IGRhdGEgc2F2ZQogICAgICAgIG15ICggJENvbmZpZ0l0ZW1JRCwgJFJldENvZGUgKSA9ICRPYmplY3RCYWNrZW5kT2JqZWN0LT5JbXBvcnREYXRhU2F2ZSgKICAgICAgICAgICAgJXsgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfSB9LAogICAgICAgICAgICBDb3VudGVyID0+ICRJbXBvcnRUZXN0Q291bnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfSApIHsKCiAgICAgICAgICAgIG9rKCAhJENvbmZpZ0l0ZW1JRCwgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gbm8gQ29uZmlnSXRlbUlEIiApOwogICAgICAgICAgICBvayggISRSZXRDb2RlLCAgICAgICJJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIG5vIFJldENvZGUiICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBvayggJENvbmZpZ0l0ZW1JRCwgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gQ29uZmlnSXRlbUlEOiAkQ29uZmlnSXRlbUlEIiApOwogICAgICAgIG9rKCAkUmV0Q29kZSwgICAgICAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBSZXRDb2RlOiAkUmV0Q29kZSIgKTsKCiAgICAgICAgIyBjaGVjayB0aGUgbnVtYmVyIG9mIHZlcnNpb25zCiAgICAgICAgewogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKSAvLyBbXTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgc2NhbGFyICRWZXJzaW9uTGlzdC0+QCosCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57VmVyc2lvbkNvdW50fSB8fCAwLAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiB2ZXJzaW9ucyIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBnZW5lcmFsIGVsZW1lbnRzCiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgdW5sZXNzIGV4aXN0cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9OwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkVmVyc2lvbkRhdGEtPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9LAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgJEVsZW1lbnQgaXMgaWRlbnRpY2FsIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbnVtYmVyIG9mIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBpcygKICAgICAgICAgICAgKCB0cnVlIHttL15EeW5hbWljRmllbGRfL30ga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT4lKiApLAogICAgICAgICAgICAoIHRydWUge20vXkR5bmFtaWNGaWVsZF8vfSBrZXlzICRWZXJzaW9uRGF0YS0+JSogKSwKICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiBkeW5hbWljIGZpZWxkIGVsZW1lbnRzIiwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBERl9LRVk6CiAgICAgICAgZm9yIG15ICRERktleSAoIHNvcnQga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT4lKiApIHsKICAgICAgICAgICAgbmV4dCBERl9LRVkgdW5sZXNzICRERktleSA9fiBtL15EeW5hbWljRmllbGRfLzsKCiAgICAgICAgICAgIG9rKCBleGlzdHMgJFZlcnNpb25EYXRhLT57JERGS2V5fSwgIiRERktleSByZXRyaWV2ZWQgZnJvbSBuZXcgY29uZmlnIGl0ZW0iICk7CiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57JERGS2V5fSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX0tPntMYXN0VmVyc2lvbn0tPnskREZLZXl9LAogICAgICAgICAgICAgICAgIiRERktleSBoYXMgZXhwZWN0ZWQgdmFsdWUiCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQpjb250aW51ZSB7CiAgICAkSW1wb3J0VGVzdENvdW50Kys7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ImportExport/ObjectBackend/ITSMConfigItemExternalSource.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzSGFzaFJlZldpdGhEYXRhKTsKCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkSW1wb3J0RXhwb3J0T2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCAgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKbXkgJFRlc3RJRFN1ZmZpeCA9ICJVbml0VGVzdCRSYW5kb21JRCI7CmRpYWcgIlRlc3RJRFN1ZmZpeDogJyRUZXN0SURTdWZmaXgnIjsKCiMgY3JlYXRlIHRlc3QgdXNlcgpteSAoIHVuZGVmLCAkVGVzdFVzZXJJRCApID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwoKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnZXQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzZXMgYXMgbmFtZSAyIGlkIGxpc3QKbXkgJENJQ2xhc3NMaXN0UmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVDSUNsYXNzTmFtZTJJRCA9IHJldmVyc2UgJENJQ2xhc3NMaXN0UmVmLT4lKjsKCiMgZmV0Y2ggc3Vic2lkaWFyeSBjbGFzcyBmcm9tIGdlbmVyYWwgY2F0YWxvZwpteSAkU3Vic2lkaWFyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnU3Vic2lkaWFyeScsCik7CgojIGFkZCBJbXBvcnRFeHBvcnQgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdVbml0VGVzdCcgLiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwokSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICBPYmplY3REYXRhID0+IHsKICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICB9LAogICAgVXNlcklEID0+ICRUZXN0VXNlcklELAopOwoKbXkgQE1hcHBpbmdPYmplY3REYXRhID0gKAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICB9LAogICAgewogICAgICAgIEtleSA9PiAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgPT4gJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknLAogICAgfSwKKTsKCk1BUFBJTkdPQkpFQ1REQVRBOgpmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdERhdGEpIHsKCiAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgbXkgJE1hcHBpbmdJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdBZGQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKCiAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gJE1hcHBpbmdPYmplY3REYXRhLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKfQoKIyBhZGQgYSBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBkb24ndCBjYXJlIGFib3V0IHZhbGlkIGVtYWlscwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpyZWZfb2soICREZXBsU3RhdGVMaXN0LCAnSEFTSCcsICdkZXBsb3ltZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7CnJlZl9vayggJERlcGxTdGF0ZUxpc3QsICdIQVNIJywgJ2luY2lkZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBhZGQgdGhlIHRlc3QgY29uZmlnIGl0ZW1zCmRpYWcgImFkZCBjb25maWcgaXRlbTogQ291bnRyeSI7Cm15ICRDSUNvdW50cnlJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTmFtZSAgICAgICAgPT4gJ1Rlc3RDb3VudHJ5JywKICAgIENsYXNzSUQgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtDb3VudHJ5fSwKICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKKTsKb2soICRDSUNvdW50cnlJRCwgJ2NvbmZpZyBpdGVtIGFkZGVkJyApOwoKZGlhZyAiYWRkIGNvbmZpZyBpdGVtOiBTdWJzaWRpYXJ5IjsKbXkgJENJU3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ0Jvbm4nLAogICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknID0+IFskQ0lDb3VudHJ5SURdLAopOwpvayggJENJU3Vic2lkaWFyeUlELCAnY29uZmlnIGl0ZW0gYWRkZWQnICk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgZGVmaW5lIGdlbmVyYWwgSW1wb3J0RGF0YVNhdmUgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwpteSBASW1wb3J0RGF0YVRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0ltcG9ydGluZyBkYXRhIHdpdGhvdXQgdHJpZ2dlcmluZyBhIG5ldyB2ZXJzaW9uLCBlbXB0eWluZyB0aGUgb2xkIHZhbHVlJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29mZicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVGVzdFN1YnNpZGlhcnknLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNw7xuY2hlbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdFN1YnNpZGlhcnknLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknID0+ICdNw7xuY2hlbicsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwga2VlcGluZyB0aGUgb2xkIHZhbHVlJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1N0cmF1YmluZycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ1N0cmF1YmluZycsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgPT4gWyRDSUNvdW50cnlJRF0sCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB0cmlnZ2VyaW5nIGEgbmV3IHZlcnNpb24sIGtlZXBpbmcgdGhlIG9sZCB2YWx1ZScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENsYXNzUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICAgICAgU3Vic2lkaWFyeSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVyc2lvblRyaWdnZXIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnQmVybGluJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tQ2l0eScgICAgICAgICAgICAgICA9PiAnQmVybGluJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JyA9PiBbJENJQ291bnRyeUlEXSwKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0ltcG9ydGluZyBkYXRhIHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwgZW1wdHlpbmcgdGhlIG9sZCB2YWx1ZScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDbGFzc1ByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIFN1YnNpZGlhcnkgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25UcmlnZ2VyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0hhbWJ1cmcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JyA9PiAnSGFtYnVyZycsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwgZW1wdHlpbmcgdGhlIG9sZCB2YWx1ZSwgZG9pbmcgYW4gZXh0ZXJuYWxTb3VyY2VUcmFuc2Zvcm0nLAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENJQ2xhc3NOYW1lMklEe1N1YnNpZGlhcnl9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb2ZmJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ03DvG5jaGVuJywKICAgICAgICAgICAgICAgICAgICBbIlRlc3RDb3VudHJ5Il0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAzLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ03DvG5jaGVuJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JyA9PiBbJENJQ291bnRyeUlEXSwKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgVGVzdEV4dGVybmFsU291cmNlVHJhbnNmb3JtID0+IDEsCiAgICB9LAoKKTsKCiMgcnVuIGdlbmVyYWwgSW1wb3J0RGF0YVRlc3RzIHRlc3RzCm15ICRJbXBvcnRUZXN0Q291bnQgPSAxOwpmb3IgbXkgJFRlc3QgKEBJbXBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJJbXBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUltcG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VJbXBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkVGVzdC0+e1Rlc3RFeHRlcm5hbFNvdXJjZVRyYW5zZm9ybX0gKSB7CiAgICAgICAgICAgIF9TZXRERjJFeHRlcm5hbFNvdXJjZVRyYW5zZm9ybSgpOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e09iamVjdERhdGF9CiAgICAgICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e0ltcG9ydERhdGFTYXZlfXtUZW1wbGF0ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtJbXBvcnREYXRhU2F2ZX17VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17T2JqZWN0RGF0YX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBwcmVmZXJlbmNlcwogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfSBlcSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfXskQ2xhc3NOYW1lfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ0lDbGFzc05hbWUySUR7JENsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17Q2xhc3NQcmVmZXJlbmNlc317JENsYXNzTmFtZX17JFByZWZlcmVuY2VLZXl9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgb2soICRTdWNjZXNzLCAiU3VjY2Vzc2Z1bGx5IHNldCBwcmVmZXJlbmNlICRQcmVmZXJlbmNlS2V5IGZvciBjbGFzcyAkQ2xhc3NOYW1lIiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGltcG9ydCBkYXRhIHNhdmUKICAgICAgICBteSAoICRDb25maWdJdGVtSUQsICRSZXRDb2RlICkgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgICAgICV7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17SW1wb3J0RGF0YVNhdmV9IH0sCiAgICAgICAgICAgIENvdW50ZXIgPT4gJEltcG9ydFRlc3RDb3VudCwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9ICkgewoKICAgICAgICAgICAgb2soICEkQ29uZmlnSXRlbUlELCAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBubyBDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgIG9rKCAhJFJldENvZGUsICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gbm8gUmV0Q29kZSIgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG9rKCAkQ29uZmlnSXRlbUlELCAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtSUQiICk7CiAgICAgICAgb2soICRSZXRDb2RlLCAgICAgICJJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIFJldENvZGU6ICRSZXRDb2RlIiApOwoKICAgICAgICAjIGNoZWNrIHRoZSBudW1iZXIgb2YgdmVyc2lvbnMKICAgICAgICB7CiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApIC8vIFtdOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICBzY2FsYXIgJFZlcnNpb25MaXN0LT5AKiwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX17VmVyc2lvbkNvdW50fSB8fCAwLAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiB2ZXJzaW9ucyIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBnZW5lcmFsIGVsZW1lbnRzCiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgdW5sZXNzIGV4aXN0cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufXskRWxlbWVudH07CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX17TGFzdFZlcnNpb259eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgICJJbXBvcnREYXRhU2F2ZSgpICRFbGVtZW50IGlzIGlkZW50aWNhbCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBERl9LRVk6CiAgICAgICAgZm9yIG15ICRERktleSAoIHNvcnQga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgREZfS0VZIHVubGVzcyAkREZLZXkgPX4gbS9eRHluYW1pY0ZpZWxkXy87CgogICAgICAgICAgICBvayggZXhpc3RzICRWZXJzaW9uRGF0YS0+eyRERktleX0sICIkREZLZXkgcmV0cmlldmVkIGZyb20gbmV3IGNvbmZpZyBpdGVtIiApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRERktleX0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufXskREZLZXl9LAogICAgICAgICAgICAgICAgIiRERktleSBoYXMgZXhwZWN0ZWQgdmFsdWUiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHRpZHkgdGhlIGdlbmVyYWwgY2F0YWxvZyBwcmVmZXJlbmNlcyB1cAogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfSBlcSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfXskQ2xhc3NOYW1lfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ0lDbGFzc05hbWUySUR7JENsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+IFsnJ10sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBvayggJFN1Y2Nlc3MsICJTdWNjZXNzZnVsbHkgcmVzZXQgcHJlZmVyZW5jZSAkUHJlZmVyZW5jZUtleSBmb3IgY2xhc3MgJENsYXNzTmFtZSIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07Cn0KY29udGludWUgewogICAgJEltcG9ydFRlc3RDb3VudCsrOwp9CgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMy55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkIiApOwoKICAgICRDb250ZW50ID0gJHsgJENvbnRlbnQgfHwgXCcnIH07CgogICAgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICApOwoKICAgIGlmICggcmVmICRDb250ZW50IGVxICdIQVNIJyApIHsKICAgICAgICAkQ29udGVudCA9IFskQ29udGVudF07CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGltcG9ydCB0aGUgY2xhc3MgWUFNTCBmaWxlCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgIENsYXNzRXhpc3RzID0+ICdVUERBVEUnLAogICAgKTsKCiAgICBvayggJFJlc3VsdC0+e1N1Y2Nlc3N9LCAiQ2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQiICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX1NldERGMkV4dGVybmFsU291cmNlVHJhbnNmb3JtIHsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBOYW1lID0+ICdMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknICk7CiAgICBvayggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyksICJnb3QgREYgY29uZmlnIiApOwoKICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57SW1wb3J0U2VhcmNoQXR0cmlidXRlfSA9ICdOYW1lJzsKCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT4lKiwKCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFJlb3JkZXIgPT4gMSwgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgICAgICAgICAgICAgICAgICAgIyAwIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHRvIHByZXZlbnQgcmVkdW5kYW50IGV4ZWN1dGlvbiBvbiBvcmRlciBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKICAgIG9rKCAkU3VjY2VzcywgInVwZGF0ZWQgREYgY29uZmlnIiApOwogICAgX1N5bmNDb25maWdJdGVtREZzKCk7CgogICAgcmV0dXJuOwp9CgpzdWIgX1N5bmNDb25maWdJdGVtREZzIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAnTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JywKICAgICk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TZXRPdXRPZlN5bmMoCiAgICAgICAgQ2xhc3NlcyA9PiB7CiAgICAgICAgICAgICRTdWJzaWRpYXJ5Q2xhc3NJRCA9PiBbICREeW5hbWljRmllbGRDb25maWctPntJRH0gXSwKICAgICAgICB9LAogICAgKTsKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU3luYygpOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/Admin/AdminITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1DbGFzc05hbWVzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlciBIYXJkd2FyZSBMb2NhdGlvbiBOZXR3b3JrIFNvZnR3YXJlKSkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NOYW1lcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWRtaW5JVFNNQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbklUU01Db25maWdJdGVtIik7CgogICAgICAgICMgVGVzdCBkZWZhdWx0IElUU01Db25maWdJdGVtIGNsYXNzLgogICAgICAgIGZvciBteSAkSXRlbSAoQENvbmZpZ0l0ZW1DbGFzc05hbWVzKSB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICRJdGVtLCAnbGlua190ZXh0JyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICAgICAjIENsaWNrIG9uICdDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbicuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdBZGQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIGlucHV0IGFyZWEuCiAgICAgICAgICAgIG15ICRJbnB1dEZpZWxkID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVmaW5pdGlvbiIsICdjc3MnICk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19kaXNwbGF5ZWQoKTsKCiAgICAgICAgICAgICMgUmV0dXJuIGJhY2sgdG8gb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWRtaW5JVFNNQ29uZmlnSXRlbScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/Admin/AdminImportExport.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bTsKCiMgc29tZSBzZXR1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIFNlbGVuaXVtIHRlc3QKCiMgbmVlZGVkIG9iamVjdHMKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBUaGUgaGVscGVyIG11c3RuJ3QgcnVuIGluIGEgdHJhbnNhY3Rpb24sIGJlY2F1c2Ugb3RoZXJ3aXNlCiMgdGhlIHdlYnNlcnZlciB3b3VsZCBub3Qgc2VlIHRoZSBjaGFuZ2VzIGluIHRoZSBkYXRhYmFzZS4KbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7Cm9rKCAkVGVzdFVzZXJMb2dpbiwgJ3Rlc3QgdXNlciBjcmVhdGVkJyApOwpteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiApOwpvayggJFRlc3RVc2VySUQsICdnb3QgSUQgZm9yIHRlc3QgdXNlcicgKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBUaGUgZGVmaW5pdGlvbiBpdHNlbGYgaXMgaXJyZWxldmFudCwgaXQganVzdCBoYXMgdG8gYmUgdmFsaWQKbXkgJENvbmZpZ0l0ZW1ZQU1MRGVmaW5pdGlvbiA9IDw8J0VORF9ZQU1MJzsKLS0tClBhZ2VzOgogIC0gTmFtZTogQ0lfMV9QYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IENJXzFfU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCgogIC0gTmFtZTogQ0lfMV9QYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogQ0lfMV9TZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKClNlY3Rpb25zOgogIENJXzFfU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgoKICBDSV8xX1NlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMiIKRU5EX1lBTUwKCm15ICRUZXN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gIkNsYXNzXyRSYW5kb21JRCIsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwpvayggJFRlc3RDbGFzc0lELCAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciICk7CgojIHNldCBwZXJtaXNzaW9uIGFuZCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUKewogICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG9rKCAkR3JvdXBJRCwgJ2dvdCBJRCBmb3IgZ3JvdXAgaXRzbS1jb25maWdpdGVtJyApOwoKICAgICMgc2V0IHBlcm1pc3Npb24uCiAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJFRlc3RDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgVmFsdWUgID0+IFskR3JvdXBJRF0sCiAgICApOwogICAgb2soICRTdWNjZXNzLCAnc2V0dGluZyBwZXJtaXNzaW9uIHdhcyBzdWNjZXNzZnVsJyApOwoKICAgICMgc2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZQogICAgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10KICAgICk7CiAgICBvayggJFN1Y2Nlc3MsICdzZXR0aW5nIGluY3JlbWVudGFsIHZlcnNpb24gc3RyaW5nIG1vZHVsZSB3YXMgc3VjY2Vzc2Z1bCcgKTsKCn0KCiMgVGhlIGNvbmZpZyBpdGVtIGNsYXNzIG5lZWRzIGEgdmFsaWQgZGVmaW5pdGlvbgpteSAkRGVmaW5pdGluQWRkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRUZXN0Q2xhc3NJRCwKICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRUZXN0VXNlcklELAogICAgRGVmaW5pdGlvbiA9PiAkQ29uZmlnSXRlbVlBTUxEZWZpbml0aW9uLAopOwpvayggJERlZmluaXRpbkFkZFJlc3VsdC0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIHN1Y2Nlc3NmdWwiICk7Cm15ICREZWZpbml0aW9uSUQgPSAkRGVmaW5pdGluQWRkUmVzdWx0LT57RGVmaW5pdGlvbklEfTsKb2soICREZWZpbml0aW9uSUQsICJEZWZpbml0aW9uQWRkKCkgZ290IGRlZmluaXRpb24gSUQiICk7CgojIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCm15ICRTZWxlbml1bSA9IEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0tPm5ldzsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkQ29uZmlnSXRlbU51bWJlciwgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIgKTsKCiAgICAgICAgIyBBZGQgJ0xvY2F0aW9uJyB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gIlNlbGVuaXVtIiAuICRIZWxwZXItPkdldFJhbmRvbUlEOwogICAgICAgIG15ICRDb25maWdJdGVtSUQgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkVGVzdENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWdJdGVtICdMb2NhdGlvbicgaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiICk7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSW1wb3J0RXhwb3J0IHNjcmVlbi4KICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWRtaW5JbXBvcnRFeHBvcnQiKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRfYnlfY3NzX29rKCJ0YWJsZSIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50X2J5X2Nzc19vaygidGFibGUgdGhlYWQgdHIgdGgiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudF9ieV9jc3Nfb2soInRhYmxlIHRib2R5IHRyIHRkIik7CgogICAgICAgICMgQ2xpY2sgb24gJ0FkZCB0ZW1wbGF0ZScuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFkbWluSW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1UZW1wbGF0ZUVkaXQnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBhbmQgaW5wdXQgc3RlcCAxIG9mIDUgc2NyZWVuLgogICAgICAgIGRpYWcoJ1N0ZXAgMScpOwogICAgICAgIGZvciBteSAkU3RlcE9uZUlEICgKICAgICAgICAgICAgcXcoTmFtZSBPYmplY3RfU2VhcmNoIEZvcm1hdF9TZWFyY2ggVmFsaWRJRF9TZWFyY2ggQ29tbWVudCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3RlcE9uZUlEIiwgJ2NzcycgKTsKICAgICAgICAgICAgb2soICRFbGVtZW50LCAiJFN0ZXBPbmVJRCBmb3VuZCBpbiBzdGVwIDEiICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkX29rOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgIH0KICAgICAgICBteSAkSW1wb3J0RXhwb3J0TmFtZSA9ICJJbXBvcnRFeHBvcnQiIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkSW1wb3J0RXhwb3J0TmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjT2JqZWN0JykudmFsKCdJVFNNQ29uZmlnSXRlbScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNGb3JtYXQnKS52YWwoJ0NTVicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjQ29tbWVudCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW1UZXN0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAY2xhc3M9J1ByaW1hcnkgQ2FsbEZvckFjdGlvbiddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIGFuZCBpbnB1dCBzdGVwIDIgb2YgNSBzY3JlZW4uCiAgICAgICAgZGlhZygnU3RlcCAyJyk7CiAgICAgICAgZm9yIG15ICRTdGVwVHdvSUQgKAogICAgICAgICAgICBxdyhDbGFzc0lEX1NlYXJjaCBDb3VudE1heCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdGVwVHdvSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcFR3b0lEIGZvdW5kIGluIHN0ZXAgMiIgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWRfb2s7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWRfb2s7CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNDbGFzc0lEJykudmFsKCckVGVzdENsYXNzSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGNsYXNzPSdQcmltYXJ5IENhbGxGb3JBY3Rpb24nXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBhbmQgaW5wdXQgc3RlcCAzIG9mIDUgc2NyZWVuLgogICAgICAgIGRpYWcoJ1N0ZXAgMzogZm9ybWF0IGRlZmluaXRpb24nKTsKICAgICAgICBmb3IgbXkgJFN0ZXBUaHJlZUlEICgKICAgICAgICAgICAgcXcoQ29sdW1uU2VwYXJhdG9yX1NlYXJjaCBDaGFyc2V0IEluY2x1ZGVDb2x1bW5IZWFkZXJzX1NlYXJjaCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3RlcFRocmVlSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcFRocmVlSUQgZm91bmQgaW4gc3RlcCAzIiApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZF9vazsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICB9CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQ29sdW1uU2VwYXJhdG9yJykudmFsKCdDb21tYScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgYW5kIGlucHV0IHN0ZXAgNCBvZiA1IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nUHJpbWFyeSBDYWxsRm9yQWN0aW9uJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWFwcGluZ0FkZEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgZGlhZygnU3RlcCA0Jyk7CiAgICAgICAgZm9yIG15ICRTdGVwRm91cklEICgKICAgICAgICAgICAgcXcoS2V5X1NlYXJjaCBJZGVudGlmaWVyKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIuLy8qW1xAaWQ9J09iamVjdDo6MDo6JFN0ZXBGb3VySUQnXSIpOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcEZvdXJJRCBmb3VuZCBpbiBzdGVwIDQiICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkX29rOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgIH0KCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRfYnlfY3NzX29rKCJ0YWJsZSIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50X2J5X2Nzc19vaygidGFibGUgdGhlYWQgdHIgdGgiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudF9ieV9jc3Nfb2soInRhYmxlIHRib2R5IHRyIHRkIik7CgogICAgICAgICMgU2VsZWN0ICdOdW1iZXInIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNPYmplY3RcXFxcOlxcXFw6MFxcXFw6XFxcXDpLZXknKS52YWwoJ051bWJlcicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ05hbWUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDoxXFxcXDpcXFxcOktleScpLnZhbCgnTmFtZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ0RlcGxveW1lbnQgU3RhdGUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDoyXFxcXDpcXFxcOktleScpLnZhbCgnRGVwbFN0YXRlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgYW5kIHNlbGVjdCAnSW5jaWRlbnQgU3RhdGUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDozXFxcXDpcXFxcOktleScpLnZhbCgnSW5jaVN0YXRlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBmb3IgZXZlcnkgbGluZSBjaGVjayBpZiBhY3Rpb24gZWxlbWVudHMgYXJlIHZpc2libGUgYW5kIGlmIHRoZWlyIGVuYWJsZWQgc3RhdGUgaXMgY29ycmVjdAogICAgICAgICMgdGhlIGZpcnN0IEFycm93VXAgYW5kIHRoZSBsYXN0IEFycm93ZG93biBtdXN0IGJlIGRpc2FibGVkLCBhbGwgdGhlIG90aGVycyBtdXN0IGJlIGVuYWJsZWQKICAgICAgICBmb3IgbXkgJFN0ZXBGb3VyQ2xhc3MgKAogICAgICAgICAgICBxdyhBcnJvd1VwIEFycm93RG93biBEZWxldGVDb2x1bW4pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50cyA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50cyggIi4kU3RlcEZvdXJDbGFzcyIsICdjc3MnICk7CiAgICAgICAgICAgIG9rKCAkRWxlbWVudHMsICIkU3RlcEZvdXJDbGFzcyBjbGFzcyBmb3VuZCBpbiBzdGVwIDQiICk7CgogICAgICAgICAgICBpZiAoICRTdGVwRm91ckNsYXNzIGVxICdBcnJvd1VwJyApIHsKICAgICAgICAgICAgICAgIG15ICRJbmRleCA9IDA7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkRWxlbWVudHMtPkAqICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTdGF0ZU9rID0gJEluZGV4ID09IDAgPyAhJEVsZW1lbnQtPmlzX2VuYWJsZWQgOiAkRWxlbWVudC0+aXNfZW5hYmxlZDsKICAgICAgICAgICAgICAgICAgICBvayggJFN0YXRlT2ssICIkU3RlcEZvdXJDbGFzcyBlbGVtZW50ICRJbmRleCBlbmFibGVkIHN0YXRlIGlzIGNvcnJlY3QiICk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRTdGVwRm91ckNsYXNzIGVxICdBcnJvd0Rvd24nICkgewogICAgICAgICAgICAgICAgbXkgJEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoICRFbGVtZW50cy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXRlT2sgPSAkSW5kZXggPT0gMyA/ICEkRWxlbWVudC0+aXNfZW5hYmxlZCA6ICRFbGVtZW50LT5pc19lbmFibGVkOwogICAgICAgICAgICAgICAgICAgIG9rKCAkU3RhdGVPaywgIiRTdGVwRm91ckNsYXNzIGVsZW1lbnQgJEluZGV4IGVuYWJsZWQgc3RhdGUgaXMgY29ycmVjdCIgKTsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgICAgICAgICAgICAgICRJbmRleCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoICRFbGVtZW50cy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXRlT2sgPSAkRWxlbWVudC0+aXNfZW5hYmxlZDsKICAgICAgICAgICAgICAgICAgICBvayggJFN0YXRlT2ssICIkU3RlcEZvdXJDbGFzcyBlbGVtZW50ICRJbmRleCBlbmFibGVkIHN0YXRlIGlzIGNvcnJlY3QiICk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0TmV4dEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBzdGVwIDUgb2YgNSBzY3JlZW4uCiAgICAgICAgZGlhZygnU3RlcCA1LCByZXN0cmljdCB3aGF0IGlzIGV4cG9ydGVkJyk7CiAgICAgICAgZm9yIG15ICRTdGVwRml2ZUlEICgKICAgICAgICAgICAgcXcoUmVzdHJpY3RFeHBvcnQgTnVtYmVyIE5hbWUgRGVwbFN0YXRlSURzX1NlYXJjaCBJbmNpU3RhdGVJRHNfU2VhcmNoKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdGVwRml2ZUlEIiwgJ2NzcycgKTsKICAgICAgICAgICAgb2soICRFbGVtZW50LCAiJFN0ZXBGaXZlSUQgZm91bmQgaW4gc3RlcCA1IiApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZF9vazsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICB9CgogICAgICAgICMgU2VhcmNoIENvbmZpZ0l0ZW0gYnkgbnVtYmVyIGFuZCBkZXBsb3ltZW50IHN0YXRlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1Jlc3RyaWN0RXhwb3J0IiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOdW1iZXIiLCAgICAgICAgICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU51bWJlcik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICAgICAgICAgICAnY3NzJyApLT5zZW5kX2tleXMoJENvbmZpZ0l0ZW1OYW1lKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNEZXBsU3RhdGVJRHMnKS52YWwoJyRQcm9kdWN0aW9uRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjSW5jaVN0YXRlSURzJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nUHJpbWFyeSBDYWxsRm9yQWN0aW9uJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgR2V0IFRlbXBsYXRlSUQgb2YgY3JlYXRlZCB0ZXN0IHRlbXBsYXRlLgogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgICAgIG15ICgkVGVtcGxhdGVJRCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgID0+ICdTRUxFQ1QgaWQgRlJPTSBpbWV4cG9ydF90ZW1wbGF0ZSBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJEltcG9ydEV4cG9ydE5hbWUgXSwKICAgICAgICApOwogICAgICAgIG9rKCAkVGVtcGxhdGVJRCwgImdvdCB0aGUgdGVtcGxhdGUgSUQgLSAkVGVtcGxhdGVJRCIgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byB0ZXN0IGNyZWF0ZWQgQ29uZmlnSXRlbSBhbmQgdmVyaWZ5IGl0LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIik7CiAgICAgICAgJFNlbGVuaXVtLT5jb250ZW50X2NvbnRhaW5zKAogICAgICAgICAgICAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbmFtZSAkQ29uZmlnSXRlbU5hbWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBFeHBvcnQgdXNpbmcgdGhlIGNyZWF0ZWQgdGVzdCB0ZW1wbGF0ZS4KICAgICAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwogICAgICAgIG15ICRFeHBvcnRSZXN1bHRSZWYgICAgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5FeHBvcnQoCiAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYW5pdHkgY2hlY2sgb2YgdGhlIGV4cG9ydAogICAgICAgIGlzKAogICAgICAgICAgICAkRXhwb3J0UmVzdWx0UmVmLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDaHVua2luZ0ZpbmlzaGVkICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbkNvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlciIsIiRDb25maWdJdGVtTmFtZSIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCJ9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIEZhaWxlZCAgPT4gMCwKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2V4cG9ydCByZXN1bHQnCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0gYW5kIHZlcmlmeSB0aGUgZGVsZXRpb24KICAgICAgICB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUZvdW5kID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0NPVU5UJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbJENvbmZpZ0l0ZW1JRF0KICAgICAgICAgICAgKTsKICAgICAgICAgICAgb2soICEkQ29uZmlnSXRlbUZvdW5kLCAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIgKTsKCiAgICAgICAgICAgICMgUmVmcmVzaCBzY3JlZW4gYW5kIHZlcmlmeSB0aGF0IHRlc3QgQ29uZmlnSXRlbSBkb2VzIG5vdCBleGlzdCBhbnltb3JlLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwogICAgICAgICAgICAkU2VsZW5pdW0tPmNvbnRlbnRfY29udGFpbnMoCiAgICAgICAgICAgICAgICAiQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hIiwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbmFtZSAkQ29uZmlnSXRlbU5hbWUgaXMgbm90IGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQmVmb3JlIGltcG9ydGluZyB2ZXJpZnkgdGhhdCB0aGUgY29uZmlnIGl0ZW1zIGRvIG5vdCBhbHJlYWR5IGV4aXN0CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUgPSAnU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XycgLiAkQ291bnQ7CiAgICAgICAgICAgIG15ICRDb3VudCAgICAgICAgICAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaXMoICRDb3VudCwgMCwgIiRJbXBvcnRlZENvbmZpZ0l0ZW1OYW1lIGRvZXMgbm90IGV4aXN0IGJlZm9yZSBpbXBvcnQiICk7CiAgICAgICAgfQoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSW1wb3J0RXhwb3J0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbkltcG9ydEV4cG9ydCIpOwoKICAgICAgICAjIENsaWNrIG9uICdJbXBvcnQnLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ1N1YmFjdGlvbj1JbXBvcnRJbmZvcm1hdGlvbjtUZW1wbGF0ZUlEPSRUZW1wbGF0ZUlEJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgU2VsZWN0IEV4cG9ydGVkIGZpbGUgYW5kIHN0YXJ0IGltcG9ydGluZy4KICAgICAgICAjIFRoZSBkaXJlY3RvcnkgL29wdC9vdG9iby9zY3JpcHRzL3Rlc3Qvc2FtcGxlIGhhcyBiZWVuIGNvcGllZCBmcm9tIE9UT0JPIGNvcmUgaW50byB0aGUgU2VsZW5pdW0gaW1hZ2UuCiAgICAgICAgIyBUaGUgY29udGVudCBpczoKICAgICAgICAjICAgIjEwNDk1MDAwMTAxIiwiU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XzEiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiAgICAgICAgIyAgICIxMDQ5NTAwMDEwMiIsIlNlbGVuaXVtdGVzdF9BZG1pbkltcG9ydEV4cG9ydF8yIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgogICAgICAgIG15ICRJbXBvcnRMb2NhdGlvbiA9ICcvb3B0L290b2JvL3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlSW1wb3J0LmNzdic7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbY29udGFpbnMoXEBuYW1lLCBcJ1NvdXJjZUZpbGUnICldIiktPnNlbmRfa2V5cygkSW1wb3J0TG9jYXRpb24pOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU3RhcnQgSW1wb3J0J11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIG91dGNvbWUuCiAgICAgICAgJFNlbGVuaXVtLT5jb250ZW50X2NvbnRhaW5zKAogICAgICAgICAgICAnKENyZWF0ZWQ6IDIpJywKICAgICAgICAgICAgIkltcG9ydCB0ZXN0IENvbmZpZ0l0ZW0gLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIGltcG9ydGVkIHRlc3QgY3JlYXRlZCBDb25maWdJdGVtIGFuZCB2ZXJpZnkgaXQuCiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUgPSAnU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XycgLiAkQ291bnQ7CgogICAgICAgICAgICBzdWJ0ZXN0ICJjaGVja2luZyBpbXBvcnQgb2YgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUiID0+IHN1YiB7CiAgICAgICAgICAgICAgICBteSAkRXhwZWN0ZWRJbXBvcnRlZENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSUQgKyAkQ291bnQ7CiAgICAgICAgICAgICAgICBteSAoICRGb3VuZEltcG9ydGVkQ29uZmlnSXRlbUlELCBAT3RoZXJJRHMgKSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkSW1wb3J0ZWRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpcyggJEV4cGVjdGVkSW1wb3J0ZWRDb25maWdJdGVtSUQsICRGb3VuZEltcG9ydGVkQ29uZmlnSXRlbUlELCAiJEZvdW5kSW1wb3J0ZWRDb25maWdJdGVtSUQgaGFzIGJlZW4gaW1wb3J0ZWQiICk7CiAgICAgICAgICAgICAgICBpcyggXEBPdGhlcklEcywgICAgICAgICAgICAgICAgICAgIFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBvbmUgaXRlbSBmb3VuZCIgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kRm91bmRJbXBvcnRlZENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmNvbnRlbnRfY29udGFpbnMoCiAgICAgICAgICAgICAgICAgICAgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSBuYW1lICRJbXBvcnRlZENvbmZpZ0l0ZW1OYW1lIGlzIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjbGVhbiB1cCwgZGVsZXRlIHRoZSB0ZXN0IGltcG9ydGVkIENvbmZpZ0l0ZW0uCiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkRm91bmRJbXBvcnRlZENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgb2soICREZWxldGVTdWNjZXNzLCAiQ29uZmlnSXRlbSAkSW1wb3J0ZWRDb25maWdJdGVtTmFtZSBpcyBkZWxldGVkIC0gSUQgJEZvdW5kSW1wb3J0ZWRDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWRtaW5JbXBvcnRFeHBvcnQgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFkbWluSW1wb3J0RXhwb3J0Iik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICJhLkltcG9ydEV4cG9ydERlbGV0ZVtkYXRhLWlkPSckVGVtcGxhdGVJRCddIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIHRvIGRlbGV0ZSB0ZXN0IHRlbXBsYXRlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiYS5JbXBvcnRFeHBvcnREZWxldGVbZGF0YS1pZD0nJFRlbXBsYXRlSUQnXSIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICIjRGlhbG9nQnV0dG9uMTp2aXNpYmxlIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyNEaWFsb2dCdXR0b24xJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEVsZW1lbnRNaXNzaW5nID0+IFsgImEuSW1wb3J0RXhwb3J0RGVsZXRlW2RhdGEtaWQ9JyRUZW1wbGF0ZUlEJ10iLCAnY3NzJyBdICk7CgogICAgICAgICMgQ2hlY2sgaWYgdGVzdCB0ZW1wbGF0ZSBpcyBkZWxldGVkLgogICAgICAgIG9rKAogICAgICAgICAgICAhJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2EuSW1wb3J0RXhwb3J0RGVsZXRlW2RhdGEtaWQqPVwiJFRlbXBsYXRlSURcIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiVGVzdCB0ZW1wbGF0ZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKIyBUT0RPOiBjbGVhbiB1cCBvZiB0aGUgZGF0YWJhc2UKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKHF3KENvbXB1dGVyIEhhcmR3YXJlIExvY2F0aW9uIE5ldHdvcmsgU29mdHdhcmUpKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJE93bmVyICAgICAgICAgICA9ICciVGVzdCBUZXN0IiA8dGVzdEB0ZXN0LmNvbT4nOwogICAgICAgIG15ICRDb21wdXRlckNsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDb21wdXRlcicsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtLCBzb3J0ZWQgYnkgY3JlYXRlZCB0aW1lLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO0ZpbHRlcj1BbGw7Vmlldz07U29ydEJ5PUxhc3RDaGFuZ2VkO09yZGVyQnk9RG93biIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgd2l0aCAnQWxsJyBmaWx0ZXIgYWN0aXZlCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2E6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpJykubGVuZ3RoID09PSAxIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGVhY2ggb2YgQ29uZmlnSXRlbSBjbGFzcyBmaWx0ZXJzIGZvciB0aGVpciByZXNwZWN0aXZlIHRlc3QgQ29uZmlnSXRlbQogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1DaGFuZ2VkO09yZGVyQnk9RG93bjtWaWV3PVNtYWxsO0ZpbHRlcj0kQ29uZmlnSXRlbUNsYXNzSURzWyRDb3VudF0nICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIiwgJ2NzcycgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyKScpLmxlbmd0aCIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIHZhbHVlICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBudW1iZXIgY29sdW1uIGhhcyBhIGxpbmsgdG8gdGhlIGNvbmZpZyBpdGVtIHpvb20KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3RyOmVxKFwiMVwiKSBhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyc1s0XSlbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRHNbNF1cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiTGluayBvbiBDb25maWdJdGVtICdOdW1iZXInIGNvbHVtbiBjb3JyZWN0LiIKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1EZWxldGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemAdd.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlJlZ2lzdGVyT007ICAgICAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKb3VyICRTZWxmOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9IEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0tPm5ldzsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyk7CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAkSGVscGVyID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNhdGFsb2cgY2xhc3MgSURzCiAgICAgICAgJElUU01Db25maWdJdGVtSGVscGVyLT5UZXN0Q29uZmlnSXRlbUNyZWF0ZUxlZ2FjeUNsYXNzZXMoCiAgICAgICAgICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyCiAgICAgICAgKTsKICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NOYW1lczsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzcyAocXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAgICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc05hbWVzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntOYW1lfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICMgY2hlY2sgZm9yIElUU01Db25maWdJdGVtIGNsYXNzZXMKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzc05hbWUgKEBDb25maWdJdGVtQ2xhc3NOYW1lcykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbUNsYXNzTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBjbGFzcyAkQ29uZmlnSXRlbUNsYXNzTmFtZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGxpbmtzIHRvICdBZGQnIG5ldyBpdGVtIGZvciBlYWNoIGNsYXNzCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3NBZGQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0FkZCcgKV0iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUNsYXNzQWRkIGFkZCBsaW5rIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemBulk.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnQ29tcHV0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvbXB1dGVyQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGFuZCAnUmVwYWlyJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSBARGVwbFN0YXRlSURzOwogICAgICAgIGZvciBteSAkRGVwbFN0YXRlIChxdyAoUHJvZHVjdGlvbiBSZXBhaXIpKSB7CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRGVwbFN0YXRlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBEZXBsU3RhdGVJRHMsICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRocmVlIHRlc3QgQ29uZmlnSXRlbXMgZm9yICdDb21wdXRlcicgQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICBteSBAQ29uZmlnSXRlbXM7CiAgICAgICAgZm9yICggMSAuLiAzICkgewoKICAgICAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnSGFyZHdhcmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVJRHNbMF0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTtGaWx0ZXI9QWxsO1ZpZXc9OztTb3J0Qnk9TGFzdENoYW5nZWQ7T3JkZXJCeT1Eb3duIgogICAgICAgICk7CgogICAgICAgICMgU2VsZWN0IHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRTZWxlY3RDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAgICAgICAgICMgRG9uJ3QgY2xpY2sgb24gdGhpcmQgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBpZiAoICRTZWxlY3RDb25maWdJdGVtLT57SUR9IG5lICRDb25maWdJdGVtc1syXS0+e0lEfSApIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9JyRTZWxlY3RDb25maWdJdGVtLT57SUR9J10iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiBidWxrIGFjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW3RleHQoKT0nQnVsayddIiktPmNsaWNrKCk7CgogICAgICAgICMgU3dpdGNoIHRvICdCdWxrJyB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0RlcGxTdGF0ZUlEIikubGVuZ3RoOycgKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgTGlua1RvZ2V0aGVyIExpbmtUb2dldGhlckxpbmtUeXBlIExpbmtUb2dldGhlckFub3RoZXIgTGlua1R5cGUgc3VibWl0UmljaFRleHQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBDaGFuZ2UgZGVwbG95bWVudCBzdGF0ZSB0byAnUmVwYWlyJyBmb3IgdGVzdCBDb25maWdJdGVtcwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSURzWzFdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwoKICAgICAgICAjIGxpbmsgJ0FsdGVybmF0aXZlIHRvJyB0ZXN0IENvbmZpZ0l0ZW1zIHRvZ2V0aGVyCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjTGlua1RvZ2V0aGVyJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0xpbmtUb2dldGhlckxpbmtUeXBlJykudmFsKCdDb25uZWN0ZWRUbzo6U291cmNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwoKICAgICAgICAjIGxpbmsgdGhpcmQgdGVzdCBDb25maWdJdGVtIGFzIHBhcnQgb2YgZmlyc3QgdHdvCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua1RvZ2V0aGVyQW5vdGhlciIsICdjc3MnICktPnNlbmRfa2V5cyggJENvbmZpZ0l0ZW1zWzJdLT57Q29uZmlnSXRlbU51bWJlcn0gKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNMaW5rVHlwZScpLnZhbCgnSW5jbHVkZXM6OlRhcmdldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgKTsKCiAgICAgICAgIyRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0xpbmtUeXBlIG9wdGlvblt2YWx1ZT0nSW5jbHVkZXM6OlRhcmdldCddIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTdWJtaXQgYnVsayBjaGFuZ2VzCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBmaXJzdCBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgem9vbSB2aWV3LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1zWzFdLT57SUR9IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIG90aGVyIHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgIyBWZXJpZnkgdGhhdCBsaW5rIGFjdGlvbiBpbiBidWxrIHNjcmVlbiB3YXMgc3VjY2Vzcy4KICAgICAgICBteSAkQ291bnQgPSAxOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW0gKEBDb25maWdJdGVtcykgewoKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRDb25maWdJdGVtc1sxXS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9ID09ICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICAgICAiLy9hW1xAY2xhc3M9XCdBc0Jsb2NrIExpbmtPYmplY3RMaW5rXCddW2NvbnRhaW5zKC4sXCckQ2hlY2tDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn1cJyldIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAkREI6OnNpbmdsZSA9IDE7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbXEBjbGFzcz0nVmFsdWUnIGFuZCBcQHRpdGxlPSdSZXBhaXInXSIpLAogICAgICAgICAgICAiRGVwbG95bWVudCBzdGF0ZSBpcyBSZXBhaXIuIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbXMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZS0+e0lEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbURlbGV0ZS0+e0lEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemDuplicate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIFRlc3QyOjpWMDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIHNldCBOYW1lIHVwZGF0ZSBhcyBhIHZlcnNpb24gdHJpZ2dlcmluZyBldmVudAogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uVHJpZ2dlcicsCiAgICAgICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXQogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1NlbGVuaXVtIFRlc3QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgQWRkIGEgbmV3IHZlcnNpb24uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ0hhcmR3YXJlJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1Ob3RlID0gJ1NvbWUgU2VsZW5pdW0gdGVzdCBub3RlJzsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLU5vdGUnID0+ICRDb25maWdJdGVtTm90ZSwKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9IgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoSGFyZHdhcmUpJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gImgxOmNvbnRhaW5zKCRDb25maWdJdGVtTmFtZSkiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbU5vdGUsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAicDpjb250YWlucygkQ29uZmlnSXRlbU5vdGUpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGg7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57VmFsdWV9IC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiAnRHVwbGljYXRlJyBtZW51IGl0ZW0gYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbklEPSRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH1cJyApXSIKICAgICAgICApLT5jbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgd2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRGVwbFN0YXRlSUQiKS5sZW5ndGg7JyApOwoKICAgICAgICAjIEdldCBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBEdXBsaWNhdGVkQ29uZmlnSXRlbVZhbHVlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICBFeHBlY3RlZFZhbHVlID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICA9PiAnRGVwbFN0YXRlSUQnLAogICAgICAgICAgICAgICAgRXhwZWN0ZWRWYWx1ZSA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgICAgICBFeHBlY3RlZFZhbHVlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgPT4gJ0R5bmFtaWNGaWVsZF9IYXJkd2FyZS1Ob3RlJywKICAgICAgICAgICAgICAgIEV4cGVjdGVkVmFsdWUgPT4gJENvbmZpZ0l0ZW1Ob3RlLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZHVwbGljYXRlZCBDb25maWdJdGVtIHZhbHVlcyBvbiBzY3JlZW4KICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbVZhbHVlIChARHVwbGljYXRlZENvbmZpZ0l0ZW1WYWx1ZXMpIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57T2JqZWN0SUR9IiwgJ2NzcycgKS0+Z2V0X3ZhbHVlKCksCiAgICAgICAgICAgICAgICAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntFeHBlY3RlZFZhbHVlfSwKICAgICAgICAgICAgICAgICIjJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57T2JqZWN0SUR9IHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEVkaXQgbmFtZSBmb3IgZHVwbGljYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBteSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgPSAiRHVwbGljYXRlIiAuICRDb25maWdJdGVtTmFtZTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCREdXBsaWNhdGVDb25maWdJdGVtTmFtZSk7CgogICAgICAgICMgU2VsZWN0IGN1cnJlbnQgZGF0ZSBhcyB0aGUgaW5zdGFsbGF0aW9uIGRhdGUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLUluc3RhbGxEYXRlVXNlZFwnICldIiktPmNsaWNrKCk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1N1Ym1pdCddW1xAdHlwZT0nc3VibWl0J10iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTd2l0Y2ggYmFjayB0byB6b29tIHZpZXcuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZTsnCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG9rKCAkU3VjY2VzcywgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQrKzsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemEdit.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKI3VzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRDSUhlbHBlciAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdHMKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgY29uZmlnIGl0ZW0gY2xhc3NlcwoKICAgICAgICBteSBAVGVzdCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNsYXNzID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDaGVja0VkaXRGaWVsZHMgPT4gWwogICAgICAgICAgICAgICAgICAgICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJywgJ1ZlbmRvcicsICdNb2RlbCcsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW5nU3lzdGVtJywgJ0NQVScsICdSYW0nLCAnSGFyZERpc2snLCAnQ2FwYWNpdHknLCAnRlFETicsICdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZScsICdQb3ZlckRIQ1AnLAogICAgICAgICAgICAgICAgICAgICdHcmFwaGljQWRhcHRlcicsCiAgICAgICAgICAgICAgICAgICAgJ090aGVyRXF1aXBtZW50JywgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnTW9kZWwnLCAnRGVzY3JpcHRpb24nLCAnVHlwZScsICdPd25lcicsCiAgICAgICAgICAgICAgICAgICAgJ1NlcmlhbE51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnTG9jYXRpb24nLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdUeXBlJywgJ1Bob25lMScsICdQaG9uZTInLCAnRmF4JywgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1FTWFpbCcsICdBZGRyZXNzJywKICAgICAgICAgICAgICAgICAgICAnTm90ZScsICdGaWxlVXBsb2FkJywgICdTdWJtaXQnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgPT4gJ05ldHdvcmsnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ05ldHdvcmtBZGRyZXNzJywgJ1N1Ym5ldE1hc2snLAogICAgICAgICAgICAgICAgICAgICdHYXRld2F5JywKICAgICAgICAgICAgICAgICAgICAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnU29mdHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnVmVyc2lvbicsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnTGljZW5jZVR5cGUnLCAnTGljZW5jZUtleScsICdNZWRpYScsICdOb3RlJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKICAgICAgICBteSAkUmFuZG9tSUQgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1FZGl0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkIHNjcmVlbi4KICAgICAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCIpOwoKICAgICAgICAgICAgIyBHZXQgQ29uZmlnSXRlbSBjbGFzcyBJRC4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtQ2xhc3NJRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0lEXCJdJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPSRDb25maWdJdGVtQ2xhc3NJRFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI05hbWUnKS5sZW5ndGggJiYgXCQoJyNTdWJtaXRCdXR0b24nKS5sZW5ndGgiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtRWRpdCBmaWVsZHMuCiAgICAgICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtRmllbGQgKCBAeyAkQ29uZmlnSXRlbUVkaXQtPntDaGVja0VkaXRGaWVsZHN9IH0gKSB7CgogICAgICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCckQ2hlY2tDb25maWdJdGVtRmllbGRcJyApXSIpOwogICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDcmVhdGUgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IC4gJFJhbmRvbUlEOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRDb25maWdJdGVtTmFtZSk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgIlwkKCcjRGVwbFN0YXRlSUQnKS52YWwoJyREZXBsU3RhdGVJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjRGVwbFN0YXRlSUQnKS52YWwoKSA9PT0gJyREZXBsU3RhdGVJRCciCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0luY2lTdGF0ZUlEJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIpOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjSW5jaVN0YXRlSUQnKS52YWwoKSA9PT0gJzEnIiApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IGVxICdDb21wdXRlcicgKSB7CgogICAgICAgICAgICAgICAgIyBHZXQgR2VuZXJhbCBDYXRhbG9nIElEIGZvciAnWWVzJy4KICAgICAgICAgICAgICAgIG15ICRZZXNEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpZZXNObycsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJFllc0lEID0gJFllc0RhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAgICAgICAgICMgRW50ZXIgTklDIG5hbWUuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZV8wXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bU5ldHdvcmsnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBZZXMgZm9yIERIQ1BPdmVySVAuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJcJCgnIycgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignRHluYW1pY0ZpZWxkX0NvbXB1dGVyLU5JQ0lQb3ZlckRIQ1BfMCcpKS52YWwoJyRZZXNJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIEVudGVyIE90aGVyIEVxdWlwbWVudC4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1PdGhlckVxdWlwbWVudFwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gRXF1aXBtZW50Jyk7CgogICAgICAgICAgICAgICAgIyBFbnRlciBOb3Rlcy4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwoKICAgICAgICAgICAgICAgICMgU2VsZWN0IGN1cnJlbnQgZGF0ZSBhcyB0aGUgaW5zdGFsbGF0aW9uIGRhdGUuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfQ29tcHV0ZXItSW5zdGFsbERhdGVVc2VkXCcgKV0iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30gZXEgJ05ldHdvcmsnICkgewogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX05ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJQcmltYXJ5QXR0cmlidXRlXzBcJyApXSIpLT5zZW5kX2tleXMoJ1NlbGVuaXVtIExBTicpOwoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfTmV0d29yay1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnSGFyZHdhcmUnICkgewoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfSGFyZHdhcmUtTm90ZVwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gTm90ZXMnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBjdXJyZW50IGRhdGUgYXMgdGhlIGluc3RhbGxhdGlvbiBkYXRlLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLUluc3RhbGxEYXRlVXNlZFwnICldIiktPmNsaWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IGVxICdMb2NhdGlvbicgKSB7CgogICAgICAgICAgICAgICAgIyBFbnRlciBOb3Rlcy4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnU29mdHdhcmUnICkgewoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfU29mdHdhcmUtTm90ZVwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gTm90ZXMnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU3VibWl0J11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OYW1lKScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgICAgICBDaGVjayAgICAgICA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OYW1lKSIsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZXN1bHQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSwKICAgICAgICAgICAgICAgICAgICBDaGVjayAgICAgICA9PiAicC5WYWx1ZTpjb250YWlucygkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9KSIsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZXN1bHQgPT4gMiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIHN1Ym1pdHRlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbVZhbHVlIChAQ29uZmlnSXRlbVZhbHVlcykgewogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57Q2hlY2t9JykubGVuZ3RoID09PSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja1Jlc3VsdH0iCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIHZhbHVlICRDaGVja0NvbmZpZ0l0ZW1WYWx1ZS0+e1ZhbHVlfSAtIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW1JRC4KICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIEBDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gZm91bmQgZm9yIGRlbGV0aW9uIC0gSUQgJENvbmZpZ0l0ZW1JRHNbMF0iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEc1swXSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemHistory.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdHMKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBnZXQgY2F0YWxvZyBjbGFzcyBJRHMKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwoKICAgICAgICAjIEdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBzZXQgTmFtZSB1cGRhdGUgYXMgYSB2ZXJzaW9uIHRyaWdnZXJpbmcgZXZlbnQKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10KICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bSBUZXN0JywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgbXkgJEZpcnN0VmVyc2lvbklEID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnSGFyZHdhcmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU5vdGUgPSAnU29tZSBTZWxlbml1bSB0ZXN0IG5vdGUnOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfSGFyZHdhcmUtTm90ZScgPT4gJENvbmZpZ0l0ZW1Ob3RlLAogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkU2Vjb25kVmVyc2lvbklEID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWNvbmRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkU2Vjb25kVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGVzdCB1c2VyIElECiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIGNoZWNrIGZvciBlcnJvciBtZXNzYWdlIHdoZW4gbm8gQ29uZmlnSXRlbUlEIGlzIHByb3ZpZGVkIGluIGhpc3Rvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkiKTsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZU5vSUQgPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRXJyb3JNZXNzYWdlTm9JRCApID4gLTEsCiAgICAgICAgICAgICJFcnJvciBtZXNzYWdlICRFcnJvck1lc3NhZ2VOb0lEIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGhpc3RvcnkgbWVzc2FnZXMgbGlzdAogICAgICAgIG15IEBIaXN0b3J5TWVzc2FnZXMgPSAoCiAgICAgICAgICAgICJOZXcgQ29uZmlnSXRlbSAoSUQ9JENvbmZpZ0l0ZW1JRCkiLAogICAgICAgICAgICAiTmV3IHZlcnNpb24gKElEPSRGaXJzdFZlcnNpb25JRCIsCiAgICAgICAgICAgICJOZXcgdmVyc2lvbiAoSUQ9JFNlY29uZFZlcnNpb25JRCIsCiAgICAgICAgICAgICJBdHRyaWJ1dGUgSGFyZHdhcmUtTm90ZSB1cGRhdGVkIGZyb20gXCJcIiB0byBcIlNvbWUgU2VsZW5pdW0gdGVzdCBub3RlXCIiLAogICAgICAgICAgICAiTmFtZSB1cGRhdGVkIChuZXc9JENvbmZpZ0l0ZW1OYW1lLCBvbGQ9U2VsZW5pdW0gVGVzdCkiLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGhpc3RvcnkgbWVzc2FnZXMgaW4gaGlzdG9yeSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgJERCOjpzaW5nbGUgPSAxOwoKICAgICAgICBmb3IgbXkgJEhpc3RvcnlNZXNzYWdlIChASGlzdG9yeU1lc3NhZ2VzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRIaXN0b3J5TWVzc2FnZSApID4gLTEsCiAgICAgICAgICAgICAgICAiSGlzdG9yeSBtZXNzYWdlICRIaXN0b3J5TWVzc2FnZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICREQjo6c2luZ2xlID0gMTsKCiAgICAgICAgIyByZW1vdmUgaXRzbS1jb25maWdpdGVtICdybycgYWNjZXNzIHJpZ2h0IGZvciB0ZXN0IHVzZXIKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgIyBnZXQgJ2l0c20tY29uZmlnaXRlbScgZ3JvdXAgSUQKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1Hcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgYWNjZXNzIHJpZ2h0cyB0byB0ZXN0IHVzZXIKICAgICAgICAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyQWRkKAogICAgICAgICAgICBHSUQgICAgICAgID0+ICRJVFNNQ29uZmlnSXRlbUdyb3VwSUQsCiAgICAgICAgICAgIFVJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICAgICAgcm8gPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgZXJyb3IgbWVzc2FnZSB3aGVuIHVzZXIgaGF2ZSBubyBhY2Nlc3MgcmlnaHRzIGluIGhpc3Rvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgIG15ICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gPSAnTm8gUGVybWlzc2lvbiB0byB1c2UgdGhpcyBmcm9udGVuZCBtb2R1bGUhJzsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gKSA+IC0xLAogICAgICAgICAgICAiRXJyb3IgbWVzc2FnZSAkRXJyb3JNZXNzYWdlTm9QZXJtaXNzaW9uIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgKTsKICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemPrint.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgojIHNvbWUgc2V0dXAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBTZWxlbml1bSB0ZXN0CnNraXBfYWxsKCdTa2lwcGluZyBDTURCIFNlbGVuaXVtIHRlc3RzIHRlbXBvcmFyaWx5LicpOwoKb3VyICRTZWxmOwoKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKaWYgKCAkU2VsZW5pdW0tPnticm93c2VyX25hbWV9IG5lICdmaXJlZm94JyApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDEsCiAgICAgICAgIlBERiB0ZXN0IGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEZpcmVmb3giLAogICAgKTsKICAgIHJldHVybiAxOwp9CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU0NvbmZpZ0l0ZW1ab29tIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRCIpOwoKICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRoZSBsaW5rIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2FbaHJlZio9XCJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEXCJdJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIEdvIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCBzY3JlZW4gZm9yIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRCIKICAgICAgICApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcHJpbnQgc2NyZWVuIGlzIGxvYWRlZC4KICAgICAgICBBQ1RJVkVTTEVFUDoKICAgICAgICBmb3IgbXkgJFNlY29uZCAoIDEgLi4gMzAgKSB7CiAgICAgICAgICAgIGlmICggaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlLCAncHJpbnRlZCBieScgKSA+IC0xLCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAicHJpbnRlZCBieSIgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICJQcmludCBzY3JlZW4gaXMgbG9hZGVkIGFmdGVyICRTZWNvbmQgc2Vjb25kcyIsCiAgICAgICAgICAgICAgICApIHx8IGRpZTsKCiAgICAgICAgICAgICAgICBsYXN0IEFDVElWRVNMRUVQOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0ZXN0IHByaW50IHZhbHVlcy4KICAgICAgICBteSBAQ29uZmlnSXRlbVByaW50ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ1NlbGVuaXVtVGVzdCcsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDb25maWdJdGVtOiBTZWxlbml1bVRlc3QgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNsYXNzOiBIYXJkd2FyZSAtIGZvdW5kIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDdXJyZW50IERlcGxveW1lbnQgU3RhdGU6IFByb2R1Y3Rpb24gLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkN1cnJlbnQgSW5jaWRlbnQgU3RhdGU6IE9wZXJhdGlvbmFsIC0gZm91bmQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICdWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ3VycmVudCBWZXJzaW9uOiBWZXJzaW9uIDEgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgcHJpbnRlZCB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtUHJpbnQpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENvbmZpZ0l0ZW1WYWx1ZS0+e1ZhbHVlfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJENvbmZpZ0l0ZW1WYWx1ZS0+e01lc3NhZ2V9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICk7CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemSearch.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgQ29uZmlnSXRlbSBJRC4KICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlcikpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtQ2xhc3MsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXJzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBmb3IgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSAkQ29uZmlnSXRlbU51bWJlciBudW1iZXIgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtcy4KICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0luY2lkZW50JywKICAgICAgICApOwoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBteSAkQ291bnQgICAgPSAxOwogICAgICAgIG15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ3JlYXRlTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1DcmVhdGVOdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRDb3VudCAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlSUQtPntJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBhbmQgb3ZlcmxheSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaENsYXNzSUQnKS5sZW5ndGgiICk7CgogICAgICAgICMgQ2hlY2sgZm9yICdDbGFzcycgbGFiZWwuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnbGFiZWxbZm9yPVwiQ2xhc3NcIl0nKS5sZW5ndGgiKSwKICAgICAgICAgICAgIkNsYXNzIGxhYmVsIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yICdDbGFzcycgc2VsZWN0IGJveC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoQ2xhc3NJRCIsICdjc3MnICksCiAgICAgICAgICAgICJDbGFzcyBzZWxlY3QgYm94IC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQmUgc3VyZSBtb2Rlcm5pemVkIGZpZWxkIGhhcyBsb2FkZWQuCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBTZWxlY3QgJ0NvbXB1dGVyJyBjbGFzcy4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCckQ29uZmlnSXRlbUNsYXNzSURzWzBdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBCZSBzdXJlIGFsbCBmaWVsZHMgYXJlIGxvYWRlZC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NlYXJjaEZvcm1TdWJtaXQiKS5sZW5ndGg7JywKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gc2VhcmNoIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFNlYXJjaENsYXNzSUQgU2VhcmNoUHJvZmlsZSBTZWFyY2hQcm9maWxlTmV3IEF0dHJpYnV0ZSBSZXN1bHRGb3JtIFNlYXJjaEZvcm1TdWJtaXQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyMkSUQnKS5sZW5ndGgiICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyMkSUQnKS5sZW5ndGg7IiksCiAgICAgICAgICAgICAgICAiRWxlbWVudCBpcyBmb3VuZCAtICRJRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIElUU01DaGFuZ2UgU2VhcmNoIGZvcm0gY29udGFpbiBFeGNlbCBvdXRwdXQgb3B0aW9uLCBzZWUgYnVnIzEyNzY5LgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNSZXN1bHRGb3JtIG9wdGlvbjpjb250YWlucyhcIkV4Y2VsXCIpJykubGVuZ3RoIgogICAgICAgICAgICApLAogICAgICAgICAgICAnMScsCiAgICAgICAgICAgICdJVFNNQ29uZmlnSXRlbSBTZWFyY2ggY29udGFpbiBFeGNlbCBvdXRwdXQnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IHNvcnQgYnkgbnVtYmVyIGRlc2MKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0JywKICAgICAgICAgICAgVmFsdWUgPT4gJ051bWJlcicsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWFyY2ggQ29uZmlnSXRlbXMgYnkgdGVzdCBDb25maWdJdGVtIG51bWJlciBhbmQgbmFtZXMuCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNBdHRyaWJ1dGUnKS52YWwoJ05hbWUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hJbnNlcnQgaW5wdXRbbmFtZT1cIk5hbWVcIl0nKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOdW1iZXInXSIpLT5zZW5kX2tleXMoJyonKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5zZW5kX2tleXMoICcqJyAuICRSYW5kb21JRCApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hGb3JtU3VibWl0IiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiAhXCQoJ0RpYWxvZy5Nb2RhbCcpLmxlbmd0aCAmJiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCcpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBleHBlY3RlZCByZXN1bHQuCiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW0gKEBDb25maWdJdGVtTnVtYmVycykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCB0ZDpjb250YWlucygkQ2hlY2tDb25maWdJdGVtKScpLmxlbmd0aCIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSAkQ2hlY2tDb25maWdJdGVtIG51bWJlciBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFZlcmlmeSBzb3J0aW5nIGluIHRhYmxlLCBieSBkZWZhdWx0IHNvcnRpbmcgaXMgZG9uZSBieSBDb25maWdJdGVtTnVtYmVyIC0gc29ydCBkZXNjZW5kaW5nLgogICAgICAgICMgTG93ZXIgSUQgd2lsbCBvbiB0aGUgYm90dG9tIG9mIHRhYmxlLgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCd0Ym9keSB0cjplcSgwKScpLmF0dHIoJ2lkJykiKSwKICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1JRF8nIC4gJENvbmZpZ0l0ZW1JRHNbMV0sCiAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRHNbMV0gaXMgb24gdG9wIG9mIHRhYmxlIHNvcnQgYnkgTnVtYmVyIGFzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMSknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzBdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzBdIGlzIG9uIGJvdHRvbSBvZiB0YWJsZSBzb3J0IGJ5IE51bWJlciBhc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayB0byBzb3J0IGJ5IE5hbWUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuTmFtZSIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBmb3IgZXhwZWN0ZWQgcmVzdWx0LgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwgdGQ6Y29udGFpbnMoJENoZWNrQ29uZmlnSXRlbSknKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gJENoZWNrQ29uZmlnSXRlbSBudW1iZXIgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBTb3J0IGlzIGJ5IE5hbWUgZGVzY2VuZGluZy4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMCknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzFdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzFdIGlzIG9uIHRvcCBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgZGVzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMSknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzBdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzBdIGlzIG9uIGJvdHRvbSBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgZGVzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIHRvIHNvcnQgYnkgTmFtZSBhZ2Fpbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5OYW1lIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFZlcmlmeSBvcmRlciBpcyBjaGFuZ2VkLCBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nLgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCd0Ym9keSB0cjplcSgwKScpLmF0dHIoJ2lkJykiKSwKICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1JRF8nIC4gJENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRHNbMF0gaXMgb24gdG9wIG9mIHRhYmxlIHNvcnQgYnkgTmFtZSBhc2NlbmRpbmciCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMSknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzFdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzFdIGlzIG9uIGJvdHRvbSBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nIgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVycyBhbmQgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbXMuCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZDEgPSAoCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDJyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ0NvbXB1dGVyLU5JQ1N1YlByaW1hcnlBdHRyaWJ1dGUnID0+ICdUZXN0IG5ldHdvcmsgYWRhcHRlcicsCiAgICAgICAgICAgICAgICAgICAgJ0NvbXB1dGVyLU5JQ0lQQWRkcmVzcycgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJzE3Mi4wLjAuMCcKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICdDb21wdXRlci1OSUNJUG92ZXJESENQJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDMyCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUnID0+ICcyMDE3LTEwLTEwIDAwOjAwOjAwJwogICAgICAgICk7CiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZDIgPSAoCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZScgPT4gJzIwMTctMTEtMTEgMDA6MDA6MDAnCiAgICAgICAgKTsKCiAgICAgICAgQENvbmZpZ0l0ZW1OdW1iZXJzID0gKCk7CiAgICAgICAgJENvdW50ICAgICAgICAgICAgID0gMTsKICAgICAgICBmb3IgKCAxIC4uIDM1ICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1OdW1iZXIgbnVtYmVyIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKICAgICAgICAgICAgbXkgJUR5bmFtaWNGaWVsZCA9ICggJENvdW50IDw9IDMwICkgPyAlRHluYW1pY0ZpZWxkMSA6ICVEeW5hbWljRmllbGQyOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAkQ291bnQgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUlELT57SXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgZHluYW1pYyBmaWVsZHMgYXMgc2VhcmNoYWJsZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAnQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZScgPT4gJzEnLAogICAgICAgICAgICAgICAgJ0NvbXB1dGVyLU5JQ0lQQWRkcmVzcycgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHNlYXJjaCBvcHRpb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSVRTTUNvbmZpZ0l0ZW1TZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGgiICk7CgogICAgICAgICMgQWRkIHNlYXJjaCBmaWx0ZXIgYnkgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSBhbmQgc2V0IGRhdGUgcmFuZ2UgKDgtMTAtMjAxNyAtIDE1LTEwLTIwMTcpLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3QnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaW5wdXRbbmFtZT1cIlNlYXJjaF9EeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZVRpbWVTbG90XCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJTZWFyY2hfRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGVUaW1lU2xvdFN0YXJ0RGF5XCJdJykudmFsKCc4Jyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjU2VhcmNoSW5zZXJ0IHNlbGVjdFtpZD1cIlNlYXJjaF9EeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZVRpbWVTbG90U3RhcnRNb250aFwiXScpLnZhbCgnMTAnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdGFydFllYXJcIl0nKS52YWwoJzIwMTcnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdG9wRGF5XCJdJykudmFsKCcxNScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJTZWFyY2hfRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGVUaW1lU2xvdFN0b3BNb250aFwiXScpLnZhbCgnMTAnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdG9wWWVhclwiXScpLnZhbCgnMjAxNycpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPnNlbmRfa2V5cygnKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmICFcJCgnRGlhbG9nLk1vZGFsJykubGVuZ3RoICYmIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTI1IG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIGZpcnN0IHBhZ2UiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMjUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgZmlyc3QgcGFnZSBpcyBjb3JyZWN0IC0gMjUiLAogICAgICAgICk7CgogICAgICAgICMgR28gdG8gdGhlIHNlY29uZCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2hQYWdlMiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlBhZ2luYXRpb24nKS50ZXh0KCkudHJpbSgpLmluZGV4T2YoJzI2LTMwIG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIHNlY29uZCBwYWdlIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCB0Ym9keSB0cicpLmxlbmd0aDsiKSwKICAgICAgICAgICAgJzUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgc2Vjb25kIHBhZ2UgaXMgY29ycmVjdCAtIDUiLAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHNlYXJjaCBvcHRpb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSVRTTUNvbmZpZ0l0ZW1TZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGggJiYgXCQoJyNTZWFyY2hJbnNlcnQgaW5wdXRbbmFtZT1cIk5hbWVcIl0nKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgIyBJbnB1dCB3cm9uZyBzZWFyY2ggcGFyYW1ldGVycywgcmVzdWx0IHNob3VsZCBiZSAnTm8gZGF0YSBmb3VuZCcuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5zZW5kX2tleXMoJ2FzZGZnJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCdEaWFsb2cuTW9kYWwnKS5sZW5ndGggJiYgXCQoJyNPdmVydmlld0JvZHkgI0VtcHR5TWVzc2FnZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIHJlc3VsdC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLicgKSA+IC0xLAogICAgICAgICAgICAiJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJyAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICJDaGFuZ2Ugc2VhcmNoIG9wdGlvbiIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGVOZXcnKS5sZW5ndGgiICk7CiAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgIyBDcmVhdGUgbmV3IHRlbXBsYXRlIHNlYXJjaC4KICAgICAgICBteSAkU2VhcmNoUHJvZmlsZU5hbWUgPSAiU2VhcmNoLSIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVOZXciLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLmxlbmd0aCIgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoUHJvZmlsZUFkZE5hbWUiLCAgICdjc3MnICktPnNlbmRfa2V5cygkU2VhcmNoUHJvZmlsZU5hbWUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24iLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgPT09ICckU2VhcmNoUHJvZmlsZU5hbWUnIgogICAgICAgICk7CgogICAgICAgICMgRXhlY3V0ZSBzZWFyY2ggd2l0aCBuZXcgc2VhcmNoIHByb2ZpbGUgdG8gc2F2ZSBpdC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOdW1iZXInXSIpLT5zZW5kX2tleXMoJyonKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPnNlbmRfa2V5cyggJyonIC4gJFJhbmRvbUlEICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmICFcJCgnRGlhbG9nLk1vZGFsJykubGVuZ3RoICYmIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gIkNoYW5nZSBzZWFyY2ggb3B0aW9uIgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0lUU01Db25maWdJdGVtU2VhcmNoIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgbmV3bHkgY3JlYXRlZCBzZWFyY2ggcHJvZmlsZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCckU2VhcmNoUHJvZmlsZU5hbWUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJyRTZWFyY2hQcm9maWxlTmFtZSc7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGVBc0xpbms6dmlzaWJsZScpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGJ1dHRvbiBmb3IgcHJvZmlsZSBsaW5rLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVBc0xpbmsiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICJDaGFuZ2Ugc2VhcmNoIG9wdGlvbiIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJyRTZWFyY2hQcm9maWxlTmFtZSciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCk7IiksCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlTmFtZSwKICAgICAgICAgICAgIkNoZWNrIGlmIHByb2ZpbGUgaXMgbG9hZGVkIHdlbGwiCiAgICAgICAgKTsKCiAgICAgICAgIyBWZXJpZnkgc2VhcmNoIHJlc3VsdCByZW1haW5lZCBpbnRhY3QgYWZ0ZXIgY2hhbmdpbmcgaXRlbXMgcGVyIHBhZ2UsIHNlZSBidWcjMTQ3MTcgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAjIFNldCAxMCBjb25maWcgaXRlbXMgcGVyIHBhZ2UuCgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLkRpYWxvZyAuQ2xvc2UiLCAgICAgICAgICAgICAgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggImEjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZyIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiLkRpYWxvZy5Nb2RhbCAjVXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duIikubGVuZ3RoJwogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nLAogICAgICAgICAgICBWYWx1ZSAgID0+ICcxMCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEaWFsb2dCdXR0b24xIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiAhJCgiLkRpYWxvZy5Nb2RhbCIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIGNvcnJlY3QgbnVtYmVyIG9mIGl0ZW1zIGFyZSBzaG93biBvbiBwYWdpbmF0aW9uLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTEwIG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gYWZ0ZXIgc3dpdGNoIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMTAnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBpcyBjb3JyZWN0IC0gMTAiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1EZWxldGVJRCBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgIGZvciBteSAkQ2FjaGUgKHF3KENvbmZpZ0l0ZW0gVmVyc2lvbikpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKCBUeXBlID0+ICRDYWNoZSApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemZoom.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgZ2V0ICdQcm9kdWN0aW9uJyBhbmQgJ1JlcGFpcicgZGVwbG95bWVudCBzdGF0ZSBJRHMKICAgICAgICBteSBARGVwbFN0YXRlSURzOwogICAgICAgIG15IEBEZXBsU3RhdGVzID0gKHF3KFByb2R1Y3Rpb24gUmVwYWlyKSk7CiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWY7CiAgICAgICAgZm9yIG15ICREZXBsU3RhdGUgKEBEZXBsU3RhdGVzKSB7CiAgICAgICAgICAgICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRGVwbFN0YXRlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBEZXBsU3RhdGVJRHMsICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgIG15ICRIYXJkd2FyZUNsYXNzRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwoKICAgICAgICAjIHNldCBOYW1lIHVwZGF0ZSBhcyBhIHZlcnNpb24gdHJpZ2dlcmluZyBldmVudAogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRIYXJkd2FyZUNsYXNzRGF0YVJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10KICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhlIG5ldyBDb25maWdJdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgYWRkIHR3byB2ZXJzaW9ucwogICAgICAgIG15IEBVcGRhdGVkTmFtZXMgPSAoICdTZWxlbml1bVRlc3QyJywgJ1NlbGVuaXVtVGVzdDMnICk7CiAgICAgICAgbXkgJU5hbWVzQnlWZXJzaW9uOwogICAgICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWROYW1lcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJOYW1lIGlzIHVwZGF0ZWQgLSAnJE5hbWUnIgogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9IgogICAgICAgICAgICApOwogICAgICAgICAgICAkTmFtZXNCeVZlcnNpb257ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0gfSA9ICROYW1lOwogICAgICAgIH0KICAgICAgICBteSBAVmVyc2lvbklEcyA9IHNvcnQga2V5cyAlTmFtZXNCeVZlcnNpb247CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1Eb3duO1ZpZXc9O0ZpbHRlcj0kSGFyZHdhcmVDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiBjcmVhdGVkIENvbmZpZ0l0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyggdGV4dCgpLCAnJENvbmZpZ0l0ZW1OdW1iZXInICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBnZXQgQ29uZmlnSXRlbSB2YWx1ZSBwYXJhbXMKICAgICAgICBteSBAQ29uZmlnSXRlbVZhbHVlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ0hhcmR3YXJlJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdwLlZhbHVlOmNvbnRhaW5zKEhhcmR3YXJlKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoU2VsZW5pdW1UZXN0MyknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnUmVwYWlyJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdkaXYuVmFsdWU6Y29udGFpbnMoUmVwYWlyKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnZGl2LlZhbHVlOmNvbnRhaW5zKE9wZXJhdGlvbmFsKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICIkQ29uZmlnSXRlbU51bWJlciIsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntWYWx1ZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFZlcnNpb25JRCAoQFZlcnNpb25JRHMpIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEIjsKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI1ZlcnNpb25TZWxlY3Rpb24nKS52YWwoJyRWYWx1ZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyROYW1lc0J5VmVyc2lvbnskVmVyc2lvbklEfScpLmxlbmd0aCIsCiAgICAgICAgICAgICAgICAiJE5hbWVzQnlWZXJzaW9ueyRWZXJzaW9uSUR9ICgkVmVyc2lvbklEKSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRlc3QgbWVudSBidXR0b25zIHBhcmFtcwogICAgICAgIG15IEBNZW51QnV0dG9ucyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQmFjaycsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9RG93bjtWaWV3PTtGaWx0ZXI9JEhhcmR3YXJlQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGlzdG9yeScsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRHNbMV0iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdFZGl0JywKICAgICAgICAgICAgICAgIExpbmsgPT4gIkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHJpbnQnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEc1sxXSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9JENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R1cGxpY2F0ZScsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7RHVwbGljYXRlSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRHNbMV0iLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWVudSBidXR0b25zCiAgICAgICAgZm9yIG15ICRNZW51QnV0dG9uQ2hlY2sgKEBNZW51QnV0dG9ucykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJyRNZW51QnV0dG9uQ2hlY2stPntMaW5rfScgKV0iKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJNZW51IGJ1dHRvbiAkTWVudUJ1dHRvbkNoZWNrLT57TmFtZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbQogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICk7CiAgICB9CgopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentLinkObject.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgojIE5PVEU6IFRoZSB0ZXN0IHJ1bnMgc3VjY2Vzc2Z1bGx5LCBidXQgd2l0aCB0aGUgc2lkZSBlZmZlY3Qgb2YgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgRVMgd2hlbiB0aWNrZXRzIGFyZSBkZWxldGVkCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyk7CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAkSGVscGVyID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRXZWJzZXJ2aWNlT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgZGlzYWJsZSBFUwogICAgICAgIG15ICVFbGFzdGljU2VhcmNoQWN0aXZlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdFbGFzdGljc2VhcmNoOjpBY3RpdmUnLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICAgICAgS2V5ICAgPT4gJ0VsYXN0aWNzZWFyY2g6OkFjdGl2ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICRFbGFzdGljU2VhcmNoQWN0aXZle0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICk7CgogICAgICAgICMgZGlzYWJsZSBFUyB3ZWJzZXJ2aWNlCiAgICAgICAgbXkgJFdlYnNlcnZpY2UgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUdldCgKICAgICAgICAgICAgSUQgPT4gMSwKICAgICAgICApOwogICAgICAgIG15ICRXZWJTZXJ2aWNlRGlzYWJsZWQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAgICAgSUQgICAgICA9PiAkV2Vic2VydmljZS0+e0lEfSwKICAgICAgICAgICAgTmFtZSAgICA9PiAkV2Vic2VydmljZS0+e05hbWV9LAogICAgICAgICAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlLT57Q29uZmlnfSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAyLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFdlYlNlcnZpY2VEaXNhYmxlZCwKICAgICAgICAgICAgIldlYnNlcnZpY2UgJyRXZWJzZXJ2aWNlLT57TmFtZX0nIGlzIGRpc2FibGVkIgogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNhdGFsb2cgbGVnYWN5IGNsYXNzZXMgSURzCiAgICAgICAgJElUU01Db25maWdJdGVtSGVscGVyLT5UZXN0Q29uZmlnSXRlbUNyZWF0ZUxlZ2FjeUNsYXNzZXMoCiAgICAgICAgICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgQ29tcHV0ZXIgYW5kIEhhcmR3YXJlIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtIChxdyhDb21wdXRlciBIYXJkd2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdHdvIHRlc3QgQ29uZmlnSXRlbXMgZm9yIENvbXB1dGVyIGFuZCBIYXJkd2FyZSBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRJVFNNQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VsZW5pdW0gVGVzdCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3Qgc2VydmljZS4KICAgICAgICBteSAkU2VydmljZU5hbWUgPSAiU2VydmljZSIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTZXJ2aWNlSUQgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VBZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRTZXJ2aWNlTmFtZSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgQ29tbWVudCAgICAgPT4gJ1NlbGVuaXVtIFRlc3QgU2VydmljZScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgID0+IDIsCiAgICAgICAgICAgIENyaXRpY2FsaXR5ID0+ICczIG5vcm1hbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlcnZpY2VJRCwKICAgICAgICAgICAgIlNlcnZpY2UgaXMgY3JlYXRlZCAtIElEICRTZXJ2aWNlSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB0aWNrZXQuCiAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NlbGVuaXVtVGVzdFRpY2tldCcsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgICAgICAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiVGlja2V0IGlzIGNyZWF0ZWQgLSBJRCAkVGlja2V0SUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJywgJ2l0c20tc2VydmljZScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEc1swXSIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdMaW5rJyBtZW51LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9JENvbmZpZ0l0ZW1JRHNbMF1cJyApXSIKICAgICAgICApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB0byAnTGluaycgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGUnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgSGFyZHdhcmUgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdJVFNNQ29uZmlnSXRlbTo6JENvbmZpZ0l0ZW1DbGFzc0lEc1sxXScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6TnVtYmVyIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIENoZWNrICdMaW5rJyBzY3JlZW4gZm9yIHR3byBDb25maWdJdGVtcy4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoVGFyZ2V0SWRlbnRpZmllciBTdWJtaXRTZWFyY2gpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBTZWFyY2ggQ29uZmlnSXRlbSBieSBpdHMgbnVtYmVyIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6TnVtYmVyJ10iKS0+c2VuZF9rZXlzKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0gKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXRTZWFyY2giLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI0xpbmtUYXJnZXRLZXlzJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICBzbGVlcCAxOwoKICAgICAgICAjIFNlbGVjdCAnQWx0ZXJuYXRpdmVUbycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgU2VydmljZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdTZXJ2aWNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgc2xlZXAgMjsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NFQVJDSFxcXFw6XFxcXDpOYW1lIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIFNlYXJjaCBTZXJ2aWNlIGJ5IG5hbWUgYW5kIHNlbGVjdCByZXN1bHQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU0VBUkNIOjpOYW1lJ10iKS0+c2VuZF9rZXlzKCRTZXJ2aWNlTmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0U2VhcmNoIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J0xpbmtUYXJnZXRLZXlzJ11bXEB2YWx1ZT0nJFNlcnZpY2VJRCddIiktPmNsaWNrKCk7CgogICAgICAgICMgU2VsZWN0ICdSZWxldmFudCB0bycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdSZWxldmFudFRvOjpTb3VyY2UnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgVGlja2V0LgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1RhcmdldElkZW50aWZpZXInKS52YWwoJ1RpY2tldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6VGlja2V0TnVtYmVyIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIFNlYXJjaCBUaWNrZXQgYnkgbnVtYmVyIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6VGlja2V0TnVtYmVyJ10iKS0+c2VuZF9rZXlzKCRUaWNrZXROdW1iZXIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdFNlYXJjaCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nTGlua1RhcmdldEtleXMnXVtcQHZhbHVlPSckVGlja2V0SUQnXSIpLT5jbGljaygpOwoKICAgICAgICAjIFNlbGVjdCAnRGVwZW5kcyB0bycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdEZXBlbmRzT246OlNvdXJjZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAaWQ9J0FkZExpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsb3NlIGxpbmsgd2luZG93LCByZXR1cm4gdG8gWm9vbSB2aWV3IGFuZCByZWZyZXNoIHBhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua0FkZENsb3NlTGluayIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGxpbmtlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZXMgKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0sICRTZXJ2aWNlTmFtZSwgJFRpY2tldE51bWJlciApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWVzICkgPiAtMSwKICAgICAgICAgICAgICAgICJMaW5rZWQgdmFsdWUgJENoZWNrVmFsdWVzIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiAnTGluaycgbWVudSBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PSRDb25maWdJdGVtSURzWzBdXCcgKV0iCiAgICAgICAgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScKICAgICAgICApOwoKICAgICAgICAjIENsaWNrICdnbyB0byBtYW5hZ2UgbGlua3Mgc2NyZWVuJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCcjTWFuYWdlTGlua3NcJyApXSIpLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgZm9yIHRoZSBtYW5hZ2UgbGlua3MgdGFiIHRvIHNob3cgdXAuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc106dmlzaWJsZSIpLmxlbmd0aCAmJiBwYXJzZUludCgkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc10iKS5jc3MoIm9wYWNpdHkiKSwgMTApID09IDEnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgYWxsIGxpbmtlZCBpdGVtcyBhbmQgZGVsZXRlIGxpbmtzLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J0lUU01Db25maWdJdGVtOjokQ29uZmlnSXRlbUlEc1sxXTo6QWx0ZXJuYXRpdmVUbyddIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdGl0bGU9J0RlbGV0ZSBsaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nU2VydmljZTo6JFNlcnZpY2VJRFw6OlJlbGV2YW50VG8nXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHRpdGxlPSdEZWxldGUgbGlua3MnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J1RpY2tldDo6JFRpY2tldElEXDo6RGVwZW5kc09uJ10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0aXRsZT0nRGVsZXRlIGxpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsb3NlIGxpbmsgd2luZG93LCByZXR1cm4gdG8gWm9vbSB2aWV3IGFuZCByZWZyZXNoIHBhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua0FkZENsb3NlTGluayIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIG5vIGxpbmtlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZXMgKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0sICRTZXJ2aWNlTmFtZSwgJFRpY2tldE51bWJlciApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWVzICkgPT0gLTEsCiAgICAgICAgICAgICAgICAiTGlua2VkIHZhbHVlICRDaGVja1ZhbHVlcyAtIG5vdCBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSB0ZXN0IFRpY2tldC4KICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGlja2V0IGlzIGRlbGV0ZWQgLSBJRCAkVGlja2V0SUQgIgogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1EZWxldGUgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbURlbGV0ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBzZXJ2aWNlIGFuZCBpdHMgcHJlZmVyZW5jZXMuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIHNlcnZpY2VfcHJlZmVyZW5jZXMgV0hFUkUgc2VydmljZV9pZCA9ICRTZXJ2aWNlSUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU2VydmljZSBwcmVmZXJlbmNlcyBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBzZXJ2aWNlIFdIRVJFIGlkID0gJFNlcnZpY2VJRCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTZXJ2aWNlIGlzIGRlbGV0ZWQgLSBJRCAkU2VydmljZUlEIiwKICAgICAgICApOwogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/DashboardITSMConfigItemGeneric.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bTsKCiMgc29tZSBzZXR1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIFNlbGVuaXVtIHRlc3QKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgU2VsZW5pdW0gdGVzdHMgdGVtcG9yYXJpbHkuJyk7CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGN1c3RvbWVyIHVzZXIgbG9naW4uCiAgICAgICAgbXkgJFRlc3RDdXN0b21lclVzZXIgPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IGN1c3RvbWVyIHVzZXIiOwoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwogICAgICAgIG15ICRDdXN0b21lckNvbXBhbnlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55Jyk7CgogICAgICAgICMgR2V0IGN1c3RvbWVyIHVzZXIgZGF0YS4KICAgICAgICBteSAlQ3VzdG9tZXJVc2VyID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlciwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSByYW5kb20gaWQuCiAgICAgICAgbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgbXkgJEN1c3RvbWVyQ29tcGFueUlEID0gJEN1c3RvbWVyQ29tcGFueU9iamVjdC0+Q3VzdG9tZXJDb21wYW55QWRkKAogICAgICAgICAgICBDdXN0b21lcklEICAgICAgICAgID0+ICIkVGVzdEN1c3RvbWVyVXNlci0kUmFuZG9tSUQiLAogICAgICAgICAgICBDdXN0b21lckNvbXBhbnlOYW1lID0+ICIkVGVzdEN1c3RvbWVyVXNlci0kUmFuZG9tSUQiLAogICAgICAgICAgICBWYWxpZElEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ3VzdG9tZXJDb21wYW55SUQsCiAgICAgICAgICAgICJDcmVhdGVkIHRlc3QgY3VzdG9tZXIgY29tcGFueSAkQ3VzdG9tZXJDb21wYW55SUQiLAogICAgICAgICk7CgogICAgICAgICMgRGVmaW5lIHRlc3QgYXJyYXkuCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENsYXNzTmFtZSAgPT4gJ0N1c3RvbWVyJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBDdXN0b21lcgogIE5hbWU6IEN1c3RvbWVyCiAgU2VhcmNoYWJsZTogMSwKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyCkVPRgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDbGFzc05hbWUgID0+ICdDdXN0b21lckNvbXBhbnknIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnQ3VzdG9tZXJDb21wYW55JywKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBDdXN0b21lckNvbXBhbnkKICBOYW1lOiBDdXN0b21lckNvbXBhbnkKICBTZWFyY2hhYmxlOiAxLAogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXJDb21wYW55CkVPRgogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIGNvbmZpZyBzZXR0aW5ncy4KICAgICAgICBteSAlSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInLAogICAgICAgICk7CgogICAgICAgIGRlbGV0ZSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX07CiAgICAgICAgJElUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfS0+e0NvbmZpZ0l0ZW1LZXl9ID0gewogICAgICAgICAgICAnQ3VzdG9tZXInIC4gJFJhbmRvbUlEID0+ICdDdXN0b21lcicsCiAgICAgICAgfTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAleyAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55U3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueScsCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0tPntDb25maWdJdGVtS2V5fTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnlTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX0gPSB7CiAgICAgICAgICAgICdDdXN0b21lckNvbXBhbnknIC4gJFJhbmRvbUlEID0+ICdDdXN0b21lckNvbXBhbnknLAogICAgICAgIH07CgogICAgICAgICMgQ2hhbmdlIGNvbmZpZyBzZXR0aW5nLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueScsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICV7ICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIEFkZCB0aGUgdGVzdCBjbGFzc2VzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1DbGFzc2VzOwogICAgICAgIG15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uIChAVGVzdCkgewoKICAgICAgICAgICAgIyBBZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MuCiAgICAgICAgICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkRGVmaW5pdGlvbi0+e0NsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGNsYXNzIGlkLgogICAgICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDbGFzc0lEOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NlcywgICREZWZpbml0aW9uLT57Q2xhc3NOYW1lfTsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMuCiAgICAgICAgICAgIG15ICRHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICAgICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MuCiAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwogICAgICAgICAgICBvayggJFJlc3VsdC0+e0RlZmluaXRpb25JRH0sICdnb3QgRGVmaW5pdGlvbklEJyApOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwoKICAgICAgICAgICAgIyBBZGQgZGF0YSB0byB0ZXN0IGFycmF5LgogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0NsYXNzSUR9ID0gJENsYXNzSUQ7CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgc2NyaXB0IGFsaWFzLgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JFRlc3QtPntDbGFzc0lEfVwiXScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q2xhc3NJRD0kVGVzdC0+e0NsYXNzSUR9XCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjTmFtZScpLmxlbmd0aCAmJiBcJCgnI1N1Ym1pdEJ1dHRvbicpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ3JlYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ1NlbGVuaXVtVGVzdC0nIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU5hbWUpOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCkgPT09ICckRGVwbFN0YXRlSUQnIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNJbmNpU3RhdGVJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0luY2lTdGF0ZUlEJykudmFsKCkgPT09ICcxJyIgKTsKCiAgICAgICAgICAgIGlmICggJFRlc3QtPntLZXl9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJdGVtMTAiLCAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSXRlbTEwIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkQ3VzdG9tZXJVc2Vye1VzZXJJRH0gKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImxpLnVpLW1lbnUtaXRlbTp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCdsaS51aS1tZW51LWl0ZW06Y29udGFpbnMoJEN1c3RvbWVyVXNlcntVc2VySUR9KScpLmNsaWNrKCkiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgIlwkKCcjSXRlbTEwJykudmFsKCckQ3VzdG9tZXJDb21wYW55SUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0l0ZW0xMCcpLnZhbCgpID09PSAnJEN1c3RvbWVyQ29tcGFueUlEJyIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTdWJtaXQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyO0N1c3RvbWVyVXNlcklEPSRDdXN0b21lclVzZXJ7VXNlcklEfSIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb25maWdJdGVtTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRDb25maWdJdGVtTmFtZSBmb3VuZCBvbiBwYWdlIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CgogICAgICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI7Q3VzdG9tZXJJRD0kQ3VzdG9tZXJDb21wYW55SUQiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbU5hbWUgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkQ29uZmlnSXRlbU5hbWUgZm91bmQgb24gcGFnZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENsZWFudXAuCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gY3VzdG9tZXJfY29tcGFueSBXSEVSRSBjdXN0b21lcl9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDdXN0b21lckNvbXBhbnlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRGVsZXRlZCBDdXN0b21lckNvbXBhbnkiLAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uSUQgKEBDb25maWdJdGVtRGVmaW5pdGlvbklEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ICREZWZpbml0aW9uSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGRlZmluaXRpb24gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2dfcHJlZmVyZW5jZXMgV0hFUkUgZ2VuZXJhbF9jYXRhbG9nX2lkID0gJENsYXNzSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIlByZWZlcmVuY2VzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2cgV0hFUkUgaWQgPSAkQ2xhc3NJRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ2xhc3MgaXRlbSBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCk7CiAgICB9Cik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Customer/ITSMConfigurationManagement/CustomerITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQFRlc3RDbGFzc2VzID0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKEBUZXN0Q2xhc3NlcykgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgICAgICA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwogICAgICAgIG15IEBDb25maWdJdGVtSURzOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgbXkgJUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewogICAgICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbnNTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwJEluZGV4IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEluZGV4ID4gMSApIHsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17TmFtZX0gICAgPSAkVGVzdENsYXNzZXNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17Q2xhc3Nlc30gPSBbICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gIkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAkSW5kZXgiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBlcm1pc3Npb25Db25kaXRpb25zU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZSBieSBjbGlja2luZyBDb25maWdJdGVtcyBpY29uIG9uIHRoZSBzaWRlIG1lbnUgYmFyCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtJyApXSIKICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgQ09ORklHSVRFTToKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPTtGaWx0ZXI9MCRJbmRleDtTb3J0Qnk9O09yZGVyQnk9O0Z1bGx0ZXh0PScgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTSBpZiAkSW5kZXggPT0gMTsKCiAgICAgICAgICAgICMgb3JkZXIgYnkgZGVzY2VuZGluZyBjcmVhdGlvbiB0aW1lCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtIG51bWJlcgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtTnVtYmVyc1sgJEluZGV4IC0gMiBdOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnModGV4dCgpLCBcJyRDb25maWdJdGVtTnVtYmVyXCcgKV0iKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgICMgVmVyaWZ5IHRoZXJlIGlzIGEgbGluayB0byBDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSBvbiBDb25maWdJdGVtIE51bWJlciBjb2x1bW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCd0cjplcShcIjFcIikgYTpjb250YWlucygkQ29uZmlnSXRlbU51bWJlcnNbM10pW2hyZWYqPVwiSXRlbUlEPSRDb25maWdJdGVtSURzWzNdXCJdJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIkxpbmsgb24gQ29uZmlnSXRlbSAnTnVtYmVyJyBjb2x1bW4gY29ycmVjdC4iCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZSAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtRGVsZXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Customer/ITSMConfigurationManagement/CustomerITSMConfigItemZoom.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQFRlc3RDbGFzc2VzID0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKEBUZXN0Q2xhc3NlcykgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgICAgICA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwogICAgICAgIG15IEBDb25maWdJdGVtSURzOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgbXkgJUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwogICAgICAgICVDdXN0b21lcklUU01Db25maWdJdGVtU3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewogICAgICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbnNTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwJEluZGV4IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEluZGV4ID4gMSApIHsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17TmFtZX0gICAgPSAkVGVzdENsYXNzZXNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17Q2xhc3Nlc30gPSBbICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gIkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAkSW5kZXgiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBlcm1pc3Npb25Db25kaXRpb25zU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZSBieSBjbGlja2luZyBDb25maWdJdGVtcyBpY29uIG9uIHRoZSBzaWRlIG1lbnUgYmFyCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtJyApXSIKICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgQ09ORklHSVRFTToKICAgICAgICBmb3IgbXkgJEluZGV4ICggMiAuLiA1ICkgewoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPTtGaWx0ZXI9MCRJbmRleDtTb3J0Qnk9O09yZGVyQnk9O0Z1bGx0ZXh0PScgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgb3JkZXIgYnkgZGVzY2VuZGluZyBjcmVhdGlvbiB0aW1lCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtIG51bWJlcgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtTnVtYmVyc1sgJEluZGV4IC0gMiBdOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnModGV4dCgpLCBcJyRDb25maWdJdGVtTnVtYmVyXCcgKV0iKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBWZXJpZnkgdGhlcmUgaXMgYSBsaW5rIHRvIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIG9uIENvbmZpZ0l0ZW0gTnVtYmVyIGNvbHVtbi4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWyAkSW5kZXggLSAyIF07CiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkSW5kZXggLSAyIF07CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCd0cjplcShcIjFcIikgYTpjb250YWlucygkQ29uZmlnSXRlbU51bWJlcilbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRFwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkxpbmsgb24gQ29uZmlnSXRlbSAnTnVtYmVyJyBjb2x1bW4gY29ycmVjdC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKHRleHQoKSwgXCckQ29uZmlnSXRlbU51bWJlclwnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgY2hlY2sgQ29uZmlnSXRlbSB2YWx1ZXMgb24gdGhlIHpvb20gc2NyZWVuCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIC4gIiMkQ29uZmlnSXRlbU51bWJlciI7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdwOmNvbnRhaW5zKCRWYWx1ZSknKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gZmllbGQgdmFsdWUgJyRWYWx1ZScgZm91bmQgaW4gY29uZmlnIGl0ZW0gem9vbSIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+Z29fYmFjaygpOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIjsnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZSAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtRGVsZXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/sample/ImportExport/TemplateExport.csv" Permission="660" Encode="Base64">Ik5hbWUiLCJEZXBsb3ltZW50IFN0YXRlIiwiSW5jaWRlbnQgU3RhdGUiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl8xMCIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzkiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl84IiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fNyIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzYiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl81IiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fNCIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzMiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl8yIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fMSIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCI=</File>
        <File Location="scripts/test/sample/ITSMConfigurationManagement/LegacyClasses.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IENvbXB1dGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IENvbXB1dGVyLVZlbmRvcgogICAgICAgICAgLSBERjogQ29tcHV0ZXItTW9kZWwKICAgICAgICAgIC0gREY6IENvbXB1dGVyLURlc2NyaXB0aW9uCiAgICAgICAgICAtIERGOiBDb21wdXRlci1UeXBlCiAgICAgICAgICAtIERGOiBDb21wdXRlci1DdXN0b21lcklECiAgICAgICAgICAtIERGOiBDb21wdXRlci1Pd25lcgogICAgICAgICAgLSBERjogQ29tcHV0ZXItU2VyaWFsTnVtYmVyCiAgICAgICAgICAtIERGOiBDb21wdXRlci1PcGVyYXRpbmdTeXN0ZW0KICAgICAgICAgIC0gREY6IENvbXB1dGVyLUNQVQogICAgICAgICAgLSBERjogQ29tcHV0ZXItUmFtCiAgICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlzawogICAgICAgICAgLSBERjogQ29tcHV0ZXItRlFETgogICAgICAgICAgLSBERjogQ29tcHV0ZXItTklDCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogQ29tcHV0ZXItR3JhcGhpY0FkYXB0ZXIKICAgICAgICAgIC0gREY6IENvbXB1dGVyLU90aGVyRXF1aXBtZW50CiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZQogICAgICAgICAgLSBERjogQ29tcHV0ZXItSW5zdGFsbERhdGUKICAgICAgICAgICAgTWFuZGF0b3J5OiAxCiAgICAgICAgICAtIERGOiBDb21wdXRlci1Ob3RlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogIER5bmFtaWNGaWVsZHM6CiAgICBDb21wdXRlci1DUFU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBNdWx0aVZhbHVlOiAxCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENQVQogICAgICBOYW1lOiBDb21wdXRlci1DUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogQ3VzdG9tZXIgQ29tcGFueQogICAgICBOYW1lOiBDb21wdXRlci1DdXN0b21lcklECiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogRGVzY3JpcHRpb24KICAgICAgTmFtZTogQ29tcHV0ZXItRGVzY3JpcHRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUZRRE46CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRlFETgogICAgICBOYW1lOiBDb21wdXRlci1GUUROCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1HcmFwaGljQWRhcHRlcjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBHcmFwaGljIEFkYXB0ZXIKICAgICAgTmFtZTogQ29tcHV0ZXItR3JhcGhpY0FkYXB0ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUhhcmREaXNrOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlza1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTmFtZQogICAgICAgICAgICBOYW1lOiBDb21wdXRlci1IYXJkRGlza1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlza0NhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLUhhcmREaXNrQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAxCiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBIYXJkIERpc2sKICAgICAgTmFtZTogQ29tcHV0ZXItSGFyZERpc2sKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUluc3RhbGxEYXRlOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgWWVhcnNJbkZ1dHVyZTogMTAKICAgICAgICBZZWFyc0luUGFzdDogMjAKICAgICAgICBZZWFyc1BlcmlvZDogMQogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEluc3RhbGwgRGF0ZQogICAgICBOYW1lOiBDb21wdXRlci1JbnN0YWxsRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItTW9kZWw6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogQ29tcHV0ZXItTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLU5JQzoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBOYW1lCiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLU5JQ1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBDb21wdXRlci1OSUNJUG92ZXJESENQCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06Olllc05vCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgICAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgICAgICAgTGFiZWw6IElQIG92ZXIgREhDUAogICAgICAgICAgICBOYW1lOiBDb21wdXRlci1OSUNJUG92ZXJESENQCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogQ29tcHV0ZXItTklDSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLU5JQ0lQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgQWRhcHRlcgogICAgICBOYW1lOiBDb21wdXRlci1OSUMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLU5vdGU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE5vdGUKICAgICAgTmFtZTogQ29tcHV0ZXItTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItT3BlcmF0aW5nU3lzdGVtOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogQ29tcHV0ZXItT3BlcmF0aW5nU3lzdGVtCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1PdGhlckVxdWlwbWVudDoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogT3RoZXIgRXF1aXBtZW50CiAgICAgIE5hbWU6IENvbXB1dGVyLU90aGVyRXF1aXBtZW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1Pd25lcjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogQ29tcHV0ZXItT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLVJhbToKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUmFtCiAgICAgIE5hbWU6IENvbXB1dGVyLVJhbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbCBOdW1iZXIKICAgICAgTmFtZTogQ29tcHV0ZXItU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1UeXBlOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkNvbXB1dGVyOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogQ29tcHV0ZXItVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItVmVuZG9yOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFZlbmRvcgogICAgICBOYW1lOiBDb21wdXRlci1WZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlCiAgICAgIE5hbWU6IENvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgTmFtZTogSGFyZHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogfAogICAgLS0tCiAgICBQYWdlczoKICAgICAgLSBOYW1lOiBDb250ZW50CiAgICAgICAgTGF5b3V0OgogICAgICAgICAgQ29sdW1uczogMQogICAgICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgICAgIENvbnRlbnQ6CiAgICAgICAgICAtIFNlY3Rpb246IEF0dHJpYnV0ZXMKICAgICAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICAgICAgUm93U3RhcnQ6IDEKCiAgICBTZWN0aW9uczoKICAgICAgQXR0cmlidXRlczoKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBERjogSGFyZHdhcmUtVmVuZG9yCiAgICAgICAgICAtIERGOiBIYXJkd2FyZS1Nb2RlbAogICAgICAgICAgLSBERjogSGFyZHdhcmUtRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IEhhcmR3YXJlLVR5cGUKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLU93bmVyCiAgICAgICAgICAtIERGOiBIYXJkd2FyZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLUluc3RhbGxEYXRlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogSGFyZHdhcmUtTm90ZQogICAgICAgICAgICBNYW5kYXRvcnk6IDEKICBEeW5hbWljRmllbGRzOgogICAgSGFyZHdhcmUtQ3VzdG9tZXJJRDoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBDdXN0b21lciBDb21wYW55CiAgICAgIE5hbWU6IEhhcmR3YXJlLUN1c3RvbWVySUQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLURlc2NyaXB0aW9uOgogICAgICBDSUNsYXNzOiBIYXJkd2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBIYXJkd2FyZS1EZXNjcmlwdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtSW5zdGFsbERhdGU6CiAgICAgIENJQ2xhc3M6IEhhcmR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogSW5zdGFsbCBEYXRlCiAgICAgIE5hbWU6IEhhcmR3YXJlLUluc3RhbGxEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1Nb2RlbDoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBIYXJkd2FyZS1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtTm90ZToKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTm90ZQogICAgICBOYW1lOiBIYXJkd2FyZS1Ob3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1Pd25lcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogSGFyZHdhcmUtT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWwgTnVtYmVyCiAgICAgIE5hbWU6IEhhcmR3YXJlLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtVHlwZToKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpIYXJkd2FyZTo6VHlwZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogMQogICAgICBGaWVsZFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IEhhcmR3YXJlLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLVZlbmRvcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBWZW5kb3IKICAgICAgTmFtZTogSGFyZHdhcmUtVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1XYXJyYW50eUV4cGlyYXRpb25EYXRlOgogICAgICBDSUNsYXNzOiBIYXJkd2FyZQogICAgICBDb25maWc6CiAgICAgICAgWWVhcnNJbkZ1dHVyZTogMTAKICAgICAgICBZZWFyc0luUGFzdDogMjAKICAgICAgICBZZWFyc1BlcmlvZDogMQogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IFdhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZQogICAgICBOYW1lOiBIYXJkd2FyZS1XYXJyYW50eUV4cGlyYXRpb25EYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IExvY2F0aW9uCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IExvY2F0aW9uLVR5cGUKICAgICAgICAgIC0gREY6IExvY2F0aW9uLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IExvY2F0aW9uLU93bmVyCiAgICAgICAgICAtIERGOiBMb2NhdGlvbi1QaG9uZTEKICAgICAgICAgIC0gREY6IExvY2F0aW9uLVBob25lMgogICAgICAgICAgLSBERjogTG9jYXRpb24tRmF4CiAgICAgICAgICAtIERGOiBMb2NhdGlvbi1FTWFpbAogICAgICAgICAgLSBERjogTG9jYXRpb24tQWRkcmVzcwogICAgICAgICAgLSBERjogTG9jYXRpb24tTm90ZQogICAgICAgICAgICBNYW5kYXRvcnk6IDEKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQWRkcmVzczoKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogQWRkcmVzcwogICAgICBOYW1lOiBMb2NhdGlvbi1BZGRyZXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1DdXN0b21lcklEOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBQb3NzaWJsZU5vbmU6IDEKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IEN1c3RvbWVyIENvbXBhbnkKICAgICAgTmFtZTogTG9jYXRpb24tQ3VzdG9tZXJJRAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tRU1haWw6CiAgICAgIENJQ2xhc3M6IExvY2F0aW9uCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRS1NYWlsCiAgICAgIE5hbWU6IExvY2F0aW9uLUVNYWlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1GYXg6CiAgICAgIENJQ2xhc3M6IExvY2F0aW9uCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmF4CiAgICAgIE5hbWU6IExvY2F0aW9uLUZheAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tTm90ZToKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTm90ZQogICAgICBOYW1lOiBMb2NhdGlvbi1Ob3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1Pd25lcjoKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogTG9jYXRpb24tT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVBob25lMToKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQaG9uZSAxCiAgICAgIE5hbWU6IExvY2F0aW9uLVBob25lMQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUGhvbmUyOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFBob25lIDIKICAgICAgTmFtZTogTG9jYXRpb24tUGhvbmUyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1UeXBlOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkxvY2F0aW9uOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogTG9jYXRpb24tVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICBOYW1lOiBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IE5ldHdvcmstRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IE5ldHdvcmstVHlwZQogICAgICAgICAgLSBERjogTmV0d29yay1DdXN0b21lcklECiAgICAgICAgICAtIERGOiBOZXR3b3JrLU93bmVyCiAgICAgICAgICAtIERGOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogTmV0d29yay1Ob3RlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogIER5bmFtaWNGaWVsZHM6CiAgICBOZXR3b3JrLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBDdXN0b21lciBDb21wYW55CiAgICAgIE5hbWU6IE5ldHdvcmstQ3VzdG9tZXJJRAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTmV0d29yay1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBOZXR3b3JrLURlc2NyaXB0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzOgogICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJQcmltYXJ5QXR0cmlidXRlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTmFtZQogICAgICAgICAgICBOYW1lOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzU3ViUHJpbWFyeUF0dHJpYnV0ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJuZXRNYXNrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6IDI1NS4yNTUuMjU1LjAKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3VibmV0IE1hc2sKICAgICAgICAgICAgTmFtZTogTmV0d29yay1OZXR3b3JrQWRkcmVzc1N1Ym5ldE1hc2sKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzR2F0ZXdheQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBHYXRld2F5CiAgICAgICAgICAgIE5hbWU6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NHYXRld2F5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBBZGRyZXNzCiAgICAgIE5hbWU6IE5ldHdvcmstTmV0d29ya0FkZHJlc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIE5ldHdvcmstTm90ZToKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBOb3RlCiAgICAgIE5hbWU6IE5ldHdvcmstTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTmV0d29yay1Pd25lcjoKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBPd25lcgogICAgICBOYW1lOiBOZXR3b3JrLU93bmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBOZXR3b3JrLVR5cGU6CiAgICAgIENJQ2xhc3M6IE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpOZXR3b3JrOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogTmV0d29yay1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IFNvZnR3YXJlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLVZlbmRvcgogICAgICAgICAgLSBERjogU29mdHdhcmUtVmVyc2lvbgogICAgICAgICAgLSBERjogU29mdHdhcmUtRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IFNvZnR3YXJlLVR5cGUKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLU93bmVyCiAgICAgICAgICAtIERGOiBTb2Z0d2FyZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLUxpY2VuY2VUeXBlCiAgICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5CiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogU29mdHdhcmUtTWVkaWEKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLU5vdGUKICAgICAgICAgICAgTWFuZGF0b3J5OiAxCiAgRHluYW1pY0ZpZWxkczoKICAgIFNvZnR3YXJlLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogQ3VzdG9tZXIgQ29tcGFueQogICAgICBOYW1lOiBTb2Z0d2FyZS1DdXN0b21lcklECiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogRGVzY3JpcHRpb24KICAgICAgTmFtZTogU29mdHdhcmUtRGVzY3JpcHRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLUxpY2VuY2VLZXk6CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IFNvZnR3YXJlLUxpY2VuY2VLZXlTdWJQcmltYXJ5QXR0cmlidXRlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE5hbWUKICAgICAgICAgICAgTmFtZTogU29mdHdhcmUtTGljZW5jZUtleVN1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5UXVhbnRpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6IDEKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgICcxJzogMQogICAgICAgICAgICAgICAgJzEwJzogMTAKICAgICAgICAgICAgICAgICcxMDAnOiAxMDAKICAgICAgICAgICAgICAgICcxMDAwJzogMTAwMAogICAgICAgICAgICAgICAgJzEwMSc6IDEwMQogICAgICAgICAgICAgICAgJzEwMic6IDEwMgogICAgICAgICAgICAgICAgJzEwMyc6IDEwMwogICAgICAgICAgICAgICAgJzEwNCc6IDEwNAogICAgICAgICAgICAgICAgJzEwNSc6IDEwNQogICAgICAgICAgICAgICAgJzEwNic6IDEwNgogICAgICAgICAgICAgICAgJzEwNyc6IDEwNwogICAgICAgICAgICAgICAgJzEwOCc6IDEwOAogICAgICAgICAgICAgICAgJzEwOSc6IDEwOQogICAgICAgICAgICAgICAgJzExJzogMTEKICAgICAgICAgICAgICAgICcxMTAnOiAxMTAKICAgICAgICAgICAgICAgICcxMTEnOiAxMTEKICAgICAgICAgICAgICAgICcxMTInOiAxMTIKICAgICAgICAgICAgICAgICcxMTMnOiAxMTMKICAgICAgICAgICAgICAgICcxMTQnOiAxMTQKICAgICAgICAgICAgICAgICcxMTUnOiAxMTUKICAgICAgICAgICAgICAgICcxMTYnOiAxMTYKICAgICAgICAgICAgICAgICcxMTcnOiAxMTcKICAgICAgICAgICAgICAgICcxMTgnOiAxMTgKICAgICAgICAgICAgICAgICcxMTknOiAxMTkKICAgICAgICAgICAgICAgICcxMic6IDEyCiAgICAgICAgICAgICAgICAnMTIwJzogMTIwCiAgICAgICAgICAgICAgICAnMTIxJzogMTIxCiAgICAgICAgICAgICAgICAnMTIyJzogMTIyCiAgICAgICAgICAgICAgICAnMTIzJzogMTIzCiAgICAgICAgICAgICAgICAnMTI0JzogMTI0CiAgICAgICAgICAgICAgICAnMTI1JzogMTI1CiAgICAgICAgICAgICAgICAnMTI2JzogMTI2CiAgICAgICAgICAgICAgICAnMTI3JzogMTI3CiAgICAgICAgICAgICAgICAnMTI4JzogMTI4CiAgICAgICAgICAgICAgICAnMTI5JzogMTI5CiAgICAgICAgICAgICAgICAnMTMnOiAxMwogICAgICAgICAgICAgICAgJzEzMCc6IDEzMAogICAgICAgICAgICAgICAgJzEzMSc6IDEzMQogICAgICAgICAgICAgICAgJzEzMic6IDEzMgogICAgICAgICAgICAgICAgJzEzMyc6IDEzMwogICAgICAgICAgICAgICAgJzEzNCc6IDEzNAogICAgICAgICAgICAgICAgJzEzNSc6IDEzNQogICAgICAgICAgICAgICAgJzEzNic6IDEzNgogICAgICAgICAgICAgICAgJzEzNyc6IDEzNwogICAgICAgICAgICAgICAgJzEzOCc6IDEzOAogICAgICAgICAgICAgICAgJzEzOSc6IDEzOQogICAgICAgICAgICAgICAgJzE0JzogMTQKICAgICAgICAgICAgICAgICcxNDAnOiAxNDAKICAgICAgICAgICAgICAgICcxNDEnOiAxNDEKICAgICAgICAgICAgICAgICcxNDInOiAxNDIKICAgICAgICAgICAgICAgICcxNDMnOiAxNDMKICAgICAgICAgICAgICAgICcxNDQnOiAxNDQKICAgICAgICAgICAgICAgICcxNDUnOiAxNDUKICAgICAgICAgICAgICAgICcxNDYnOiAxNDYKICAgICAgICAgICAgICAgICcxNDcnOiAxNDcKICAgICAgICAgICAgICAgICcxNDgnOiAxNDgKICAgICAgICAgICAgICAgICcxNDknOiAxNDkKICAgICAgICAgICAgICAgICcxNSc6IDE1CiAgICAgICAgICAgICAgICAnMTUwJzogMTUwCiAgICAgICAgICAgICAgICAnMTUxJzogMTUxCiAgICAgICAgICAgICAgICAnMTUyJzogMTUyCiAgICAgICAgICAgICAgICAnMTUzJzogMTUzCiAgICAgICAgICAgICAgICAnMTU0JzogMTU0CiAgICAgICAgICAgICAgICAnMTU1JzogMTU1CiAgICAgICAgICAgICAgICAnMTU2JzogMTU2CiAgICAgICAgICAgICAgICAnMTU3JzogMTU3CiAgICAgICAgICAgICAgICAnMTU4JzogMTU4CiAgICAgICAgICAgICAgICAnMTU5JzogMTU5CiAgICAgICAgICAgICAgICAnMTYnOiAxNgogICAgICAgICAgICAgICAgJzE2MCc6IDE2MAogICAgICAgICAgICAgICAgJzE2MSc6IDE2MQogICAgICAgICAgICAgICAgJzE2Mic6IDE2MgogICAgICAgICAgICAgICAgJzE2Myc6IDE2MwogICAgICAgICAgICAgICAgJzE2NCc6IDE2NAogICAgICAgICAgICAgICAgJzE2NSc6IDE2NQogICAgICAgICAgICAgICAgJzE2Nic6IDE2NgogICAgICAgICAgICAgICAgJzE2Nyc6IDE2NwogICAgICAgICAgICAgICAgJzE2OCc6IDE2OAogICAgICAgICAgICAgICAgJzE2OSc6IDE2OQogICAgICAgICAgICAgICAgJzE3JzogMTcKICAgICAgICAgICAgICAgICcxNzAnOiAxNzAKICAgICAgICAgICAgICAgICcxNzEnOiAxNzEKICAgICAgICAgICAgICAgICcxNzInOiAxNzIKICAgICAgICAgICAgICAgICcxNzMnOiAxNzMKICAgICAgICAgICAgICAgICcxNzQnOiAxNzQKICAgICAgICAgICAgICAgICcxNzUnOiAxNzUKICAgICAgICAgICAgICAgICcxNzYnOiAxNzYKICAgICAgICAgICAgICAgICcxNzcnOiAxNzcKICAgICAgICAgICAgICAgICcxNzgnOiAxNzgKICAgICAgICAgICAgICAgICcxNzknOiAxNzkKICAgICAgICAgICAgICAgICcxOCc6IDE4CiAgICAgICAgICAgICAgICAnMTgwJzogMTgwCiAgICAgICAgICAgICAgICAnMTgxJzogMTgxCiAgICAgICAgICAgICAgICAnMTgyJzogMTgyCiAgICAgICAgICAgICAgICAnMTgzJzogMTgzCiAgICAgICAgICAgICAgICAnMTg0JzogMTg0CiAgICAgICAgICAgICAgICAnMTg1JzogMTg1CiAgICAgICAgICAgICAgICAnMTg2JzogMTg2CiAgICAgICAgICAgICAgICAnMTg3JzogMTg3CiAgICAgICAgICAgICAgICAnMTg4JzogMTg4CiAgICAgICAgICAgICAgICAnMTg5JzogMTg5CiAgICAgICAgICAgICAgICAnMTknOiAxOQogICAgICAgICAgICAgICAgJzE5MCc6IDE5MAogICAgICAgICAgICAgICAgJzE5MSc6IDE5MQogICAgICAgICAgICAgICAgJzE5Mic6IDE5MgogICAgICAgICAgICAgICAgJzE5Myc6IDE5MwogICAgICAgICAgICAgICAgJzE5NCc6IDE5NAogICAgICAgICAgICAgICAgJzE5NSc6IDE5NQogICAgICAgICAgICAgICAgJzE5Nic6IDE5NgogICAgICAgICAgICAgICAgJzE5Nyc6IDE5NwogICAgICAgICAgICAgICAgJzE5OCc6IDE5OAogICAgICAgICAgICAgICAgJzE5OSc6IDE5OQogICAgICAgICAgICAgICAgJzInOiAyCiAgICAgICAgICAgICAgICAnMjAnOiAyMAogICAgICAgICAgICAgICAgJzIwMCc6IDIwMAogICAgICAgICAgICAgICAgJzIwMSc6IDIwMQogICAgICAgICAgICAgICAgJzIwMic6IDIwMgogICAgICAgICAgICAgICAgJzIwMyc6IDIwMwogICAgICAgICAgICAgICAgJzIwNCc6IDIwNAogICAgICAgICAgICAgICAgJzIwNSc6IDIwNQogICAgICAgICAgICAgICAgJzIwNic6IDIwNgogICAgICAgICAgICAgICAgJzIwNyc6IDIwNwogICAgICAgICAgICAgICAgJzIwOCc6IDIwOAogICAgICAgICAgICAgICAgJzIwOSc6IDIwOQogICAgICAgICAgICAgICAgJzIxJzogMjEKICAgICAgICAgICAgICAgICcyMTAnOiAyMTAKICAgICAgICAgICAgICAgICcyMTEnOiAyMTEKICAgICAgICAgICAgICAgICcyMTInOiAyMTIKICAgICAgICAgICAgICAgICcyMTMnOiAyMTMKICAgICAgICAgICAgICAgICcyMTQnOiAyMTQKICAgICAgICAgICAgICAgICcyMTUnOiAyMTUKICAgICAgICAgICAgICAgICcyMTYnOiAyMTYKICAgICAgICAgICAgICAgICcyMTcnOiAyMTcKICAgICAgICAgICAgICAgICcyMTgnOiAyMTgKICAgICAgICAgICAgICAgICcyMTknOiAyMTkKICAgICAgICAgICAgICAgICcyMic6IDIyCiAgICAgICAgICAgICAgICAnMjIwJzogMjIwCiAgICAgICAgICAgICAgICAnMjIxJzogMjIxCiAgICAgICAgICAgICAgICAnMjIyJzogMjIyCiAgICAgICAgICAgICAgICAnMjIzJzogMjIzCiAgICAgICAgICAgICAgICAnMjI0JzogMjI0CiAgICAgICAgICAgICAgICAnMjI1JzogMjI1CiAgICAgICAgICAgICAgICAnMjI2JzogMjI2CiAgICAgICAgICAgICAgICAnMjI3JzogMjI3CiAgICAgICAgICAgICAgICAnMjI4JzogMjI4CiAgICAgICAgICAgICAgICAnMjI5JzogMjI5CiAgICAgICAgICAgICAgICAnMjMnOiAyMwogICAgICAgICAgICAgICAgJzIzMCc6IDIzMAogICAgICAgICAgICAgICAgJzIzMSc6IDIzMQogICAgICAgICAgICAgICAgJzIzMic6IDIzMgogICAgICAgICAgICAgICAgJzIzMyc6IDIzMwogICAgICAgICAgICAgICAgJzIzNCc6IDIzNAogICAgICAgICAgICAgICAgJzIzNSc6IDIzNQogICAgICAgICAgICAgICAgJzIzNic6IDIzNgogICAgICAgICAgICAgICAgJzIzNyc6IDIzNwogICAgICAgICAgICAgICAgJzIzOCc6IDIzOAogICAgICAgICAgICAgICAgJzIzOSc6IDIzOQogICAgICAgICAgICAgICAgJzI0JzogMjQKICAgICAgICAgICAgICAgICcyNDAnOiAyNDAKICAgICAgICAgICAgICAgICcyNDEnOiAyNDEKICAgICAgICAgICAgICAgICcyNDInOiAyNDIKICAgICAgICAgICAgICAgICcyNDMnOiAyNDMKICAgICAgICAgICAgICAgICcyNDQnOiAyNDQKICAgICAgICAgICAgICAgICcyNDUnOiAyNDUKICAgICAgICAgICAgICAgICcyNDYnOiAyNDYKICAgICAgICAgICAgICAgICcyNDcnOiAyNDcKICAgICAgICAgICAgICAgICcyNDgnOiAyNDgKICAgICAgICAgICAgICAgICcyNDknOiAyNDkKICAgICAgICAgICAgICAgICcyNSc6IDI1CiAgICAgICAgICAgICAgICAnMjUwJzogMjUwCiAgICAgICAgICAgICAgICAnMjUxJzogMjUxCiAgICAgICAgICAgICAgICAnMjUyJzogMjUyCiAgICAgICAgICAgICAgICAnMjUzJzogMjUzCiAgICAgICAgICAgICAgICAnMjU0JzogMjU0CiAgICAgICAgICAgICAgICAnMjU1JzogMjU1CiAgICAgICAgICAgICAgICAnMjU2JzogMjU2CiAgICAgICAgICAgICAgICAnMjU3JzogMjU3CiAgICAgICAgICAgICAgICAnMjU4JzogMjU4CiAgICAgICAgICAgICAgICAnMjU5JzogMjU5CiAgICAgICAgICAgICAgICAnMjYnOiAyNgogICAgICAgICAgICAgICAgJzI2MCc6IDI2MAogICAgICAgICAgICAgICAgJzI2MSc6IDI2MQogICAgICAgICAgICAgICAgJzI2Mic6IDI2MgogICAgICAgICAgICAgICAgJzI2Myc6IDI2MwogICAgICAgICAgICAgICAgJzI2NCc6IDI2NAogICAgICAgICAgICAgICAgJzI2NSc6IDI2NQogICAgICAgICAgICAgICAgJzI2Nic6IDI2NgogICAgICAgICAgICAgICAgJzI2Nyc6IDI2NwogICAgICAgICAgICAgICAgJzI2OCc6IDI2OAogICAgICAgICAgICAgICAgJzI2OSc6IDI2OQogICAgICAgICAgICAgICAgJzI3JzogMjcKICAgICAgICAgICAgICAgICcyNzAnOiAyNzAKICAgICAgICAgICAgICAgICcyNzEnOiAyNzEKICAgICAgICAgICAgICAgICcyNzInOiAyNzIKICAgICAgICAgICAgICAgICcyNzMnOiAyNzMKICAgICAgICAgICAgICAgICcyNzQnOiAyNzQKICAgICAgICAgICAgICAgICcyNzUnOiAyNzUKICAgICAgICAgICAgICAgICcyNzYnOiAyNzYKICAgICAgICAgICAgICAgICcyNzcnOiAyNzcKICAgICAgICAgICAgICAgICcyNzgnOiAyNzgKICAgICAgICAgICAgICAgICcyNzknOiAyNzkKICAgICAgICAgICAgICAgICcyOCc6IDI4CiAgICAgICAgICAgICAgICAnMjgwJzogMjgwCiAgICAgICAgICAgICAgICAnMjgxJzogMjgxCiAgICAgICAgICAgICAgICAnMjgyJzogMjgyCiAgICAgICAgICAgICAgICAnMjgzJzogMjgzCiAgICAgICAgICAgICAgICAnMjg0JzogMjg0CiAgICAgICAgICAgICAgICAnMjg1JzogMjg1CiAgICAgICAgICAgICAgICAnMjg2JzogMjg2CiAgICAgICAgICAgICAgICAnMjg3JzogMjg3CiAgICAgICAgICAgICAgICAnMjg4JzogMjg4CiAgICAgICAgICAgICAgICAnMjg5JzogMjg5CiAgICAgICAgICAgICAgICAnMjknOiAyOQogICAgICAgICAgICAgICAgJzI5MCc6IDI5MAogICAgICAgICAgICAgICAgJzI5MSc6IDI5MQogICAgICAgICAgICAgICAgJzI5Mic6IDI5MgogICAgICAgICAgICAgICAgJzI5Myc6IDI5MwogICAgICAgICAgICAgICAgJzI5NCc6IDI5NAogICAgICAgICAgICAgICAgJzI5NSc6IDI5NQogICAgICAgICAgICAgICAgJzI5Nic6IDI5NgogICAgICAgICAgICAgICAgJzI5Nyc6IDI5NwogICAgICAgICAgICAgICAgJzI5OCc6IDI5OAogICAgICAgICAgICAgICAgJzI5OSc6IDI5OQogICAgICAgICAgICAgICAgJzMnOiAzCiAgICAgICAgICAgICAgICAnMzAnOiAzMAogICAgICAgICAgICAgICAgJzMwMCc6IDMwMAogICAgICAgICAgICAgICAgJzMwMSc6IDMwMQogICAgICAgICAgICAgICAgJzMwMic6IDMwMgogICAgICAgICAgICAgICAgJzMwMyc6IDMwMwogICAgICAgICAgICAgICAgJzMwNCc6IDMwNAogICAgICAgICAgICAgICAgJzMwNSc6IDMwNQogICAgICAgICAgICAgICAgJzMwNic6IDMwNgogICAgICAgICAgICAgICAgJzMwNyc6IDMwNwogICAgICAgICAgICAgICAgJzMwOCc6IDMwOAogICAgICAgICAgICAgICAgJzMwOSc6IDMwOQogICAgICAgICAgICAgICAgJzMxJzogMzEKICAgICAgICAgICAgICAgICczMTAnOiAzMTAKICAgICAgICAgICAgICAgICczMTEnOiAzMTEKICAgICAgICAgICAgICAgICczMTInOiAzMTIKICAgICAgICAgICAgICAgICczMTMnOiAzMTMKICAgICAgICAgICAgICAgICczMTQnOiAzMTQKICAgICAgICAgICAgICAgICczMTUnOiAzMTUKICAgICAgICAgICAgICAgICczMTYnOiAzMTYKICAgICAgICAgICAgICAgICczMTcnOiAzMTcKICAgICAgICAgICAgICAgICczMTgnOiAzMTgKICAgICAgICAgICAgICAgICczMTknOiAzMTkKICAgICAgICAgICAgICAgICczMic6IDMyCiAgICAgICAgICAgICAgICAnMzIwJzogMzIwCiAgICAgICAgICAgICAgICAnMzIxJzogMzIxCiAgICAgICAgICAgICAgICAnMzIyJzogMzIyCiAgICAgICAgICAgICAgICAnMzIzJzogMzIzCiAgICAgICAgICAgICAgICAnMzI0JzogMzI0CiAgICAgICAgICAgICAgICAnMzI1JzogMzI1CiAgICAgICAgICAgICAgICAnMzI2JzogMzI2CiAgICAgICAgICAgICAgICAnMzI3JzogMzI3CiAgICAgICAgICAgICAgICAnMzI4JzogMzI4CiAgICAgICAgICAgICAgICAnMzI5JzogMzI5CiAgICAgICAgICAgICAgICAnMzMnOiAzMwogICAgICAgICAgICAgICAgJzMzMCc6IDMzMAogICAgICAgICAgICAgICAgJzMzMSc6IDMzMQogICAgICAgICAgICAgICAgJzMzMic6IDMzMgogICAgICAgICAgICAgICAgJzMzMyc6IDMzMwogICAgICAgICAgICAgICAgJzMzNCc6IDMzNAogICAgICAgICAgICAgICAgJzMzNSc6IDMzNQogICAgICAgICAgICAgICAgJzMzNic6IDMzNgogICAgICAgICAgICAgICAgJzMzNyc6IDMzNwogICAgICAgICAgICAgICAgJzMzOCc6IDMzOAogICAgICAgICAgICAgICAgJzMzOSc6IDMzOQogICAgICAgICAgICAgICAgJzM0JzogMzQKICAgICAgICAgICAgICAgICczNDAnOiAzNDAKICAgICAgICAgICAgICAgICczNDEnOiAzNDEKICAgICAgICAgICAgICAgICczNDInOiAzNDIKICAgICAgICAgICAgICAgICczNDMnOiAzNDMKICAgICAgICAgICAgICAgICczNDQnOiAzNDQKICAgICAgICAgICAgICAgICczNDUnOiAzNDUKICAgICAgICAgICAgICAgICczNDYnOiAzNDYKICAgICAgICAgICAgICAgICczNDcnOiAzNDcKICAgICAgICAgICAgICAgICczNDgnOiAzNDgKICAgICAgICAgICAgICAgICczNDknOiAzNDkKICAgICAgICAgICAgICAgICczNSc6IDM1CiAgICAgICAgICAgICAgICAnMzUwJzogMzUwCiAgICAgICAgICAgICAgICAnMzUxJzogMzUxCiAgICAgICAgICAgICAgICAnMzUyJzogMzUyCiAgICAgICAgICAgICAgICAnMzUzJzogMzUzCiAgICAgICAgICAgICAgICAnMzU0JzogMzU0CiAgICAgICAgICAgICAgICAnMzU1JzogMzU1CiAgICAgICAgICAgICAgICAnMzU2JzogMzU2CiAgICAgICAgICAgICAgICAnMzU3JzogMzU3CiAgICAgICAgICAgICAgICAnMzU4JzogMzU4CiAgICAgICAgICAgICAgICAnMzU5JzogMzU5CiAgICAgICAgICAgICAgICAnMzYnOiAzNgogICAgICAgICAgICAgICAgJzM2MCc6IDM2MAogICAgICAgICAgICAgICAgJzM2MSc6IDM2MQogICAgICAgICAgICAgICAgJzM2Mic6IDM2MgogICAgICAgICAgICAgICAgJzM2Myc6IDM2MwogICAgICAgICAgICAgICAgJzM2NCc6IDM2NAogICAgICAgICAgICAgICAgJzM2NSc6IDM2NQogICAgICAgICAgICAgICAgJzM2Nic6IDM2NgogICAgICAgICAgICAgICAgJzM2Nyc6IDM2NwogICAgICAgICAgICAgICAgJzM2OCc6IDM2OAogICAgICAgICAgICAgICAgJzM2OSc6IDM2OQogICAgICAgICAgICAgICAgJzM3JzogMzcKICAgICAgICAgICAgICAgICczNzAnOiAzNzAKICAgICAgICAgICAgICAgICczNzEnOiAzNzEKICAgICAgICAgICAgICAgICczNzInOiAzNzIKICAgICAgICAgICAgICAgICczNzMnOiAzNzMKICAgICAgICAgICAgICAgICczNzQnOiAzNzQKICAgICAgICAgICAgICAgICczNzUnOiAzNzUKICAgICAgICAgICAgICAgICczNzYnOiAzNzYKICAgICAgICAgICAgICAgICczNzcnOiAzNzcKICAgICAgICAgICAgICAgICczNzgnOiAzNzgKICAgICAgICAgICAgICAgICczNzknOiAzNzkKICAgICAgICAgICAgICAgICczOCc6IDM4CiAgICAgICAgICAgICAgICAnMzgwJzogMzgwCiAgICAgICAgICAgICAgICAnMzgxJzogMzgxCiAgICAgICAgICAgICAgICAnMzgyJzogMzgyCiAgICAgICAgICAgICAgICAnMzgzJzogMzgzCiAgICAgICAgICAgICAgICAnMzg0JzogMzg0CiAgICAgICAgICAgICAgICAnMzg1JzogMzg1CiAgICAgICAgICAgICAgICAnMzg2JzogMzg2CiAgICAgICAgICAgICAgICAnMzg3JzogMzg3CiAgICAgICAgICAgICAgICAnMzg4JzogMzg4CiAgICAgICAgICAgICAgICAnMzg5JzogMzg5CiAgICAgICAgICAgICAgICAnMzknOiAzOQogICAgICAgICAgICAgICAgJzM5MCc6IDM5MAogICAgICAgICAgICAgICAgJzM5MSc6IDM5MQogICAgICAgICAgICAgICAgJzM5Mic6IDM5MgogICAgICAgICAgICAgICAgJzM5Myc6IDM5MwogICAgICAgICAgICAgICAgJzM5NCc6IDM5NAogICAgICAgICAgICAgICAgJzM5NSc6IDM5NQogICAgICAgICAgICAgICAgJzM5Nic6IDM5NgogICAgICAgICAgICAgICAgJzM5Nyc6IDM5NwogICAgICAgICAgICAgICAgJzM5OCc6IDM5OAogICAgICAgICAgICAgICAgJzM5OSc6IDM5OQogICAgICAgICAgICAgICAgJzQnOiA0CiAgICAgICAgICAgICAgICAnNDAnOiA0MAogICAgICAgICAgICAgICAgJzQwMCc6IDQwMAogICAgICAgICAgICAgICAgJzQwMSc6IDQwMQogICAgICAgICAgICAgICAgJzQwMic6IDQwMgogICAgICAgICAgICAgICAgJzQwMyc6IDQwMwogICAgICAgICAgICAgICAgJzQwNCc6IDQwNAogICAgICAgICAgICAgICAgJzQwNSc6IDQwNQogICAgICAgICAgICAgICAgJzQwNic6IDQwNgogICAgICAgICAgICAgICAgJzQwNyc6IDQwNwogICAgICAgICAgICAgICAgJzQwOCc6IDQwOAogICAgICAgICAgICAgICAgJzQwOSc6IDQwOQogICAgICAgICAgICAgICAgJzQxJzogNDEKICAgICAgICAgICAgICAgICc0MTAnOiA0MTAKICAgICAgICAgICAgICAgICc0MTEnOiA0MTEKICAgICAgICAgICAgICAgICc0MTInOiA0MTIKICAgICAgICAgICAgICAgICc0MTMnOiA0MTMKICAgICAgICAgICAgICAgICc0MTQnOiA0MTQKICAgICAgICAgICAgICAgICc0MTUnOiA0MTUKICAgICAgICAgICAgICAgICc0MTYnOiA0MTYKICAgICAgICAgICAgICAgICc0MTcnOiA0MTcKICAgICAgICAgICAgICAgICc0MTgnOiA0MTgKICAgICAgICAgICAgICAgICc0MTknOiA0MTkKICAgICAgICAgICAgICAgICc0Mic6IDQyCiAgICAgICAgICAgICAgICAnNDIwJzogNDIwCiAgICAgICAgICAgICAgICAnNDIxJzogNDIxCiAgICAgICAgICAgICAgICAnNDIyJzogNDIyCiAgICAgICAgICAgICAgICAnNDIzJzogNDIzCiAgICAgICAgICAgICAgICAnNDI0JzogNDI0CiAgICAgICAgICAgICAgICAnNDI1JzogNDI1CiAgICAgICAgICAgICAgICAnNDI2JzogNDI2CiAgICAgICAgICAgICAgICAnNDI3JzogNDI3CiAgICAgICAgICAgICAgICAnNDI4JzogNDI4CiAgICAgICAgICAgICAgICAnNDI5JzogNDI5CiAgICAgICAgICAgICAgICAnNDMnOiA0MwogICAgICAgICAgICAgICAgJzQzMCc6IDQzMAogICAgICAgICAgICAgICAgJzQzMSc6IDQzMQogICAgICAgICAgICAgICAgJzQzMic6IDQzMgogICAgICAgICAgICAgICAgJzQzMyc6IDQzMwogICAgICAgICAgICAgICAgJzQzNCc6IDQzNAogICAgICAgICAgICAgICAgJzQzNSc6IDQzNQogICAgICAgICAgICAgICAgJzQzNic6IDQzNgogICAgICAgICAgICAgICAgJzQzNyc6IDQzNwogICAgICAgICAgICAgICAgJzQzOCc6IDQzOAogICAgICAgICAgICAgICAgJzQzOSc6IDQzOQogICAgICAgICAgICAgICAgJzQ0JzogNDQKICAgICAgICAgICAgICAgICc0NDAnOiA0NDAKICAgICAgICAgICAgICAgICc0NDEnOiA0NDEKICAgICAgICAgICAgICAgICc0NDInOiA0NDIKICAgICAgICAgICAgICAgICc0NDMnOiA0NDMKICAgICAgICAgICAgICAgICc0NDQnOiA0NDQKICAgICAgICAgICAgICAgICc0NDUnOiA0NDUKICAgICAgICAgICAgICAgICc0NDYnOiA0NDYKICAgICAgICAgICAgICAgICc0NDcnOiA0NDcKICAgICAgICAgICAgICAgICc0NDgnOiA0NDgKICAgICAgICAgICAgICAgICc0NDknOiA0NDkKICAgICAgICAgICAgICAgICc0NSc6IDQ1CiAgICAgICAgICAgICAgICAnNDUwJzogNDUwCiAgICAgICAgICAgICAgICAnNDUxJzogNDUxCiAgICAgICAgICAgICAgICAnNDUyJzogNDUyCiAgICAgICAgICAgICAgICAnNDUzJzogNDUzCiAgICAgICAgICAgICAgICAnNDU0JzogNDU0CiAgICAgICAgICAgICAgICAnNDU1JzogNDU1CiAgICAgICAgICAgICAgICAnNDU2JzogNDU2CiAgICAgICAgICAgICAgICAnNDU3JzogNDU3CiAgICAgICAgICAgICAgICAnNDU4JzogNDU4CiAgICAgICAgICAgICAgICAnNDU5JzogNDU5CiAgICAgICAgICAgICAgICAnNDYnOiA0NgogICAgICAgICAgICAgICAgJzQ2MCc6IDQ2MAogICAgICAgICAgICAgICAgJzQ2MSc6IDQ2MQogICAgICAgICAgICAgICAgJzQ2Mic6IDQ2MgogICAgICAgICAgICAgICAgJzQ2Myc6IDQ2MwogICAgICAgICAgICAgICAgJzQ2NCc6IDQ2NAogICAgICAgICAgICAgICAgJzQ2NSc6IDQ2NQogICAgICAgICAgICAgICAgJzQ2Nic6IDQ2NgogICAgICAgICAgICAgICAgJzQ2Nyc6IDQ2NwogICAgICAgICAgICAgICAgJzQ2OCc6IDQ2OAogICAgICAgICAgICAgICAgJzQ2OSc6IDQ2OQogICAgICAgICAgICAgICAgJzQ3JzogNDcKICAgICAgICAgICAgICAgICc0NzAnOiA0NzAKICAgICAgICAgICAgICAgICc0NzEnOiA0NzEKICAgICAgICAgICAgICAgICc0NzInOiA0NzIKICAgICAgICAgICAgICAgICc0NzMnOiA0NzMKICAgICAgICAgICAgICAgICc0NzQnOiA0NzQKICAgICAgICAgICAgICAgICc0NzUnOiA0NzUKICAgICAgICAgICAgICAgICc0NzYnOiA0NzYKICAgICAgICAgICAgICAgICc0NzcnOiA0NzcKICAgICAgICAgICAgICAgICc0NzgnOiA0NzgKICAgICAgICAgICAgICAgICc0NzknOiA0NzkKICAgICAgICAgICAgICAgICc0OCc6IDQ4CiAgICAgICAgICAgICAgICAnNDgwJzogNDgwCiAgICAgICAgICAgICAgICAnNDgxJzogNDgxCiAgICAgICAgICAgICAgICAnNDgyJzogNDgyCiAgICAgICAgICAgICAgICAnNDgzJzogNDgzCiAgICAgICAgICAgICAgICAnNDg0JzogNDg0CiAgICAgICAgICAgICAgICAnNDg1JzogNDg1CiAgICAgICAgICAgICAgICAnNDg2JzogNDg2CiAgICAgICAgICAgICAgICAnNDg3JzogNDg3CiAgICAgICAgICAgICAgICAnNDg4JzogNDg4CiAgICAgICAgICAgICAgICAnNDg5JzogNDg5CiAgICAgICAgICAgICAgICAnNDknOiA0OQogICAgICAgICAgICAgICAgJzQ5MCc6IDQ5MAogICAgICAgICAgICAgICAgJzQ5MSc6IDQ5MQogICAgICAgICAgICAgICAgJzQ5Mic6IDQ5MgogICAgICAgICAgICAgICAgJzQ5Myc6IDQ5MwogICAgICAgICAgICAgICAgJzQ5NCc6IDQ5NAogICAgICAgICAgICAgICAgJzQ5NSc6IDQ5NQogICAgICAgICAgICAgICAgJzQ5Nic6IDQ5NgogICAgICAgICAgICAgICAgJzQ5Nyc6IDQ5NwogICAgICAgICAgICAgICAgJzQ5OCc6IDQ5OAogICAgICAgICAgICAgICAgJzQ5OSc6IDQ5OQogICAgICAgICAgICAgICAgJzUnOiA1CiAgICAgICAgICAgICAgICAnNTAnOiA1MAogICAgICAgICAgICAgICAgJzUwMCc6IDUwMAogICAgICAgICAgICAgICAgJzUwMSc6IDUwMQogICAgICAgICAgICAgICAgJzUwMic6IDUwMgogICAgICAgICAgICAgICAgJzUwMyc6IDUwMwogICAgICAgICAgICAgICAgJzUwNCc6IDUwNAogICAgICAgICAgICAgICAgJzUwNSc6IDUwNQogICAgICAgICAgICAgICAgJzUwNic6IDUwNgogICAgICAgICAgICAgICAgJzUwNyc6IDUwNwogICAgICAgICAgICAgICAgJzUwOCc6IDUwOAogICAgICAgICAgICAgICAgJzUwOSc6IDUwOQogICAgICAgICAgICAgICAgJzUxJzogNTEKICAgICAgICAgICAgICAgICc1MTAnOiA1MTAKICAgICAgICAgICAgICAgICc1MTEnOiA1MTEKICAgICAgICAgICAgICAgICc1MTInOiA1MTIKICAgICAgICAgICAgICAgICc1MTMnOiA1MTMKICAgICAgICAgICAgICAgICc1MTQnOiA1MTQKICAgICAgICAgICAgICAgICc1MTUnOiA1MTUKICAgICAgICAgICAgICAgICc1MTYnOiA1MTYKICAgICAgICAgICAgICAgICc1MTcnOiA1MTcKICAgICAgICAgICAgICAgICc1MTgnOiA1MTgKICAgICAgICAgICAgICAgICc1MTknOiA1MTkKICAgICAgICAgICAgICAgICc1Mic6IDUyCiAgICAgICAgICAgICAgICAnNTIwJzogNTIwCiAgICAgICAgICAgICAgICAnNTIxJzogNTIxCiAgICAgICAgICAgICAgICAnNTIyJzogNTIyCiAgICAgICAgICAgICAgICAnNTIzJzogNTIzCiAgICAgICAgICAgICAgICAnNTI0JzogNTI0CiAgICAgICAgICAgICAgICAnNTI1JzogNTI1CiAgICAgICAgICAgICAgICAnNTI2JzogNTI2CiAgICAgICAgICAgICAgICAnNTI3JzogNTI3CiAgICAgICAgICAgICAgICAnNTI4JzogNTI4CiAgICAgICAgICAgICAgICAnNTI5JzogNTI5CiAgICAgICAgICAgICAgICAnNTMnOiA1MwogICAgICAgICAgICAgICAgJzUzMCc6IDUzMAogICAgICAgICAgICAgICAgJzUzMSc6IDUzMQogICAgICAgICAgICAgICAgJzUzMic6IDUzMgogICAgICAgICAgICAgICAgJzUzMyc6IDUzMwogICAgICAgICAgICAgICAgJzUzNCc6IDUzNAogICAgICAgICAgICAgICAgJzUzNSc6IDUzNQogICAgICAgICAgICAgICAgJzUzNic6IDUzNgogICAgICAgICAgICAgICAgJzUzNyc6IDUzNwogICAgICAgICAgICAgICAgJzUzOCc6IDUzOAogICAgICAgICAgICAgICAgJzUzOSc6IDUzOQogICAgICAgICAgICAgICAgJzU0JzogNTQKICAgICAgICAgICAgICAgICc1NDAnOiA1NDAKICAgICAgICAgICAgICAgICc1NDEnOiA1NDEKICAgICAgICAgICAgICAgICc1NDInOiA1NDIKICAgICAgICAgICAgICAgICc1NDMnOiA1NDMKICAgICAgICAgICAgICAgICc1NDQnOiA1NDQKICAgICAgICAgICAgICAgICc1NDUnOiA1NDUKICAgICAgICAgICAgICAgICc1NDYnOiA1NDYKICAgICAgICAgICAgICAgICc1NDcnOiA1NDcKICAgICAgICAgICAgICAgICc1NDgnOiA1NDgKICAgICAgICAgICAgICAgICc1NDknOiA1NDkKICAgICAgICAgICAgICAgICc1NSc6IDU1CiAgICAgICAgICAgICAgICAnNTUwJzogNTUwCiAgICAgICAgICAgICAgICAnNTUxJzogNTUxCiAgICAgICAgICAgICAgICAnNTUyJzogNTUyCiAgICAgICAgICAgICAgICAnNTUzJzogNTUzCiAgICAgICAgICAgICAgICAnNTU0JzogNTU0CiAgICAgICAgICAgICAgICAnNTU1JzogNTU1CiAgICAgICAgICAgICAgICAnNTU2JzogNTU2CiAgICAgICAgICAgICAgICAnNTU3JzogNTU3CiAgICAgICAgICAgICAgICAnNTU4JzogNTU4CiAgICAgICAgICAgICAgICAnNTU5JzogNTU5CiAgICAgICAgICAgICAgICAnNTYnOiA1NgogICAgICAgICAgICAgICAgJzU2MCc6IDU2MAogICAgICAgICAgICAgICAgJzU2MSc6IDU2MQogICAgICAgICAgICAgICAgJzU2Mic6IDU2MgogICAgICAgICAgICAgICAgJzU2Myc6IDU2MwogICAgICAgICAgICAgICAgJzU2NCc6IDU2NAogICAgICAgICAgICAgICAgJzU2NSc6IDU2NQogICAgICAgICAgICAgICAgJzU2Nic6IDU2NgogICAgICAgICAgICAgICAgJzU2Nyc6IDU2NwogICAgICAgICAgICAgICAgJzU2OCc6IDU2OAogICAgICAgICAgICAgICAgJzU2OSc6IDU2OQogICAgICAgICAgICAgICAgJzU3JzogNTcKICAgICAgICAgICAgICAgICc1NzAnOiA1NzAKICAgICAgICAgICAgICAgICc1NzEnOiA1NzEKICAgICAgICAgICAgICAgICc1NzInOiA1NzIKICAgICAgICAgICAgICAgICc1NzMnOiA1NzMKICAgICAgICAgICAgICAgICc1NzQnOiA1NzQKICAgICAgICAgICAgICAgICc1NzUnOiA1NzUKICAgICAgICAgICAgICAgICc1NzYnOiA1NzYKICAgICAgICAgICAgICAgICc1NzcnOiA1NzcKICAgICAgICAgICAgICAgICc1NzgnOiA1NzgKICAgICAgICAgICAgICAgICc1NzknOiA1NzkKICAgICAgICAgICAgICAgICc1OCc6IDU4CiAgICAgICAgICAgICAgICAnNTgwJzogNTgwCiAgICAgICAgICAgICAgICAnNTgxJzogNTgxCiAgICAgICAgICAgICAgICAnNTgyJzogNTgyCiAgICAgICAgICAgICAgICAnNTgzJzogNTgzCiAgICAgICAgICAgICAgICAnNTg0JzogNTg0CiAgICAgICAgICAgICAgICAnNTg1JzogNTg1CiAgICAgICAgICAgICAgICAnNTg2JzogNTg2CiAgICAgICAgICAgICAgICAnNTg3JzogNTg3CiAgICAgICAgICAgICAgICAnNTg4JzogNTg4CiAgICAgICAgICAgICAgICAnNTg5JzogNTg5CiAgICAgICAgICAgICAgICAnNTknOiA1OQogICAgICAgICAgICAgICAgJzU5MCc6IDU5MAogICAgICAgICAgICAgICAgJzU5MSc6IDU5MQogICAgICAgICAgICAgICAgJzU5Mic6IDU5MgogICAgICAgICAgICAgICAgJzU5Myc6IDU5MwogICAgICAgICAgICAgICAgJzU5NCc6IDU5NAogICAgICAgICAgICAgICAgJzU5NSc6IDU5NQogICAgICAgICAgICAgICAgJzU5Nic6IDU5NgogICAgICAgICAgICAgICAgJzU5Nyc6IDU5NwogICAgICAgICAgICAgICAgJzU5OCc6IDU5OAogICAgICAgICAgICAgICAgJzU5OSc6IDU5OQogICAgICAgICAgICAgICAgJzYnOiA2CiAgICAgICAgICAgICAgICAnNjAnOiA2MAogICAgICAgICAgICAgICAgJzYwMCc6IDYwMAogICAgICAgICAgICAgICAgJzYwMSc6IDYwMQogICAgICAgICAgICAgICAgJzYwMic6IDYwMgogICAgICAgICAgICAgICAgJzYwMyc6IDYwMwogICAgICAgICAgICAgICAgJzYwNCc6IDYwNAogICAgICAgICAgICAgICAgJzYwNSc6IDYwNQogICAgICAgICAgICAgICAgJzYwNic6IDYwNgogICAgICAgICAgICAgICAgJzYwNyc6IDYwNwogICAgICAgICAgICAgICAgJzYwOCc6IDYwOAogICAgICAgICAgICAgICAgJzYwOSc6IDYwOQogICAgICAgICAgICAgICAgJzYxJzogNjEKICAgICAgICAgICAgICAgICc2MTAnOiA2MTAKICAgICAgICAgICAgICAgICc2MTEnOiA2MTEKICAgICAgICAgICAgICAgICc2MTInOiA2MTIKICAgICAgICAgICAgICAgICc2MTMnOiA2MTMKICAgICAgICAgICAgICAgICc2MTQnOiA2MTQKICAgICAgICAgICAgICAgICc2MTUnOiA2MTUKICAgICAgICAgICAgICAgICc2MTYnOiA2MTYKICAgICAgICAgICAgICAgICc2MTcnOiA2MTcKICAgICAgICAgICAgICAgICc2MTgnOiA2MTgKICAgICAgICAgICAgICAgICc2MTknOiA2MTkKICAgICAgICAgICAgICAgICc2Mic6IDYyCiAgICAgICAgICAgICAgICAnNjIwJzogNjIwCiAgICAgICAgICAgICAgICAnNjIxJzogNjIxCiAgICAgICAgICAgICAgICAnNjIyJzogNjIyCiAgICAgICAgICAgICAgICAnNjIzJzogNjIzCiAgICAgICAgICAgICAgICAnNjI0JzogNjI0CiAgICAgICAgICAgICAgICAnNjI1JzogNjI1CiAgICAgICAgICAgICAgICAnNjI2JzogNjI2CiAgICAgICAgICAgICAgICAnNjI3JzogNjI3CiAgICAgICAgICAgICAgICAnNjI4JzogNjI4CiAgICAgICAgICAgICAgICAnNjI5JzogNjI5CiAgICAgICAgICAgICAgICAnNjMnOiA2MwogICAgICAgICAgICAgICAgJzYzMCc6IDYzMAogICAgICAgICAgICAgICAgJzYzMSc6IDYzMQogICAgICAgICAgICAgICAgJzYzMic6IDYzMgogICAgICAgICAgICAgICAgJzYzMyc6IDYzMwogICAgICAgICAgICAgICAgJzYzNCc6IDYzNAogICAgICAgICAgICAgICAgJzYzNSc6IDYzNQogICAgICAgICAgICAgICAgJzYzNic6IDYzNgogICAgICAgICAgICAgICAgJzYzNyc6IDYzNwogICAgICAgICAgICAgICAgJzYzOCc6IDYzOAogICAgICAgICAgICAgICAgJzYzOSc6IDYzOQogICAgICAgICAgICAgICAgJzY0JzogNjQKICAgICAgICAgICAgICAgICc2NDAnOiA2NDAKICAgICAgICAgICAgICAgICc2NDEnOiA2NDEKICAgICAgICAgICAgICAgICc2NDInOiA2NDIKICAgICAgICAgICAgICAgICc2NDMnOiA2NDMKICAgICAgICAgICAgICAgICc2NDQnOiA2NDQKICAgICAgICAgICAgICAgICc2NDUnOiA2NDUKICAgICAgICAgICAgICAgICc2NDYnOiA2NDYKICAgICAgICAgICAgICAgICc2NDcnOiA2NDcKICAgICAgICAgICAgICAgICc2NDgnOiA2NDgKICAgICAgICAgICAgICAgICc2NDknOiA2NDkKICAgICAgICAgICAgICAgICc2NSc6IDY1CiAgICAgICAgICAgICAgICAnNjUwJzogNjUwCiAgICAgICAgICAgICAgICAnNjUxJzogNjUxCiAgICAgICAgICAgICAgICAnNjUyJzogNjUyCiAgICAgICAgICAgICAgICAnNjUzJzogNjUzCiAgICAgICAgICAgICAgICAnNjU0JzogNjU0CiAgICAgICAgICAgICAgICAnNjU1JzogNjU1CiAgICAgICAgICAgICAgICAnNjU2JzogNjU2CiAgICAgICAgICAgICAgICAnNjU3JzogNjU3CiAgICAgICAgICAgICAgICAnNjU4JzogNjU4CiAgICAgICAgICAgICAgICAnNjU5JzogNjU5CiAgICAgICAgICAgICAgICAnNjYnOiA2NgogICAgICAgICAgICAgICAgJzY2MCc6IDY2MAogICAgICAgICAgICAgICAgJzY2MSc6IDY2MQogICAgICAgICAgICAgICAgJzY2Mic6IDY2MgogICAgICAgICAgICAgICAgJzY2Myc6IDY2MwogICAgICAgICAgICAgICAgJzY2NCc6IDY2NAogICAgICAgICAgICAgICAgJzY2NSc6IDY2NQogICAgICAgICAgICAgICAgJzY2Nic6IDY2NgogICAgICAgICAgICAgICAgJzY2Nyc6IDY2NwogICAgICAgICAgICAgICAgJzY2OCc6IDY2OAogICAgICAgICAgICAgICAgJzY2OSc6IDY2OQogICAgICAgICAgICAgICAgJzY3JzogNjcKICAgICAgICAgICAgICAgICc2NzAnOiA2NzAKICAgICAgICAgICAgICAgICc2NzEnOiA2NzEKICAgICAgICAgICAgICAgICc2NzInOiA2NzIKICAgICAgICAgICAgICAgICc2NzMnOiA2NzMKICAgICAgICAgICAgICAgICc2NzQnOiA2NzQKICAgICAgICAgICAgICAgICc2NzUnOiA2NzUKICAgICAgICAgICAgICAgICc2NzYnOiA2NzYKICAgICAgICAgICAgICAgICc2NzcnOiA2NzcKICAgICAgICAgICAgICAgICc2NzgnOiA2NzgKICAgICAgICAgICAgICAgICc2NzknOiA2NzkKICAgICAgICAgICAgICAgICc2OCc6IDY4CiAgICAgICAgICAgICAgICAnNjgwJzogNjgwCiAgICAgICAgICAgICAgICAnNjgxJzogNjgxCiAgICAgICAgICAgICAgICAnNjgyJzogNjgyCiAgICAgICAgICAgICAgICAnNjgzJzogNjgzCiAgICAgICAgICAgICAgICAnNjg0JzogNjg0CiAgICAgICAgICAgICAgICAnNjg1JzogNjg1CiAgICAgICAgICAgICAgICAnNjg2JzogNjg2CiAgICAgICAgICAgICAgICAnNjg3JzogNjg3CiAgICAgICAgICAgICAgICAnNjg4JzogNjg4CiAgICAgICAgICAgICAgICAnNjg5JzogNjg5CiAgICAgICAgICAgICAgICAnNjknOiA2OQogICAgICAgICAgICAgICAgJzY5MCc6IDY5MAogICAgICAgICAgICAgICAgJzY5MSc6IDY5MQogICAgICAgICAgICAgICAgJzY5Mic6IDY5MgogICAgICAgICAgICAgICAgJzY5Myc6IDY5MwogICAgICAgICAgICAgICAgJzY5NCc6IDY5NAogICAgICAgICAgICAgICAgJzY5NSc6IDY5NQogICAgICAgICAgICAgICAgJzY5Nic6IDY5NgogICAgICAgICAgICAgICAgJzY5Nyc6IDY5NwogICAgICAgICAgICAgICAgJzY5OCc6IDY5OAogICAgICAgICAgICAgICAgJzY5OSc6IDY5OQogICAgICAgICAgICAgICAgJzcnOiA3CiAgICAgICAgICAgICAgICAnNzAnOiA3MAogICAgICAgICAgICAgICAgJzcwMCc6IDcwMAogICAgICAgICAgICAgICAgJzcwMSc6IDcwMQogICAgICAgICAgICAgICAgJzcwMic6IDcwMgogICAgICAgICAgICAgICAgJzcwMyc6IDcwMwogICAgICAgICAgICAgICAgJzcwNCc6IDcwNAogICAgICAgICAgICAgICAgJzcwNSc6IDcwNQogICAgICAgICAgICAgICAgJzcwNic6IDcwNgogICAgICAgICAgICAgICAgJzcwNyc6IDcwNwogICAgICAgICAgICAgICAgJzcwOCc6IDcwOAogICAgICAgICAgICAgICAgJzcwOSc6IDcwOQogICAgICAgICAgICAgICAgJzcxJzogNzEKICAgICAgICAgICAgICAgICc3MTAnOiA3MTAKICAgICAgICAgICAgICAgICc3MTEnOiA3MTEKICAgICAgICAgICAgICAgICc3MTInOiA3MTIKICAgICAgICAgICAgICAgICc3MTMnOiA3MTMKICAgICAgICAgICAgICAgICc3MTQnOiA3MTQKICAgICAgICAgICAgICAgICc3MTUnOiA3MTUKICAgICAgICAgICAgICAgICc3MTYnOiA3MTYKICAgICAgICAgICAgICAgICc3MTcnOiA3MTcKICAgICAgICAgICAgICAgICc3MTgnOiA3MTgKICAgICAgICAgICAgICAgICc3MTknOiA3MTkKICAgICAgICAgICAgICAgICc3Mic6IDcyCiAgICAgICAgICAgICAgICAnNzIwJzogNzIwCiAgICAgICAgICAgICAgICAnNzIxJzogNzIxCiAgICAgICAgICAgICAgICAnNzIyJzogNzIyCiAgICAgICAgICAgICAgICAnNzIzJzogNzIzCiAgICAgICAgICAgICAgICAnNzI0JzogNzI0CiAgICAgICAgICAgICAgICAnNzI1JzogNzI1CiAgICAgICAgICAgICAgICAnNzI2JzogNzI2CiAgICAgICAgICAgICAgICAnNzI3JzogNzI3CiAgICAgICAgICAgICAgICAnNzI4JzogNzI4CiAgICAgICAgICAgICAgICAnNzI5JzogNzI5CiAgICAgICAgICAgICAgICAnNzMnOiA3MwogICAgICAgICAgICAgICAgJzczMCc6IDczMAogICAgICAgICAgICAgICAgJzczMSc6IDczMQogICAgICAgICAgICAgICAgJzczMic6IDczMgogICAgICAgICAgICAgICAgJzczMyc6IDczMwogICAgICAgICAgICAgICAgJzczNCc6IDczNAogICAgICAgICAgICAgICAgJzczNSc6IDczNQogICAgICAgICAgICAgICAgJzczNic6IDczNgogICAgICAgICAgICAgICAgJzczNyc6IDczNwogICAgICAgICAgICAgICAgJzczOCc6IDczOAogICAgICAgICAgICAgICAgJzczOSc6IDczOQogICAgICAgICAgICAgICAgJzc0JzogNzQKICAgICAgICAgICAgICAgICc3NDAnOiA3NDAKICAgICAgICAgICAgICAgICc3NDEnOiA3NDEKICAgICAgICAgICAgICAgICc3NDInOiA3NDIKICAgICAgICAgICAgICAgICc3NDMnOiA3NDMKICAgICAgICAgICAgICAgICc3NDQnOiA3NDQKICAgICAgICAgICAgICAgICc3NDUnOiA3NDUKICAgICAgICAgICAgICAgICc3NDYnOiA3NDYKICAgICAgICAgICAgICAgICc3NDcnOiA3NDcKICAgICAgICAgICAgICAgICc3NDgnOiA3NDgKICAgICAgICAgICAgICAgICc3NDknOiA3NDkKICAgICAgICAgICAgICAgICc3NSc6IDc1CiAgICAgICAgICAgICAgICAnNzUwJzogNzUwCiAgICAgICAgICAgICAgICAnNzUxJzogNzUxCiAgICAgICAgICAgICAgICAnNzUyJzogNzUyCiAgICAgICAgICAgICAgICAnNzUzJzogNzUzCiAgICAgICAgICAgICAgICAnNzU0JzogNzU0CiAgICAgICAgICAgICAgICAnNzU1JzogNzU1CiAgICAgICAgICAgICAgICAnNzU2JzogNzU2CiAgICAgICAgICAgICAgICAnNzU3JzogNzU3CiAgICAgICAgICAgICAgICAnNzU4JzogNzU4CiAgICAgICAgICAgICAgICAnNzU5JzogNzU5CiAgICAgICAgICAgICAgICAnNzYnOiA3NgogICAgICAgICAgICAgICAgJzc2MCc6IDc2MAogICAgICAgICAgICAgICAgJzc2MSc6IDc2MQogICAgICAgICAgICAgICAgJzc2Mic6IDc2MgogICAgICAgICAgICAgICAgJzc2Myc6IDc2MwogICAgICAgICAgICAgICAgJzc2NCc6IDc2NAogICAgICAgICAgICAgICAgJzc2NSc6IDc2NQogICAgICAgICAgICAgICAgJzc2Nic6IDc2NgogICAgICAgICAgICAgICAgJzc2Nyc6IDc2NwogICAgICAgICAgICAgICAgJzc2OCc6IDc2OAogICAgICAgICAgICAgICAgJzc2OSc6IDc2OQogICAgICAgICAgICAgICAgJzc3JzogNzcKICAgICAgICAgICAgICAgICc3NzAnOiA3NzAKICAgICAgICAgICAgICAgICc3NzEnOiA3NzEKICAgICAgICAgICAgICAgICc3NzInOiA3NzIKICAgICAgICAgICAgICAgICc3NzMnOiA3NzMKICAgICAgICAgICAgICAgICc3NzQnOiA3NzQKICAgICAgICAgICAgICAgICc3NzUnOiA3NzUKICAgICAgICAgICAgICAgICc3NzYnOiA3NzYKICAgICAgICAgICAgICAgICc3NzcnOiA3NzcKICAgICAgICAgICAgICAgICc3NzgnOiA3NzgKICAgICAgICAgICAgICAgICc3NzknOiA3NzkKICAgICAgICAgICAgICAgICc3OCc6IDc4CiAgICAgICAgICAgICAgICAnNzgwJzogNzgwCiAgICAgICAgICAgICAgICAnNzgxJzogNzgxCiAgICAgICAgICAgICAgICAnNzgyJzogNzgyCiAgICAgICAgICAgICAgICAnNzgzJzogNzgzCiAgICAgICAgICAgICAgICAnNzg0JzogNzg0CiAgICAgICAgICAgICAgICAnNzg1JzogNzg1CiAgICAgICAgICAgICAgICAnNzg2JzogNzg2CiAgICAgICAgICAgICAgICAnNzg3JzogNzg3CiAgICAgICAgICAgICAgICAnNzg4JzogNzg4CiAgICAgICAgICAgICAgICAnNzg5JzogNzg5CiAgICAgICAgICAgICAgICAnNzknOiA3OQogICAgICAgICAgICAgICAgJzc5MCc6IDc5MAogICAgICAgICAgICAgICAgJzc5MSc6IDc5MQogICAgICAgICAgICAgICAgJzc5Mic6IDc5MgogICAgICAgICAgICAgICAgJzc5Myc6IDc5MwogICAgICAgICAgICAgICAgJzc5NCc6IDc5NAogICAgICAgICAgICAgICAgJzc5NSc6IDc5NQogICAgICAgICAgICAgICAgJzc5Nic6IDc5NgogICAgICAgICAgICAgICAgJzc5Nyc6IDc5NwogICAgICAgICAgICAgICAgJzc5OCc6IDc5OAogICAgICAgICAgICAgICAgJzc5OSc6IDc5OQogICAgICAgICAgICAgICAgJzgnOiA4CiAgICAgICAgICAgICAgICAnODAnOiA4MAogICAgICAgICAgICAgICAgJzgwMCc6IDgwMAogICAgICAgICAgICAgICAgJzgwMSc6IDgwMQogICAgICAgICAgICAgICAgJzgwMic6IDgwMgogICAgICAgICAgICAgICAgJzgwMyc6IDgwMwogICAgICAgICAgICAgICAgJzgwNCc6IDgwNAogICAgICAgICAgICAgICAgJzgwNSc6IDgwNQogICAgICAgICAgICAgICAgJzgwNic6IDgwNgogICAgICAgICAgICAgICAgJzgwNyc6IDgwNwogICAgICAgICAgICAgICAgJzgwOCc6IDgwOAogICAgICAgICAgICAgICAgJzgwOSc6IDgwOQogICAgICAgICAgICAgICAgJzgxJzogODEKICAgICAgICAgICAgICAgICc4MTAnOiA4MTAKICAgICAgICAgICAgICAgICc4MTEnOiA4MTEKICAgICAgICAgICAgICAgICc4MTInOiA4MTIKICAgICAgICAgICAgICAgICc4MTMnOiA4MTMKICAgICAgICAgICAgICAgICc4MTQnOiA4MTQKICAgICAgICAgICAgICAgICc4MTUnOiA4MTUKICAgICAgICAgICAgICAgICc4MTYnOiA4MTYKICAgICAgICAgICAgICAgICc4MTcnOiA4MTcKICAgICAgICAgICAgICAgICc4MTgnOiA4MTgKICAgICAgICAgICAgICAgICc4MTknOiA4MTkKICAgICAgICAgICAgICAgICc4Mic6IDgyCiAgICAgICAgICAgICAgICAnODIwJzogODIwCiAgICAgICAgICAgICAgICAnODIxJzogODIxCiAgICAgICAgICAgICAgICAnODIyJzogODIyCiAgICAgICAgICAgICAgICAnODIzJzogODIzCiAgICAgICAgICAgICAgICAnODI0JzogODI0CiAgICAgICAgICAgICAgICAnODI1JzogODI1CiAgICAgICAgICAgICAgICAnODI2JzogODI2CiAgICAgICAgICAgICAgICAnODI3JzogODI3CiAgICAgICAgICAgICAgICAnODI4JzogODI4CiAgICAgICAgICAgICAgICAnODI5JzogODI5CiAgICAgICAgICAgICAgICAnODMnOiA4MwogICAgICAgICAgICAgICAgJzgzMCc6IDgzMAogICAgICAgICAgICAgICAgJzgzMSc6IDgzMQogICAgICAgICAgICAgICAgJzgzMic6IDgzMgogICAgICAgICAgICAgICAgJzgzMyc6IDgzMwogICAgICAgICAgICAgICAgJzgzNCc6IDgzNAogICAgICAgICAgICAgICAgJzgzNSc6IDgzNQogICAgICAgICAgICAgICAgJzgzNic6IDgzNgogICAgICAgICAgICAgICAgJzgzNyc6IDgzNwogICAgICAgICAgICAgICAgJzgzOCc6IDgzOAogICAgICAgICAgICAgICAgJzgzOSc6IDgzOQogICAgICAgICAgICAgICAgJzg0JzogODQKICAgICAgICAgICAgICAgICc4NDAnOiA4NDAKICAgICAgICAgICAgICAgICc4NDEnOiA4NDEKICAgICAgICAgICAgICAgICc4NDInOiA4NDIKICAgICAgICAgICAgICAgICc4NDMnOiA4NDMKICAgICAgICAgICAgICAgICc4NDQnOiA4NDQKICAgICAgICAgICAgICAgICc4NDUnOiA4NDUKICAgICAgICAgICAgICAgICc4NDYnOiA4NDYKICAgICAgICAgICAgICAgICc4NDcnOiA4NDcKICAgICAgICAgICAgICAgICc4NDgnOiA4NDgKICAgICAgICAgICAgICAgICc4NDknOiA4NDkKICAgICAgICAgICAgICAgICc4NSc6IDg1CiAgICAgICAgICAgICAgICAnODUwJzogODUwCiAgICAgICAgICAgICAgICAnODUxJzogODUxCiAgICAgICAgICAgICAgICAnODUyJzogODUyCiAgICAgICAgICAgICAgICAnODUzJzogODUzCiAgICAgICAgICAgICAgICAnODU0JzogODU0CiAgICAgICAgICAgICAgICAnODU1JzogODU1CiAgICAgICAgICAgICAgICAnODU2JzogODU2CiAgICAgICAgICAgICAgICAnODU3JzogODU3CiAgICAgICAgICAgICAgICAnODU4JzogODU4CiAgICAgICAgICAgICAgICAnODU5JzogODU5CiAgICAgICAgICAgICAgICAnODYnOiA4NgogICAgICAgICAgICAgICAgJzg2MCc6IDg2MAogICAgICAgICAgICAgICAgJzg2MSc6IDg2MQogICAgICAgICAgICAgICAgJzg2Mic6IDg2MgogICAgICAgICAgICAgICAgJzg2Myc6IDg2MwogICAgICAgICAgICAgICAgJzg2NCc6IDg2NAogICAgICAgICAgICAgICAgJzg2NSc6IDg2NQogICAgICAgICAgICAgICAgJzg2Nic6IDg2NgogICAgICAgICAgICAgICAgJzg2Nyc6IDg2NwogICAgICAgICAgICAgICAgJzg2OCc6IDg2OAogICAgICAgICAgICAgICAgJzg2OSc6IDg2OQogICAgICAgICAgICAgICAgJzg3JzogODcKICAgICAgICAgICAgICAgICc4NzAnOiA4NzAKICAgICAgICAgICAgICAgICc4NzEnOiA4NzEKICAgICAgICAgICAgICAgICc4NzInOiA4NzIKICAgICAgICAgICAgICAgICc4NzMnOiA4NzMKICAgICAgICAgICAgICAgICc4NzQnOiA4NzQKICAgICAgICAgICAgICAgICc4NzUnOiA4NzUKICAgICAgICAgICAgICAgICc4NzYnOiA4NzYKICAgICAgICAgICAgICAgICc4NzcnOiA4NzcKICAgICAgICAgICAgICAgICc4NzgnOiA4NzgKICAgICAgICAgICAgICAgICc4NzknOiA4NzkKICAgICAgICAgICAgICAgICc4OCc6IDg4CiAgICAgICAgICAgICAgICAnODgwJzogODgwCiAgICAgICAgICAgICAgICAnODgxJzogODgxCiAgICAgICAgICAgICAgICAnODgyJzogODgyCiAgICAgICAgICAgICAgICAnODgzJzogODgzCiAgICAgICAgICAgICAgICAnODg0JzogODg0CiAgICAgICAgICAgICAgICAnODg1JzogODg1CiAgICAgICAgICAgICAgICAnODg2JzogODg2CiAgICAgICAgICAgICAgICAnODg3JzogODg3CiAgICAgICAgICAgICAgICAnODg4JzogODg4CiAgICAgICAgICAgICAgICAnODg5JzogODg5CiAgICAgICAgICAgICAgICAnODknOiA4OQogICAgICAgICAgICAgICAgJzg5MCc6IDg5MAogICAgICAgICAgICAgICAgJzg5MSc6IDg5MQogICAgICAgICAgICAgICAgJzg5Mic6IDg5MgogICAgICAgICAgICAgICAgJzg5Myc6IDg5MwogICAgICAgICAgICAgICAgJzg5NCc6IDg5NAogICAgICAgICAgICAgICAgJzg5NSc6IDg5NQogICAgICAgICAgICAgICAgJzg5Nic6IDg5NgogICAgICAgICAgICAgICAgJzg5Nyc6IDg5NwogICAgICAgICAgICAgICAgJzg5OCc6IDg5OAogICAgICAgICAgICAgICAgJzg5OSc6IDg5OQogICAgICAgICAgICAgICAgJzknOiA5CiAgICAgICAgICAgICAgICAnOTAnOiA5MAogICAgICAgICAgICAgICAgJzkwMCc6IDkwMAogICAgICAgICAgICAgICAgJzkwMSc6IDkwMQogICAgICAgICAgICAgICAgJzkwMic6IDkwMgogICAgICAgICAgICAgICAgJzkwMyc6IDkwMwogICAgICAgICAgICAgICAgJzkwNCc6IDkwNAogICAgICAgICAgICAgICAgJzkwNSc6IDkwNQogICAgICAgICAgICAgICAgJzkwNic6IDkwNgogICAgICAgICAgICAgICAgJzkwNyc6IDkwNwogICAgICAgICAgICAgICAgJzkwOCc6IDkwOAogICAgICAgICAgICAgICAgJzkwOSc6IDkwOQogICAgICAgICAgICAgICAgJzkxJzogOTEKICAgICAgICAgICAgICAgICc5MTAnOiA5MTAKICAgICAgICAgICAgICAgICc5MTEnOiA5MTEKICAgICAgICAgICAgICAgICc5MTInOiA5MTIKICAgICAgICAgICAgICAgICc5MTMnOiA5MTMKICAgICAgICAgICAgICAgICc5MTQnOiA5MTQKICAgICAgICAgICAgICAgICc5MTUnOiA5MTUKICAgICAgICAgICAgICAgICc5MTYnOiA5MTYKICAgICAgICAgICAgICAgICc5MTcnOiA5MTcKICAgICAgICAgICAgICAgICc5MTgnOiA5MTgKICAgICAgICAgICAgICAgICc5MTknOiA5MTkKICAgICAgICAgICAgICAgICc5Mic6IDkyCiAgICAgICAgICAgICAgICAnOTIwJzogOTIwCiAgICAgICAgICAgICAgICAnOTIxJzogOTIxCiAgICAgICAgICAgICAgICAnOTIyJzogOTIyCiAgICAgICAgICAgICAgICAnOTIzJzogOTIzCiAgICAgICAgICAgICAgICAnOTI0JzogOTI0CiAgICAgICAgICAgICAgICAnOTI1JzogOTI1CiAgICAgICAgICAgICAgICAnOTI2JzogOTI2CiAgICAgICAgICAgICAgICAnOTI3JzogOTI3CiAgICAgICAgICAgICAgICAnOTI4JzogOTI4CiAgICAgICAgICAgICAgICAnOTI5JzogOTI5CiAgICAgICAgICAgICAgICAnOTMnOiA5MwogICAgICAgICAgICAgICAgJzkzMCc6IDkzMAogICAgICAgICAgICAgICAgJzkzMSc6IDkzMQogICAgICAgICAgICAgICAgJzkzMic6IDkzMgogICAgICAgICAgICAgICAgJzkzMyc6IDkzMwogICAgICAgICAgICAgICAgJzkzNCc6IDkzNAogICAgICAgICAgICAgICAgJzkzNSc6IDkzNQogICAgICAgICAgICAgICAgJzkzNic6IDkzNgogICAgICAgICAgICAgICAgJzkzNyc6IDkzNwogICAgICAgICAgICAgICAgJzkzOCc6IDkzOAogICAgICAgICAgICAgICAgJzkzOSc6IDkzOQogICAgICAgICAgICAgICAgJzk0JzogOTQKICAgICAgICAgICAgICAgICc5NDAnOiA5NDAKICAgICAgICAgICAgICAgICc5NDEnOiA5NDEKICAgICAgICAgICAgICAgICc5NDInOiA5NDIKICAgICAgICAgICAgICAgICc5NDMnOiA5NDMKICAgICAgICAgICAgICAgICc5NDQnOiA5NDQKICAgICAgICAgICAgICAgICc5NDUnOiA5NDUKICAgICAgICAgICAgICAgICc5NDYnOiA5NDYKICAgICAgICAgICAgICAgICc5NDcnOiA5NDcKICAgICAgICAgICAgICAgICc5NDgnOiA5NDgKICAgICAgICAgICAgICAgICc5NDknOiA5NDkKICAgICAgICAgICAgICAgICc5NSc6IDk1CiAgICAgICAgICAgICAgICAnOTUwJzogOTUwCiAgICAgICAgICAgICAgICAnOTUxJzogOTUxCiAgICAgICAgICAgICAgICAnOTUyJzogOTUyCiAgICAgICAgICAgICAgICAnOTUzJzogOTUzCiAgICAgICAgICAgICAgICAnOTU0JzogOTU0CiAgICAgICAgICAgICAgICAnOTU1JzogOTU1CiAgICAgICAgICAgICAgICAnOTU2JzogOTU2CiAgICAgICAgICAgICAgICAnOTU3JzogOTU3CiAgICAgICAgICAgICAgICAnOTU4JzogOTU4CiAgICAgICAgICAgICAgICAnOTU5JzogOTU5CiAgICAgICAgICAgICAgICAnOTYnOiA5NgogICAgICAgICAgICAgICAgJzk2MCc6IDk2MAogICAgICAgICAgICAgICAgJzk2MSc6IDk2MQogICAgICAgICAgICAgICAgJzk2Mic6IDk2MgogICAgICAgICAgICAgICAgJzk2Myc6IDk2MwogICAgICAgICAgICAgICAgJzk2NCc6IDk2NAogICAgICAgICAgICAgICAgJzk2NSc6IDk2NQogICAgICAgICAgICAgICAgJzk2Nic6IDk2NgogICAgICAgICAgICAgICAgJzk2Nyc6IDk2NwogICAgICAgICAgICAgICAgJzk2OCc6IDk2OAogICAgICAgICAgICAgICAgJzk2OSc6IDk2OQogICAgICAgICAgICAgICAgJzk3JzogOTcKICAgICAgICAgICAgICAgICc5NzAnOiA5NzAKICAgICAgICAgICAgICAgICc5NzEnOiA5NzEKICAgICAgICAgICAgICAgICc5NzInOiA5NzIKICAgICAgICAgICAgICAgICc5NzMnOiA5NzMKICAgICAgICAgICAgICAgICc5NzQnOiA5NzQKICAgICAgICAgICAgICAgICc5NzUnOiA5NzUKICAgICAgICAgICAgICAgICc5NzYnOiA5NzYKICAgICAgICAgICAgICAgICc5NzcnOiA5NzcKICAgICAgICAgICAgICAgICc5NzgnOiA5NzgKICAgICAgICAgICAgICAgICc5NzknOiA5NzkKICAgICAgICAgICAgICAgICc5OCc6IDk4CiAgICAgICAgICAgICAgICAnOTgwJzogOTgwCiAgICAgICAgICAgICAgICAnOTgxJzogOTgxCiAgICAgICAgICAgICAgICAnOTgyJzogOTgyCiAgICAgICAgICAgICAgICAnOTgzJzogOTgzCiAgICAgICAgICAgICAgICAnOTg0JzogOTg0CiAgICAgICAgICAgICAgICAnOTg1JzogOTg1CiAgICAgICAgICAgICAgICAnOTg2JzogOTg2CiAgICAgICAgICAgICAgICAnOTg3JzogOTg3CiAgICAgICAgICAgICAgICAnOTg4JzogOTg4CiAgICAgICAgICAgICAgICAnOTg5JzogOTg5CiAgICAgICAgICAgICAgICAnOTknOiA5OQogICAgICAgICAgICAgICAgJzk5MCc6IDk5MAogICAgICAgICAgICAgICAgJzk5MSc6IDk5MQogICAgICAgICAgICAgICAgJzk5Mic6IDk5MgogICAgICAgICAgICAgICAgJzk5Myc6IDk5MwogICAgICAgICAgICAgICAgJzk5NCc6IDk5NAogICAgICAgICAgICAgICAgJzk5NSc6IDk5NQogICAgICAgICAgICAgICAgJzk5Nic6IDk5NgogICAgICAgICAgICAgICAgJzk5Nyc6IDk5NwogICAgICAgICAgICAgICAgJzk5OCc6IDk5OAogICAgICAgICAgICAgICAgJzk5OSc6IDk5OQogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBRdWFudGl0eQogICAgICAgICAgICBOYW1lOiBTb2Z0d2FyZS1MaWNlbmNlS2V5UXVhbnRpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5RXhwaXJhdGlvbkRhdGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgICAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICAgICAgICBMYWJlbDogRXhwaXJhdGlvbiBEYXRlCiAgICAgICAgICAgIE5hbWU6IFNvZnR3YXJlLUxpY2VuY2VLZXlFeHBpcmF0aW9uRGF0ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IExpY2VuY2UgS2V5CiAgICAgIE5hbWU6IFNvZnR3YXJlLUxpY2VuY2VLZXkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLUxpY2VuY2VUeXBlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpMaWNlbmNlVHlwZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogMQogICAgICBGaWVsZFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICAgIExhYmVsOiBMaWNlbmNlIFR5cGUKICAgICAgTmFtZTogU29mdHdhcmUtTGljZW5jZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLU1lZGlhOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1lZGlhCiAgICAgIE5hbWU6IFNvZnR3YXJlLU1lZGlhCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1Ob3RlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBOb3RlCiAgICAgIE5hbWU6IFNvZnR3YXJlLU5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLU93bmVyOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBPd25lcgogICAgICBOYW1lOiBTb2Z0d2FyZS1Pd25lcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgU29mdHdhcmUtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbCBOdW1iZXIKICAgICAgTmFtZTogU29mdHdhcmUtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1UeXBlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogU29mdHdhcmUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgU29mdHdhcmUtVmVuZG9yOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFZlbmRvcgogICAgICBOYW1lOiBTb2Z0d2FyZS1WZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLVZlcnNpb246CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogVmVyc2lvbgogICAgICBOYW1lOiBTb2Z0d2FyZS1WZXJzaW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCg==</File>
        <File Location="scripts/test/sample/ITSMConfigurationManagement/Links/unittest.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQ291bnRyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IFN1YnNpZGlhcnkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBBZGRyZXNzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvblxyXG5cclxuU2VjdGlvbnM6XHJcbiAgQWRkcmVzczpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOgogICAgQWRkcmVzc1xyXG4gICAgICAtIERGOiBMb2NhdGlvbi1TdHJlZXRcclxuICAgICAgLSBERjogTG9jYXRpb24tQ2l0eVxyXG4gICAgICAtCiAgICBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLUxhdGl0dWRlXHJcbiAgICAgIC0gREY6CiAgICBMb2NhdGlvbi1Mb25naXR1ZGUiCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLUNpdHk6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENpdHkKICAgICAgTmFtZTogTG9jYXRpb24tQ2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tTGF0aXR1ZGU6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IExhdGl0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxhdGl0dWRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1Mb25naXR1ZGU6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IExvbmdpdHVkZQogICAgICBOYW1lOiBMb2NhdGlvbi1Mb25naXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAwCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogQ291bnRyeQogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVN0cmVldDoKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RyZWV0CiAgICAgIE5hbWU6IExvY2F0aW9uLVN0cmVldAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBUeXBlOiBEZXNjcmlwdGlvblxyXG4gICAgSGVhZGVyOgogICAgRGVzY3JpcHRpb24iCiAgUm9sZU5hbWU6IENNREIgRGVzY3JpcHRpb24KLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEJhY2tsaW5rczpcclxuICAgIFR5cGU6IENvbmZpZ0l0ZW1MaW5rc1xyXG4gICAgSGVhZGVyOgogICAgQmFja2xpbmtzXHJcbiAgICBMaW5rZWRBczogU291cmNlIgogIFJvbGVOYW1lOiBDTURCIEJhY2tsaW5rcwo=</File>
        <File Location="scripts/webservices/GenericConfigItemConnectorSOAP.yml" Permission="660" Encode="Base64">LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAwCkRlc2NyaXB0aW9uOiBJVFNNIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBDb25uZWN0b3IgU2FtcGxlCkZyYW1ld29ya1ZlcnNpb246IDUuMC54IGdpdApQcm92aWRlcjoKICBPcGVyYXRpb246CiAgICBDb25maWdJdGVtQ3JlYXRlOgogICAgICBEZXNjcmlwdGlvbjogQ3JlYXRlcyBuZXcgQ29uZmlndXJhdGlvbiBJdGVtcyBmcm9tIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICBNYXBwaW5nSW5ib3VuZDoge30KICAgICAgTWFwcGluZ091dGJvdW5kOiB7fQogICAgICBUeXBlOiBDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlCiAgICBDb25maWdJdGVtRGVsZXRlOgogICAgICBEZXNjcmlwdGlvbjogRGVsZXRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGUKICAgIENvbmZpZ0l0ZW1HZXQ6CiAgICAgIERlc2NyaXB0aW9uOiBHZXQgdGhlIGRldGFpbHMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldAogICAgQ29uZmlnSXRlbVNlYXJjaDoKICAgICAgRGVzY3JpcHRpb246IFNlYXJjaCBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2gKICAgIENvbmZpZ0l0ZW1VcGRhdGU6CiAgICAgIERlc2NyaXB0aW9uOiBVcGRhdGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZQogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgTWF4TGVuZ3RoOiAxMDAwMDAwMDAKICAgICAgTmFtZVNwYWNlOiBodHRwOi8vd3d3Lm90b2JvLm9yZy9Db25maWdJdGVtQ29ubmVjdG9yCiAgICAgIFJlcXVlc3ROYW1lRnJlZVRleHQ6ICcnCiAgICAgIFJlcXVlc3ROYW1lU2NoZW1lOiBQbGFpbgogICAgICBSZXNwb25zZU5hbWVGcmVlVGV4dDogJycKICAgICAgUmVzcG9uc2VOYW1lU2NoZW1lOiBSZXNwb25zZQogICAgVHlwZTogSFRUUDo6U09BUApSZW1vdGVTeXN0ZW06ICcnClJlcXVlc3RlcjoKICBUcmFuc3BvcnQ6CiAgICBUeXBlOiAnJwo=</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.TreeView.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5UcmVlVmlldwogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gVHJlZVZpZXcuCiAqLwpDb3JlLkFnZW50LlRyZWVWaWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIEluc3RhbmNlCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5Qcm9jZXNzTWFuYWdlbWVudC5DYW52YXMKICAgICAqIEBtZW1iZXIge0FycmF5fQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIGxvY2FsIHZhcmlhYmxlIGZvciBKU1BsdW1iCiAgICAgKi8KCiAgICB2YXIgSW5zdGFuY2U7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UcmVlVmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgVHJlZVZpZXcuCiAgICAqLwoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICQoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFVwZGF0ZVRyZWUoKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgiI0RlcHRoIikuYmluZCgna2V5dXAgbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgVXBkYXRlVHJlZSgpOwogICAgICAgIH0pOwoKICAgICAgICAkKCIjWm9vbSIpLmJpbmQoJ2tleWRvd24gbW91c2Vkb3duJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKCIjTGFzdFpvb20iKS52YWwoJCgiI1pvb20iKS52YWwoKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoIiNab29tIikuYmluZCgna2V5dXAgbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgWm9vbUluT3V0KCk7CiAgICAgICAgfSk7CgogICAgICAgICQoIiNUcmVlVmlld0Nsb3NlTGluayIpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTsKICAgICAgICB9KTsKCiAgICAgICAgd2luZG93LnNldFpvb20gPSBmdW5jdGlvbih6b29tLCBpbnN0YW5jZSwgdHJhbnNmb3JtT3JpZ2luKSB7CgogICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSB0cmFuc2Zvcm1PcmlnaW4gfHwgWzAuNSwgMC41XTsKICAgICAgICAgICAgdmFyIGVsID0gaW5zdGFuY2UuZ2V0Q29udGFpbmVyKCk7CgogICAgICAgICAgICB2YXIgcCA9IFsid2Via2l0IiwgIm1veiIsICJtcyIsICJvIl0sCiAgICAgICAgICAgICAgcyA9ICJzY2FsZSgiICsgem9vbSArICIpIiwKICAgICAgICAgICAgICBvU3RyaW5nID0gKHRyYW5zZm9ybU9yaWdpblswXSAqIDEwMCkgKyAiJSAiICsgKHRyYW5zZm9ybU9yaWdpblsxXSAqIDEwMCkgKyAiJSI7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBlbC5zdHlsZVtwW2ldICsgIlRyYW5zZm9ybSJdID0gczsKICAgICAgICAgICAgICBlbC5zdHlsZVtwW2ldICsgIlRyYW5zZm9ybU9yaWdpbiJdID0gb1N0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWwuc3R5bGVbInRyYW5zZm9ybSJdID0gczsKICAgICAgICAgICAgZWwuc3R5bGVbInRyYW5zZm9ybU9yaWdpbiJdID0gb1N0cmluZzsKCiAgICAgICAgICAgIGluc3RhbmNlLnNldFpvb20oem9vbSk7CiAgICAgICAgICAgIGluc3RhbmNlLnJlcGFpbnRFdmVyeXRoaW5nKCk7CiAgICAgICAgfTsKCiAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpewogICAgICAgICAgICBJbnN0YW5jZS5yZXBhaW50RXZlcnl0aGluZygpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICogQHByaXZhdGUKICAgICogQG5hbWUgWm9vbUluT3V0CiAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LlRyZWVWaWV3CiAgICAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBBcHBseSBab29tIGluIG9yIE91dCBvZiB0aGUgVHJlZVZpZXcgR3JhcGhpYy4KICAgICovCgogICAgZnVuY3Rpb24gWm9vbUluT3V0KCkgewogICAgICAgIHdpbmRvdy5zZXRab29tKHBhcnNlSW50KCQoIiNab29tIikudmFsKCkpLzEwMCwgSW5zdGFuY2UsIG51bGwpOwogICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvKioKICAgICogQHByaXZhdGUKICAgICogQG5hbWUgVXBkYXRlVHJlZQogICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UcmVlVmlldwogICAgKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVXBkYXRlIFRyZWVWaWV3IHdpdGggZGVzaXJlZCBkZXB0aCBsZXZlbCBmb3IgdGhlIHNlbGVjdGVkIENvbmZpZ0l0ZW0uCiAgICAqICAgICAgVGhlIHRyZWUgbm9kZXMgYXJlIHB1dCBpbnRvIHRoZSBIVE1MIGVsZW1lbnQgJ0NhbnZhcycuCiAgICAqICAgICAgQWxzbyBpbmNsdWRlZCBpbiB0aGUgQ2FudmFzIGFyZSB0aGUgaGlkZGVuIGlucHV0IGZpZWxkcyBMaW5rRGF0YVNvdXJjZSBhbmQgTGlua0RhdGFUYXJnZXQKICAgICogICAgICB3aGljaCBsaXN0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbm9kZXMuCiAgICAqLwoKICAgIGZ1bmN0aW9uIFVwZGF0ZVRyZWUoKSB7CiAgICAgICAganNQbHVtYi5yZXNldCgpOwogICAgICAgICQoJyNDYW52YXMnKS5lbXB0eSgpOwoKICAgICAgICBsZXQgUmVxdWVzdFBhcmFtcyA9IHsKICAgICAgICAgICAgQWN0aW9uOiAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3JywKICAgICAgICAgICAgU3ViYWN0aW9uOiAgICAnTG9hZFRyZWVWaWV3JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEOiBlbmNvZGVVUklDb21wb25lbnQoJCgiI0NvbmZpZ0l0ZW1JRCIpLnZhbCgpKSwKICAgICAgICAgICAgVmVyc2lvbklEOiAgICBlbmNvZGVVUklDb21wb25lbnQoJCgiI1ZlcnNpb25JRCIpLnZhbCgpKSwKICAgICAgICAgICAgRGVwdGg6ICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoJCgiI0RlcHRoIikudmFsKCkpCiAgICAgICAgfTsKCiAgICAgICAgJCgiI0RlcHRoIikucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAkKCIjQUpBWExvYWRlckRlcHRoIikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CgogICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxlJyksCiAgICAgICAgICAgIFJlcXVlc3RQYXJhbXMsCiAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgJCgiI0NhbnZhcyIpLmh0bWwoUmVzcG9uc2UpOwoKICAgICAgICAgICAgICAgIEluc3RhbmNlID0ganNQbHVtYi5nZXRJbnN0YW5jZSh7CiAgICAgICAgICAgICAgICAgICAgUGFpbnRTdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDAuMSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGU6ICIjMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiAiIzAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVXaWR0aDogMC4xCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBDb25uZWN0b3I6IFsiU3RyYWlnaHQiXSwKICAgICAgICAgICAgICAgICAgICBhbmNob3I6IFsnUGVyaW1ldGVyJywge3NoYXBlOiAnQ2lyY2xlJ31dLAogICAgICAgICAgICAgICAgICAgIEVuZHBvaW50OiBbJ0RvdCcsIHtyYWRpdXM6IDN9XSwKICAgICAgICAgICAgICAgICAgICBlbmRwb2ludFN0eWxlOiB7ZmlsbDogJ3JnYig4MCwgODEsIDgxKSd9LAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogJ0NhbnZhcycKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGRyYXdDb25uZWN0aW9ucyggSW5zdGFuY2UsICQoIiNMaW5rRGF0YVNvdXJjZSIpLnZhbCgpLCAnU291cmNlJyApOwogICAgICAgICAgICAgICAgZHJhd0Nvbm5lY3Rpb25zKCBJbnN0YW5jZSwgJCgiI0xpbmtEYXRhVGFyZ2V0IikudmFsKCksICdUYXJnZXQnICk7CgogICAgICAgICAgICAgICAgJCgiI0FKQVhMb2FkZXJEZXB0aCIpLmNzcygiZGlzcGxheSIsICJub25lIik7CiAgICAgICAgICAgICAgICAkKCIjRGVwdGgiKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKCiAgICAgICAgICAgICAgICBpZiAoIHBhcnNlSW50KCQoIiNEZXB0aCIpLnZhbCgpKSA+IHBhcnNlSW50KCQoIiNNYXhEZXB0aCIpLnZhbCgpKSApIHsKICAgICAgICAgICAgICAgICAgICAkKCIjRGVwdGgiKS52YWwoJCgiI01heERlcHRoIikudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICQoIiNUcmVlVmlld01lc3NhZ2VzIikucmVtb3ZlQ2xhc3MoIkhpZGRlbiIpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkKCIjVHJlZVZpZXdNZXNzYWdlcyIpLmFkZENsYXNzKCJIaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTsKICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoIiNUcmVlVmlld01lc3NhZ2VzIikuYWRkQ2xhc3MoIkhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgSW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2h0bWwnCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIGRyYXdDb25uZWN0aW9ucwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuVHJlZWVWaWV3CiAgICAgKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2luc3RhbmNlfSAgSnNQbHVtYiBJbnN0YW5jZQogICAgICogQHBhcmFtIHtsaW5rX2RhdGF9IGxpbmsgbGlzdCwgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbgogICAgICogQHBhcmFtIHtvcHRpb259IFNwZWNpZnkgVGFyZ2V0L1NvdXJjZQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFdyaXRlIGFyY3MgKGFycm93cykgYmV0d2VlbiBlbGVtZW50cyBpbiB0aGUgZ3JhcGhpYy4KICAgICAqLwoKICAgIGZ1bmN0aW9uIGRyYXdDb25uZWN0aW9ucyhpbnN0YW5jZSwgbGlua19kYXRhLCBvcHRpb24pIHsKCiAgICAgICAgLy8gbm90aGluZyB0byBkbyB3aGVuIHRoZSBpbnB1dCBpcyBlbXB0ZQogICAgICAgIGlmIChsaW5rX2RhdGEgPT09ICIiKSByZXR1cm47CgogICAgICAgIHZhciBDb25uZWN0aW9ucyAgICA9IGxpbmtfZGF0YS5zcGxpdCgiOyIpOwogICAgICAgIHZhciBEaXJlY3Rpb24gICAgICA9IG9wdGlvbjsKICAgICAgICB2YXIgU2hvd0xpbmtMYWJlbHMgPSAkKCIjU2hvd0xpbmtMYWJlbHMiKS52YWwoKTsKCiAgICAgICAgQ29ubmVjdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHsKICAgICAgICAgICAgdmFyIExpbmsgPSBlbGVtZW50LnNwbGl0KCIsIik7CgogICAgICAgICAgICBsZXQgUGFyYW1zID0gewogICAgICAgICAgICAgICAgc291cmNlOiBMaW5rWzFdLAogICAgICAgICAgICAgICAgdGFyZ2V0OiBMaW5rWzBdLAogICAgICAgICAgICAgICAgc2NvcGU6ICJUcmVlVmlldyIsCiAgICAgICAgICAgICAgICBhbmNob3I6IFsiQm90dG9tIiwgIlRvcCJdLAogICAgICAgICAgICAgICAgcGFyYW1ldGVyczogewogICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpb25JRDogRGlyZWN0aW9uICsgTGlua1sxXSArICItIiArIExpbmtbMF0gKyAiLSIgKyBMaW5rWzJdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBpZiAoIFNob3dMaW5rTGFiZWxzID09PSAiWWVzIiApIHsKICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oUGFyYW1zLCB7CiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheXM6WwogICAgICAgICAgICAgICAgICAgICAgICBbICJBcnJvdyIsIHsgd2lkdGg6OSwgbGVuZ3RoOjEwLCBsb2NhdGlvbjogMC45NiwgaWQ6ImFycm93IiB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIkxhYmVsIiwgeyBsYWJlbDogTGlua1syXSwgbG9jYXRpb246MC41LCBpZDoiTGFiZWwiLCBzdHlsZTogImJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYiIH0gXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihQYXJhbXMsIHsKICAgICAgICAgICAgICAgICAgICBvdmVybGF5czpbCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIkFycm93IiwgeyB3aWR0aDo5LCBsZW5ndGg6MTAsIGxvY2F0aW9uOiAwLjk2LCBpZDoiYXJyb3ciIH0gXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhc3N1bWluZyB2YWxpZCBpbnB1dAogICAgICAgICAgICBpbnN0YW5jZS5jb25uZWN0KFBhcmFtcyk7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuQWdlbnQuVHJlZVZpZXcgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Admin.ITSMConfigItem.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWRtaW4gPSBJVFNNLkFkbWluIHx8IHt9OwoKLyoqCiogQG5hbWVzcGFjZSBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiogQG1lbWJlcm9mIElUU00uQWRtaW4KKiBAYXV0aG9yCiogQGRlc2NyaXB0aW9uCiogICAgICBbZGVzY3JpcHRpb25fcGxhY2Vob2xkZXJdCiovCklUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgJCgnI0ltcG9ydCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewoKICAgICAgICAvLyB2YWxpZGF0ZSBkcm9wZG93bgogICAgICAgIHZhciBDbGFzc1ZhbGlkYXRpb24gPSBDb3JlLkZvcm0uVmFsaWRhdGUuVmFsaWRhdGVFbGVtZW50KCQoJyNFeGFtcGxlQ2xhc3MnKSk7CiAgICAgICAgaWYgKCBDbGFzc1ZhbGlkYXRpb24gPT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHZhciBJbXBvcnRJdGVtID0gJCgnI0V4YW1wbGVDbGFzcycpLnZhbCgpOwoKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1GaWxlQ2xhc3NMaXN0O0V4YW1wbGVGaWxlPScgKyBJbXBvcnRJdGVtLAogICAgICAgICAgICBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICBpZiAoIVJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgYWxlcnQoQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIkFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLiIpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgSXRlbUxpc3QgPSBSZXNwb25zZTsKCiAgICAgICAgICAgICAgICB2YXIgSFRNTFN0cmluZyA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKCdBZ2VudC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvQ2xhc3NJbXBvcnRDb25maXJtJywgewogICAgICAgICAgICAgICAgICAgICdDbGFzc2VzJzogSXRlbUxpc3QuQ2xhc3NlcywKICAgICAgICAgICAgICAgICAgICAnUm9sZXMnOiBJdGVtTGlzdC5Sb2xlcywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmFyIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMgPSAkKCcjVXBkYXRlRXhpc3RpbmdFbnRpdGllcycpLnByb3AoJ2NoZWNrZWQnKSA/ICcxJyA6ICcwJzsKCiAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICBUaXRsZTogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIk92ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICBIVE1MOiBIVE1MU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25DbGlja091dHNpZGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25Fc2NhcGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbkxlZnQ6ICdDZW50ZXInLAogICAgICAgICAgICAgICAgICAgIEFsbG93QXV0b0dyb3c6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgQnV0dG9uczogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0NvbmZpcm0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnQ29uZmlybSBDYWxsRm9yQWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIERpYWxvZ1RlbXBsYXRlID0gQ29yZS5UZW1wbGF0ZS5SZW5kZXIoJ0RpYWxvZy9XYWl0aW5nJywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTDogRGlhbG9nVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlOiAiIiwgICAvLyBOb3QgYXBwbGljYWJsZSBpZiBoZWFkZXIgaXMgaGlkZGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2VPbkVzY2FwZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb25MZWZ0OiAnQ2VudGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dBdXRvR3JvdzogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVIZWFkZXI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVGb290ZXI6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1DbGFzc0ltcG9ydDtFeGFtcGxlQ2xhc3M9JyArIEltcG9ydEl0ZW0gKyAnO1VwZGF0ZUV4aXN0aW5nRW50aXRpZXM9JyArIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFSZXNwb25zZSB8fCAhUmVzcG9uc2UuU3VjY2VzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dBbGVydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlLkVycm9yTWVzc2FnZSB8fCBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQ2xhc3MgaW1wb3J0IGZhaWxlZC4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2c6dmlzaWJsZScpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0Rpc21pc3MnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6ICdDbG9zZScsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfSk7CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFkbWluLklUU01Db25maWdJdGVtIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Add.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBSb3RoZXIgT1NTIEdtYkgKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIGFkZC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5BZGQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkFkZAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0YWJsZSBmaWx0ZXIuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBDb3JlLlVJLlRhYmxlLkluaXRUYWJsZUZpbHRlcigkKCcjRmlsdGVyQ2xhc3NlcycpLCAkKCcjQ2xhc3NlcycpKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.CustomerSearch.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlYXJjaC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5DdXN0b21lclNlYXJjaCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCAtIFRoZSBqUXVlcnkgb2JqZWN0IG9mIHRoZSBpbnB1dCBmaWVsZCB3aXRoIGF1dG9jb21wbGV0ZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgQ3VzdG9tZXJTZWFyY2hJdGVtSURzID0gQ29yZS5Db25maWcuR2V0KCdDdXN0b21lclNlYXJjaEl0ZW1JRHMnKTsKCiAgICAgICAgaWYgKHR5cGVvZiBDdXN0b21lclNlYXJjaEl0ZW1JRHMgIT09ICd1bmRlZmluZWQnICYmIEFycmF5LmlzQXJyYXkoQ3VzdG9tZXJTZWFyY2hJdGVtSURzKSAmJiBDdXN0b21lclNlYXJjaEl0ZW1JRHMubGVuZ3RoKSB7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEN1c3RvbWVyU2VhcmNoSXRlbUlEcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgLy8gZXNjYXBlIHBvc3NpYmxlIGNvbG9ucyAoOikgaW4gZWxlbWVudCBpZCBiZWNhdXNlIGpRdWVyeSBjYW4gbm90IGhhbmRsZSBpdCBpbiBpZCBhdHRyaWJ1dGUgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoIiMiICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoQ3VzdG9tZXJTZWFyY2hJdGVtSURzW2ldKSApICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Dashboard.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBSb3RoZXIgT1NTIEdtYkgKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG5hdmJhci4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkRhc2hib2FyZAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgRGFzaGxldERhdGEgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtR2VuZXJpYycpOwoKICAgICAgICBpZiAodHlwZW9mIERhc2hsZXREYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUdlbmVyaWMoRGFzaGxldERhdGEpOwoKICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIENvbnRlbnRVcGRhdGUgZXZlbnQgdG8gaW5pdGlhdGUgdGlja2V0IGdlbmVyaWMgZXZlbnRzIG9uIHdpZGdldCB1cGRhdGUKICAgICAgICAgICAgQ29yZS5BcHAuU3Vic2NyaWJlKCdFdmVudC5BSkFYLkNvbnRlbnRVcGRhdGUuQ2FsbGJhY2snLCBmdW5jdGlvbigkV2lkZ2V0RWxlbWVudCkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkV2lkZ2V0RWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgJFdpZGdldEVsZW1lbnQuc2VhcmNoKERhc2hsZXREYXRhLk5hbWUpICE9PSBwYXJzZUludCgnLTEnLCAxMCkpIHsKICAgICAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUdlbmVyaWMoRGFzaGxldERhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IERhc2hsZXREYXRhIC0gSGFzaCB3aXRoIGNvbnRhaW5lciBuYW1lIGFuZCBIVE1MIG5hbWUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyBkYXNoYm9hcmQgd2lkZ2V0IElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICovCiAgICBmdW5jdGlvbiBJVFNNQ29uZmlnSXRlbUdlbmVyaWMgKERhc2hsZXREYXRhKSB7CgogICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5maW5kKCcuVGFiLkFjdGlvbnMgbGkgYScpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBDdXN0b21lcklELAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklELAogICAgICAgICAgICAgICAgICAgIEZpbHRlcjsKCiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgICAgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVySURdJykudmFsKCkgfHwgJyc7CiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVyVXNlcklEXScpLnZhbCgpIHx8ICcnOwogICAgICAgICAgICAgICAgRmlsdGVyICAgICAgICAgID0gJCh0aGlzKS5hdHRyKCdkYXRhLWZpbHRlcicpOwoKICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICBDb3JlLkFKQVguQ29udGVudFVwZGF0ZSgkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpKSwgQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCdBY3Rpb24nKSArICc7U3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT0nICsgRGFzaGxldERhdGEuTmFtZSArICc7Q3VzdG9tZXJJRD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEN1c3RvbWVySUQpICsgJztDdXN0b21lclVzZXJJRD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEN1c3RvbWVyVXNlcklEKSArICc7RmlsdGVyPScgKyBGaWx0ZXIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5yZW1vdmVDbGFzcygnTG9hZGluZycpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuZmluZCgnLkRhdGFUYWJsZSB0aCBhJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIEN1c3RvbWVySUQsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNvbHVtbicpLAogICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICA9ICcnLAogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5T2JqICAgICA9ICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmZpbmQoJ3RoLlNvcnREZXNjZW5kaW5nTGFyZ2UsIHRoLlNvcnRBc2NlbmRpbmdMYXJnZScpOwoKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJJRF0nKS52YWwoKSB8fCAnJzsKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJVc2VySURdJykudmFsKCkgfHwgJyc7CgogICAgICAgICAgICAgICAgaWYgKCRPcmRlckJ5T2JqICYmICRPcmRlckJ5T2JqLmhhc0NsYXNzKCdTb3J0RGVzY2VuZGluZ0xhcmdlJykpIHsKICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoJE9yZGVyQnlPYmogJiYgJE9yZGVyQnlPYmouaGFzQ2xhc3MoJ1NvcnRBc2NlbmRpbmdMYXJnZScpKSB7CiAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuYWRkQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkpLCBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpICsgJztTdWJhY3Rpb249RWxlbWVudDtOYW1lPScgKyBEYXNobGV0RGF0YS5OYW1lICsgJztDdXN0b21lcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJJRCkgKyAnO0N1c3RvbWVyVXNlcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJVc2VySUQpICsgJztTb3J0Qnk9JyArIFNvcnRCeSArICc7T3JkZXJCeT0nICsgT3JkZXJCeSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICB9CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Edit.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdAogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gZWRpdC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0CiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBmb3JtIHN1Ym1pdCBidXR0b24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjQ2FuY2VsQnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAoQ29yZS5VSS5Qb3B1cC5DdXJyZW50SXNQb3B1cFdpbmRvdygpKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYKICAgICAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuQ2xvc2VQb3B1cCgpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgSGlkZVNob3dDb21wbGV0ZVBhZ2VTZWN0aW9uKCAkKCcjQ2xhc3NJdGVtIC5Db250ZW50ID4gZmllbGRzZXQnKSApOwogICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnRXZlbnQuQUpBWC5Gb3JtVXBkYXRlLkNhbGxiYWNrJywgZnVuY3Rpb24oKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYKICAgICAgICAgICAgSGlkZVNob3dDb21wbGV0ZVBhZ2VTZWN0aW9uKCAkKCcjQ2xhc3NJdGVtIC5Db250ZW50ID4gZmllbGRzZXQnKSApCiAgICAgICAgfSk7CgogICAgICAgIE9wZW5SZWxldmFudFBhZ2VzKCk7CiAgICAgICAgJCgnZm9ybScpLm9uKCdzdWJtaXQnLCBPcGVuUmVsZXZhbnRQYWdlcyk7CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgT3BlbnMgdGhlIGRldGFpbHMgb2YgYWxsIHBhZ2VzIHRoYXQgY29udGFpbiBpbnZhbGlkIGZvcm0gaW5wdXQgZmllbGRzIG9yIGNvbnRhaW4gYSBjdXJyZW50bHkgZm9jdXNlZCBlbGVtZW50LgogICAgICovCiAgICBmdW5jdGlvbiBPcGVuUmVsZXZhbnRQYWdlcygpIHsKICAgICAgICBsZXQgJFJlbGV2YW50RGV0YWlsc09wZW5lZCA9IGZhbHNlOwogICAgICAgICQoJ2RldGFpbHMnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZCgnLkVycm9yJykubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdvcGVuJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAkUmVsZXZhbnREZXRhaWxzT3BlbmVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICgkKHRoaXMpLmZpbmQoJzpmb2N1cycpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignb3BlbicsIHRydWUpOwogICAgICAgICAgICAgICAgJFJlbGV2YW50RGV0YWlsc09wZW5lZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBpZiAoISRSZWxldmFudERldGFpbHNPcGVuZWQpIHsKICAgICAgICAgICAgJCgnZGV0YWlsczpmaXJzdC1vZi10eXBlJykuYXR0cignb3BlbicsIHRydWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEhpZGVTaG93IGEgc2VjdGlvbiBvciBwYWdlIGhlYWRlciBpZiB0aGUgY29tcGxldGUgY29udGVudCBpcyBBQ0xIaWRkZW4KICAgICAqLwogICAgZnVuY3Rpb24gSGlkZVNob3dDb21wbGV0ZVBhZ2VTZWN0aW9uKCAkRWxlbWVudCwgSXNQYWdlICkgewogICAgICAgIGlmICggIUlzUGFnZSApIHsKICAgICAgICAgICAgJEVsZW1lbnQuY2hpbGRyZW4oImRldGFpbHMuUGFnZUNvbnRlbnQiKS5lYWNoKCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIEhpZGVTaG93Q29tcGxldGVQYWdlU2VjdGlvbiggJCh0aGlzKSwgdHJ1ZSApCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgbGV0IEhpZGVQYWdlID0gSXNQYWdlICYmICRFbGVtZW50LmNoaWxkcmVuKCIuUm93X1NlY3Rpb25IZWFkZXIiKS5sZW5ndGggPiAwOwoKICAgICAgICAkRWxlbWVudC5jaGlsZHJlbigiLlJvd19TZWN0aW9uSGVhZGVyIikuZWFjaCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGxldCAkU2VjdGlvblJvd3MgPSAkKHRoaXMpLm5leHRVbnRpbCgiLlJvd19TZWN0aW9uSGVhZGVyIiksCiAgICAgICAgICAgICAgICBWaXNpYmxlUm93cyAgPSAkU2VjdGlvblJvd3MuZmlsdGVyKCI6bm90KC5vb29BQ0xIaWRkZW4pIikubGVuZ3RoID4gMDsKCiAgICAgICAgICAgIGlmICggJCh0aGlzKS5oYXNDbGFzcygib29vQUNMSGlkZGVuIikgKSB7CiAgICAgICAgICAgICAgICBpZiAoIFZpc2libGVSb3dzICkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoIm9vb0FDTEhpZGRlbiIpOwogICAgICAgICAgICAgICAgICAgIEhpZGVQYWdlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAhVmlzaWJsZVJvd3MgKSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygib29vQUNMSGlkZGVuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBIaWRlUGFnZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIGlmICggSXNQYWdlICkgewogICAgICAgICAgICBpZiAoICRFbGVtZW50Lmhhc0NsYXNzKCJvb29BQ0xIaWRkZW4iKSApIHsKICAgICAgICAgICAgICAgIGlmICggIUhpZGVQYWdlICkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LnJlbW92ZUNsYXNzKCJvb29BQ0xIaWRkZW4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggSGlkZVBhZ2UgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYWRkQ2xhc3MoIm9vb0FDTEhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZgoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdCB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.History.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgovKmVzbGludC1kaXNhYmxlIG5vLXdpbmRvdyovCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uSGlzdG9yeQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5LgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLkhpc3RvcnkgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkhpc3RvcnkKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHBvcHVwLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnYS5MaW5rWm9vbVZpZXcnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHdpbmRvdy5vcGVuZXIuQ29yZS5VSS5Qb3B1cC5GaXJlUG9wdXBFdmVudCgnVVJMJywgeyBVUkw6ICQodGhpcykuYXR0cignaHJlZicpfSk7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuQ2xvc2VQb3B1cCgpOwogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Overview.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBJVFNNQ29uZmlnSXRlbVNlYXJjaCAgICA9IENvcmUuQ29uZmlnLkdldCgnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnKTsKICAgICAgICB2YXIgSVRTTUNvbmZpZ0l0ZW1BY3Rpb25Sb3cgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtQWN0aW9uUm93JykgfHwge307CgogICAgICAgIHZhciBVUkwsIENvbHVtbkZpbHRlciwgTmV3Q29sdW1uRmlsdGVyU3RyZywgTXlSZWdFeCwgU2Vzc2lvbkluZm9ybWF0aW9uOwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMTUlJywgJ0NlbnRlcicsIHRydWUsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkTGlzdENvbnRhaW5lciA9ICQoJy5BbGxvY2F0aW9uTGlzdENvbnRhaW5lcicpLmZpbmQoJy5Bc3NpZ25lZEZpZWxkcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciA9ICQoJ2xpLkFjdGl2ZSA+IGEnKS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkTGlzdENvbnRhaW5lcikgJiYgJExpc3RDb250YWluZXIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRMaXN0Q29udGFpbmVyLmZpbmQoJ2xpJyksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZC0nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWZpZWxkbmFtZScpICsgJy0nICsgRmlsdGVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZGQgdGhpcyBmaWVsZCBpZiBpdHMgbm90IGFscmVhZHkgdGhlcmUuIFRoaXMgY291bGQgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGUuZy4gdGhlIHNhdmUgYnV0dG9uIGlzIGNsaWNrZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEZpZWxkSUQpKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCBuYW1lPSJVc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQiIHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKCdpZCcsIEZpZWxkSUQpLnZhbCgkKHRoaXMpLmF0dHIoJ2RhdGEtZmllbGRuYW1lJykpLmFwcGVuZFRvKCRMaXN0Q29udGFpbmVyLmNsb3Nlc3QoJ2RpdicpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLCB0cnVlKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKElUU01Db25maWdJdGVtU2VhcmNoKSB7CiAgICAgICAgICAgICQoJyNJVFNNQ29uZmlnSXRlbVNlYXJjaCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygKICAgICAgICAgICAgICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1TZWFyY2guUHJvZmlsZSksCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1TZWFyY2guQ2xhc3NJRCkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgJC5lYWNoKElUU01Db25maWdJdGVtQWN0aW9uUm93LCBmdW5jdGlvbihLZXksIERhdGEpIHsKICAgICAgICAgICAgSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93LkFkZEFjdGlvbnMoJCgnI0NvbmZpZ0l0ZW1JRF8nICsgS2V5KSwgRGF0YSk7CiAgICAgICAgfSk7CgogICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5Jbml0KCk7CgogICAgICAgIENvcmUuVUkuSW5pdENoZWNrYm94U2VsZWN0aW9uKCQoJ3RhYmxlIHRkLkNoZWNrYm94JykpOwoKICAgICAgICAvLyBjaGFuZ2UgZXZlbnQgZm9yIGNvbHVtbiBmaWx0ZXIKICAgICAgICAkKCcuQ29sdW1uRmlsdGVyJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgIC8vIGRlZmluZSB2YXJpYWJsZXMKICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCJCYXNlbGluayIpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCJBY3Rpb24iKSArICc7JyArIENvcmUuQ29uZmlnLkdldCgnTGlua1BhZ2UnKSArICdDYXRlZ29yeT0nICsgQ29yZS5Db25maWcuR2V0KCdDYXRlZ29yeScpICsgJzsnOwogICAgICAgICAgICBTZXNzaW9uSW5mb3JtYXRpb24gPSBDb3JlLkFwcC5HZXRTZXNzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgIFVSTCArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgICAgIE5ld0NvbHVtbkZpbHRlclN0cmcgPSAkKHRoaXMpWzBdLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoJCh0aGlzKS52YWwoKSkgKyAnOyc7CgogICAgICAgICAgICBNeVJlZ0V4ID0gbmV3ICBSZWdFeHAoQ29sdW1uRmlsdGVyKyI9W147XSo7Iik7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgICAgIGlmIChVUkwubWF0Y2goTXlSZWdFeCkpIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTC5yZXBsYWNlKE15UmVnRXgsIE5ld0NvbHVtbkZpbHRlclN0cmcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvdGhlcndpc2UgYWRkIHRoZSBuZXcgY29sdW1uIGZpbHRlcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlZGlyZWN0CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2xpY2sgZXZlbnQgb24gdGFibGUgaGVhZGVyIHRyaWdnZXIKICAgICAgICAkKCcuT3ZlcnZpZXdIZWFkZXInKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRUcmlnZ2VyT2JqID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIEZpbHRlck5hbWU7CgogICAgICAgICAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gnKQogICAgICAgICAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAvLyBzbGlkZSB1cCBhbGwgb3BlbiBzZXR0aW5ncyB3aWRnZXRzCiAgICAgICAgICAgICAgICAkKCcuQ29sdW1uU2V0dGluZ3NUcmlnZ2VyJykKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBUSElTIHNldHRpbmdzIHdpZGdldAogICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5hZGRDbGFzcygnQWN0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRlciBkcm9wZG93bgogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0gJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVySUQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnT3duZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkVHJpZ2dlck9iai5wYXJlbnQoKS5maW5kKCcuU2VsZWN0ZWRWYWx1ZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNOb3RoaW5nJyksICdBSkFYRmlsdGVyVXBkYXRlJywgRmlsdGVyTmFtZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVWYWx1ZSA9ICRUcmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJy5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlVGV4dCAgPSAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJTZWxlY3RlZFZhbHVlIEhpZGRlbiI+JyArIEF1dG9Db21wbGV0ZVRleHQgKyAnICgnICsgQXV0b0NvbXBsZXRlVmFsdWUgKyAnKTwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxhIGhyZWY9IiMiIGNsYXNzPSJEZWxldGVGaWx0ZXIiPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2EuRGVsZXRlRmlsdGVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVGaWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmlsdGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuTWFzdGVyQWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Search.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlYXJjaC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2ggPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzZWFyY2ggc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZycpOwogICAgICAgIGlmICggSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nICkgewogICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coCiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cuQWN0aW9uLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLlByb2ZpbGUpLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLkNsYXNzSUQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gcmVidWlsZCBhdHRyaWJ1dGUgc2VsZWN0aW9uLCBvbmx5IHNob3cgYXZhaWxhYmxlIGF0dHJpYnV0ZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAvLyBnZXQgb3JpZ2luYWwgc2VsZWN0aW9uIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxkcyBhbmQgY2xvbmUgaXQKICAgICAgICB2YXIgJEF0dHJpYnV0ZUNsb25lID0gJCgnI0F0dHJpYnV0ZU9yaWcgb3B0aW9uJykuY2xvbmUoKSwKICAgICAgICAgICAgJEF0dHJpYnV0ZVNlbGVjdGlvbiA9ICQoJyNBdHRyaWJ1dGUnKS5lbXB0eSgpLAogICAgICAgICAgICBWYWx1ZTsKCiAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgJEF0dHJpYnV0ZUNsb25lLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICBWYWx1ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCQodGhpcykuYXR0cigndmFsdWUnKSk7CiAgICAgICAgICAgIGlmICghJCgnI1NlYXJjaEluc2VydCBsYWJlbCNMYWJlbCcgKyBWYWx1ZSkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLmFwcGVuZCgkKHRoaXMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IG9mIGF0dHJpYnV0ZSB0byBhZGQuCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBhZGRzIG9uZSBhdHRyaWJ1dGUgZm9yIHNlYXJjaAogICAgICovCiAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQgPSBmdW5jdGlvbiAoQXR0cmlidXRlKSB7CgogICAgICAgIC8vIGVzY2FwZSBwb3NzaWJsZSBjb2xvbnMgKDopIGluIGVsZW1lbnQgaWQgYmVjYXVzZSBqUXVlcnkgY2FuIG5vdCBoYW5kbGUgaXQgaW4gaWQgYXR0cmlidXRlIHNlbGVjdG9ycwogICAgICAgIEF0dHJpYnV0ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSk7CgogICAgICAgIHZhciAkTGFiZWwgPSAkKCcjU2VhcmNoQXR0cmlidXRlc0hpZGRlbiBsYWJlbCNMYWJlbCcgKyBBdHRyaWJ1dGUpOwoKICAgICAgICBpZiAoJExhYmVsLmxlbmd0aCkgewogICAgICAgICAgICAkTGFiZWwucHJldigpLmNsb25lKCkuYXBwZW5kVG8oJyNTZWFyY2hJbnNlcnQnKTsKICAgICAgICAgICAgJExhYmVsLmNsb25lKCkuYXBwZW5kVG8oJyNTZWFyY2hJbnNlcnQnKTsKICAgICAgICAgICAgJExhYmVsLm5leHQoKS5jbG9uZSgpLmFwcGVuZFRvKCcjU2VhcmNoSW5zZXJ0JykKCiAgICAgICAgICAgICAgICAvLyBiaW5kIGNsaWNrIGZ1bmN0aW9uIHRvIHJlbW92ZSBidXR0b24gbm93CiAgICAgICAgICAgICAgICAuZmluZCgnLlJlbW92ZUJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLnBhcmVudCgpOwogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSgkRWxlbWVudCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2V0IGF1dG9jb21wbGV0ZSB0byBjdXN0b21lciB0eXBlIGZpZWxkcwogICAgICAgICAgICAgICAgJCgnI1NlYXJjaEluc2VydCcpLmZpbmQoJy5JVFNNQ3VzdG9tZXJTZWFyY2gnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBJbnB1dElEID0gJCh0aGlzKS5hdHRyKCdpZCcpICsgJ0F1dG9jb21wbGV0ZSc7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnSVRTTUN1c3RvbWVyU2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdpZCcsIElucHV0SUQpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldigpLmF0dHIoJ2lkJywgSW5wdXRJRCArICdTZWxlY3RlZCcpOwoKICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUgY29sb25zICg6KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0IGluIGlkIGF0dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoJyMnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSW5wdXRJRCkgKSApOwoKICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGRpYWxvZyBjbG9zdXJlIHdoZW4gc2VsZWN0IGEgY3VzdG9tZXIgZnJvbSB0aGUgbGlzdAogICAgICAgICAgICAgICAgICAgICQoJ3VsLnVpLWF1dG9jb21wbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hJbnNlcnQnKSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgZm9ybSAgb3IgYW55IGVsZW1lbnQKICAgICAqICAgICAgd2l0aGluIHRoaXMgZm9ybSBjaGVjay4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlbW92ZSBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudC4KICAgICAqLwoKICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSA9IGZ1bmN0aW9uICgkRWxlbWVudCkgewogICAgICAgICRFbGVtZW50LnByZXYoKS5wcmV2KCkucmVtb3ZlKCk7CiAgICAgICAgJEVsZW1lbnQucHJldigpLnJlbW92ZSgpOwogICAgICAgICRFbGVtZW50LnJlbW92ZSgpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQcm9maWxlIFRoZSBwcm9maWxlIG5hbWUgdGhhdCB3aWxsIGJlIGRlbGV0ZS4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhIHByb2ZpbGUgdmlhIGFuIGFqYXggcmVxdWVzdHMuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFNlYXJjaFByb2ZpbGVEZWxldGUoUHJvZmlsZSkgewogICAgICAgIHZhciBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWFByb2ZpbGVEZWxldGUnLAogICAgICAgICAgICBQcm9maWxlOiBQcm9maWxlLAogICAgICAgICAgICBDbGFzc0lEOiAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpCiAgICAgICAgfTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB7fQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqIEBkZXNjcmlwdGlvbiBTaG93cyB3YWl0aW5nIGRpYWxvZyB1bnRpbCBzZWFyY2ggc2NyZWVuIGlzIHJlYWR5LgogICAgICovCiAgICBmdW5jdGlvbiBTaG93V2FpdGluZ0RpYWxvZygpIHsKICAgICAgICB2YXIgQ29udGVudCA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKAogICAgICAgICAgICAnQWdlbnQvSVRTTUNvcmUvTG9hZGluZ0RpYWxvZycsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNwYW5UaXRsZTogQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKAogICAgICAgICAgICBDb250ZW50LAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSwKICAgICAgICAgICAgJzEwcHgnLAogICAgICAgICAgICAnQ2VudGVyJywKICAgICAgICAgICAgdHJ1ZQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSBub25lCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzZXRzIGFsbCBzZWFyY2ggZGlhbG9nIHNldHRpbmdzCiAgICAgKi8KCiAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2cgPSBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gaGlkZSBhZGQgdGVtcGxhdGUgYmxvY2sKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAvLyBoaWRlIHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnBhcmVudCgpLmhpZGUoKS5wcmV2KCkuaGlkZSgpLnByZXYoKS5oaWRlKCk7CgogICAgICAgIC8vIHNlYXJjaCBwcm9maWxlIGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgJiYgJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAhPT0gJ2xhc3Qtc2VhcmNoJykgewoKICAgICAgICAgICAgLy8gc2hvdyBkZWxldGUgYnV0dG9uCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlRGVsZXRlJykuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5zaG93KCk7CgogICAgICAgICAgICAvLyBzaG93IHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2F2ZVByb2ZpbGUnKS5wYXJlbnQoKS5zaG93KCkucHJldigpLnNob3coKS5wcmV2KCkuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2V0IFNhdmVQcm9maWxlIHRvIDAKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJCgnLkRpYWxvZzp2aXNpYmxlJykpOwoKICAgICAgICAvLyByZWdpc3RlciBhZGQgb2YgYXR0cmlidXRlCiAgICAgICAgJCgnI0F0dHJpYnV0ZScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBBdHRyaWJ1dGUgPSAkKCcjQXR0cmlidXRlJykudmFsKCk7CiAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZUFkZChBdHRyaWJ1dGUpOwogICAgICAgICAgICBUYXJnZXROUy5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwoKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZXZlbnQgZm9yIHRyZWUgc2VsZWN0aW9uIGRpYWxvZwogICAgICAgICAgICAkKCcuU2hvd1RyZWVTZWxlY3Rpb24nKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgQ29yZS5VSS5UcmVlU2VsZWN0aW9uLlNob3dUcmVlU2VsZWN0aW9uKCQodGhpcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgcmV0dXJuIGtleQogICAgICAgICQoJyNTZWFyY2hGb3JtJykub2ZmKCdrZXlwcmVzcy5GaWx0ZXJJbnB1dCcpLm9uKCdrZXlwcmVzcy5GaWx0ZXJJbnB1dCcsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBpZiAoKEV2ZW50LmNoYXJDb2RlIHx8IEV2ZW50LmtleUNvZGUpID09PSAxMykgewogICAgICAgICAgICAgICAgaWYgKCFDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgc3VibWl0CiAgICAgICAgJCgnI1NlYXJjaEZvcm1TdWJtaXQnKS5vZmYoJ2NsaWNrLkRvU2VhcmNoJykub24oJ2NsaWNrLkRvU2VhcmNoJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgdmFyIFNob3duQXR0cmlidXRlcyA9IFtdOwoKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlQWRkQWN0aW9uLCAjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS5pcygnOnZpc2libGUnKSAmJiAkKCcjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS52YWwoKSkgewogICAgICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyByZW1lbWJlciBzaG93biBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQgbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmF0dHIoJ2lkJykpIHsKICAgICAgICAgICAgICAgICAgICBTaG93bkF0dHJpYnV0ZXMucHVzaCgkKHRoaXMpLmF0dHIoJ2lkJykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI1NlYXJjaEZvcm0gI1Nob3duQXR0cmlidXRlcycpLnZhbChTaG93bkF0dHJpYnV0ZXMuam9pbignOycpKTsKCiAgICAgICAgICAgIC8vIE5vcm1hbCByZXN1bHRzIG1vZGUgd2lsbCByZXR1cm4gSFRNTCBpbiB0aGUgc2FtZSB3aW5kb3cKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hGb3JtICNSZXN1bHRGb3JtJykudmFsKCkgPT09ICdOb3JtYWwnKSB7CgogICAgICAgICAgICAgICAgaWYgKCFDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgLy8gUHJpbnQgYW5kIENTViBzaG91bGQgb3BlbiBpbiBhIG5ldyB3aW5kb3csIG5vIHdhaXRpbmcgZGlhbG9nCiAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybScpLmF0dHIoJ3RhcmdldCcsICdTZWFyY2hSZXN1bHRQYWdlJyk7CiAgICAgICAgICAgICAgICBpZiAoIUNoZWNrRm9yU2VhcmNoZWRWYWx1ZXMoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuYXR0cigndGFyZ2V0JywgJycpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkluaXQoKTsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuU2V0U3VibWl0RnVuY3Rpb24oJCgnI1NlYXJjaEZvcm0nKSwgZnVuY3Rpb24gKEZvcm0pIHsKICAgICAgICAgICAgRm9ybS5zdWJtaXQoKTsKCiAgICAgICAgICAgIC8vIFNob3cgb25seSBhIHdhaXRpbmcgZGlhbG9nIGZvciBOb3JtYWwgcmVzdWx0cyBtb2RlLCBiZWNhdXNlIHRoaXMgcmVzdWx0CiAgICAgICAgICAgIC8vICB3aWxsIHJldHVybiB0aGUgSFRNTCBpbiB0aGUgc2FtZSB3aW5kb3cuCiAgICAgICAgICAgIGlmICgkKCcjU2VhcmNoRm9ybSAjUmVzdWx0Rm9ybScpLnZhbCgpID09PSAnTm9ybWFsJykgewogICAgICAgICAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBsb2FkIHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5Mb2FkUHJvZmlsZSggJCh0aGlzKS52YWwoKSApOwogICAgICAgIH0pOwoKICAgICAgICAvLyBzaG93IGFkZCBwcm9maWxlIGJsb2NrIG9yIG5vdAogICAgICAgICQoJyNTZWFyY2hQcm9maWxlTmV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkQmxvY2snKS50b2dnbGUoKTsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1lJykuZm9jdXMoKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAvLyBhZGQgbmV3IHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEFjdGlvbicpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgUHJvZmlsZU5hbWUsICRFbGVtZW50MTsKCiAgICAgICAgICAgIC8vIGdldCBuYW1lCiAgICAgICAgICAgIFByb2ZpbGVOYW1lID0gJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1lJykudmFsKCk7CgogICAgICAgICAgICAvLyBjaGVjayBuYW1lCiAgICAgICAgICAgIGlmICghUHJvZmlsZU5hbWUubGVuZ3RoIHx8IFByb2ZpbGVOYW1lLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIG5hbWUgdG8gcHJvZmlsZSBzZWxlY3Rpb24KICAgICAgICAgICAgJEVsZW1lbnQxID0gJCgnI1NlYXJjaFByb2ZpbGUnKS5jaGlsZHJlbigpLmZpcnN0KCkuY2xvbmUoKTsKICAgICAgICAgICAgJEVsZW1lbnQxLnRleHQoUHJvZmlsZU5hbWUpOwogICAgICAgICAgICAkRWxlbWVudDEuYXR0cigndmFsdWUnLCBQcm9maWxlTmFtZSk7CiAgICAgICAgICAgICRFbGVtZW50MS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmFwcGVuZCgkRWxlbWVudDEpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgICAgICAvLyBzZXQgaW5wdXQgYm94IHRvIGVtcHR5CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLnZhbCgnJyk7CgogICAgICAgICAgICAvLyBoaWRlIGFkZCB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAgICAgLy8gaGlkZSBzYXZlIGNoYW5nZXMgaW4gdGVtcGxhdGUgYmxvY2sKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucGFyZW50KCkuaGlkZSgpLnByZXYoKS5oaWRlKCkucHJldigpLmhpZGUoKTsKCiAgICAgICAgICAgIC8vIHNldCBTYXZlUHJvZmlsZSB0byAxCiAgICAgICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKCiAgICAgICAgICAgIC8vIHNob3cgZGVsZXRlIGJ1dHRvbgogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLnNob3coKTsKCiAgICAgICAgICAgIC8vIHNob3cgcHJvZmlsZSBsaW5rCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuc2hvdygpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBkaXJlY3QgbGluayB0byBwcm9maWxlCiAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFNlYXJjaFByb2ZpbGUgPSAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpLAogICAgICAgICAgICAgICAgU2VhcmNoUHJvZmlsZUFjdGlvbiA9ICQoJyNTZWFyY2hBY3Rpb24nKS52YWwoKSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPSAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpOwoKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBTZWFyY2hQcm9maWxlQWN0aW9uICsKICAgICAgICAgICAgJztTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPScgKyBlbmNvZGVVUklDb21wb25lbnQoU2VhcmNoUHJvZmlsZSkKICAgICAgICAgICAgKyAnO0NsYXNzSUQ9JyArIENsYXNzSUQ7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gZGVsZXRlIHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCd2YWx1ZScpICE9PSAnbGFzdC1zZWFyY2gnKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQnKS50ZXh0KCcnKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbW90ZQogICAgICAgICAgICAgICAgICAgIFNlYXJjaFByb2ZpbGVEZWxldGUoJCh0aGlzKS52YWwoKSk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsb2NhbAogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlKCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHNob3cgZnVsbHRleHQKICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQoJ0Z1bGx0ZXh0Jyk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykudHJpZ2dlcignY2hhbmdlJyk7CgogICAgICAgICAgICBpZiAoJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAmJiAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpID09PSAnbGFzdC1zZWFyY2gnKSB7CgogICAgICAgICAgICAgICAgLy8gaGlkZSBkZWxldGUgbGluawogICAgICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVEZWxldGUnKS5oaWRlKCk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuaGlkZSgpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7UHJvZmlsZX0gVGhlIHByb2ZpbGUgdGhhdCBpcyBzZXQgdG8gdGhlIHNlYXJjaCBkaWFsb2cKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlZnJlc2ggdGhlIHNlYXJjaCBkaWFsb2cgd2l0aCB0aGUgc2VsZWN0ZWQgcHJvZmlsZQogICAgICovCgogICAgVGFyZ2V0TlMuTG9hZFByb2ZpbGUgPSBmdW5jdGlvbiAoUHJvZmlsZSkgewogICAgICAgIHZhciBCYXNlTGluayA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgQWN0aW9uID0gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoOycsCiAgICAgICAgICAgIFN1YkFjdGlvbiA9ICdTdWJhY3Rpb249TG9hZFByb2ZpbGU7JywKICAgICAgICAgICAgQ2xhc3NJRCA9ICdDbGFzc0lEPScgKyAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpICsgJzsnLAogICAgICAgICAgICBTZWFyY2hQcm9maWxlID0gJ1Byb2ZpbGU9JyArIFByb2ZpbGUsCiAgICAgICAgICAgIFVSTCA9ICBCYXNlTGluayArIEFjdGlvbiArIFN1YkFjdGlvbiArIENsYXNzSUQgKyBTZWFyY2hQcm9maWxlOwoKICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLmFkZENsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNBSkFYVXBkYXRlJyksIFVSTCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcycpIHx8IFtdOwogICAgICAgICAgICAkLmVhY2goSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzLCBmdW5jdGlvbihfSWR4LCBBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guU2VhcmNoQXR0cmlidXRlQWRkKENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSkpOwogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIFRhcmdldE5TLlNldFNlYXJjaERpYWxvZyggJyRFbnZ7IkFjdGlvbiJ9JyApOwogICAgICAgICAgICAkKCcjSVRTTVNlYXJjaFByb2ZpbGUnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoRmllbGRzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcuRGlhbG9nOnZpc2libGUgI1NlYXJjaEZvcm1TdWJtaXQnKS5hcHBlbmRUbygkKCcuRGlhbG9nOnZpc2libGUgPiAuQ29udGVudCA+IC5Db250ZW50Rm9vdGVyJykpOwogICAgICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0RpdkNsYXNzSUQnKS5yZW1vdmVDbGFzcygndWktYXV0b2NvbXBsZXRlLWxvYWRpbmcnKTsKICAgICAgICAgICAgQ29yZS5VSS5JbnB1dEZpZWxkcy5BY3RpdmF0ZSgkKCcjU2VhcmNoRm9ybScpKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Q2xhc3NJRH0gVGhlIGNsYXNzIGlkIHRoYXQgaXMgc2V0IHRvIHRoZSBzZWFyY2ggZGlhbG9nCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiByZWZyZXNoIHRoZSBzZWFyY2ggZGlhbG9nIHdpdGggdGhlIHNlbGVjdGVkIGNsYXNzCiAgICAgKi8KCiAgICBUYXJnZXROUy5Mb2FkQ2xhc3MgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIEJhc2VMaW5rID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLAogICAgICAgICAgICBBY3Rpb24gPSAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7JywKICAgICAgICAgICAgU3ViQWN0aW9uID0gJ1N1YmFjdGlvbj1BSkFYVXBkYXRlOycsCiAgICAgICAgICAgIENsYXNzSUQgPSAnQ2xhc3NJRD0nICsgJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKSArICc7JywKICAgICAgICAgICAgVVJMID0gIEJhc2VMaW5rICsgQWN0aW9uICsgU3ViQWN0aW9uICsgQ2xhc3NJRCArIFNlYXJjaFByb2ZpbGU7CgogICAgICAgICQoJyNEaXZDbGFzc0lEJykuYWRkQ2xhc3MoJ3VpLWF1dG9jb21wbGV0ZS1sb2FkaW5nJyk7CiAgICAgICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0FKQVhVcGRhdGUnKSwgVVJMLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIElUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcyA9IENvcmUuQ29uZmlnLkdldCgnSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzJykgfHwgW107CiAgICAgICAgICAgICQuZWFjaChJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMsIGZ1bmN0aW9uKF9JZHgsIEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5TZWFyY2hBdHRyaWJ1dGVBZGQoQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoQXR0cmlidXRlKSk7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgVGFyZ2V0TlMuU2V0U2VhcmNoRGlhbG9nKCAnJEVudnsiQWN0aW9uIn0nICk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoUHJvZmlsZScpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0lUU01TZWFyY2hGaWVsZHMnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJy5EaWFsb2c6dmlzaWJsZSAjU2VhcmNoRm9ybVN1Ym1pdCcpLmFwcGVuZFRvKCQoJy5EaWFsb2c6dmlzaWJsZSA+IC5Db250ZW50ID4gLkNvbnRlbnRGb290ZXInKSk7CiAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtU3VibWl0JykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLnJlbW92ZUNsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hGb3JtJykpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBDaGVja0ZvclNlYXJjaGVkVmFsdWVzCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5TZWFyY2gKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IEZhbHNlIGlmIG5vIHZhbHVlcyB3ZXJlIGZvdW5kLCB0cnVlIGlmIHZhbHVlcyB3aGVyZSB0aGVyZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBDaGVja3MgaWYgYW55IHZhbHVlcyB3ZXJlIGVudGVyZWQgaW4gdGhlIHNlYXJjaC4KICAgICAqICAgICAgSWYgbm90aGluZyBhdCBhbGwgZXhpc3RzLCBpdCBhbGVydHMgd2l0aCB0cmFuc2xhdGVkOgogICAgICogICAgICAiUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nIgogICAgICovCiAgICBmdW5jdGlvbiBDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkgewogICAgICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgU2VhcmNoRm9ybSBsYWJlbHMKICAgICAgICB2YXIgU2VhcmNoVmFsdWVGbGFnID0gZmFsc2U7CiAgICAgICAgJCgnI1NlYXJjaEZvcm0gbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnROYW1lLAogICAgICAgICAgICAgICAgJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAkTGFiZWxFbGVtZW50ID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgICRGaWVsZEVsZW1lbnQgPSAkTGFiZWxFbGVtZW50Lm5leHQoJy5GaWVsZCcpOwogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRWxlbWVudE5hbWUpICsgJ10nKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGlucHV0IGVsZW1lbnQgd2l0aCB0aGUgc2VsZWN0ZWQgbmFtZQogICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgbmV4dCAic2VsZWN0IiBlbGVtZW50IGFuZCB1c2UgdGhhdCBvbmUgZm9yIGNoZWNraW5nCiAgICAgICAgICAgICAgICBpZiAoISRFbGVtZW50Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCh0aGlzKS5uZXh0KCkuZmluZCgnc2VsZWN0Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gRml4IGZvciBidWcjMTA4NDU6IG1ha2Ugc3VyZSB0aW1lIHNsb3QgZmllbGRzIHdpdGggVGltZUlucHV0Rm9ybWF0CiAgICAgICAgICAgICAgICAvLyAnSW5wdXQnIHNldCBhcmUgYmVpbmcgY29uc2lkZXJlZCBjb3JyZWN0bHksIHRvby4gQXMgdGhpcyBpcyBvbmx5CiAgICAgICAgICAgICAgICAvLyByZWxldmFudCBmb3Igc2VhcmNoIHR5cGUgJ1RpbWVTbG90Jywgd2UgY2hlY2sgZm9yIHRoZSBmaXJzdAogICAgICAgICAgICAgICAgLy8gaW5wdXQgdHlwZT10ZXh0IGVsZW1lbnQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQgZWxlbWVudC4KICAgICAgICAgICAgICAgIC8vIEFsbCB0aW1lIGZpZWxkIGVsZW1lbnRzIGhhdmUgdG8gYmUgZmlsbGVkIGluLCBidXQgaWYgb25seSBvbmUKICAgICAgICAgICAgICAgIC8vIGlzIG1pc3NpbmcsIHdlIHRyZWF0IHRoZSB3aG9sZSBmaWVsZCBhcyBpbnZhbGlkLgogICAgICAgICAgICAgICAgaWYgKCRGaWVsZEVsZW1lbnQuZmluZCgnaW5wdXRbbmFtZSQ9IlNlYXJjaFR5cGUiXScpLnZhbCgpID09PSAnVGltZVNsb3QnICYmICEkRmllbGRFbGVtZW50LmZpbmQoJ3NlbGVjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJEZpZWxkRWxlbWVudC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykuZmlyc3QoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRFbGVtZW50LnZhbCgpICYmICRFbGVtZW50LnZhbCgpICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICBTZWFyY2hWYWx1ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGlmICghU2VhcmNoVmFsdWVGbGFnKSB7CiAgICAgICAgICAgYWxlcnQoQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBTZWFyY2hWYWx1ZUZsYWc7CiAgICB9CgogICAgICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IENhbGxiYWNrIC0gZnVuY3Rpb24gdG8gZXhlY3V0ZSwgaWYgbm8gc3RvcCB3b3JkcyB3ZXJlIGZvdW5kLgogICAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBzcGVjaWZpYyB2YWx1ZXMgb2YgdGhlIHNlYXJjaCBmb3JtIGNvbnRhaW4gc3RvcCB3b3Jkcy4KICAgICAqICAgICAgICAgICAgICBJZiBzdG9wIHdvcmRzIGFyZSBwcmVzZW50LCBhIHdhcm5pbmcgd2lsbCBiZSBkaXNwbGF5ZWQuCiAgICAgKiAgICAgICAgICAgICAgSWYgc3RvcCB3b3JkcyBhcmUgbm90IHByZXNlbnQsIHRoZSBnaXZlbiBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkLgogICAgICovCiAgICBmdW5jdGlvbiBDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMoQ2FsbGJhY2spIHsKICAgICAgICB2YXIgU2VhcmNoU3RyaW5ncyA9IHt9LAogICAgICAgICAgICBTZWFyY2hTdHJpbmdzRm91bmQgPSAwLAogICAgICAgICAgICBSZWxldmFudEVsZW1lbnROYW1lcyA9IHsKICAgICAgICAgICAgICAgICdGcm9tJzogMSwKICAgICAgICAgICAgICAgICdUbyc6IDEsCiAgICAgICAgICAgICAgICAnQ2MnOiAxLAogICAgICAgICAgICAgICAgJ1N1YmplY3QnOiAxLAogICAgICAgICAgICAgICAgJ0JvZHknOiAxLAogICAgICAgICAgICAgICAgJ0Z1bGx0ZXh0JzogMQogICAgICAgICAgICB9OwoKICAgICAgICBpZiAoIUNvcmUuQ29uZmlnLkdldCgnQ2hlY2tTZWFyY2hTdHJpbmdzRm9yU3RvcFdvcmRzJykpIHsKICAgICAgICAgICAgQ2FsbGJhY2soKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJCgnI1NlYXJjaEZvcm0gbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnROYW1lLAogICAgICAgICAgICAgICAgJEVsZW1lbnQ7CgogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgIGlmICghUmVsZXZhbnRFbGVtZW50TmFtZXNbRWxlbWVudE5hbWVdKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgRWxlbWVudE5hbWUgKyAnXScpOwoKICAgICAgICAgICAgICAgIGlmICgkRWxlbWVudC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQudmFsKCkgJiYgJEVsZW1lbnQudmFsKCkgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NbRWxlbWVudE5hbWVdID0gJEVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NGb3VuZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIENoZWNrIGlmIHN0b3Agd29yZHMgYXJlIHByZXNlbnQuCiAgICAgICAgaWYgKCFTZWFyY2hTdHJpbmdzRm91bmQpIHsKICAgICAgICAgICAgQ2FsbGJhY2soKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgQUpBWFN0b3BXb3JkQ2hlY2soCiAgICAgICAgICAgIFNlYXJjaFN0cmluZ3MsCiAgICAgICAgICAgIGZ1bmN0aW9uIChGb3VuZFN0b3BXb3JkcykgewogICAgICAgICAgICAgICAgYWxlcnQoQ29yZS5Db25maWcuR2V0KCdTZWFyY2hTdHJpbmdzQ29udGFpblN0b3BXb3Jkc01zZycpICsgIlxuIiArIEZvdW5kU3RvcFdvcmRzKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2FsbGJhY2sKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0V2ZW50fSBBY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIG9wZW4gdGhlIHNlYXJjaCBkaWFsb2cKICAgICAqLwoKICAgIFRhcmdldE5TLk9wZW5TZWFyY2hEaWFsb2cgPSBmdW5jdGlvbiAoQWN0aW9uLCBQcm9maWxlLCBDbGFzcykgewoKICAgICAgICB2YXIgUmVmZXJyZXIgPSBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpLAogICAgICAgICAgICBEYXRhOwoKICAgICAgICBpZiAoIUFjdGlvbikgewogICAgICAgICAgICBBY3Rpb24gPSdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICAgICB9CiAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgQWN0aW9uOiBBY3Rpb24sCiAgICAgICAgICAgIFJlZmVycmVyOiBSZWZlcnJlciwKICAgICAgICAgICAgUHJvZmlsZTogUHJvZmlsZSwKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWCcsCiAgICAgICAgICAgIENsYXNzSUQ6IENsYXNzCiAgICAgICAgfTsKCiAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coKTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoSFRNTCkgewoKICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB3YWl0aW5nIGRpYWxvZyB3YXMgY2FuY2VsZWQsIGRvIG5vdCBzaG93IHRoZSBzZWFyY2gKICAgICAgICAgICAgICAgIC8vICBkaWFsb2cgYXMgd2VsbAogICAgICAgICAgICAgICAgaWYgKCEkKCcuRGlhbG9nOnZpc2libGUnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coSFRNTCwgQ29yZS5Db25maWcuR2V0KCdTZWFyY2hNc2cnKSwgJzEwcHgnLCAnQ2VudGVyJywgdHJ1ZSwgW10sIHRydWUpOwoKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hDbGFzc0lEJykub2ZmKCdjaGFuZ2UuU2VhcmNoUHJvZmlsZScpLm9uKCdjaGFuZ2UuU2VhcmNoUHJvZmlsZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICggJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKSAhPT0gIiIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guTG9hZFByb2ZpbGUoICQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuYXR0cigiaWQiLCAiU2VhcmNoUHJvZmlsZU9sZCIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHZhciBDbGFzc1NlbGVjdGVkID0gJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKTsKICAgICAgICAgICAgICAgIGlmIChDbGFzc1NlbGVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5Mb2FkUHJvZmlsZSgkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2coKTsKICAgICAgICAgICAgfSwgJ2h0bWwnCiAgICAgICAgKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Zoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBhZGQuCiAqLwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKgogICAgKiBAbmFtZSBJbml0CiAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBjb25maWcgaXRlbSB6b29tIHNlY3Rpb24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjVmVyc2lvblNlbGVjdGlvbicpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSZWRpcmVjdCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIGlmICggUmVkaXJlY3QgKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBSZWRpcmVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICB2YXIgSVRTTVNob3dDb25maXJtRGlhbG9nID0gQ29yZS5Db25maWcuR2V0KCdJVFNNU2hvd0NvbmZpcm1EaWFsb2cnKTsKCiAgICAgICAgSVRTTS5BZ2VudC5ab29tLkluaXQoQ29yZS5Db25maWcuR2V0KCdVc2VyQ29uZmlnSXRlbVpvb21UYWJsZUhlaWdodCcpKTsKCiAgICAgICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnQWN0aW9uJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLk1hc3RlckFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBJbml0aWFsaXplIGFsbG9jYXRpb24gbGlzdCBmb3IgbGluayBvYmplY3QgdGFibGUuCiAgICAgICAgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuU2V0QWxsb2NhdGlvbkxpc3QoKTsKCiAgICAgICAgaWYgKElUU01TaG93Q29uZmlybURpYWxvZykgewogICAgICAgICAgICAkLmVhY2goSVRTTVNob3dDb25maXJtRGlhbG9nLCBmdW5jdGlvbihfS2V5LCBEYXRhKSB7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpcm1EaWFsb2cuQmluZENvbmZpcm1EaWFsb2coewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRJRDogICAgICAgICAgICAgICAgICBEYXRhLk1lbnVJRCwKICAgICAgICAgICAgICAgICAgICBFbGVtZW50U2VsZWN0b3I6ICAgICAgICAgICAgRGF0YS5FbGVtZW50U2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgIERhdGEuRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiBEYXRhLkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICBEYXRhLkRpYWxvZ1RpdGxlLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFllczogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlllcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBObzogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJObyIpLAogICAgICAgICAgICAgICAgICAgICAgICBPazogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJPayIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxldCBMaW5rQ2VsbHMgPSAkKCcuQ29uZmlnSXRlbUxpbmtzX0NlbGwnKTsKICAgICAgICAgICAgaWYgKExpbmtDZWxscy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBMaW5rQ2VsbHMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBsZXQgJENvbnRlbnQgPSAkKCcuQ2VsbENvbnRlbnQnLCB0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgkQ29udGVudC5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oZWlnaHQoKSA+ICRDb250ZW50LmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnQuY3NzKCdtYXgtaGVpZ2h0JywgJCh0aGlzKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgMTAwKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJZnJhbWVBdXRvSGVpZ2h0CiAgICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20KICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRJZnJhbWUgLSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgU2V0IGlmcmFtZSBoZWlnaHQgYXV0b21hdGljYWxseSBiYXNlZCBvbiByZWFsIGNvbnRlbnQgaGVpZ2h0IGFuZCBoYXJkY29kZWQgbWF4IGhlaWdodC4KICAgICAqLwogICAgVGFyZ2V0TlMuSWZyYW1lQXV0b0hlaWdodCA9IGZ1bmN0aW9uICgkSWZyYW1lKSB7CgogICAgICAgIHZhciBOZXdIZWlnaHQsCiAgICAgICAgICAgIElmcmFtZUJvZHlIZWlnaHQsCgogICAgICAgICAgICAvLyBtYXggaGVpZ2h0CiAgICAgICAgICAgIERlc2NyaXB0aW9uSGVpZ2h0TWF4ID0gMTAwMDsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRJZnJhbWUpKSB7CiAgICAgICAgICAgIElmcmFtZUJvZHlIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuZmluZCgnYm9keScpLmhlaWdodCgpOwogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKCiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IGhlaWdodAogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gMTAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKElmcmFtZUJvZHlIZWlnaHQgPiBEZXNjcmlwdGlvbkhlaWdodE1heAogICAgICAgICAgICAgICAgICAgIHx8IE5ld0hlaWdodCA+IERlc2NyaXB0aW9uSGVpZ2h0TWF4KSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gRGVzY3JpcHRpb25IZWlnaHRNYXg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChJZnJhbWVCb2R5SGVpZ2h0ID4gTmV3SGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gSWZyYW1lQm9keUhlaWdodDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIGRlbHRhIGZvciBzY3JvbGxiYXIKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gcGFyc2VJbnQoTmV3SGVpZ2h0LCAxMCkgKyAyNTsKCiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgbWluaW11bSBoZWlnaHQgaXMgaW4gbGluZSB3aXRoIHRoZSBhdmF0YXIgaW1hZ2VzCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPCA0NikgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gNDY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.DynamicFieldITSMConfigItemLensSearch.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOSBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgSVRTTS5BZ2VudC5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnNTZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbnRhY3QgZGF0YSBzZWFyY2guCiAqLwpJVFNNLkFnZW50LkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVuc1NlYXJjaCA9IChmdW5jdGlvbihUYXJnZXROUykgewoKICAgIGlmICgKICAgICAgICAhQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoJywgJ0NvcmUuQ29uZmlnJywgJ0NvcmUuQ29uZmlnJywgdHJ1ZSkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMKICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uKCkgewoKICAgICAgICBmdW5jdGlvbiBJbml0RHluYW1pY0ZpZWxkcygkQ29udGV4dCkgewogICAgICAgICAgICB2YXIgQXV0b0NvbXBsZXRlID0gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUnKSwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZUFjdGl2ZSA9IGZhbHNlOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgdHlwZW9mIEF1dG9Db21wbGV0ZSAhPT0gJ3VuZGVmaW5lZCcKICAgICAgICAgICAgICAgICYmIHR5cGVvZiBBdXRvQ29tcGxldGUuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zICE9PSAndW5kZWZpbmVkJwogICAgICAgICAgICAgICAgJiYgdHlwZW9mIEF1dG9Db21wbGV0ZS5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnMuQXV0b0NvbXBsZXRlQWN0aXZlICE9PSAndW5kZWZpbmVkJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGVBY3RpdmUgPSBBdXRvQ29tcGxldGUuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zLkF1dG9Db21wbGV0ZUFjdGl2ZSAhPT0gJzAnCiAgICAgICAgICAgICAgICAgICAgPyB0cnVlCiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJCgnLkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVucycsICRDb250ZXh0KS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkluaXRFbGVtZW50KCQodGhpcyksIEF1dG9Db21wbGV0ZUFjdGl2ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgSW5pdER5bmFtaWNGaWVsZHMoKTsKCiAgICAgICAgLy8gU2luY2UgbmV3IHByb2Nlc3Mgc2NyZWVuIGxvYWRzIGFjdGl2aXR5IHZpYSBhbiBBSkFYIGNhbGwsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGFuIGV2ZW50CiAgICAgICAgLy8gICBpbiBvcmRlciB0byByZS1pbml0YWxpemUgZHluYW1pYyBmaWVsZHMuIFBsZWFzZSBzZWUgYnVnIzEzMTQ2IGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnVGlja2V0UHJvY2Vzcy5Jbml0LkZpcnN0QWN0aXZpdHlEaWFsb2cuTG9hZCcsIGZ1bmN0aW9uICgkQWN0aXZpdHlEaWFsb2cpIHsKICAgICAgICAgICAgSW5pdER5bmFtaWNGaWVsZHMoJEFjdGl2aXR5RGlhbG9nKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0RWxlbWVudAogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgaW5wdXQgZmllbGQgd2l0aCBhdXRvY29tcGxldGUKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQXV0b0NvbXBsZXRlQWN0aXZlIFNldCB0byBmYWxzZSwgaWYgYXV0b2NvbXBsZXRlIHNob3VsZCBvbmx5IGJlIHN0YXJ0ZWQgYnkgY2xpY2sgb24gYSBidXR0b24gbmV4dCB0byB0aGUgaW5wdXQgZmllbGQKICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIGV2ZXJ5IENvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZAogICAgICovCiAgICBUYXJnZXROUy5Jbml0RWxlbWVudCA9IGZ1bmN0aW9uKCRFbGVtZW50LCBBdXRvQ29tcGxldGVBY3RpdmUpIHsKICAgICAgICB2YXIgQXV0b0NvbXBsZXRlQ29uZmlnID0gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUnKS5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnMKICAgICAgICAgICAgPyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZScpLkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVucwogICAgICAgICAgICA6IHsKICAgICAgICAgICAgICAgIE1pblF1ZXJ5TGVuZ3RoOiAyLAogICAgICAgICAgICAgICAgUXVlcnlEZWxheTogMTAwLAogICAgICAgICAgICAgICAgTWF4UmVzdWx0c0Rpc3BsYXllZDogMjAsCiAgICAgICAgICAgICAgICBCdXR0b25UZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnU2VhcmNoJyksCiAgICAgICAgICAgIH07CgogICAgICAgIGlmKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewoKICAgICAgICAgICAgJEVsZW1lbnQubmV4dCgnaW5wdXRbdHlwZT1idXR0b25dJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS52YWwoJycpLnByZXZBbGwoJ2lucHV0JykudmFsKCcnKTsKICAgICAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS5ibHVyKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gSGlkZSB0b29sdGlwIGluIGF1dG9jb21wbGV0ZSBmaWVsZCwgaWYgdXNlciBhbHJlYWR5IHR5cGVkIHNvbWV0aGluZyB0byBwcmV2ZW50IHRoZSBhdXRvY29tcGxldGUgbGlzdAogICAgICAgICAgICAvLyB0byBiZSBoaWRkZW4gdW5kZXIgdGhlIHRvb2x0aXAuIChPbmx5IG5lZWRlZCBmb3Igc2VydmVyc2lkZSBlcnJvcnMpCiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgna2V5dXAuVmFsaWRhdGUnKS5iaW5kKCdrZXl1cC5WYWxpZGF0ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIFZhbHVlID0gJEVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICBpZigkRWxlbWVudC5oYXNDbGFzcygnU2VydmVyRXJyb3InKSAmJiBWYWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjT1RPQk9fVUlfVG9vbHRpcHNfRXJyb3JUb29sdGlwJykuaGlkZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSh7CiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IEF1dG9Db21wbGV0ZUFjdGl2ZSA/IEF1dG9Db21wbGV0ZUNvbmZpZy5NaW5RdWVyeUxlbmd0aCA6IDUwMCwKICAgICAgICAgICAgICAgIGRlbGF5OiBBdXRvQ29tcGxldGVDb25maWcuUXVlcnlEZWxheSwKICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24oUmVxdWVzdCwgUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm06IFJlcXVlc3QudGVybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkOiAkRWxlbWVudC5hdHRyKCdpZCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4UmVzdWx0czogQXV0b0NvbXBsZXRlQ29uZmlnLk1heFJlc3VsdHNEaXNwbGF5ZWQKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gb2xkIGFqYXggcmVxdWVzdCBpcyBhbHJlYWR5IHJ1bm5pbmcsIHN0b3AgdGhlIG9sZCByZXF1ZXN0IGFuZCBzdGFydCB0aGUgbmV3IG9uZS4KICAgICAgICAgICAgICAgICAgICBpZigkRWxlbWVudC5kYXRhKCdBdXRvQ29tcGxldGVYSFInKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5kYXRhKCdBdXRvQ29tcGxldGVYSFInKS5hYm9ydCgpOwogICAgICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5yZW1vdmVEYXRhKCdBdXRvQ29tcGxldGVYSFInKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVuIHRoZSByZXNwb25zZSBmdW5jdGlvbiB0byBoaWRlIHRoZSByZXF1ZXN0IGFuaW1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2Uoe30pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuZGF0YSgnQXV0b0NvbXBsZXRlWEhSJywgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChVUkwsIERhdGEsIGZ1bmN0aW9uKFJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgVmFsdWVEYXRhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICRFbGVtZW50LnJlbW92ZURhdGEoJ0F1dG9Db21wbGV0ZVhIUicpOwogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goUmVzdWx0LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMuS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlKFZhbHVlRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24oRXZlbnQsIFVJKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBDb250YWN0S2V5ID0gVUkuaXRlbS5rZXksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3RWYWx1ZSA9IFVJLml0ZW0udmFsdWU7CgogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZFRpY2tldENvbnRhY3QoJCh0aGlzKS5hdHRyKCdpZCcpLCBDb250YWN0VmFsdWUsIENvbnRhY3RLZXkpOwogICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICRFbGVtZW50LmJsdXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgVmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS52YWwoKSkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldkFsbCgnaW5wdXRbdHlwZT1oaWRkZW5dJykudmFsKCcnKTsKICAgICAgICAgICAgICAgICAgICAkKCcuJyArICQodGhpcykucHJldkFsbCgnaW5wdXRbdHlwZT1oaWRkZW5dJykuYXR0cignaWQnKSkuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmZpbmQoJy5Db25maWdJdGVtJykuaGFzQ2xhc3MoJ0hpZGRlbicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjQ29udGFjdEluZm8nKS5maW5kKCcuQ29udGFjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0NvbnRhY3RJbmZvJykuZmluZCgncC5Ob25lJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFZpc2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNDb250YWN0SW5mbycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250YWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbnRhY3RXRCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNDb250YWN0SW5mbycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250YWN0OmZpcnN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbnRhY3RXRCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNob3coKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoIUF1dG9Db21wbGV0ZUFjdGl2ZSkgewogICAgICAgICAgICAgICAgJEVsZW1lbnQuYWZ0ZXIoJzxidXR0b24gaWQ9IicgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCIgdHlwZT0iYnV0dG9uIj4nICsgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoQXV0b0NvbXBsZXRlQ29uZmlnLkJ1dHRvblRleHQpICsgJzwvYnV0dG9uPicpOwogICAgICAgICAgICAgICAgJCgnIycgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCcpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgnb3B0aW9uJywgJ21pbkxlbmd0aCcsIDApOwogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgnc2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYXV0b2NvbXBsZXRlKCdvcHRpb24nLCAnbWluTGVuZ3RoJywgNTAwKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBPbiB1bmxvYWQgcmVtb3ZlIG9sZCBzZWxlY3RlZCBkYXRhLiBJZiB0aGUgcGFnZSBpcyByZWxvYWRlZCAod2l0aCBGNSkgdGhpcyBkYXRhIHN0YXlzIGluIHRoZSBmaWVsZCBhbmQgaW52b2tlcyBhbiBhamF4IHJlcXVlc3Qgb3RoZXJ3aXNlLgogICAgICAgICQod2luZG93KS5iaW5kKCdiZWZvcmV1bmxvYWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCgnLkNvbnRhY3RBdXRvQ29tcGxldGUnKS52YWwoJycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gRmllbGQKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBDb250YWN0VmFsdWUgVGhlIHJlYWRhYmxlIGN1c3RvbWVyIGlkZW50aWZpZXIuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gQ29udGFjdEtleSBvbiBzeXN0ZW0uCiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBhZGQgYSBuZXcgdGlja2V0IGNvbnRhY3QKICAgICAqIEByZXR1cm5zIHtib29sZWFufQogICAgICovCiAgICBUYXJnZXROUy5BZGRUaWNrZXRDb250YWN0ID0gZnVuY3Rpb24oRmllbGQsIENvbnRhY3RWYWx1ZSwgQ29udGFjdEtleSkgewoKICAgICAgICB2YXIgVmFsdWVGaWVsZCA9IEZpZWxkLnJlcGxhY2UoJ0F1dG9jb21wbGV0ZV8nLCAnJyk7CgogICAgICAgIGlmKCFWYWx1ZUZpZWxkLmxlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkKCcjJyArIFZhbHVlRmllbGQpLnZhbChDb250YWN0S2V5KTsKICAgICAgICAkKCcjJyArIEZpZWxkKS52YWwoQ29udGFjdFZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnNTZWFyY2ggfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItem.Overview.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwpJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gPSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5PdmVydmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBVUkwsIENvbHVtbkZpbHRlciwgTmV3Q29sdW1uRmlsdGVyU3RyZywgTXlSZWdFeCwgU2Vzc2lvbkluZm9ybWF0aW9uOwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMTUlJywgJ0NlbnRlcicsIHRydWUsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkTGlzdENvbnRhaW5lciA9ICQoJy5BbGxvY2F0aW9uTGlzdENvbnRhaW5lcicpLmZpbmQoJy5Bc3NpZ25lZEZpZWxkcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciA9ICQoJ2xpLkFjdGl2ZSA+IGEnKS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkTGlzdENvbnRhaW5lcikgJiYgJExpc3RDb250YWluZXIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRMaXN0Q29udGFpbmVyLmZpbmQoJ2xpJyksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZC0nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWZpZWxkbmFtZScpICsgJy0nICsgRmlsdGVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZGQgdGhpcyBmaWVsZCBpZiBpdHMgbm90IGFscmVhZHkgdGhlcmUuIFRoaXMgY291bGQgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGUuZy4gdGhlIHNhdmUgYnV0dG9uIGlzIGNsaWNrZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEZpZWxkSUQpKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCBuYW1lPSJVc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQiIHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKCdpZCcsIEZpZWxkSUQpLnZhbCgkKHRoaXMpLmF0dHIoJ2RhdGEtZmllbGRuYW1lJykpLmFwcGVuZFRvKCRMaXN0Q29udGFpbmVyLmNsb3Nlc3QoJ2RpdicpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLCB0cnVlKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIENvcmUuQ3VzdG9tZXIuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5VSS5Jbml0Q2hlY2tib3hTZWxlY3Rpb24oJCgndGFibGUgdGQuQ2hlY2tib3gnKSk7CgogICAgICAgIC8vIGNoYW5nZSBldmVudCBmb3IgY29sdW1uIGZpbHRlcgogICAgICAgICQoJy5Db2x1bW5GaWx0ZXInKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgLy8gZGVmaW5lIHZhcmlhYmxlcwogICAgICAgICAgICBVUkwgPSBDb3JlLkNvbmZpZy5HZXQoIkJhc2VsaW5rIikgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoIkFjdGlvbiIpICsgJzsnICsgQ29yZS5Db25maWcuR2V0KCdMaW5rUGFnZScpOwogICAgICAgICAgICBTZXNzaW9uSW5mb3JtYXRpb24gPSBDb3JlLkFwcC5HZXRTZXNzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgIFVSTCArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgICAgIE5ld0NvbHVtbkZpbHRlclN0cmcgPSAkKHRoaXMpWzBdLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoJCh0aGlzKS52YWwoKSkgKyAnOyc7CgogICAgICAgICAgICBNeVJlZ0V4ID0gbmV3ICBSZWdFeHAoQ29sdW1uRmlsdGVyKyI9W147XSo7Iik7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgICAgIGlmIChVUkwubWF0Y2goTXlSZWdFeCkpIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTC5yZXBsYWNlKE15UmVnRXgsIE5ld0NvbHVtbkZpbHRlclN0cmcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvdGhlcndpc2UgYWRkIHRoZSBuZXcgY29sdW1uIGZpbHRlcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlZGlyZWN0CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2xpY2sgZXZlbnQgb24gdGFibGUgaGVhZGVyIHRyaWdnZXIKICAgICAgICAkKCcuT3ZlcnZpZXdIZWFkZXInKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRUcmlnZ2VyT2JqID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIEZpbHRlck5hbWU7CgogICAgICAgICAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gnKQogICAgICAgICAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAvLyBzbGlkZSB1cCBhbGwgb3BlbiBzZXR0aW5ncyB3aWRnZXRzCiAgICAgICAgICAgICAgICAkKCcuQ29sdW1uU2V0dGluZ3NUcmlnZ2VyJykKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBUSElTIHNldHRpbmdzIHdpZGdldAogICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5hZGRDbGFzcygnQWN0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRlciBkcm9wZG93bgogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0gJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVySUQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnT3duZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkVHJpZ2dlck9iai5wYXJlbnQoKS5maW5kKCcuU2VsZWN0ZWRWYWx1ZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNOb3RoaW5nJyksICdBSkFYRmlsdGVyVXBkYXRlJywgRmlsdGVyTmFtZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVWYWx1ZSA9ICRUcmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJy5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlVGV4dCAgPSAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJTZWxlY3RlZFZhbHVlIEhpZGRlbiI+JyArIEF1dG9Db21wbGV0ZVRleHQgKyAnICgnICsgQXV0b0NvbXBsZXRlVmFsdWUgKyAnKTwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxhIGhyZWY9IiMiIGNsYXNzPSJEZWxldGVGaWx0ZXIiPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2EuRGVsZXRlRmlsdGVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVGaWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmlsdGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuTWFzdGVyQWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItem.Zoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwpJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gPSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20KICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIG92ZXJ2aWV3IGJlaGF2aW91cnMuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjVmVyc2lvblNlbGVjdGlvbicpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSZWRpcmVjdCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIGlmICggUmVkaXJlY3QgKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBSZWRpcmVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcjQXR0YWNobWVudHMnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNBdHRhY2htZW50Qm94JykuY3NzKAogICAgICAgICAgICAgICAgJ3JpZ2h0JywgJCh3aW5kb3cpLndpZHRoKCkgLSAkKCcjQXR0YWNobWVudHMnKS5vZmZzZXQoKS5sZWZ0IC0gJCgnI0F0dGFjaG1lbnRzJykud2lkdGgoKSAtIDI0CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICQoJyNBdHRhY2htZW50Qm94JykudG9nZ2xlKCk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIHNjcm9sbCBldmVudHMKICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gY2hhbmdlIEhlYWRlciBvbiBzY3JvbGwKICAgICAgICAgICAgaWYgKCAkKHdpbmRvdykud2lkdGgoKSA+IDc2NyApIHsKICAgICAgICAgICAgICAgIGlmICggJCh3aW5kb3cpLnNjcm9sbFRvcCgpID4gOTAgJiYgJCgiI29vb0hlYWRlciIpLmhlaWdodCgpID4gNTYgKSB7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmhlaWdodCggJzQ4cHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctdG9wJywgJzhweCcgKTsKICAgICAgICAgICAgICAgICAgICAkKCIjb29vSGVhZGVyIikuY3NzKCAncGFkZGluZy1ib3R0b20nLCAnOHB4JyApOwogICAgICAgICAgICAgICAgICAgICQoIiNDSUluZm9CYXIiKS5mYWRlT3V0KDIwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICggJCh3aW5kb3cpLnNjcm9sbFRvcCgpIDwgOCApIHsKICAgICAgICAgICAgICAgICAgICAkKCIjb29vSGVhZGVyIikuaGVpZ2h0KCAnMTAxcHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctdG9wJywgJzIycHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctYm90dG9tJywgJzIycHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI0NJSW5mb0JhciIpLmZhZGVJbigyMDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgSWZyYW1lQXV0b0hlaWdodAogICAgICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkSWZyYW1lIC0gVGhlIGlmcmFtZSB3aGljaCBzaG91bGQgYmUgYXV0by1oZWlnaHRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNldCBpZnJhbWUgaGVpZ2h0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gcmVhbCBjb250ZW50IGhlaWdodCBhbmQgaGFyZGNvZGVkIG1heCBoZWlnaHQuCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewoKICAgICAgICB2YXIgTmV3SGVpZ2h0LAogICAgICAgICAgICBJZnJhbWVCb2R5SGVpZ2h0LAoKICAgICAgICAgICAgLy8gbWF4IGhlaWdodAogICAgICAgICAgICBEZXNjcmlwdGlvbkhlaWdodE1heCA9IDEwMDA7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICBJZnJhbWVCb2R5SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmZpbmQoJ2JvZHknKS5oZWlnaHQoKTsKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmhlaWdodCgpOwogICAgICAgICAgICBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmYXVsdCBoZWlnaHQKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDEwMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChJZnJhbWVCb2R5SGVpZ2h0ID4gRGVzY3JpcHRpb25IZWlnaHRNYXgKICAgICAgICAgICAgICAgICAgICB8fCBOZXdIZWlnaHQgPiBEZXNjcmlwdGlvbkhlaWdodE1heCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IERlc2NyaXB0aW9uSGVpZ2h0TWF4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoSWZyYW1lQm9keUhlaWdodCA+IE5ld0hlaWdodCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IElmcmFtZUJvZHlIZWlnaHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBkZWx0YSBmb3Igc2Nyb2xsYmFyCiAgICAgICAgICAgIE5ld0hlaWdodCA9IHBhcnNlSW50KE5ld0hlaWdodCwgMTApICsgMjU7CgogICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1pbmltdW0gaGVpZ2h0IGlzIGluIGxpbmUgd2l0aCB0aGUgYXZhdGFyIGltYWdlcwogICAgICAgICAgICBpZiAoTmV3SGVpZ2h0IDwgNDYpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDQ2OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkSWZyYW1lLmhlaWdodChOZXdIZWlnaHQgKyAncHgnKTsKICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20gfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItemList.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgSVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdAogKiBAbWVtYmVyb2YgSVRTTS5DdXN0b21lcgogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBOYXZpZ2F0aW9uIEJhcgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBOYXZCYXJTaHJpbmsKICAgICAqIEBtZW1iZXJvZiBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIE5hdkJhciB0byBpdHMgZGVmYXVsdC4KICAgICAqLwogICAgLypmdW5jdGlvbiBOYXZCYXJTaHJpbmsoKSB7CiAgICAgICAgJCgnI05hdmlnYXRpb24nKS5vZmYoJ21vdXNlbGVhdmUnLCBOYXZCYXJTaHJpbmspOwogICAgICAgICQoJyNOYXZpZ2F0aW9uJykucmVtb3ZlQ2xhc3MoIm9vb0V4cGFuZGVkIik7CiAgICAgICAgJCgnI05hdkJhck1vZHVsZUljb25zID4gYSA+IC5OYXZCYXJEZXNjcmlwdGlvbiA+IHAnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gd2FpdCwgdGlsbCB0aGUgTmF2QmFyIGlzIHNtYWxsCiAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoJyNOYXZCYXJFeHBhbmQnKS5zaG93KCk7CiAgICAgICAgfSwgMjUwKTsKICAgIH07Ki8KCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIENvbmZpZ0l0ZW1MaXN0IGphdmFzY3JpcHQgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gbW92ZSBhbGwgZWxlbWVudHMgdG8gdGhlIHJvd3MKICAgICAgICAkKCcub29vVGlja2V0SXRlbUNhdCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBSb3cxICAgICAgID0gJCh0aGlzKS5jaGlsZHJlbigiLm9vb1JvdzEiKS5maXJzdCgpOwogICAgICAgICAgICB2YXIgUm93MiAgICAgICA9ICQodGhpcykuY2hpbGRyZW4oIi5vb29Sb3cyIikuZmlyc3QoKTsKICAgICAgICAgICAgdmFyIFdpZHRoMSAgICAgPSAwOwogICAgICAgICAgICB2YXIgV2lkdGgyICAgICA9IDA7CiAgICAgICAgICAgIHZhciBNYXhXaWR0aCAgID0gJCh0aGlzKS53aWR0aCgpOwogICAgICAgICAgICB2YXIgQ2F0ZWdvcmllcyA9ICQodGhpcykuY2hpbGRyZW4oInAiKTsKCi8vICAgICAgICAgICAgZm9yICh2YXIgQ2F0IG9mIENhdGVnb3JpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBDYXRlZ29yaWVzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgdmFyIENhdGVnb3J5ID0gJCggQ2F0ZWdvcmllc1tpXSApOwogICAgICAgICAgICAgICAgdmFyIE91dGVyICAgID0gQ2F0ZWdvcnkub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGlmICggV2lkdGgxIDw9IFdpZHRoMiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIFdpZHRoMSArIE91dGVyIDwgTWF4V2lkdGggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENhdGVnb3J5LmFwcGVuZFRvKFJvdzEpOwogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aDEgKz0gT3V0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeS5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBXaWR0aDIgKyBPdXRlciA8IE1heFdpZHRoICkgewogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeS5hcHBlbmRUbyhSb3cyKTsKICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGgyICs9IE91dGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnkuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.UI.ConfigItemActionRow.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5VSSA9IElUU00uVUkgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cKICogQGRlc2NyaXB0aW9uCiAqICAgICAgQWN0aW9uIHJvdyBmdW5jdGlvbmFsaXR5CiAqIEByZXF1aXJlcwogKiAgICAgIENvcmUuSlNPTgogKiAgICAgIENvcmUuRGF0YQogKi8KSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkpTT04nLCAnSlNPTiBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkRhdGEnLCAnRGF0YSBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnMgPSB7CiAgICAgICAgICAgICdTbWFsbCc6ICdkaXYuT3ZlcnZpZXcgdGFibGUgdGQgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJywKICAgICAgICAgICAgJ01lZGl1bSc6ICd1bC5PdmVydmlldyBpbnB1dDpjaGVja2JveFtuYW1lPUNvbmZpZ0l0ZW1JRF0nLAogICAgICAgICAgICAnTGFyZ2UnOiAndWwuT3ZlcnZpZXcgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJwogICAgICAgIH0sCiAgICAgICAgQ29uZmlnSXRlbVZpZXc7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gRGF0YSBUaGUgZGF0YSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge3N0cmluZ30gcXVlcnkgc3RyaW5nIG9mIHRoZSBkYXRhCiAgICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBnaXZlbiBoYXNoIGludG8gYSBxdWVyeSBzdHJpbmcKICAgICAqLwogICAgZnVuY3Rpb24gU2VyaWFsaXplRGF0YShEYXRhKSB7CiAgICAgICAgdmFyIFF1ZXJ5U3RyaW5nID0gJyc7CiAgICAgICAgJC5lYWNoKERhdGEsIGZ1bmN0aW9uIChLZXksIFZhbHVlKSB7CiAgICAgICAgICAgIFF1ZXJ5U3RyaW5nICs9ICc7JyArIGVuY29kZVVSSUNvbXBvbmVudChLZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KFZhbHVlKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gUXVlcnlTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9ucyBhZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZCBhY3Rpb24gb2YgYW4gZWxlbWVudCB0byB0aGUgZWxlbWVudC4KICAgICAqICAgICAgVGhlc2UgaW5mb3JtYXRpb24gYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFjdGlvbiByb3cgaW5kaXZpZHVhbGx5IGZvciB0aGlzIGVsZW1lbnQuCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQKICAgICAqICAgICAgVGhlIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBkYXRhIGlzIHN0b3JlZAogICAgICogQHBhcmFtIHtTdHJpbmd9IEpTT05TdHJpbmcKICAgICAqICAgICAgVGhlIEpTT04gc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWQgYWN0aW9ucyBvZiB0aGUgZWxlbWVudCAoZ2VuZXJhdGVkIGJ5IFBlcmwgbW9kdWxlKQogICAgICogICAgICBDb3VsZCBhbHNvIGJlIGFuIGphdmFzY3JpcHQgb2JqZWN0IGRpcmVjdGx5CiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqLwogICAgVGFyZ2V0TlMuQWRkQWN0aW9ucyA9IGZ1bmN0aW9uICgkRWxlbWVudCwgSlNPTlN0cmluZykgewogICAgICAgIHZhciBBY3Rpb25zOwogICAgICAgIC8vIFRoZSBlbGVtZW50IG9mIHRoZSBnaXZlbiBJRCBtdXN0IGV4aXN0LCBKU09OU3RyaW5nIG11c3Qgbm90IGJlIGVtcHR5CiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICBpZiAodHlwZW9mIEpTT05TdHJpbmcgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBBY3Rpb25zID0gQ29yZS5KU09OLlBhcnNlKEpTT05TdHJpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQWN0aW9ucyA9IEpTT05TdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHNhdmUgYWN0aW9uIGRhdGEgdG8gdGhlIGdpdmVuIGVsZW1lbnQKICAgICAgICAgICAgQ29yZS5EYXRhLlNldCgkRWxlbWVudCwgJ0FjdGlvbnMnLCBBY3Rpb25zKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvcmUuRGVidWcuTG9nKCdFbGVtZW50IGRvZXMgbm90IGV4aXN0IG9yIG5vIHZhbGlkIGRhdGEgc3RydWN0dXJlIHBhc3NlZC4nKTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24gY2xpY2sgb24gdGhlIGNoZWNrYm94IG9mIGFuIENvbmZpZ0l0ZW0gZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgYWN0aW9uIHJvdyBmb3IgdGhpcyBlbGVtZW50LgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRDbGlja2VkRWxlbWVudAogICAgICogICAgICBqUXVlcnlPYmplY3Qgb2YgdGhlIGNsaWNrZWQgZWxlbWVudCAobm9ybWFsbHkgJCh0aGlzKSkKICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSBDaGVja2JveGVzCiAgICAgKiAgICAgIGpRdWVyeU9iamVjdCBvZiB0aGUgY2hlY2tib3hlcyBvZiB0aGUgZGlmZmVyZW50IENvbmZpZ0l0ZW1zCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEFjdGlvblJvdwogICAgICogICAgICBUaGUgalF1ZXJ5T2JqZWN0IG9mIHRoZSBBY3Rpb25Sb3cgd3JhcHBlciAobm9ybWFsbHkgdGhlIDx1bD4tRWxlbWVudCkKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5VcGRhdGVBY3Rpb25Sb3cgPSBmdW5jdGlvbiAoXyRDbGlja2VkRWxlbWVudCwgJENoZWNrYm94ZXMsICRBY3Rpb25Sb3cpIHsKICAgICAgICB2YXIgQ29uZmlnSXRlbUFjdGlvbkRhdGEsCiAgICAgICAgICAgIEFjdGlvblJvd0VsZW1lbnQ7CgogICAgICAgIC8vIENoZWNrLCBpZiBvbmUgb3IgbW9yZSBpdGVtcyBhcmUgc2VsZWN0ZWQKICAgICAgICAkQ2hlY2tib3hlcyA9ICRDaGVja2JveGVzLmZpbHRlcignOmNoZWNrZWQnKTsKICAgICAgICAvLyBObyBjaGVja2JveCBpcyBzZWxlY3RlZAogICAgICAgIGlmICghJENoZWNrYm94ZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIFJlbW92ZSBhY3Rpb25zIGFuZCBkZWFjdGl2YXRlIGJ1bGsgYWN0aW9uCiAgICAgICAgICAgICRBY3Rpb25Sb3cKICAgICAgICAgICAgICAgIC5maW5kKCdsaScpLmZpbHRlcignOm5vdCguQnVsayknKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgLmVuZCgpLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnI0NvbmZpZ0l0ZW1CdWxrQWN0aW9uJykuYWRkQ2xhc3MoJ0luYWN0aXZlJykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpLkxhc3QnKS5yZW1vdmVDbGFzcygnTGFzdCcpCiAgICAgICAgICAgICAgICAuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCdsaTpsYXN0JykuYWRkQ2xhc3MoJ0xhc3QnKTsKICAgICAgICB9CiAgICAgICAgLy8gRXhhY3RseSBvbmUgY2hlY2tib3ggaXMgc2VsZWN0ZWQKICAgICAgICBlbHNlIGlmICgkQ2hlY2tib3hlcy5sZW5ndGggPT09IDEgJiYgISQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLmlzKCc6Y2hlY2tlZCcpICkgewogICAgICAgICAgICAvLyBVcGRhdGUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdy5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKTsKCiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQgd2hpY2ggaXMgYWN0aXZlIChpdCBtdXN0IG5vdCBiZSB0aGUgY2xpY2tlZCBlbGVtZW50ISkKICAgICAgICAgICAgLy8gYW5kIGdldCB0aGUgZGF0YQogICAgICAgICAgICBDb25maWdJdGVtQWN0aW9uRGF0YSA9IENvcmUuRGF0YS5HZXQoJENoZWNrYm94ZXMuY2xvc2VzdCgnbGksIHRyJyksICdBY3Rpb25zJyk7CiAgICAgICAgICAgIGlmICh0eXBlb2YgQ29uZmlnSXRlbUFjdGlvbkRhdGEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAkLmVhY2goQ29uZmlnSXRlbUFjdGlvbkRhdGEsIGZ1bmN0aW9uIChfSW5kZXgsIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLkhUTUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJChWYWx1ZS5IVE1MKS5hdHRyKCdpZCcsIFZhbHVlLklEKS5hcHBlbmRUbygkQWN0aW9uUm93KTsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudCA9ICRBY3Rpb25Sb3cuZmluZCgnIycgKyBWYWx1ZS5JRCkuZmluZCgnYScpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFZhbHVlLlRhcmdldCA9PT0gJ3VuZGVmaW5lZCcgfHwgVmFsdWUuVGFyZ2V0ID09PSAiIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5hdHRyKCdocmVmJywgVmFsdWUuTGluayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLlBvcHVwVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5vbignY2xpY2suUG9wdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoVmFsdWUuTGluaywgVmFsdWUuUG9wdXBUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBBcHBseSB0aGUgTGFzdCBjbGFzcyB0byB0aGUgcmlnaHQgZWxlbWVudAogICAgICAgICAgICAkQWN0aW9uUm93CiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgICAgICAvLyBUd28gb3JlIG1vcmUgY2hlY2tib3hlcyBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBSZW1vdmUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdwogICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykuZmlsdGVyKCc6bm90KC5CdWxrKScpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAuZW5kKCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKQogICAgICAgICAgICAgICAgLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBjb21wbGV0ZSBBY3Rpb25Sb3cgZnVuY3Rpb25hbGl0eSBhbmQgYmluZHMgYWxsIGNsaWNrIGV2ZW50cy4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIC8vIEdldCB1c2VkIENvbmZpZ0l0ZW0gdmlldyBtb2RlCiAgICAgICAgaWYgKCQoJyNDb25maWdJdGVtT3ZlcnZpZXdNZWRpdW0nKS5sZW5ndGgpIHsKICAgICAgICAgICAgQ29uZmlnSXRlbVZpZXcgPSAnTWVkaXVtJzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJCgnI0NvbmZpZ0l0ZW1PdmVydmlld0xhcmdlJykubGVuZ3RoKSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ0xhcmdlJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ1NtYWxsJzsKICAgICAgICB9CgogICAgICAgICQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFN0YXR1cyA9ICQodGhpcykucHJvcCgnY2hlY2tlZCcpOwogICAgICAgICAgICAkKENvbmZpZ0l0ZW1FbGVtZW50U2VsZWN0b3JzW0NvbmZpZ0l0ZW1WaWV3XSkucHJvcCgnY2hlY2tlZCcsIFN0YXR1cykudHJpZ2dlckhhbmRsZXIoJ2NsaWNrJyk7CiAgICAgICAgfSk7CgogICAgICAgICQoQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnNbQ29uZmlnSXRlbVZpZXddKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5VcGRhdGVBY3Rpb25Sb3coJCh0aGlzKSwgJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10pLCAkKCdkaXYuT3ZlcnZpZXdBY3Rpb25zIHVsLkFjdGlvbnMnKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNDb25maWdJdGVtQnVsa0FjdGlvbiBhJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgJFNlbGVjdGVkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURQYXJhbWV0ZXIgPSAiQ29uZmlnSXRlbUlEPSIsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0gIiIsCiAgICAgICAgICAgICAgICBVUkw7CiAgICAgICAgICAgIGlmICgkRWxlbWVudC5wYXJlbnQoJ2xpJykuaGFzQ2xhc3MoJ0luYWN0aXZlJykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zID0gJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10gKyAnOmNoZWNrZWQnKTsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgKz0gQ29uZmlnSXRlbUlEUGFyYW1ldGVyICsgJCh0aGlzKS52YWwoKSArICI7IjsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQnVsazsiICsgQ29uZmlnSXRlbUlEczsKICAgICAgICAgICAgICAgIFVSTCArPSBTZXJpYWxpemVEYXRhKENvcmUuQXBwLkdldFNlc3Npb25JbmZvcm1hdGlvbigpKTsKICAgICAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKFVSTCwgJ0NvbmZpZ0l0ZW1BY3Rpb24nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.Admin.ITSMConfigItem.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEFwcGxpY2F0aW9uCiAqIEBzdWJzZWN0aW9uICBJVFNNQ29uZmlnSXRlbURlZmluaXRpb25zCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCi8qKgogKiBAc3Vic3Vic2VjdGlvbiAgICAgQWRtaW5JVFNNQ29uZmlnSXRlbQogKi8KCi5TaWRlYmFyQ29sdW1uIC5XaWRnZXRTaW1wbGUgLkNhbGxGb3JBY3Rpb24gewogICAgbWFyZ2luLXRvcDogNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNHB4Owp9CgpmaWVsZHNldCA+IC5GaWVsZCAuQ29kZU1pcnJvci13cmFwIHsKICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTsKICAgIG1pbi1oZWlnaHQ6IDMyMHB4Owp9CgouQ29kZU1pcnJvckNvbnRhaW5lciB7CiAgICB3aWR0aDogOTAlOwp9CgouQ29kZU1pcnJvckNvbnRhaW5lciArIHAgewogICAgd2lkdGg6IDkwJTsKfQp9LyogZW5kIEBtZWRpYSAqLwo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Edit.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElUU00gQ29uZmlnSXRlbQogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgouUm93X1NlY3Rpb25IZWFkZXIgewogICAgbWFyZ2luLXRvcDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLlJvd19QYWdlSGVhZGVyIHsKICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KCi5Sb3dfU2VjdGlvbkhlYWRlciA+IGgzLAouUm93X1BhZ2VIZWFkZXIgPiBoMiB7CiAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICBtYXJnaW4tbGVmdDogMzAlOwogICAgcGFkZGluZy1sZWZ0OiAxMHB4Owp9CgouUm93X1NlY3Rpb25IZWFkZXIgPiBoMyB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLlJvd19QYWdlSGVhZGVyID4gaHIgewogICAgYm9yZGVyLXRvcDogMC41cHggc29saWQgdmFyKC0tY29sQkdEYXJrKTsKICAgIHdpZHRoOiA4MCU7CiAgICBtYXJnaW4tbGVmdDogMjAlOwp9CgpmaWVsZHNldC5UYWJsZUxpa2UgZGV0YWlscyA+IGxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IDMwJTsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgIHBhZGRpbmctdG9wOiA0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLyogUGFnZSBIZWFkZXIgTmF2aWdhdGlvbiAqLwpkZXRhaWxzIHN1bW1hcnkgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmRldGFpbHNbb3Blbl0gc3VtbWFyeSAuVG9nZ2xlIC5mYS1jYXJldC1yaWdodCwKZGV0YWlscyBzdW1tYXJ5IC5Ub2dnbGUgLmZhLWNhcmV0LWRvd24gewogICAgZGlzcGxheTogbm9uZTsKfQoKZGV0YWlsc1tvcGVuXSBzdW1tYXJ5IC5Ub2dnbGUgLmZhLWNhcmV0LWRvd24gewogICAgZGlzcGxheTogYmxvY2s7Cn0KCmRldGFpbHMgc3VtbWFyeSAuUm93X1BhZ2VIZWFkZXIgLlRvZ2dsZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4OyAvKiB0byBhbGlnbiB3aXRoIGgyICovCiAgICBsZWZ0OiAzMCU7CiAgICB0b3A6IDA7IAp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Overview.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogICogQHBhY2thZ2UgICAgIFNraW4gIkRlZmF1bHQiCiAgKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAgKiBAc3Vic2VjdGlvbiAgT3ZlcnZpZXcKICAqLwoKLyoqCiAqIEBzdWJzZWN0aW9uICBDb25maWdJdGVtIExpc3QgVGFibGVzCiAqLwoKLkNvbmZpZ0l0ZW1MaXN0IHsKICAgIG92ZXJmbG93OiBhdXRvOwp9CgouQ29uZmlnSXRlbUxpc3QgdGFibGUgewogICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5Db25maWdJdGVtTGlzdCB0ZCB7CiAgICBsaW5lLWhlaWdodDogMThweDsKfQoKLkNvbmZpZ0l0ZW1MaXN0IHRhYmxlIHRkLkNoZWNrYm94IHsKICAgIG1hcmdpbi1sZWZ0OiAwcHg7Cn0KCi5Db25maWdJdGVtTGlzdCB0YWJsZSBpbnB1dC5DaGVja2JveCB7CiAgICBtYXJnaW4tcmlnaHQ6IDdweDsKfQoKLkNvbmZpZ0l0ZW1MaXN0IHRkLkZyb20gZGl2LAouQ29uZmlnSXRlbUxpc3QgdGQuU3ViamVjdCBkaXYsCi5Db25maWdJdGVtTGlzdCB0ZC5DcmVhdGVkIGEgewogICAgaGVpZ2h0OiAyMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouQ29uZmlnSXRlbUxpc3QgLk5vIHsKICAgIHdpZHRoOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouQ29uZmlnSXRlbUxpc3QgLkF0dGFjaG1lbnRzIHsKICAgIHdpZHRoOiAyMHB4Owp9CgojT3ZlcnZpZXdCb2R5Lk92ZXJ2aWV3LkNvbmZpZ0l0ZW1MaXN0IHsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXI6IDA7CiAgICBncmlkLWFyZWE6IDEgLyAyIC8gMiAvIDM7Cn0KCiNPdmVydmlld0JvZHkuT3ZlcnZpZXcuQ29uZmlnSXRlbUxpc3QgdGFibGUgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjREREOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0RERDsKfQoKI092ZXJ2aWV3Qm9keS5PdmVydmlldy5Db25maWdJdGVtTGlzdCB0YWJsZS5UYWJsZVNtYWxsLk5vQ2VsbHNwYWNpbmcgewogICAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCiNPdmVydmlld0NvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgN2ZyOwogICAgbWFyZ2luOiAwcHggMTZweCA4cHggOHB4Owp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1jb2xCR01lZGl1bSk7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCiNPdmVydmlld0NvbnRhaW5lciA+ICNPdmVydmlld0NvbnRyb2wgPiB1bCA+IGxpIHsKICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICBwYWRkaW5nLXRvcDogNHB4OwogICAgcGFkZGluZy1ib3R0b206IDRweDsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sID4gdWwgPiBsaSA+IGEgewogICAgcGFkZGluZy10b3A6IDRweDsKICAgIHBhZGRpbmctYm90dG9tOiA0cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sID4gdWwgPiBsaS5BY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdNZWRpdW1EYXJrKTsKfQoKI092ZXJ2aWV3Q29udGFpbmVyID4gI092ZXJ2aWV3Q29udHJvbCA+IHVsID4gbGkuQWN0aXZlID4gYSB7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgouT3ZlcnZpZXdDb250cm9sIC5BY3Rpb25Sb3cgewogICAgbWFyZ2luLWxlZnQ6IDEyLjUlOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTBweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDBweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwcHg7Cn0KCmRpdi5GbGFnLlNtYWxsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNHB4OwogICAgbWFyZ2luOiAycHggOHB4IDAgMDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCmRpdi5GbGFnLlNtYWxsID4gc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTJweDsKfQoKLkZsYWdnZWROYW1lIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLyogIEFsbCBkZXZpY2VzIHdpdGggYSBzbWFsbGVyIHJlc29sdXRpb24gdGhhbiB0aGUgY3VycmVudCBPVE9CTyBtaW5pbXVtIHNvbHV0aW9uICovCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMHB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7CgogICAgICAgICNPdmVydmlld0JvZHkuT3ZlcnZpZXcuQ29uZmlnSXRlbUxpc3QgewogICAgICAgIG92ZXJmbG93LXk6YXV0bzsKICAgIH0KfQo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.TreeView.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIENNREIgVHJlZVZpZXcKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLkNvbnRhaW5lckNhbnZhcyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMTAwJTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW1hcmdpbi10b3A6IDIwcHg7CgltYXJnaW4tYm90dG9tOiAyMHB4OwoJei1pbmRleDogMDsKfQoKLlNwYWNlclRyZWUgewoJaGVpZ2h0OiAyMHB4OwkKfQoKLkJveCB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb2xvcjogYmxhY2s7Cgl3aWR0aDogODAlOwoJbWluLXdpZHRoOiAyMDBweDsKCW1heC13aWR0aDogbWF4LWNvbnRlbnQ7CgloZWlnaHQ6IG1heC1jb250ZW50OwoJbWluLWhlaWdodDogNzBweDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCS13ZWJraXQtdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IC4yczsKCS1tb3otdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IC4yczsKCXRyYW5zaXRpb246IGFsbCBlYXNlLWluLW91dCAuMnM7CgliYWNrZ3JvdW5kOiAjZmZmZmZmOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMTBweDsKCWJvcmRlci1yYWRpdXM6IDhweDsKCWJveC1zaGFkb3c6IDJweCA0cHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7Cglib3JkZXI6IG5vbmU7Cgl6LWluZGV4OiAxMDAwOwp9CgouQ29uZmlnSXRlbUluZm8gewoJZGlzcGxheTogdGFibGU7CgloZWlnaHQ6IDEwMCU7Cgl3aWR0aDogMTAwJTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmCn0KCi5BZGRpdGlvbmFsSW5mbyB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CglwYWRkaW5nOiA2cHg7Cglmb250LXNpemU6IDExcHg7Cn0KCi5Db25maWdJdGVtVGl0bGUgewoJZGlzcGxheTogdGFibGUtcm93OwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWNvbG9yOiAjZmZmZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKCWhlaWdodDogbWF4LWNvbnRlbnQ7Cglmb250LXdlaWdodDogNjAwOwoJZm9udC1zaXplOiAxNHB4Owp9CgouQ29uZmlnSXRlbVRpdGxlIHAgewoJbWFyZ2luLXRvcDogM3B4OwoJbWFyZ2luLWJvdHRvbTogM3B4OwogICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7CQp9CgouVGFyZ2V0U2VjdGlvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCmg0IHsKCW1hcmdpbi1ibG9jay1zdGFydDogMWVtOwp9CgouX2pzUGx1bWJfY29ubmVjdG9yIHsKCXotaW5kZXg6IDE7Cn0KCi5fanNQbHVtYl9vdmVybGF5IHsKCXotaW5kZXg6IDE7Cglmb250LXNpemU6IDEwcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwoJZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5DaGlsZENvbnRhaW5lciB7CgltYXJnaW4tdG9wOiAzNXB4OwoJZGlzcGxheTogYmxvY2s7Cn0KCi5Sb3dUaXRsZSB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0b3A6IDlweDsKCWxlZnQ6IDEwcHg7Cglmb250LXNpemU6IDE0cHg7Cn0KCi5PcHRDb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOyAKCXotaW5kZXg6IDEwMDA7Cgl0b3A6IC03cHg7CgloZWlnaHQ6IDE1cHg7CgltYXJnaW46IDAgYXV0bzsKfQoKLk9wdERlcHRoIHsKCW1hcmdpbi1yaWdodDogM3B4OwoJZm9udC1zaXplOiAxM3B4OwoJYm9yZGVyLXJhZGl1czogNnB4OwoJYm9yZGVyOiAxcHggc29saWQ7CglvdXRsaW5lOiBub25lOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJYm9yZGVyLWNvbG9yOiAjZGNkYmRiOwoJYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSg2Niw2Niw2NiwuODYpOwp9CgouQ29udGFpbmVyQmFyIHsKCWhlaWdodDogMzNweDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDEwMDA7Cn0KCi5UcmVlVmlld01lc3NhZ2VzIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMCBhdXRvOwoJcGFkZGluZzogOHB4OwoJd2lkdGg6IDEwMCU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjRTk1RjUzOwoJY29sb3I6ICNmZmY7Cn0KCiNXaWRnZXRDb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMTAwMDsJCn0KCiNTZWN0aW9uQ29udGFpbmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWhlaWdodDogMTAwJTsKCWRpc3BsYXk6IGJsb2NrOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXotaW5kZXg6IDA7Cn0KCiNBSkFYTG9hZGVyRGVwdGggewoJcG9zaXRpb246IHJlbGF0aXZlOwoJbWFyZ2luOiAwIGF1dG87CglkaXNwbGF5OiBibG9jazsKCXRvcDogMTBweDsKCWJvcmRlcjogbm9uZTsKfQoKI1pvb21Jbk91dExhYmVsIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWxlZnQ6IDE1cHg7Cglmb250LXNpemU6IDE0cHg7Cn0KCiNEZXB0aExhYmVsIHsKCWZvbnQtc2l6ZTogMTRweDsKfQoKI1pvb20gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJbGVmdDogMTVweDsKCWZvbnQtc2l6ZTogMTNweDsKCWJvcmRlci1yYWRpdXM6IDZweDsKCWJvcmRlcjogMXB4IHNvbGlkOwoJb3V0bGluZTogbm9uZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWJvcmRlci1jb2xvcjogI2RjZGJkYjsKCWJveC1zaGFkb3c6IDBweCAwcHggMnB4IHJnYmEoNjYsNjYsNjYsLjg2KTsKfQoKLlpvb21MaW5rIHsKCWNvbG9yOiAjZmZmZmZmOwoJY3Vyc29yOiBwb2ludGVyOwoJZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5ab29tTGluazpob3ZlciwgLlpvb21MaW5rOnZpc2l0ZWQgewoJY29sb3I6ICNmZmZmZmY7Cn0KCmlucHV0W3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCAKaW5wdXRbdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24geyAKICAgIG9wYWNpdHk6IDE7Cn0KCn0gLyogZW5kIEBtZWRpYSAqLwo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElUU00gQ29uZmlnSXRlbQogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgogICAgI1NlbGVjdGlvblJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICB9CgogICAgI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICB9CgogICAgI1BhZ2VTZWxlY3Rpb24gewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIGRpc3BsYXk6IGlubGluZSBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IDgwJTsKICAgIH0KCiAgICAjUGFnZVNlbGVjdGlvbiA+IGEgewogICAgICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgfQoKICAgICNQYWdlU2VsZWN0aW9uID4gaDIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgY29sb3I6ICMwMDAyM2M7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7CiAgICB9CgogICAgI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIG1heC13aWR0aDogMjQwcHg7CiAgICAgICAgaGVpZ2h0OiAyMnB4OwogICAgfQogICAgCiAgICAjUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbi5TZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBmYzsKICAgIH0KCiAgICAub29vQ29udGVudEdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICBncmlkLXJvdy1nYXA6IDEycHg7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiAxMnB4OwogICAgICAgIGdyaWQtYXV0by1yb3dzOiBtaW5tYXgobWluLWNvbnRlbnQsIDF2aCk7CiAgICB9CgogICAgLm9vb0NvbnRlbnRDZWxsIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgfQoKICAgIC5vb29Db250ZW50Q2VsbC5Db25maWdJdGVtTGlua3NfQ2VsbCAuQ2VsbENvbnRlbnQgewogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICB9CgogICAgLkZpZWxkRGlzcGxheVJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgIH0KCiAgICAuRmllbGREaXNwbGF5Um93Om5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgfQoKICAgIC5GaWVsZERpc3BsYXlSb3cgPiBsYWJlbCwKICAgIC5GaWVsZERpc3BsYXlSb3cgPiBwIHsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICB9CgogICAgLkZpZWxkRGlzcGxheVJvdyBsYWJlbCwKICAgIC5GaWVsZERpc3BsYXlSb3cgcCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtOwogICAgfQoKICAgIC5vb29Db250ZW50R3JpZCBsYWJlbCB7CiAgICAgICAgY29sb3I6ICM5MjkyOTI7CiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIH0KCiAgICAuRHluYW1pY0ZpZWxkU2V0TGFiZWwgewogICAgICAgIHBhZGRpbmctdG9wOiA4cHg7CiAgICB9CgogICAgLlNldERpc3BsYXlWYWx1ZSB7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICBtYXJnaW4tbGVmdDogMjRweDsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggNTAlIC0gMTJweCApIGNhbGMoIDUwJSArIDEycHggKTsKICAgIH0KCiAgICAuU2V0RGlzcGxheVZhbHVlID4gbGFiZWwsCiAgICAuU2V0RGlzcGxheVZhbHVlID4gcCB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgfQoKICAgIC5TZXREaXNwbGF5VmFsdWUgZGl2LkNsZWFyIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5EeW5hbWljRmllbGRSaWNoVGV4dExpbmsgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLkR5bmFtaWNGaWVsZFJpY2hUZXh0Q29udGVudC5IaWRkZW4gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIC5EeW5hbWljRmllbGRSaWNoVGV4dENvbnRlbnQgPiAuT3ZlcmxheUR5bmFtaWNGaWVsZFJpY2hUZXh0aUZyYW1lIHsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDY0cHgpOwogICAgfQoKfSAvKiBlbmQgQG1lZGlhICovCg==</File>
        <File Location="var/httpd/htdocs/skins/Agent/highcontrast/css/ITSM.Agent.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiSGlnaENvbnRyYXN0IgogKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKICAgIAogICAgI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbEJHRGFyayk7CiAgICAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwogICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbEJHRGFyayk7CiAgICB9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemSearch.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDEyOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAwcHggMHB4OwogICAgfQoKICAgIC5Sb3cgPiBkaXYuRmllbGQsCiAgICAuUm93ID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyLAogICAgLlJvdyA+IHNlbGVjdCwKICAgICNja2VfUmljaFRleHQsCiAgICAjUmljaFRleHQgewogICAgICAgIHdpZHRoOiBjYWxjKCA1MCUgKyAxNTBweCApICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoIDI1JSAtIDc2cHggKTsKICAgIH0KCiAgICAuUm93ID4gaW5wdXRbdHlwZT0idGV4dCJdIHsKICAgICAgICB3aWR0aDogY2FsYyggNTAlICsgMTE4cHggKSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKCAyNSUgLSA3NnB4ICk7CiAgICB9CgogICAgLlJvdyA+IGxhYmVsLAogICAgLlJpY2hUZXh0SG9sZGVyID4gbGFiZWwgewogICAgICAgIGxlZnQ6IGNhbGMoIC01MCUgLSAxMjZweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGhlaWdodDogMTQ1cHg7CiAgICB9CgogICAgLlJvd19EeW5hbWljRmllbGQgewogICAgICAgIHdpZHRoOiA2NiU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE3JTsKICAgICAgICBncmlkLXJvdy1nYXA6IDE2cHg7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiA0MHB4OwogICAgfQoKICAgIC5Sb3cgPiBkaXYuRmllbGQsCiAgICAuUm93ID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyLAogICAgLlJvdyA+IHNlbGVjdCwKICAgICNja2VfUmljaFRleHQsCiAgICAjUmljaFRleHQgewogICAgICAgIHdpZHRoOiA2NiUgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTclOwogICAgfQoKICAgIC5Sb3cgPiBpbnB1dFt0eXBlPSJ0ZXh0Il0gewogICAgICAgIHdpZHRoOiBjYWxjKCA2NiUgLSAzMnB4ICkgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTclOwogICAgfQoKICAgIC5Sb3cgPiBsYWJlbCwKICAgIC5SaWNoVGV4dEhvbGRlciA+IGxhYmVsIHsKICAgICAgICBsZWZ0OiBjYWxjKCAtNjYlICsgMjRweCApOwogICAgfQoKfQoKLlJvdyA+IHNlbGVjdCwKLlJvdyA+IGlucHV0W3R5cGU9InRleHQiXSB7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Owp9CgouUm93ID4gaW5wdXRbdHlwZT0idGV4dCJdLAppbnB1dC5EeW5hbWljRmllbGRUZXh0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI1OwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLlJvdyA+IGlucHV0W3R5cGU9InRleHQiXSB7CiAgICBoZWlnaHQ6IDU2cHg7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDMycHg7Cn0KCiNvb29IZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwp9CgojQm90dG9tQWN0aW9uUm93IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi10b3A6IDgwcHg7Cn0KCi5vb29JVFNNQ29uZmlnSXRlbVNlYXJjaCA+IGRpdiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gODBweCApOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgcGFkZGluZy10b3A6IDI0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMjRweDsKICAgIHBhZGRpbmctbGVmdDogNDBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgI29vb01haW5Cb3ggewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICAgbWluLWhlaWdodDogY2FsYyggMTAwdmggLSAyNjVweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogICAgCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nLXRvcDogMjJweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjJweDsKICAgICAgICBoZWlnaHQ6IDEwMXB4OwogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDEuMnB4IHNvbGlkICNlNWU1ZWI7CiAgICAgICAgei1pbmRleDogMTIwMDsKCi13ZWJraXQtdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgIC1tb3otdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgLW8tdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICB9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoNDhweCwgMWZyKSBhdXRvOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKI0NJSW5mb0JhciB7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBtYXJnaW46IDI2cHggMCA1cHggMDsKfQoKI0NJSW5mb0JhciBwLAojQ0lJbmZvQmFyIGRpdiwKI0NJSW5mb0JhciBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCiNDSUluZm9CYXIgbGFiZWwgewogICAgcGFkZGluZzogMnB4IDA7Cn0KCiNDSUluZm9CYXIgcCB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoKCi5ncmVlbmxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRjZGZhOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5T0spOwp9CgoueWVsbG93bGVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xOb3RpZnlXYXJuKTsKfQoKLnJlZGxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjliY2IyOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5RXJyKTsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y5OwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7Cn0KCiNBY3Rpb25Sb3cgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4Owp9CgojUGFnZVNlbGVjdGlvbiA+IHAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgojUGFnZVNlbGVjdGlvbiA+IGEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgojUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogMjQwcHg7CiAgICBwYWRkaW5nOiAwcHggMTZweDsKICAgIGhlaWdodDogMzJweDsKfQoKI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbE1haW5Ib3Zlcik7Cn0KCiNBdHRhY2htZW50Q29udGFpbmVyIHsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIHBhZGRpbmctdG9wOiA3cHg7Cn0KCiNBdHRhY2htZW50cyA+IGkgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCiNBdHRhY2htZW50Qm94IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDIwMDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIG1hcmdpbi10b3A6IDJweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgd2lkdGg6IDIyMHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uIHsKICAgIHdpZHRoOiAyMjBweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAzMnB4OwogICAgbWFyZ2luLXRvcDogLTFweDsKICAgIHdpZHRoOiAxMDAlOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciAuSW5wdXRGaWVsZF9Db250YWluZXIgewogICAgaGVpZ2h0OiAxMDAlOwogICAgd2lkdGg6IDEwMCU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyIC5JbnB1dEZpZWxkX0lucHV0Q29udGFpbmVyIHsKICAgIGhlaWdodDogMTAwJTsKICAgIHdpZHRoOiAxMDAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciA+IGxhYmVsIHsKICAgIGxlZnQ6IGNhbGMoIC0xMDAlICsgMTZweCApOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdG9wOiAxcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgIHBhZGRpbmctYm90dG9tOiAwcHg7CiAgICBmb250LXdlaWdodDogNTAwOwogICAgZm9udC1zdHJldGNoOiBub3JtYWw7CiAgICBmb250LXN0eWxlOiBub3JtYWw7CiAgICBsaW5lLWhlaWdodDogMS4yNTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjRweDsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dExpZ2h0KTsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQ6aG92ZXIgfiBsYWJlbCwKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQub29vU2VsZWN0ZWQgfiBsYWJlbCwKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiBsYWJlbC5vb29Gb2N1cyB7CiAgICBmb250LXNpemU6IDEwcHg7CiAgICB0b3A6IC0xN3B4OwogICAgbGVmdDogY2FsYyggLTEwMCUgKyAxNnB4ICk7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gbGFiZWwub29vRm9jdXMgewogICAgY29sb3I6IHZhcigtLWNvbE1haW5MaWdodCk7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyIGlucHV0IHsKICAgIGJvcmRlcjogc29saWQgMXB4IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgICB3aWR0aDogY2FsYyggMTAwJSAtIDMycHggKSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIHBhZGRpbmc6IDBweDsKICAgIHBhZGRpbmctbGVmdDogMzJweDsKICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgZm9udC1zaXplOiAxMDAlOwogICAgY29sb3I6IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICB0cmFuc2l0aW9uOiBib3JkZXIgMC4ycyBlYXNlLCBjb2xvciAwLjJzIGVhc2U7CiAgICBsaW5lLWhlaWdodDogMS41OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgLklucHV0RmllbGRfU2VsZWN0aW9uIHsKICAgIHRvcDogMXB4OwogICAgcGFkZGluZzogMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCmRpdi5JbnB1dEZpZWxkX0xpc3RDb250YWluZXIgewogICAgcmlnaHQ6IDRweDsKICAgIG1heC13aWR0aDogbWF4LWNvbnRlbnQ7CiAgICBtYXJnaW4tdG9wOiAtMjBweDsKfQoKZGl2LklucHV0RmllbGRfVHJlZUNvbnRhaW5lciB7CiAgICBtYXJnaW4tdG9wOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tYm90dG9tOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IG1heC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICBtYXgtaGVpZ2h0OiBtYXgtY29udGVudCAhaW1wb3J0YW50Owp9CgouanN0cmVlLWFuY2hvciB7CiAgICBtYXJnaW46IDhweCAwcHggOHB4IDI0cHggIWltcG9ydGFudDsKICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7CiAgICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDsKfQoKLmpzdHJlZS1ub2RlIHsKICAgIG1pbi1oZWlnaHQ6IDMycHg7Cn0KCi5qc3RyZWUtbm9kZSA+IC5qc3RyZWUtd2hvbGVyb3cgewogICAgaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7Cn0KCi5vb29DbG9zZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5vb29Db250ZW50R3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgbWFyZ2luLXRvcDogMTZweDsKICAgIGdyaWQtcm93LWdhcDogMTZweDsKICAgIGdyaWQtY29sdW1uLWdhcDogMTZweDsKfQoKLm9vb0NvbnRlbnRDZWxsIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgcGFkZGluZzogMTZweCAyNHB4Owp9Cgoub29vQ29udGVudENlbGwgaDIgewogICAgbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKLkZpZWxkRGlzcGxheVJvdyB7CiAgICBkaXNwbGF5OiBncmlkOwp9CgouRmllbGREaXNwbGF5Um93Om5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgIG1hcmdpbi10b3A6IDEycHg7Cn0KCi5GaWVsZERpc3BsYXlSb3cgbGFiZWwsCi5GaWVsZERpc3BsYXlSb3cgcCB7CiAgICBtYXJnaW4tdG9wOiA0cHg7Cn0KCi5GaWVsZERpc3BsYXlSb3cgcCwKLkZpZWxkRGlzcGxheVJvdyBsYWJlbCB7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIHBhZGRpbmctcmlnaHQ6IDhweDsKICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICBsaW5lLWhlaWdodDogMS41ZW07Cn0KCi5vb29Db250ZW50R3JpZCBsYWJlbCB7CiAgICBjb2xvcjogIzkyOTI5MjsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGQUZBRkE7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5EeW5hbWljRmllbGRTZXRMYWJlbCB7CiAgICBwYWRkaW5nLXRvcDogMTZweDsKfQoKLlNldERpc3BsYXlWYWx1ZSB7CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICBtYXJnaW4tbGVmdDogMjRweDsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGNhbGMoIDUwJSAtIDEycHggKSBjYWxjKCA1MCUgKyAxMnB4ICk7Cn0KCi5TZXREaXNwbGF5VmFsdWUgZGl2LkNsZWFyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5EeW5hbWljRmllbGRSaWNoVGV4dExpbmsgewogICAgZGlzcGxheTogbm9uZTsKfQoKLkR5bmFtaWNGaWVsZFJpY2hUZXh0Q29udGVudC5IaWRkZW4gewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5PdmVybGF5RHluYW1pY0ZpZWxkUmljaFRleHRpRnJhbWUgewogICAgaGVpZ2h0OiBhdXRvOwogICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICB3aWR0aDogY2FsYygxMDAlIC0gNjRweCk7CiAgICBwYWRkaW5nOiAwIDMycHg7Cn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemList.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAub29vQ29uZmlnSXRlbUxpc3QgewogICAgICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gNDhweCApOwogICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5vb29Db25maWdJdGVtTGlzdFNjcm9sbENvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgIH0KfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgIC5vb29Db25maWdJdGVtTGlzdCB7CiAgICAgICAgd2lkdGg6IGNhbGMoIDEwMCUgLSA4MHB4ICk7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDU2cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogNTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjRweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5vb29Db25maWdJdGVtTGlzdFNjcm9sbENvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy10b3A6IDMycHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICB9Cn0KCi5vb29Db25maWdJdGVtTGlzdCBoMywKLm9vb0NvbmZpZ0l0ZW1MaXN0IHAgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQoKLm9vb0lUU01Db25maWdJdGVtTGlzdEl0ZW06Zmlyc3QtY2hpbGQgewogICAgbWFyZ2luLXRvcDogOHB4Owp9Cg==</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemOverview.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwoKICAgICAgICAvKiB0ZXh0IC8gdGlja2V0IHNlYXJjaCAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggMTAwJSAtIDMycHgpOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogNjRweCA1N3B4IDBweDsKICAgICAgICBhbGlnbi1pdGVtczogZW5kOwoKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKCSNvb29IZWFkZXJCdXR0b24gc3BhbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAjb29vSGVhZGVyQnV0dG9uID4gYnV0dG9uIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYm90dG9tOiAzMnB4OwogICAgICAgIHJpZ2h0OiAxNnB4OwogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIHotaW5kZXg6IDYwMDsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAwIHJnYmEoMCwgMjcsIDI1NSwgMC4yNCk7CiAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDE2cHggMCB2YXIoLS1jb2xTaGFkb3dNYWluKTsKCX0KCgkjb29vSGVhZGVyIGkgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIAlwYWRkaW5nLWJvdHRvbTogMnB4OwoJfQoKICAgICNvb29TZWFyY2hCb3ggaS5vb29mby1zZWFyY2ggewogICAgICAgIHRvcDogMTUycHg7CiAgICAgICAgbGVmdDogMjZweDsKICAgIH0KCiAgICAjb29vTWFpbkJveCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmOTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xCR0xpZ2h0KTsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKCAxMDB2aCAtIDI2NXB4ICk7CiAgICB9CgogICAgI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAvKiBzZWFyY2g/IC8gYWxsIC8gb3BlbiAvIGNsb3NlZCAvLyBwYWdlPyAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIDFmcjsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gYXV0bzsKICAgICAgICBncmlkLWNvbHVtbi1nYXA6IDI0cHg7CiAgICAgICAgZ3JpZC1yb3ctZ2FwOiA4cHg7CiAgICB9CgogICAgI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciA+IGRpdiB7CiAgICAgICAgZ3JpZC1yb3ctc3RhcnQ6IDI7CiAgICAgICAgZ3JpZC1yb3ctZW5kOiAzOwogICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAzOwogICAgICAgIGdyaWQtY29sdW1uLWVuZDogNDsKICAgIH0KCn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIAogICAgI29vb0hlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAxNDVweDsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxLjJweCBzb2xpZCAjZTVlNWViOwoKICAgICAgICAvKiB0ZXh0IC8gdGlja2V0IHNlYXJjaCAvIG5ldyB0aWNrZXQgYnV0dG9uICovCiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0byBhdXRvOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMTAwJTsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgfQoKICAgICNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMnB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMzJweDsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgLyogc2VhcmNoPyAvIGFsbCAvIG9wZW4gLyBjbG9zZWQgLyBwYWdlPyAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIGF1dG8gYXV0byAxZnI7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiA0MHB4OwogICAgfQoKICAgICNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiBkaXYgewogICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiA1OwogICAgICAgIGdyaWQtY29sdW1uLWVuZDogNjsKICAgIH0KCgkjb29vSGVhZGVyQnV0dG9uIGkgewogICAgCXBhZGRpbmctcmlnaHQ6IDhweDsKCX0KCgkjb29vSGVhZGVyIGkgewogICAgCXBhZGRpbmctYm90dG9tOiAzcHg7Cgl9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CgogICAgZGlzcGxheTogZ3JpZDsKfQoKI29vb0hlYWRlciBpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiAub29vbCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9Cgojb29vSVRTTUNvbmZpZ0l0ZW1MaXN0SGVhZGVyID4gLm9vb3IgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiBkaXYgPiBwIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctcmlnaHQ6IDRweDsKfQoKI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciA+IGRpdiA+IGEgewogICAgcGFkZGluZy1sZWZ0OiA0cHg7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgLlNlbGVjdGVkIHsKICAgIGNvbG9yOiAjMDAwMjNjOwogICAgY29sb3I6IHZhcigtLWNvbFRleHREYXJrKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUZpbHRlckRlbGV0ZSA+IGEgewogICAgZmxvYXQ6IHJpZ2h0Owp9Cgojb29vSVRTTUNvbmZpZ0l0ZW1GaWx0ZXJEZWxldGUgPiBhID4gaS5vb29mbyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IDJweDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7Cn0KCiNvb29DdXN0b21lck5vdGlmaWNhdGlvbnMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmOTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTGlnaHQpOwp9CgovKiBJRSAqLwpAbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGRpc3BsYXk6IC1tcy1ncmlkOwogICAgICAgIC8qIHRleHQgLyB0aWNrZXQgc2VhcmNoICovCiAgICAgICAgLW1zLWdyaWQtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgICAgICAtbXMtZ3JpZC1yb3dzOiAxMDAlOwogICAgfQoKICAgICNvb29IZWFkZXIgPiBoMSB7CiAgICAgICAgLW1zLWdyaWQtY29sdW1uOiAxOwogICAgICAgIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOwogICAgfQoKICAgICNvb29TZWFyY2hCb3ggewogICAgICAgIC1tcy1ncmlkLWNvbHVtbjogMjsKICAgICAgICAtbXMtZ3JpZC1yb3ctYWxpZ246IGNlbnRlcjsKICAgIH0KCiAgICAjb29vSGVhZGVyID4gYSB7CiAgICAgICAgLW1zLWdyaWQtY29sdW1uOiAzOwogICAgICAgIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIEBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkgewogICAgICAgICNvb29IZWFkZXIgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIH0KICAgIH0KCn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Public.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXI6aGFzKCsub29vSVRTTUNvbmZpZ0l0ZW1TZWFyY2gpIHsKICAgIHBhZGRpbmctYm90dG9tOiA2cHg7Cn0KCi5CYWNrbGluayA+IHNwYW4gewogICAgbWFyZ2luLWxlZnQ6NHB4Owp9CgouQmFja2xpbmtCb3ggLkJhY2tsaW5rID4gLm9vb2ZvLWFycm93X2wgewogICAgZm9udC1zaXplOjEzcHg7Cn0KCi5CYWNrbGluayA+IC5vb29mby1hcnJvd19sIHsKICAgIGZvbnQtc2l6ZToxMnB4Owp9CgouQmFja2xpbmtCb3ggewogICAgcGFkZGluZy10b3A6IDE4cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMTJweDsKICAgIGZvbnQtc2l6ZTogMTZweDsKfQoKCiAK</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Table.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFRhYmxlcwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyYWwgc3R1ZmYKICovCgovKgogKiBGRjMuNiBoYXMgYSBwcm9ibGVtIHdpdGggc2V0dGluZyB0aGUgcG9zaXRpb246cmVsYXRpdmUgb25seSBvbiA6aG92ZXIgc3RhdGUuCiAqIEFzIGEgd29ya2Fyb3VuZCBpdCBpcyBzZXQgYWx3YXlzIGFuZCBhIHNwZWNpYWwgei1pbmRleCBvbiBob3Zlci4KICovCi5UYWJsZVNtYWxsIHRib2R5IHRyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdHI6aG92ZXIgewogICAgei1pbmRleDogMTA7Cn0KCi5UYWJsZVNtYWxsIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyaWMgdGFibGUgZWxlbWVudHMKICovCi5UYWJsZVNtYWxsIHRkLAouVGFibGVTbWFsbCB0aCB7CiAgICBsaW5lLWhlaWdodDogMTVweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB3b3JkLWJyZWFrOiBrZWVwLWFsbDsKfQoKLlRhYmxlU21hbGwgdHI6aG92ZXIgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCnRhYmxlIHRyLk1hc3RlckFjdGlvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0RGVzY2VuZGluZyA+IGE6YWZ0ZXIgewogICAgY29udGVudDogIlwyNUJDIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMnB4OwogICAgdG9wOiAzcHg7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0QXNjZW5kaW5nID4gYTphZnRlciB7CiAgICBjb250ZW50OiAiXDI1QjIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAycHg7CiAgICB0b3A6IDNweDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uICBRdWV1ZU92ZXJ2aWV3VG90YWxzIERhdGFUYWJsZQogKi8KCi5Sb3cgdGQuUXVldWVPdmVydmlld1RvdGFscywKLlJvdyBhLlF1ZXVlT3ZlcnZpZXdUb3RhbHMgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgT3ZlcnZpZXcgU21hbGwgVmlldyBUYWJsZQogKi8KLlRhYmxlU21hbGwgewogICAgd2lkdGg6IDEwMCU7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBjb2xvcjogIzAwMDIzYzsKfQoKLlRhYmxlU21hbGwgLkNoZWNrYm94IHsKICAgIG1hcmdpbi1sZWZ0OiA3cHg7Cn0KCi5TdGF0aWNDb2x1bW4gewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIGxlZnQ6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKdGguQ2hlY2tib3gsCnRkLkNoZWNrYm94IHsKICAgIHdpZHRoOiAzMHB4Owp9Cgp0aC5GbGFncyB7CiAgICB3aWR0aDogMzRweDsKfQoKdGQuRmxhZ3MgewogICAgd2lkdGg6IDI5cHg7Cn0KCnRoLkRpcmVjdGlvbiwKdGQuRGlyZWN0aW9uIHsKICAgIHdpZHRoOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgp0aC5BdHRhY2htZW50LAp0ZC5BdHRhY2htZW50IHsKICAgIHdpZHRoOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGggewogICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGggYSwKLlRhYmxlU21hbGwgdGhlYWQgdGggc3BhbiB7CiAgICBwYWRkaW5nLXRvcDogMnB4OwogICAgcGFkZGluZy1ib3R0b206IDJweDsKfQoKLlJUTCAuVGFibGVTbWFsbCB0aGVhZCB0aCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGJvdHRvbTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgYSwKLlRhYmxlU21hbGwgdGhlYWQgc3BhbiB7CiAgICBtYXJnaW46IDAgMnB4IDFweCAxcHg7CiAgICBwYWRkaW5nOiAwIDEwcHg7CiAgICBjb2xvcjogIzRBNEE0QTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxNXB4OwogICAgaGVpZ2h0OiAxNXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLlJUTCAuVGFibGVTbWFsbCB0aGVhZCBhLAouUlRMIC5UYWJsZVNtYWxsIHRoZWFkIHNwYW4gewogICAgbWFyZ2luOiAwIDFweCAxcHggMnB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCBzcGFuIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9Cgp0aGVhZCAuU29ydEFzY2VuZGluZyBhLAp0aGVhZCAuaGVhZGVyU29ydFVwIGEsCnRoZWFkIC5Tb3J0RGVzY2VuZGluZyBhLAp0aGVhZCAuaGVhZGVyU29ydERvd24gYSB7CiAgICBjb2xvcjogIzAwMDIzYzsKfQoKLlRhYmxlU21hbGwgdGhlYWQgYSBzcGFuIHsKICAgIGhlaWdodDogMTVweDsKICAgIHdpZHRoOiAxNnB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIGEgc3Bhbi5GbGFnIHsKICAgIGhlaWdodDogOXB4OwogICAgd2lkdGg6IDE2cHg7CiAgICBtYXJnaW4tdG9wOiA2cHg7Cn0KCi5UYWJsZVNtYWxsIHRkIHsKICAgIHBhZGRpbmc6IDE2cHggMTBweCAwcHggMHB4Owp9CgouVGFibGVTbWFsbCB0ZC5Ob25UZXh0Q29udGVudCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwp9CgouVGFibGVTbWFsbCB0Ym9keSB0ci5BY3RpdmUgdGQgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRkIGEgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRyOmhvdmVyIHRkIGEsCi5UYWJsZVNtYWxsIHRyLkFjdGl2ZSB0ZCBhIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9CgouVGFibGVTbWFsbCB0ZCBhLkR5bmFtaWNGaWVsZExpbmsgewogICAgY29sb3I6ICNGRjc3MjI7Cn0KCi5UYWJsZVNtYWxsIHRyOmhvdmVyIHRkIGEuRHluYW1pY0ZpZWxkTGluaywKLlRhYmxlU21hbGwgdHIuQWN0aXZlIHRkIGEuRHluYW1pY0ZpZWxkTGluayB7CiAgICBjb2xvcjogI0ZGRkZGRjsKfQoKLlRhYmxlU21hbGwgdGJvZHkgLkZsYWdzIHsKICAgIGxpbmUtaGVpZ2h0OiAxMXB4OwogICAgcGFkZGluZy10b3A6IDJweDsKICAgIHBhZGRpbmctbGVmdDogNXB4Owp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBzcGFuLkRpcmVjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHdpZHRoOiAzMHB4Owp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBzcGFuLkRpcmVjdGlvbiBpIHsKICAgIGNvbG9yOiAjNTU1Owp9CgovKiBUT0RPIGNoYW5nZSBpY29uIGNsYXNzZXMgKi8KLlRhYmxlU21hbGwgdGJvZHkgdGQgc3Bhbi5EaXJlY3Rpb24uSW5jb21pbmcgLmZhLWxvbmctYXJyb3ctbGVmdCwKLlRhYmxlU21hbGwgdGJvZHkgdGQgc3Bhbi5EaXJlY3Rpb24uT3V0Z29pbmcgLmZhLWxvbmctYXJyb3ctcmlnaHQgewogICAgY29sb3I6ICMwMDAyM2M7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5UYWJsZVNtYWxsIHRib2R5IHRkLkF0dGFjaG1lbnQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBhLkF0dGFjaG1lbnQgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdGQgYS5BdHRhY2htZW50IGkgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRkIGgyIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgVGFibGUgQ29udGV4dCBTZXR0aW5ncwogKi8KLlRhYmxlQ29udGV4dFNldHRpbmdzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAyOHB4Owp9CgouVGFibGVDb250ZXh0U2V0dGluZ3MgYSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxOHB4OwogICAgaGVpZ2h0OiAxOXB4OwogICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb250ZXh0c2V0dGluZ3MucG5nKSBuby1yZXBlYXQgNXB4IDRweDsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4Owp9CgovKioKICogQHN1YnNlY3Rpb24gIEhhbmRsZSBmb3IgcmVzaXppbmcgdGFibGVzCiAqLwouSGFuZGxlIHsKICAgIHdpZHRoOiAxMDAlOwp9CgouSGFuZGxlIGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IGF1dG87CiAgICBoZWlnaHQ6IDE0cHg7CiAgICB3aWR0aDogNzlweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9pbWcvaGFuZGxlLnBuZykgbm8tcmVwZWF0OwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICBjdXJzb3I6IG5zLXJlc2l6ZTsKfQoKLkhhbmRsZS51aS1yZXNpemFibGUtcyB7CiAgICBjdXJzb3I6YXV0bzsKICAgIGhlaWdodDphdXRvICFpbXBvcnRhbnQ7CiAgICBsZWZ0OmF1dG87Cn0KCi5IYW5kbGUudWktcmVzaXphYmxlLWhhbmRsZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIHotaW5kZXg6IDE5Owp9CgovKioKICogQHN1YnNlY3Rpb24gIFRhYmxlIGhlYWRlcnMtZmlsdGVycwogKi8KIC5UYWJsZVNtYWxsIHRoZWFkIHNwYW4uR3JheSB7CiAgICBjb2xvcjogIzQ0NDsKfQoKLkNvbHVtbkZpbHRlciArIC5BSkFYTG9hZGVyIHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogM3B4IDBweCAwcHggMnB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogOTk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCnNlbGVjdC5Db2x1bW5GaWx0ZXIgewogICAgd2lkdGg6IDEwMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCAuU29ydEFzY2VuZGluZ0xhcmdlIGEsCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0RGVzY2VuZGluZ0xhcmdlIGEgewogICAgY29sb3I6ICMwMDAyM2M7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgLlNvcnREZXNjZW5kaW5nTGFyZ2UgPiBhOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJcMjVCQyI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI2ZmZjsKICAgIHotaW5kZXg6IDE7Cn0KCnRoZWFkIC5oZWFkZXJTb3J0VXAgPiBhOmJlZm9yZSwKdGhlYWQgLnRhYmxlc29ydGVyLWhlYWRlckRlc2MgPiBkaXYudGFibGVzb3J0ZXItaGVhZGVyLWlubmVyID4gYTpiZWZvcmUgewogICAgY29udGVudDogIlwyNUJDIjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogMnB4Owp9Cgp0aGVhZCAuaGVhZGVyU29ydERvd24gPiBhOmJlZm9yZSwKdGhlYWQgLnRhYmxlc29ydGVyLWhlYWRlckFzYyA+IGRpdi50YWJsZXNvcnRlci1oZWFkZXItaW5uZXIgPiBhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDI1QjIiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0QXNjZW5kaW5nTGFyZ2UgPiBhOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJcMjVCMiI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI2ZmZjsKICAgIHotaW5kZXg6IDE7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIGEsCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIHNwYW4uR3JheSB7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBsaW5lLWhlaWdodDogMTZweDsKICAgIHBhZGRpbmctbGVmdDogMHB4OwogICAgbWFyZ2luLWxlZnQ6IDBweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxN3B4OwogICAgaGVpZ2h0OiAxN3B4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgb3BhY2l0eTogMC41OwogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAwcHggLThweCA0cHggMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlciBpIHsKICAgIGNvbG9yOiAjNzc3Nzc3OwogICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXIgewogICAgbWFyZ2luOiAwcHggLThweCA0cHggMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlci5GaWx0ZXJBY3RpdmUgLkNvbHVtblNldHRpbmdzVHJpZ2dlciwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlcjpob3ZlciwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlci5BY3RpdmUgewogICAgb3BhY2l0eTogMS4wOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIuRmlsdGVyQWN0aXZlIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXIgaSwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlci5BY3RpdmUgaSB7CgogICAgY29sb3I6ICMzMzMzMzM7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXI6YWZ0ZXIgewogICAgY29udGVudDogIiI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI0JCQkJCQjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCAwIHJnYmEoNCwgMCwgNzEsIDAuMTYpOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgdmFyKC0tY29sU2hhZG93RGFyayk7CiAgICBkaXNwbGF5OiBub25lOwogICAgcGFkZGluZzogNHB4IDhweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwcHg7CiAgICB0b3A6IDJweDsKICAgIHdpZHRoOiAxODBweDsKICAgIHotaW5kZXg6IDEwMDsKfQoKLk1haW5Cb3guRGFzaGJvYXJkIC5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCB7CiAgICB0b3A6IC0xMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggc2VsZWN0IHsKICAgIG1hcmdpbi10b3A6IDBweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSBhIHsKICAgIGJhY2tncm91bmQ6ICNBQUFBQUE7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgY29sb3I6ICNGRkZGRkY7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGhlaWdodDogMTVweDsKICAgIGxpbmUtaGVpZ2h0OiAxM3B4OwogICAgbGVmdDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0b3A6IC0xcHg7CiAgICB3aWR0aDogMTBweDsKICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDVweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IGEuRGVsZXRlRmlsdGVyIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxMnB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggYS5EZWxldGVGaWx0ZXIuSGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCBzcGFuLlNlbGVjdGVkVmFsdWUgYTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjODg4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggaW5wdXRbdHlwZT0idGV4dCJdIHsKICAgIHdpZHRoOiAxMDBweDsKfQoKCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIHsKICAgIHBhZGRpbmc6IDBweCAyMHB4IDBweCAxcHg7Cn0KCi5UYWJsZVNtYWxsIC5Db2x1bW5GaWx0ZXIgewogICAgZm9udC1zaXplOiAxMnB4OwogICAgZmxvYXQ6IGxlZnQ7Cn0KCi8qIERlbGV0ZSBmaWx0ZXJzICovCi5Db250ZXh0U2V0dGluZ3MuUmVtb3ZlRmlsdGVycyBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouQ29udGV4dFNldHRpbmdzLlJlbW92ZUZpbHRlcnMgYSBpIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgovKioKICogQHN1YnNlY3Rpb24gIFBhY2thZ2UgbWFuYWdlcgogKi8KCnAuSW50cm9JbnN0YWxsIHsKICAgIHdpZHRoOiA3MCU7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiA3cHg7Cn0KCi5PVE9CT1ZlcmlmeUxvZ29CaWcgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIHdpZHRoOiAyMDBweDsKICAgIGhlaWdodDogNDVweDsKfQoKLk9UT0JPVmVyaWZ5TG9nbyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogM3B4IDBweCAwcHggM3B4OwogICAgd2lkdGg6IDc2cHg7CiAgICBoZWlnaHQ6IDE2cHg7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgSWNvbnMgaW4gdGFibGVzCiAqLwoKdGQgaSwKdGQgYSBpIHsKICAgIGNvbG9yOiAjOTk5OwogICAgbWFyZ2luLXJpZ2h0OiAzcHg7Cn0KCnRyOmhvdmVyIHRkIGksCnRyOmhvdmVyIHRkIGEgaSwKdGQgYTpob3ZlciBpIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/img/devices_black_24dp.svg" Permission="660" Encode="Base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQgN2MwLS41NS40NS0xIDEtMWgxNmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUg0Yy0xLjEgMC0yIC45LTIgMnYxMWgtLjVjLS44MyAwLTEuNS42Ny0xLjUgMS41Uy42NyAyMCAxLjUgMjBIMTR2LTNINFY3em0xOSAxaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3eiIvPjwvc3ZnPg==</File>
        <File Location="var/itsm/configitemclasses/IT-Servicemanagement-11_0_3.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IEFwcGxpYW5jZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4KICAgIFwgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIEFwcGxpYW5jZVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZToKICAgIElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BcHBsaWFuY2UtQXBwbGlhbmNlVHlwZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQ29udGFpbmVyIE1hbmFnZW1lbnQ6IENvbnRhaW5lciBNYW5hZ2VtZW50CiAgICAgICAgICBETlMtU2VydmVyOiBETlMtU2VydmVyCiAgICAgICAgICBGaXJld2FsbDogRmlyZXdhbGwKICAgICAgICAgIElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKTogSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pCiAgICAgICAgICBPVE9CTzogT1RPQk8KICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGhvbmUgLyBWb0lQOiBQaG9uZSAvIFZvSVAKICAgICAgICAgIFZQTjogVlBOCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQXBwbGlhbmNlIFR5cGUKICAgICAgTmFtZTogSVRTTUFwcGxpYW5jZS1BcHBsaWFuY2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQnVpbGRpbmcKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBTdWJzaWRpYXJ5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlCiAgICBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQKICAgIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiCiAgICBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbgogICAgXCBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvblxyXG4gICAgXHJcblNlY3Rpb25zOlxyXG4gIFN1YnNpZGlhcnk6XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOiBTdWJzaWRpYXJ5XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeVxyXG4KICAgIFwgQWRkcmVzczpcclxuICAgIFR5cGU6IFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5XHJcbgogICAgXCAgIFNlY3Rpb25OYW1lOiBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeSIKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5OgogICAgICBDSUNsYXNzOiBCdWlsZGluZwogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAwCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU3Vic2lkaWFyeQogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogQ2VydGlmaWNhdGUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bVNwYW46CiAgICAyXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIENlcnRpZmljYXRlXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUNlcnRpZmljYXRlLUNyZWF0aW9uRGF0ZToKICAgICAgQ0lDbGFzczogQ2VydGlmaWNhdGUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzAnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogQ3JlYXRpb24gRGF0ZQogICAgICBOYW1lOiBJVFNNQ2VydGlmaWNhdGUtQ3JlYXRpb25EYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2VydGlmaWNhdGUtRXhwaXJ5RGF0ZToKICAgICAgQ0lDbGFzczogQ2VydGlmaWNhdGUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRXhwaXJ5IERhdGUKICAgICAgTmFtZTogSVRTTUNlcnRpZmljYXRlLUV4cGlyeURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01DZXJ0aWZpY2F0ZS1UeXBlOgogICAgICBDSUNsYXNzOiBDZXJ0aWZpY2F0ZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENsaWVudCBDZXJ0aWZpY2F0ZXM6IENsaWVudCBDZXJ0aWZpY2F0ZXMKICAgICAgICAgIENvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXM6IENvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMKICAgICAgICAgIERvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzOiBEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcwogICAgICAgICAgRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKTogRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTU0wvVExTIENlcnRpZmljYXRlczogU1NML1RMUyBDZXJ0aWZpY2F0ZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU01DZXJ0aWZpY2F0ZS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBDbGllbnQKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBIYXJkd2FyZVxyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlCiAgICBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogU29mdHdhcmVcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDbGllbnQgU29mdHdhcmU6OkNsaWVudCBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOgogICAgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IERldGFpbHNcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6CiAgICAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrCiAgICBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENsaWVudAogICAgU29mdHdhcmU6OkNsaWVudCBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZSBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDVcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiA2XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOgogICAgMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyCiAgICBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlCiAgICBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZQogICAgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcwogICAgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTQogICAgR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4KICAgIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbCBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIENsaWVudFxyXG4gIElUU00gTW9kZWw6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQKICAgIGluOlxyXG4gICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBPcGVyYXRpbmcgU3lzdGVtOlxyXG4gICAgTmFtZTogSVRTTQogICAgT3BlcmF0aW5nIFN5c3RlbVxyXG4gIElUU00gQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUKICAgIFwgXHJcbiAgSVRTTSBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuCiAgICBcIElUU00gR3JhcGhpY3MgQ2FyZDpcclxuICAgIE5hbWU6IElUU00gR3JhcGhpY3MgQ2FyZFxyXG4gIElUU00gU3RvcmFnZTpcclxuICAgIE5hbWU6CiAgICBJVFNNIFN0b3JhZ2VcclxuICBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbgogICAgXCAgIFxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBMYXB0b3A6IExhcHRvcAogICAgICAgICAgTW9iaWxlRW1iZWRkZWQ6IE1vYmlsZS9FbWJlZGRlZAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTZXJ2ZXI6IFNlcnZlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENQVSBDbGFzcwogICAgICBOYW1lOiBDUFUtQ1BVQ2xhc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1DbG9ja3NwZWVkOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxNkdIejogMS42IEdIegogICAgICAgICAgMTdHSHo6IDEuNyBHSHoKICAgICAgICAgIDE4R0h6OiAxLjggR0h6CiAgICAgICAgICAxOUdIejogMS45IEdIegogICAgICAgICAgMjBHSHo6IDIuMCBHSHoKICAgICAgICAgIDIxR0h6OiAyLjEgR0h6CiAgICAgICAgICAyMkdIejogMi4yIEdIegogICAgICAgICAgMjNHSHo6IDIuMyBHSHoKICAgICAgICAgIDI0R0h6OiAyLjQgR0h6CiAgICAgICAgICAyNUdIejogMi41IEdIegogICAgICAgICAgMjZHSHo6IDIuNiBHSHoKICAgICAgICAgIDI3R0h6OiAyLjcgR0h6CiAgICAgICAgICAyOEdIejogMi44IEdIegogICAgICAgICAgMjlHSHo6IDIuOSBHSHoKICAgICAgICAgIDMwR0h6OiAzLjAgR0h6CiAgICAgICAgICAzMUdIejogMy4xIEdIegogICAgICAgICAgMzJHSHo6IDMuMiBHSHoKICAgICAgICAgIDMzR0h6OiAzLjMgR0h6CiAgICAgICAgICAzNEdIejogMy40IEdIegogICAgICAgICAgMzVHSHo6IDMuNSBHSHoKICAgICAgICAgIDM2R0h6OiAzLjYgR0h6CiAgICAgICAgICAzN0dIejogMy43IEdIegogICAgICAgICAgMzhHSHo6IDMuOCBHSHoKICAgICAgICAgIDM5R0h6OiAzLjkgR0h6CiAgICAgICAgICA0MEdIejogNC4wIEdIegogICAgICAgICAgNDFHSHo6IDQuMSBHSHoKICAgICAgICAgIDQyR0h6OiA0LjIgR0h6CiAgICAgICAgICA0M0dIejogNC4zIEdIegogICAgICAgICAgNDRHSHo6IDQuNCBHSHoKICAgICAgICAgIDQ1R0h6OiA0LjUgR0h6CiAgICAgICAgICA0NkdIejogNC42IEdIegogICAgICAgICAgNDdHSHo6IDQuNyBHSHoKICAgICAgICAgIDQ4R0h6OiA0LjggR0h6CiAgICAgICAgICA0OUdIejogNC45IEdIegogICAgICAgICAgNTBHSHo6IDUuMCBHSHoKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENsb2Nrc3BlZWQKICAgICAgTmFtZTogQ1BVLUNsb2Nrc3BlZWQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1OdW1iZXJPZkNQVToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGh5c2ljYWwgQ29yZXMKICAgICAgTmFtZTogQ1BVLVBoeXNpY2FsQ29yZXMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1Tb2NrZXRUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTTQ6IEFNNAogICAgICAgICAgQkdBOiBCR0EKICAgICAgICAgIExHQTExNTE6IExHQTExNTEKICAgICAgICAgIExHQTEyMDA6IExHQTEyMDAKICAgICAgICAgIExHQTEzNjY6IExHQTEzNjYKICAgICAgICAgIExHQTE3MDA6IExHQTE3MDAKICAgICAgICAgIExHQTIwMTE6IExHQTIwMTEKICAgICAgICAgIExHQTIwMTEzOiBMR0EyMDExLTMKICAgICAgICAgIExHQTIwNjY6IExHQTIwNjYKICAgICAgICAgIExHQTc3NTogTEdBNzc1CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBHQTogUEdBCiAgICAgICAgICBTb2NrZXQzNzA6IFNvY2tldCAzNzAKICAgICAgICAgIFNvY2tldDQ3ODogU29ja2V0IDQ3OAogICAgICAgICAgVFI0OiBUUjQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBTb2NrZXQgVHlwZQogICAgICBOYW1lOiBDUFUtU29ja2V0VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVRocmVhZHM6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb09TOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2xpZW50LUNsaWVudENhdGVnb3J5OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBOb3RlYm9vazogTm90ZWJvb2sKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVGhpbkNsaWVudDogVGhpbiBDbGllbnQKICAgICAgICAgIFZpcnR1YWxDbGllbnQ6IFZpcnR1YWwgQ2xpZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xpZW50IGNhdGVnb3J5CiAgICAgIE5hbWU6IElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01DbGllbnQtRmlybXdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmlybXdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudC1GaXJtd2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBDbGllbnQgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogQ2xpZW50IFNvZnR3YXJlCiAgICAgIE5hbWU6IElUU01DbGllbnRTb2Z0d2FyZS1SZWZlcmVuY2VUb0NsaWVudFNvZnR3YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUJ1c0ludGVyZmFjZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQUdQOiBBR1AKICAgICAgICAgIEVJU0E6IEVJU0EKICAgICAgICAgIEZpcmVXaXJlSUVFRTEzOTQ6IEZpcmVXaXJlIChJRUVFIDEzOTQpCiAgICAgICAgICBJU0E6IElTQQogICAgICAgICAgTFBDTG93UGluQ291bnQ6IExQQyAoTG93IFBpbiBDb3VudCkKICAgICAgICAgIE1DQU1pY3JvQ2hhbm5lbEFyY2hpdGVjdHVyZTogTUNBIChNaWNybyBDaGFubmVsIEFyY2hpdGVjdHVyZSkKICAgICAgICAgIE51QnVzOiBOdUJ1cwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQQ0k6IFBDSQogICAgICAgICAgUENJRXhwcmVzc1BDSWU6IFBDSSBFeHByZXNzIChQQ0llKQogICAgICAgICAgUENJWDogUENJLVgKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFVTQlVuaXZlcnNhbFNlcmlhbEJ1czogVVNCIChVbml2ZXJzYWwgU2VyaWFsIEJ1cykKICAgICAgICAgIFZFU0FMb2NhbEJ1c1ZMQjogVkVTQSBMb2NhbCBCdXMgKFZMQikKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBCdXMgSW50ZXJmYWNlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUNvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNRFJhZGVvbkhENjc1MDogQU1EIFJhZGVvbiBIRCA2NzUwCiAgICAgICAgICBBTURSYWRlb25IRDY3NzA6IEFNRCBSYWRlb24gSEQgNjc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzkwOiBBTUQgUmFkZW9uIEhEIDY3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENjg1MDogQU1EIFJhZGVvbiBIRCA2ODUwCiAgICAgICAgICBBTURSYWRlb25IRDY4NzA6IEFNRCBSYWRlb24gSEQgNjg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTUwOiBBTUQgUmFkZW9uIEhEIDY5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjk3MDogQU1EIFJhZGVvbiBIRCA2OTcwCiAgICAgICAgICBBTURSYWRlb25IRDY5OTA6IEFNRCBSYWRlb24gSEQgNjk5MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzUwOiBBTUQgUmFkZW9uIEhEIDc3NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc3MDogQU1EIFJhZGVvbiBIRCA3NzcwCiAgICAgICAgICBBTURSYWRlb25IRDc3OTA6IEFNRCBSYWRlb24gSEQgNzc5MAogICAgICAgICAgQU1EUmFkZW9uSEQ3ODUwOiBBTUQgUmFkZW9uIEhEIDc4NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg3MDogQU1EIFJhZGVvbiBIRCA3ODcwCiAgICAgICAgICBBTURSYWRlb25IRDc5NTA6IEFNRCBSYWRlb24gSEQgNzk1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTcwOiBBTUQgUmFkZW9uIEhEIDc5NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzk5MDogQU1EIFJhZGVvbiBIRCA3OTkwCiAgICAgICAgICBBTURSYWRlb25Qcm9EdW86IEFNRCBSYWRlb24gUHJvIER1bwogICAgICAgICAgQU1EUmFkZW9uUHJvU1NHOiBBTUQgUmFkZW9uIFBybyBTU0cKICAgICAgICAgIEFNRFJhZGVvblByb1dYMjEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMjEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1gzMTAwOiBBTUQgUmFkZW9uIFBybyBXWCAzMTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDQxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDQxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNTEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNTEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g3MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA3MTAwCiAgICAgICAgICBBTURSYWRlb25SNTIxMDogQU1EIFJhZGVvbiBSNSAyMTAKICAgICAgICAgIEFNRFJhZGVvblI1MjIwOiBBTUQgUmFkZW9uIFI1IDIyMAogICAgICAgICAgQU1EUmFkZW9uUjUyMzA6IEFNRCBSYWRlb24gUjUgMjMwCiAgICAgICAgICBBTURSYWRlb25SNTMyMDogQU1EIFJhZGVvbiBSNSAzMjAKICAgICAgICAgIEFNRFJhZGVvblI1MzMwOiBBTUQgUmFkZW9uIFI1IDMzMAogICAgICAgICAgQU1EUmFkZW9uUjUzNDA6IEFNRCBSYWRlb24gUjUgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzI0MDogQU1EIFJhZGVvbiBSNyAyNDAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwOiBBTUQgUmFkZW9uIFI3IDI1MAogICAgICAgICAgQU1EUmFkZW9uUjcyNTBYOiBBTUQgUmFkZW9uIFI3IDI1MFgKICAgICAgICAgIEFNRFJhZGVvblI3MjYwWDogQU1EIFJhZGVvbiBSNyAyNjBYCiAgICAgICAgICBBTURSYWRlb25SNzM0MDogQU1EIFJhZGVvbiBSNyAzNDAKICAgICAgICAgIEFNRFJhZGVvblI3MzUwOiBBTUQgUmFkZW9uIFI3IDM1MAogICAgICAgICAgQU1EUmFkZW9uUjczNjA6IEFNRCBSYWRlb24gUjcgMzYwCiAgICAgICAgICBBTURSYWRlb25SNzM3MDogQU1EIFJhZGVvbiBSNyAzNzAKICAgICAgICAgIEFNRFJhZGVvblI5Mjg1OiBBTUQgUmFkZW9uIFI5IDI4NQogICAgICAgICAgQU1EUmFkZW9uUjkyOTA6IEFNRCBSYWRlb24gUjkgMjkwCiAgICAgICAgICBBTURSYWRlb25SOTI5MFg6IEFNRCBSYWRlb24gUjkgMjkwWAogICAgICAgICAgQU1EUmFkZW9uUjkyOTVYMjogQU1EIFJhZGVvbiBSOSAyOTVYMgogICAgICAgICAgQU1EUmFkZW9uUjkzODA6IEFNRCBSYWRlb24gUjkgMzgwCiAgICAgICAgICBBTURSYWRlb25SOTM4MFg6IEFNRCBSYWRlb24gUjkgMzgwWAogICAgICAgICAgQU1EUmFkZW9uUjkzOTA6IEFNRCBSYWRlb24gUjkgMzkwCiAgICAgICAgICBBTURSYWRlb25SOTM5MFg6IEFNRCBSYWRlb24gUjkgMzkwWAogICAgICAgICAgQU1EUmFkZW9uUjlGdXJ5WDogQU1EIFJhZGVvbiBSOSBGdXJ5IFgKICAgICAgICAgIEFNRFJhZGVvblI5TmFubzogQU1EIFJhZGVvbiBSOSBOYW5vCiAgICAgICAgICBBTURSYWRlb25SWDU0MDBYVDogQU1EIFJhZGVvbiBSWCA1NDAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU1MDA6IEFNRCBSYWRlb24gUlggNTUwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwWFQ6IEFNRCBSYWRlb24gUlggNTUwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NjAwOiBBTUQgUmFkZW9uIFJYIDU2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMFhUOiBBTUQgUmFkZW9uIFJYIDU2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTcwOiBBTUQgUmFkZW9uIFJYIDU3MAogICAgICAgICAgQU1EUmFkZW9uUlg1NzAwOiBBTUQgUmFkZW9uIFJYIDU3MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMFhUOiBBTUQgUmFkZW9uIFJYIDU3MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTgwOiBBTUQgUmFkZW9uIFJYIDU4MAogICAgICAgICAgQU1EUmFkZW9uUlg1OTA6IEFNRCBSYWRlb24gUlggNTkwCiAgICAgICAgICBBTURSYWRlb25SWDY2MDA6IEFNRCBSYWRlb24gUlggNjYwMAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwWFQ6IEFNRCBSYWRlb24gUlggNjYwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2NzAwOiBBTUQgUmFkZW9uIFJYIDY3MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMFhUOiBBTUQgUmFkZW9uIFJYIDY3MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjgwMFhUOiBBTUQgUmFkZW9uIFJYIDY4MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjkwMFhUOiBBTUQgUmFkZW9uIFJYIDY5MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYVmVnYTU2OiBBTUQgUmFkZW9uIFJYIFZlZ2EgNTYKICAgICAgICAgIEFNRFJhZGVvblJYVmVnYTY0OiBBTUQgUmFkZW9uIFJYIFZlZ2EgNjQKICAgICAgICAgIE5WSURJQUdlRm9yY2UyMTA6IE5WSURJQSBHZUZvcmNlIDIxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUMTAzMDogTlZJRElBIEdlRm9yY2UgR1QgMTAzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTEwOiBOVklESUEgR2VGb3JjZSBHVCA1MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUyMDogTlZJRElBIEdlRm9yY2UgR1QgNTIwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MzA6IE5WSURJQSBHZUZvcmNlIEdUIDUzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTQ1OiBOVklESUEgR2VGb3JjZSBHVCA1NDUKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYxMDogTlZJRElBIEdlRm9yY2UgR1QgNjEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MjA6IE5WSURJQSBHZUZvcmNlIEdUIDYyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjMwOiBOVklESUEgR2VGb3JjZSBHVCA2MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDY0MDogTlZJRElBIEdlRm9yY2UgR1QgNjQwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q3MTA6IE5WSURJQSBHZUZvcmNlIEdUIDcxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzMwOiBOVklESUEgR2VGb3JjZSBHVCA3MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwOiBOVklESUEgR2VGb3JjZSBHVFggMTA1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNTBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDYwOiBOVklESUEgR2VGb3JjZSBHVFggMTA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNzA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY1MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwOiBOVklESUEgR2VGb3JjZSBHVFggMTY2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NDU6IE5WSURJQSBHZUZvcmNlIEdUWCA3NDUKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NTA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NTBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc2MDogTlZJRElBIEdlRm9yY2UgR1RYIDc2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc2MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzcwOiBOVklESUEgR2VGb3JjZSBHVFggNzcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzgwOiBOVklESUEgR2VGb3JjZSBHVFggNzgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5NTA6IE5WSURJQSBHZUZvcmNlIEdUWCA5NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA5NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5NzA6IE5WSURJQSBHZUZvcmNlIEdUWCA5NzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5ODA6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg5ODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDk4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZU1YMTUwOiBOVklESUEgR2VGb3JjZSBNWDE1MAogICAgICAgICAgTlZJRElBR2VGb3JjZU1YMzUwOiBOVklESUEgR2VGb3JjZSBNWDM1MAogICAgICAgICAgTlZJRElBR2VGb3JjZU1YNDUwOiBOVklESUEgR2VGb3JjZSBNWDQ1MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNjA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDYwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA3MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwOiBOVklESUEgR2VGb3JjZSBSVFggMjA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwODBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwOiBOVklESUEgR2VGb3JjZSBSVFggMzA1MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNTBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDYwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA3MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDgwOiBOVklESUEgR2VGb3JjZSBSVFggMzA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwOTA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDkwCiAgICAgICAgICBOVklESUFOVlMzMDA6IE5WSURJQSBOVlMgMzAwCiAgICAgICAgICBOVklESUFOVlMzMTA6IE5WSURJQSBOVlMgMzEwCiAgICAgICAgICBOVklESUFOVlM1MTA6IE5WSURJQSBOVlMgNTEwCiAgICAgICAgICBOVklESUFRdWFkcm8yMDAwOiBOVklESUEgUXVhZHJvIDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRybzYwMDogTlZJRElBIFF1YWRybyA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb0sxMjAwOiBOVklESUEgUXVhZHJvIEsxMjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMjIwMDogTlZJRElBIFF1YWRybyBLMjIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQwMDA6IE5WSURJQSBRdWFkcm8gSzQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjA6IE5WSURJQSBRdWFkcm8gSzQyMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQyMDA6IE5WSURJQSBRdWFkcm8gSzQyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s1MjAwOiBOVklESUEgUXVhZHJvIEs1MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjAwOiBOVklESUEgUXVhZHJvIEs2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MTBNOiBOVklESUEgUXVhZHJvIEs2MTBNCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwOiBOVklESUEgUXVhZHJvIEs2MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MjBNOiBOVklESUEgUXVhZHJvIEs2MjBNCiAgICAgICAgICBOVklESUFRdWFkcm9NMTAwME06IE5WSURJQSBRdWFkcm8gTTEwMDBNCiAgICAgICAgICBOVklESUFRdWFkcm9NMjAwMDogTlZJRElBIFF1YWRybyBNMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTQwMDA6IE5WSURJQSBRdWFkcm8gTTQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb001MDAwOiBOVklESUEgUXVhZHJvIE01MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNjAwMDogTlZJRElBIFF1YWRybyBNNjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwME06IE5WSURJQSBRdWFkcm8gTTYwME0KICAgICAgICAgIE5WSURJQVF1YWRyb1AxMDAwOiBOVklESUEgUXVhZHJvIFAxMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QMjAwMDogTlZJRElBIFF1YWRybyBQMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDogTlZJRElBIFF1YWRybyBQNDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNDAwMDogTlZJRElBIFF1YWRybyBQNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDUwMDA6IE5WSURJQSBRdWFkcm8gUDUwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDA6IE5WSURJQSBRdWFkcm8gUDYwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYwMDA6IE5WSURJQSBRdWFkcm8gUDYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MjA6IE5WSURJQSBRdWFkcm8gUDYyMAogICAgICAgICAgTlZJRElBVGVzbGFLODA6IE5WSURJQSBUZXNsYSBLODAKICAgICAgICAgIE5WSURJQVRlc2xhUDEwMDogTlZJRElBIFRlc2xhIFAxMDAKICAgICAgICAgIE5WSURJQVRlc2xhVDQ6IE5WSURJQSBUZXNsYSBUNAogICAgICAgICAgTlZJRElBVGVzbGFWMTAwOiBOVklESUEgVGVzbGEgVjEwMAogICAgICAgICAgTlZJRElBVGl0YW5SVFg6IE5WSURJQSBUaXRhbiBSVFgKICAgICAgICAgIE5WSURJQVRpdGFuVjogTlZJRElBIFRpdGFuIFYKICAgICAgICAgIE5WSURJQVRpdGFuWFBhc2NhbDogTlZJRElBIFRpdGFuIFggKFBhc2NhbCkKICAgICAgICAgIE5WSURJQVRpdGFuWHA6IE5WSURJQSBUaXRhbiBYcAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogR3JhcGhpY3MgY2FyZAogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUdyYXBoaWNzQ2FyZFZlbmRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6IDEgR0IKICAgICAgICAgICcxMSc6IDExIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzInOiAyIEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0JzogNCBHQgogICAgICAgICAgJzQ4JzogNDggR0IKICAgICAgICAgICc1MTInOiA1MTIgR0IKICAgICAgICAgICc2NCc6IDY0IEdCCiAgICAgICAgICAnOCc6IDggR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERWSTogRFZJCiAgICAgICAgICBEaXNwbGF5UG9ydDogRGlzcGxheVBvcnQKICAgICAgICAgIEhETUk6IEhETUkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVkdBOiBWR0EKICAgICAgICAgIFZpcnR1YWxMaW5rOiBWaXJ0dWFsTGluawogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE91dHB1dHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLVRvdGFsUkFNR0I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBFeHByZXNzaW9uOiAiWyUgQ291bnQgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50XCIgJV1bJSBDYXBhY2l0eQogICAgICAgICAgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemVcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50CiAgICAgICAgICAqIERhdGEuJENhcGFjaXR5ICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBOYW1lVXBkYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkNyZWF0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLVRvdGFsUkFNR0IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU01NZW1vcnktQ2FwYWNpdHk6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEwMCc6ICcxMDAnCiAgICAgICAgICAnMTMzJzogJzEzMycKICAgICAgICAgICcxNjYnOiAnMTY2JwogICAgICAgICAgJzIwMCc6ICcyMDAnCiAgICAgICAgICAnMjMzJzogJzIzMycKICAgICAgICAgICcyNjYnOiAnMjY2JwogICAgICAgICAgJzMwMCc6ICczMDAnCiAgICAgICAgICAnMzMzJzogJzMzMycKICAgICAgICAgICczNjYnOiAnMzY2JwogICAgICAgICAgJzQwMCc6ICc0MDAnCiAgICAgICAgICAnNDUwJzogJzQ1MCcKICAgICAgICAgICc1MDAnOiAnNTAwJwogICAgICAgICAgJzUyNSc6ICc1MjUnCiAgICAgICAgICAnNjAwJzogJzYwMCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENsb2NrcmF0ZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNsb2NrUmF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1Db3VudDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBSQU0gbW9kdWxlcwogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LVRvdGFsUkFNR0I6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEREUjogRERSCiAgICAgICAgICBERFIyOiBERFIyCiAgICAgICAgICBERFIzOiBERFIzCiAgICAgICAgICBERFI0OiBERFI0CiAgICAgICAgICBERFI1OiBERFI1CiAgICAgICAgICBTRFJBTTogU0RSQU0KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU01NZW1vcnktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlLVN0b3JhZ2U6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBIRERIYXJkRGlza0RyaXZlOiBIREQgKEhhcmQgRGlzayBEcml2ZSkKICAgICAgICAgICAgICAgIE5WTWVTU0ROb25Wb2xhdGlsZU1lbW9yeUV4cHJlc3NTb2xpZFN0YXRlRHJpdmU6IE5WTWUgU1NEIChOb24tVm9sYXRpbGUKICAgICAgICAgICAgICAgICAgTWVtb3J5IEV4cHJlc3MgU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFNTRFNvbGlkU3RhdGVEcml2ZTogU1NEIChTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIFNTSERTb2xpZFN0YXRlSHlicmlkRHJpdmU6IFNTSEQgKFNvbGlkIFN0YXRlIEh5YnJpZCBEcml2ZSkKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFR5cGUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNb2RlbAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFNlcmlhbE51bWJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlCiAgICAgIE5hbWU6IElUU01TdG9yYWdlLVN0b3JhZ2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIFVzZWQgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTW91bnQgUG9pbnQKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UgUGFydGl0aW9uCiAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBTb2Z0d2FyZQogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IENsaWVudCAodmlydHVhbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjoKICAgIDJcclxuXHJcbiAgLSBOYW1lOiBIYXJkd2FyZVxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogU29mdHdhcmVcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcKICAgIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDbGllbnQgU29mdHdhcmU6OkNsaWVudCBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG4gIC0gTmFtZTogRGV0YWlsc1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIENsaWVudCBTb2Z0d2FyZTo6Q2xpZW50IFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OiA2XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA3XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4KICAgIFwgICAgICAgUm93U3BhbjogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgQ2xpZW50XHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuCiAgICBcIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIKICAgIExvY2F0ZWQgaW5cclxuICBJVFNNIE9wZXJhdGluZyBTeXN0ZW06XHJcbiAgICBOYW1lOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW1cclxuCiAgICBcIElUU00gQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUgIFxyXG4gIElUU00gQ1BVOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNIEdyYXBoaWNzCiAgICBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlXHJcbgogICAgXCBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbiAgICBcclxuICBJVFNNIE5ldHdvcmsKICAgIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4KICAgIFwgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOgogICAgQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIE5vdGVib29rOiBOb3RlYm9vawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaGluQ2xpZW50OiBUaGluIENsaWVudAogICAgICAgICAgVmlydHVhbENsaWVudDogVmlydHVhbCBDbGllbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbGllbnQgY2F0ZWdvcnkKICAgICAgTmFtZTogSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1GaXJtd2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmlybXdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudC1GaXJtd2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQ2xpZW50IFNvZnR3YXJlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IENsaWVudCBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBIRERIYXJkRGlza0RyaXZlOiBIREQgKEhhcmQgRGlzayBEcml2ZSkKICAgICAgICAgICAgICAgIE5WTWVTU0ROb25Wb2xhdGlsZU1lbW9yeUV4cHJlc3NTb2xpZFN0YXRlRHJpdmU6IE5WTWUgU1NEIChOb24tVm9sYXRpbGUKICAgICAgICAgICAgICAgICAgTWVtb3J5IEV4cHJlc3MgU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFNTRFNvbGlkU3RhdGVEcml2ZTogU1NEIChTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIFNTSERTb2xpZFN0YXRlSHlicmlkRHJpdmU6IFNTSEQgKFNvbGlkIFN0YXRlIEh5YnJpZCBEcml2ZSkKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFR5cGUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgQURBVEE6IEFEQVRBCiAgICAgICAgICAgICAgICBBREFUQVRlY2hub2xvZ3k6IEFEQVRBIFRlY2hub2xvZ3kKICAgICAgICAgICAgICAgIEFwYWNlcjogQXBhY2VyCiAgICAgICAgICAgICAgICBCdWZmYWxvOiBCdWZmYWxvCiAgICAgICAgICAgICAgICBDb3JzYWlyOiBDb3JzYWlyCiAgICAgICAgICAgICAgICBDcnVjaWFsTWljcm9uOiBDcnVjaWFsIChNaWNyb24pCiAgICAgICAgICAgICAgICBHVGVjaG5vbG9neVdlc3Rlcm5EaWdpdGFsOiBHLVRlY2hub2xvZ3kgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhHU1RXZXN0ZXJuRGlnaXRhbDogSEdTVCAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSGl0YWNoaTogSGl0YWNoaQogICAgICAgICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICAgICAgICBLaW5nc3RvbjogS2luZ3N0b24KICAgICAgICAgICAgICAgIEtpbmdzdG9uRGlnaXRhbDogS2luZ3N0b24gRGlnaXRhbAogICAgICAgICAgICAgICAgTGFDaWVTZWFnYXRlOiBMYUNpZSAoU2VhZ2F0ZSkKICAgICAgICAgICAgICAgIExleGFyOiBMZXhhcgogICAgICAgICAgICAgICAgTWF4dG9yOiBNYXh0b3IKICAgICAgICAgICAgICAgIE9DWlRvc2hpYmE6IE9DWiAoVG9zaGliYSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgUE5ZOiBQTlkKICAgICAgICAgICAgICAgIFBsZXh0b3I6IFBsZXh0b3IKICAgICAgICAgICAgICAgIFNLaHluaXg6IFNLIGh5bml4CiAgICAgICAgICAgICAgICBTYW1zdW5nOiBTYW1zdW5nCiAgICAgICAgICAgICAgICBTYW1zdW5nU2VtaWNvbmR1Y3RvcjogU2Ftc3VuZyBTZW1pY29uZHVjdG9yCiAgICAgICAgICAgICAgICBTYW5EaXNrV2VzdGVybkRpZ2l0YWw6IFNhbkRpc2sgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIFNlYWdhdGU6IFNlYWdhdGUKICAgICAgICAgICAgICAgIFNpbGljb25Qb3dlcjogU2lsaWNvbiBQb3dlcgogICAgICAgICAgICAgICAgU29ueTogU29ueQogICAgICAgICAgICAgICAgU3VwZXJUYWxlbnQ6IFN1cGVyIFRhbGVudAogICAgICAgICAgICAgICAgVGVhbUdyb3VwOiBUZWFtIEdyb3VwCiAgICAgICAgICAgICAgICBUb3NoaWJhOiBUb3NoaWJhCiAgICAgICAgICAgICAgICBUcmFuc2NlbmQ6IFRyYW5zY2VuZAogICAgICAgICAgICAgICAgV2VzdGVybkRpZ2l0YWw6IFdlc3Rlcm4gRGlnaXRhbAogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNb2RlbAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBGcmVlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIFVzZWQgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBDbGllbnQgU29mdHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUKICAgIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00KICAgIExpY2Vuc2VcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBDbHVzdGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZAogICAgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTQogICAgR0YgQ2x1c3RlclxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb1NlcnZlcjoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlcgogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBBY2NvdW50aW5nOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgQWNjb3VudGluZyBJbmZvcm1hdGlvblxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyXHJcbiAgICAtIERGOgogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZVxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlXHJcbiAgICAtIERGOgogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlXHJcbiAgICAtIERGOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdFxyXG4gICAgLSBERjoKICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyXHJcbiAgICAtIERGOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyXHJcbiAgICAtCiAgICBERjogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzXHJcbiAgICAtIERGOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0c1xyXG4KICAgIFwgICAtIERGOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQiCiAgUm9sZU5hbWU6IENNREIgQWNjb3VudGluZwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQmFja2xpbmtzOlxyXG4gICAgVHlwZTogQ29uZmlnSXRlbUxpbmtzXHJcbiAgICBIZWFkZXI6CiAgICBCYWNrbGlua3NcclxuICAgIExpbmtlZEFzOiBTb3VyY2UiCiAgUm9sZU5hbWU6IENNREIgQmFja2xpbmtzCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBEZXNjcmlwdGlvbjpcclxuICAgIFR5cGU6IERlc2NyaXB0aW9uXHJcbiAgICBIZWFkZXI6CiAgICBEZXNjcmlwdGlvbiIKICBSb2xlTmFtZTogQ01EQiBEZXNjcmlwdGlvbgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgU3Vic2lkaWFyeTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOgogICAgU3Vic2lkaWFyeVxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnlcclxuICBBZGRyZXNzOlxyXG4gICAgVHlwZToKICAgIFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5XHJcbiAgICBTZWN0aW9uTmFtZToKICAgIEFkZHJlc3NcclxuICAgIEZpZWxkTGlzdFByZTpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5IgogIFJvbGVOYW1lOiBDTURCIEdGIEJ1aWxkaW5nCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBMb2NhdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOgogICAgTG9jYXRpb25cclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvblxyXG4gIEFkZHJlc3M6XHJcbiAgICBUeXBlOgogICAgUmVmZXJlbmNlZFNlY3Rpb25cclxuICAgIFJlZmVyZW5jZUZpZWxkOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uXHJcbiAgICBTZWN0aW9uTmFtZToKICAgIEFkZHJlc3MiCiAgUm9sZU5hbWU6IENNREIgTG9jYXRlZCBpbgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIENvbnRyYWN0CiAgICBOYW1lOiBDb250cmFjdAogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtCiAgICBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcblJvbGVzOgogICAgXHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuCiAgICBcICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgQ29udHJhY3RcclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCCiAgICBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbgogICAgXCAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRyYWN0LVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzAnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIGZyb20KICAgICAgTmFtZTogQ29udHJhY3QtUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udHJhY3QtUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzAnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IENvbnRyYWN0LVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250cmFjdC1UeXBlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICdDb25zdWx0aW5nIEFncmVlbWVudDonOiBDb25zdWx0aW5nIEFncmVlbWVudAogICAgICAgICAgRW1wbG95bWVudCBDb250cmFjdDogRW1wbG95bWVudCBDb250cmFjdAogICAgICAgICAgRnJhbmNoaXNlIEFncmVlbWVudDogRnJhbmNoaXNlIEFncmVlbWVudAogICAgICAgICAgTGVhc2UgQWdyZWVtZW50OiBMZWFzZSBBZ3JlZW1lbnQKICAgICAgICAgIExpY2Vuc2UgQWdyZWVtZW50OiBMaWNlbnNlIEFncmVlbWVudAogICAgICAgICAgTG9hbiBBZ3JlZW1lbnQ6IExvYW4gQWdyZWVtZW50CiAgICAgICAgICBOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSk6IE5vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQ6IFBhcnRuZXJzaGlwIEFncmVlbWVudAogICAgICAgICAgU2FsZXMgQ29udHJhY3Q6IFNhbGVzIENvbnRyYWN0CiAgICAgICAgICBTZXJ2aWNlIEFncmVlbWVudDogU2VydmljZSBBZ3JlZW1lbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDb250cmFjdCBUeXBlCiAgICAgIE5hbWU6IENvbnRyYWN0LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IENvdW50cnkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAzXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBTb2Z0d2FyZQogICAgTmFtZTogRGF0YWJhc2UKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gU2VydmVyOjpTZXJ2ZXJcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZQogICAgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMKICAgIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkKICAgIG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGgKICAgIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nCiAgICB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcwogICAgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbCBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNCiAgICBHRiBEYXRhYmFzZVxyXG4gIElUU00gU2VydmVyOlxyXG4gICAgTmFtZTogSVRTTSBTZXJ2ZXJcclxuICBJVFNNIExpY2Vuc2U6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCCiAgICBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogRGF0YWJhc2UKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvU2VydmVyOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlcgogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU29mdHdhcmUtRGF0YWJhc2VUeXBlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENocm9tYSBEQjogQ2hyb21hIERCCiAgICAgICAgICBFbGFzdGljc2VhcmNoOiBFbGFzdGljc2VhcmNoCiAgICAgICAgICBJQk0gRGIyOiBJQk0gRGIyCiAgICAgICAgICBNYXJpYURCOiBNYXJpYURCCiAgICAgICAgICBNaWNyb3NvZnQgU1FMIFNlcnZlcjogTWljcm9zb2Z0IFNRTCBTZXJ2ZXIKICAgICAgICAgIE1vbmdvREI6IE1vbmdvREIKICAgICAgICAgIE15U1FMOiBNeVNRTAogICAgICAgICAgT3JhY2xlIERhdGFiYXNlOiBPcmFjbGUgRGF0YWJhc2UKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUG9zdGdyZVNRTDogUG9zdGdyZVNRTAogICAgICAgICAgUmVkaXM6IFJlZGlzCiAgICAgICAgICBTUUxpdGU6IFNRTGl0ZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IERhdGFiYXNlCiAgICAgIE5hbWU6IElUU01Tb2Z0d2FyZS1EYXRhYmFzZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Tb2Z0d2FyZS1EYXRlRW5kT2ZTdXBwb3J0OgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMTAnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBFbmQgb2Ygc3VwcG9ydAogICAgICBOYW1lOiBJVFNNU29mdHdhcmUtRGF0ZUVuZE9mU3VwcG9ydAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNvZnR3YXJlLURhdGVSZWxlYXNlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgcmVsZWFzZQogICAgICBOYW1lOiBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogRGV2aWNlICh1bmlkZW50aWZpZWQpCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogICAgVmVyc2lvblRyaWdnZXI6CiAgICAtIERlZmluaXRpb25VcGRhdGUKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6CiAgICBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBEZXZpY2UgKHVuaWRlbnRpZmllZCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBEZXZpY2UgKHVuaWRlbnRpZmllZCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBEaXNwbGF5CiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIERpc3BsYXlcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQgogICAgTG9jYXRlZCBpblxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktUG93ZXJEZWxpdmVyeToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIE5vOiBObwogICAgICAgICAgWWVzOiBZZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQb3dlciBEZWxpdmVyeQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1SZXNvbHV0aW9uOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMksgKDIwNDggeCAxMDgwKTogMksgKDIwNDggeCAxMDgwKQogICAgICAgICAgJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JzogJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JwogICAgICAgICAgNUsgKDUxMjAgeCAyODgwKTogNUsgKDUxMjAgeCAyODgwKQogICAgICAgICAgOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKTogOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKQogICAgICAgICAgRnVsbCBIRCAoMTkyMCB4IDEwODApOiBGdWxsIEhEICgxOTIwIHggMTA4MCkKICAgICAgICAgIEhEICgxMjgwIHggNzIwKTogSEQgKDEyODAgeCA3MjApCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFF1YWQgSEQgKDI1NjAgeCAxNDQwKTogUXVhZCBIRCAoMjU2MCB4IDE0NDApCiAgICAgICAgICBVV1FIRCAoMzQ0MCB4IDE0NDApOiBVV1FIRCAoMzQ0MCB4IDE0NDApCiAgICAgICAgICBXVVhHQSAoMTkyMCB4IDEyMDApOiBXVVhHQSAoMTkyMCB4IDEyMDApCiAgICAgICAgICBXWEdBICgxMzY2IHggNzY4KTogV1hHQSAoMTM2NiB4IDc2OCkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFJlc29sdXRpb24KICAgICAgTmFtZTogSVRTTURpc3BsYXktUmVzb2x1dGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktU2l6ZUluY2g6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMjcnOiAyNyIKICAgICAgICAgICczMic6IDMyIgogICAgICAgICAgJzM0JzogMzQiCiAgICAgICAgICAnMzUnOiAzNSIKICAgICAgICAgICc0MCc6IDQwIgogICAgICAgICAgJzQzJzogNDMiCiAgICAgICAgICAnNDknOiA0OSIKICAgICAgICAgICc1NSc6IDU1IgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTW9uaXRvciBTaXplCiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVNpemVJbmNoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1UeXBlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpOiBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSkKICAgICAgICAgIExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSk6IExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSk6IE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodAogICAgICAgICAgICBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG91Y2hzY3JlZW4gTW9uaXRvcjogVG91Y2hzY3JlZW4gTW9uaXRvcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTURpc3BsYXktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gQ29udHJhY3QKICAgIE5hbWU6IEZpbGVzCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvbiIKLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBJUCBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgSVAgTmV0d29ya1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb246CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgIE5hbWU6IElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstQ0lEUjoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ0lEUgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUNJRFIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBQcm90b2NvbDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUHJvdG9jb2wKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBSYW5nZUVuZDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRW5kIElQIEFkZHJlc3MKICAgICAgTmFtZTogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RhcnQgSVAgQWRkcmVzcwogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXI6CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOiAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzogJ0xheWVyIDI6IERhdGEgTGluayBMYXllcicKICAgICAgICAgICdMYXllciAzOiBOZXR3b3JrIExheWVyJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KScKICAgICAgICAgICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOiAnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJwogICAgICAgICAgJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOiAnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcicKICAgICAgICAgICdMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInOiAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJwogICAgICAgICAgJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJzogJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTmV0d29yayBMYXllcgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLU5ldHdvcmtMYXllcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgQ2xpZW50IFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIENvbnRhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRhY3RcclxuCiAgICBcICAgLSBERjogQ29udGFjdC1EaXN0cmlidXRvclxyXG4gICAgLSBERjogQ29udGFjdC1Vc2VyXHJcbiAgICAtIERGOiBDb250YWN0LUFkbWluaXN0cmF0b3IiCiAgUm9sZU5hbWU6IElUU00gQ29udGFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ29udHJhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRyYWN0XHJcbgogICAgXCAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdFxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9Db250cmFjdFR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbVxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjoKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seTogMSIKICBSb2xlTmFtZTogSVRTTSBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ1BVOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6IENQVVxyXG4KICAgIFwgICAgIC0gREY6IENQVS1DUFVDbGFzc1xyXG4gICAgICAtIERGOiBDUFUtTnVtYmVyT2ZDUFVcclxuICAgICAgLSBERjogQ1BVLVBoeXNpY2FsQ29yZXNcclxuCiAgICBcICAgICAtIERGOiBDUFUtVGhyZWFkc1xyXG4gICAgICAtIERGOiBDUFUtQ2xvY2tzcGVlZFxyXG4gICAgICAtIERGOiBDUFUtU29ja2V0VHlwZSIKICBSb2xlTmFtZTogSVRTTSBDUFUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEZvcm0gRmFjdG9yOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgRm9ybSBGYWN0b3JcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVR5cGVcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0c1xyXG4KICAgIFwgICAtIERGOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGhcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVdlaWdodCIKICBSb2xlTmFtZTogSVRTTSBGb3JtIEZhY3RvcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNQXBwbGlhbmNlLUFwcGxpYW5jZVR5cGUiCiAgUm9sZU5hbWU6IElUU00gR0YgQXBwbGlhbmNlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1UeXBlXHJcbiAgICAgIC0gREY6CiAgICBJVFNNQ2VydGlmaWNhdGUtQ3JlYXRpb25EYXRlXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1FeHBpcnlEYXRlIgogIFJvbGVOYW1lOiBJVFNNIEdGIENlcnRpZmljYXRlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnlcclxuICAgICAgLQogICAgREY6IElUU01DbGllbnQtRmlybXdhcmUiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2xpZW50Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBTdW1tYXJ5XHJcbiAgICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2x1c3RlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBDb250cmFjdC1UeXBlXHJcbiAgICAgIC0gREY6IENvbnRyYWN0LVBlcmlvZEZyb21cclxuCiAgICBcICAgICAtIERGOiBDb250cmFjdC1QZXJpb2RVbnRpbCIKICBSb2xlTmFtZTogSVRTTSBHRiBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNU29mdHdhcmUtRGF0YWJhc2VUeXBlXHJcbiAgICAgIC0KICAgIERGOiBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2VcclxuICAgICAgLSBERjogSVRTTVNvZnR3YXJlLURhdGVFbmRPZlN1cHBvcnQiCiAgUm9sZU5hbWU6IElUU00gR0YgRGF0YWJhc2UKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTURpc3BsYXktU2l6ZUluY2hcclxuICAgICAgLSBERjoKICAgIElUU01EaXNwbGF5LVR5cGVcclxuICAgICAgLSBERjogSVRTTURpc3BsYXktUmVzb2x1dGlvblxyXG4gICAgICAtIERGOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5IgogIFJvbGVOYW1lOiBJVFNNIEdGIERpc3BsYXkKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXJcclxuICAgICAgLQogICAgREY6IElUU01JUE5ldHdvcmstSVBQcm90b2NvbFxyXG4gICAgICAtIERGOiBJVFNNSVBOZXR3b3JrLUFkZHJlc3NBbGxvY2F0aW9uXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlU3RhcnRcclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1DSURSIgogIFJvbGVOYW1lOiBJVFNNIEdGIElQIE5ldHdvcmsKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGVcclxuICAgICAgLQogICAgREY6IElUU01MaWNlbnNlLUxpY2Vuc2VLZXlcclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50XHJcbiAgICAgIC0KICAgIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbVxyXG4gICAgICAtIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwiCiAgUm9sZU5hbWU6IElUU00gR0YgTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNT3RoZXJBY2Nlc3Nvcmllcy1UeXBlIgogIFJvbGVOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1UeXBlXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1OdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgUGhvbmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFJhY2s6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb21cclxuCiAgICBcIEFkZHJlc3M6XHJcbiAgICBUeXBlOiBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbVxyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzcyIKICBSb2xlTmFtZTogSVRTTSBHRiBSYWNrCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01TSU0tQ2FyZG51bWJlclxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBJTlxyXG4KICAgIFwgICAgIC0gREY6IElUU01TSU0tUElOMlxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVS1xyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVSzJcclxuCiAgICBcICAgICAtIERGOiBJVFNNU0lNLU1vYmlsZU51bWJlclxyXG4gICAgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3RcclxuICAgICAgLQogICAgREY6IElUU01TSU0tVHlwZSIKICBSb2xlTmFtZTogSVRTTSBHRiBTSU0gQ2FyZAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNVVBTLU1heGltdW1Mb2FkQ2FwYWNpdHlcclxuICAgICAgLQogICAgREY6IElUU01VUFMtQmF0dGVyeVR5cGVcclxuICAgICAgLSBERjogSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHkiCiAgUm9sZU5hbWU6IElUU00gR0YgVVBTCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHcmFwaGljcyBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgR3JhcGhpY3MgQ2FyZHNcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yXHJcbiAgICAtIERGOiBJVFNNR3JhcGhpY3NDYXJkLUNvdW50XHJcbgogICAgXCAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2VcclxuCiAgICBcICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzIgogIFJvbGVOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIExpY2Vuc2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IExpY2Vuc2VcclxuCiAgICBcICAgLSBERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2VcclxuICAgIC0gREY6IElUU00tTGVuc1RvTGljZW5zZVR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudFxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbVxyXG4KICAgIFwgICAgIFJlYWRvbmx5OiAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seToKICAgIDEiCiAgUm9sZU5hbWU6IElUU00gTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTWVtb3J5OlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBNZW1vcnlcclxuCiAgICBcICAgLSBERjogSVRTTU1lbW9yeS1Db3VudFxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1DYXBhY2l0eVxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01NZW1vcnktQ2xvY2tSYXRlXHJcbiAgICAtIERGOiBJVFNNTWVtb3J5LVR5cGUiCiAgUm9sZU5hbWU6IElUU00gTWVtb3J5Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBNb2RlbDpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjogSGFyZHdhcmUKICAgIE1vZGVsXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTW9kZWxcclxuICAgIC0KICAgIERGOiBJVFNNTW9kZWwtU2VydmljZVRhZ1xyXG4gICAgLSBERjogSVRTTU1vZGVsLVNlcmlhbE51bWJlclxyXG4gICAgLSBERjogSVRTTU1vZGVsLU1vZGVsTm90ZSIKICBSb2xlTmFtZTogSVRTTSBNb2RlbAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTmV0d29yayBJbmZvOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgTmV0d29ya1xyXG4gICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvIgogIFJvbGVOYW1lOiBJVFNNIE5ldHdvcmsgSW5mbwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIE9wZXJhdGluZyBTeXN0ZW1cclxuICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9PUyIKICBSb2xlTmFtZTogSVRTTSBPcGVyYXRpbmcgU3lzdGVtCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTZXJ2ZXI6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFNlcnZlclxyXG4KICAgIFwgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyIgogIFJvbGVOYW1lOiBJVFNNIFNlcnZlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgU2VydmVyIFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFNJTSBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBTSU0KICAgIENhcmRcclxuICAgIC0gREY6IElUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkXHJcbiAgICAtIERGOiBJVFNNU0lNLUxlbnN0b1NJTUlNb2JpbGVOdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gU0lNIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFN0b3JhZ2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFN0b3JhZ2VcclxuCiAgICBcICAgLSBERjogSVRTTVN0b3JhZ2UtU3RvcmFnZSIKICBSb2xlTmFtZTogSVRTTSBTdG9yYWdlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIFN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24iCiAgUm9sZU5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogTGljZW5zZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtCiAgICBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvdW50IG9mIGxpY2Vuc2VzCiAgICAgIE5hbWU6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZUtleToKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBMaWNlbnNlIEtleQogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlS2V5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogMAogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxMCcKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1BMQWZmZXJvR2VuZXJhbFB1YmxpY0xpY2Vuc2U6IEFHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgQXBhY2hlTGljZW5zZTogQXBhY2hlIExpY2Vuc2UKICAgICAgICAgIEJTRExpY2Vuc2VCZXJrZWxleVNvZnR3YXJlRGlzdHJpYnV0aW9uTGljZW5zZTogQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlCiAgICAgICAgICAgIERpc3RyaWJ1dGlvbiBMaWNlbnNlKQogICAgICAgICAgQ0MwQ3JlYXRpdmVDb21tb25zWmVybzogQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pCiAgICAgICAgICBDcmVhdGl2ZUNvbW1vbnM6IENyZWF0aXZlIENvbW1vbnMKICAgICAgICAgIEVQTEVjbGlwc2VQdWJsaWNMaWNlbnNlOiBFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpCiAgICAgICAgICBGcmVld2FyZTogRnJlZXdhcmUKICAgICAgICAgIEdQTEdlbmVyYWxQdWJsaWNMaWNlbnNlOiBHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpCiAgICAgICAgICBMR1BMTGVzc2VyR2VuZXJhbFB1YmxpY0xpY2Vuc2U6IExHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgTUlUTGljZW5zZTogTUlUIExpY2Vuc2UKICAgICAgICAgIE1QTE1vemlsbGFQdWJsaWNMaWNlbnNlOiBNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBlcnBldHVhbGxpY2Vuc2VzOiBQZXJwZXR1YWwgbGljZW5zZXMKICAgICAgICAgIFB1YmxpY0RvbWFpbjogUHVibGljIERvbWFpbgogICAgICAgICAgU2VhdGxpY2Vuc2VzOiBTZWF0IGxpY2Vuc2VzCiAgICAgICAgICBTaGFyZXdhcmU6IFNoYXJld2FyZQogICAgICAgICAgU3Vic2NyaXB0aW9uYmFzZWRsaWNlbnNlczogU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzCiAgICAgICAgICBWb2x1bWVsaWNlbnNlczogVm9sdW1lIGxpY2Vuc2VzCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBNb2JpbGUgRGV2aWNlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFNJTSBDYXJkOjpTSU0KICAgIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUKICAgIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZAogICAgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIKICAgIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLAogICAgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lCiAgICBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcwogICAgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIFNJTSBDYXJkOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIFNJTSBDYXJkXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQgogICAgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLUxlbnN0b1NJTUlNb2JpbGVOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNU0lNLU1vYmlsZU51bWJlcgogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNU0lNLVJlZmVyZW5jZXRvU0lNQ2FyZAogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBNb2JpbGUgTnVtYmVyCiAgICAgIE5hbWU6IElUU01TSU0tTGVuc3RvU0lNSU1vYmlsZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1SZWZlcmVuY2V0b1NJTUNhcmQ6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU0lNIENhcmQKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU0lNIENhcmQKICAgICAgTmFtZTogSVRTTVNJTS1SZWZlcmVuY2V0b1NJTUNhcmQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBTb2Z0d2FyZQogICAgTmFtZTogT3BlcmF0aW5nIFN5c3RlbQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOgogICAgMlxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTQogICAgTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBPdGhlciBBY2Nlc3NvcmllcwogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZToKICAgIENNREIgQWNjb3VudGluZ1xyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZAogICAgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbgogICAgXCBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNT3RoZXJBY2Nlc3Nvcmllcy1UeXBlOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENhcmQgUmVhZGVyOiBDYXJkIFJlYWRlcgogICAgICAgICAgRXh0ZXJuYWwgSGFyZCBEcml2ZTogRXh0ZXJuYWwgSGFyZCBEcml2ZQogICAgICAgICAgSGVhZHNldDogSGVhZHNldAogICAgICAgICAgS2V5Ym9hcmQ6IEtleWJvYXJkCiAgICAgICAgICBNb3VzZTogTW91c2UKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU3BlYWtlcnM6IFNwZWFrZXJzCiAgICAgICAgICBVU0IgSHViOiBVU0IgSHViCiAgICAgICAgICBWUiBIZWFkc2V0OiBWUiBIZWFkc2V0CiAgICAgICAgICBXZWJjYW06IFdlYmNhbQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTU90aGVyQWNjZXNzb3JpZXMtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUGhvbmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAzXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuCiAgICBcIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBQaG9uZVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6CiAgICBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNUGhvbmUtTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUGhvbmUgTnVtYmVyCiAgICAgIE5hbWU6IElUU01QaG9uZS1OdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01QaG9uZS1UeXBlOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFuYWxvZyBQaG9uZTogQW5hbG9nIFBob25lCiAgICAgICAgICBDb25mZXJlbmNlIFBob25lOiBDb25mZXJlbmNlIFBob25lCiAgICAgICAgICBDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSk6IENvcmRsZXNzIFBob25lIChERUNUIFBob25lKQogICAgICAgICAgTGFuZGxpbmUgUGhvbmU6IExhbmRsaW5lIFBob25lCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNhdGVsbGl0ZSBQaG9uZTogU2F0ZWxsaXRlIFBob25lCiAgICAgICAgICBWb0lQIFBob25lOiBWb0lQIFBob25lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGhvbmUgVHlwZQogICAgICBOYW1lOiBJVFNNUGhvbmUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUHJpbnRlcgogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrCiAgICBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUKICAgIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvCiAgICBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkCiAgICB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljCiAgICBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aAogICAgdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUKICAgIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuCiAgICBcIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBDTURCIEFjY291bnRpbmc6XHJcbgogICAgXCAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuCiAgICBcIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUHJvamVjdG9yCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsKICAgIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZQogICAgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28KICAgIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQKICAgIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMKICAgIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoCiAgICB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZQogICAgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4KICAgIFwgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICAtIExvY2F0aW9uCiAgICAtIE5ldHdvcmsgSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFJhY2sKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBSb29tXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDIgICAgICAgIFxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcblJvbGVzOlxyXG4KICAgIFwgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjCiAgICBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuCiAgICBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTQogICAgRm9ybSBGYWN0b3I6XHJcbiAgICBOYW1lOiBJVFNNIEZvcm0gRmFjdG9yXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvblxyXG5cclxuU2VjdGlvbnM6XHJcbgogICAgXCBSb29tOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tXHJcbiAgQWRkcmVzczpcclxuCiAgICBcICAgVHlwZTogUmVmZXJlbmNlZFNlY3Rpb25cclxuICAgIFJlZmVyZW5jZUZpZWxkOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb21cclxuCiAgICBcICAgU2VjdGlvbk5hbWU6IEFkZHJlc3NcclxuICAgIEZpZWxkTGlzdFByZTpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGg6CiAgICAgIENJQ2xhc3M6IFJhY2sKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAyMy42IGluY2hlcyAoNjAwIG1tKTogMjMuNiBpbmNoZXMgKDYwMCBtbSkKICAgICAgICAgIDMxLjUgaW5jaGVzICg4MDAgbW0pOiAzMS41IGluY2hlcyAoODAwIG1tKQogICAgICAgICAgMzUuNCBpbmNoZXMgKDkwMCBtbSk6IDM1LjQgaW5jaGVzICg5MDAgbW0pCiAgICAgICAgICAzOS40IGluY2hlcyAoMTAwMCBtbSk6IDM5LjQgaW5jaGVzICgxMDAwIG1tKQogICAgICAgICAgNDMuMyBpbmNoZXMgKDExMDAgbW0pOiAnNDMuMyBpbmNoZXMgKDExMDAgbW0pOicKICAgICAgICAgIDQ3LjIgaW5jaGVzICgxMjAwIG1tKTogNDcuMiBpbmNoZXMgKDEyMDAgbW0pCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBSYWNrIERlcHRoCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKScKICAgICAgICAgICcxMCc6ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknCiAgICAgICAgICAnMTInOiAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKScKICAgICAgICAgICcxNSc6ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJwogICAgICAgICAgJzE4JzogJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKScKICAgICAgICAgICcyJzogJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKScKICAgICAgICAgICcyMCc6ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknCiAgICAgICAgICAnMjInOiAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJwogICAgICAgICAgJzI0JzogJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJwogICAgICAgICAgJzI3JzogJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJwogICAgICAgICAgJzMnOiAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknCiAgICAgICAgICAnMzAnOiAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKScKICAgICAgICAgICczMyc6ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKScKICAgICAgICAgICczNic6ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKScKICAgICAgICAgICczOSc6ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKScKICAgICAgICAgICc0JzogJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJwogICAgICAgICAgJzQyJzogJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknCiAgICAgICAgICAnNDUnOiAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknCiAgICAgICAgICAnNDgnOiAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknCiAgICAgICAgICAnNSc6ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKScKICAgICAgICAgICc2JzogJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJwogICAgICAgICAgJzcnOiAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJwogICAgICAgICAgJzgnOiAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJwogICAgICAgICAgJzknOiAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBVbml0cyAoVSkKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1UeXBlOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTktaW5jaCBSYWNrOiAxOS1pbmNoIFJhY2sKICAgICAgICAgIDIxLWluY2ggUmFjazogMjEtaW5jaCBSYWNrCiAgICAgICAgICAyMy1pbmNoIFJhY2s6IDIzLWluY2ggUmFjawogICAgICAgICAgQ3VzdG9tIFJhY2s6IEN1c3RvbSBSYWNrCiAgICAgICAgICBFVFNJIFJhY2s6IEVUU0kgUmFjawogICAgICAgICAgTWluaS1SYWNrOiBNaW5pLVJhY2sKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG93ZXI6IFRvd2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogRm9ybSBGYWN0b3IKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItV2VpZ2h0OgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBIYXJkd2FyZSBXZWlnaHQKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItV2VpZ2h0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb206CiAgICAgIENJQ2xhc3M6IFJhY2sKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gUm9vbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFJvb20KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IFJvb20KICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBCdWlsZGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46CiAgICAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzCiAgICBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwKICAgIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UKICAgIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoCiAgICBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24KICAgIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUKICAgIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbgogICAgXCAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb25cclxuXHJcblNlY3Rpb25zOlxyXG4KICAgIFwgQnVpbGRpbmc6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nXHJcbiAgQWRkcmVzczpcclxuCiAgICBcICAgVHlwZTogUmVmZXJlbmNlZFNlY3Rpb25cclxuICAgIFJlZmVyZW5jZUZpZWxkOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nXHJcbgogICAgXCAgIFNlY3Rpb25OYW1lOiBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvQnVpbGRpbmciCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvQnVpbGRpbmc6CiAgICAgIENJQ2xhc3M6IFJvb20KICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IEJ1aWxkaW5nCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvQnVpbGRpbmcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIFJvd1NwYW46CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yawogICAgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTQogICAgTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbgogICAgXCBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6CiAgICBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFNlcnZlcgogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogSGFyZHdhcmVcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZSBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcblxyXG4gIC0gTmFtZTogU29mdHdhcmVcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IERldGFpbHNcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyIFNvZnR3YXJlOjpTZXJ2ZXIgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDVcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOgogICAgSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBPcGVyYXRpbmcgU3lzdGVtOlxyXG4gICAgTmFtZTogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbVxyXG4gIElUU00gU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUgIFxyXG4gIElUU00KICAgIENQVTpcclxuICAgIE5hbWU6IElUU00gQ1BVXHJcbiAgSVRTTSBNZW1vcnk6XHJcbiAgICBOYW1lOiBJVFNNIE1lbW9yeVxyXG4gIElUU00KICAgIEdyYXBoaWNzIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOgogICAgSVRTTSBTdG9yYWdlXHJcbiAgSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIE5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KICAgIFwgICBcclxuICBJVFNNIEZvcm0gRmFjdG9yOlxyXG4gICAgTmFtZTogSVRTTSBGb3JtIEZhY3RvclxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDUFUtQ1BVQ2xhc3M6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIExhcHRvcDogTGFwdG9wCiAgICAgICAgICBNb2JpbGVFbWJlZGRlZDogTW9iaWxlL0VtYmVkZGVkCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNlcnZlcjogU2VydmVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ1BVIENsYXNzCiAgICAgIE5hbWU6IENQVS1DUFVDbGFzcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLUNsb2Nrc3BlZWQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBDUFVzCiAgICAgIE5hbWU6IENQVS1OdW1iZXJPZkNQVQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVBoeXNpY2FsQ29yZXM6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQaHlzaWNhbCBDb3JlcwogICAgICBOYW1lOiBDUFUtUGh5c2ljYWxDb3JlcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVNvY2tldFR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFRocmVhZHMKICAgICAgTmFtZTogQ1BVLVRocmVhZHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb09TCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKScKICAgICAgICAgICcxMCc6ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknCiAgICAgICAgICAnMTInOiAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKScKICAgICAgICAgICcxNSc6ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJwogICAgICAgICAgJzE4JzogJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKScKICAgICAgICAgICcyJzogJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKScKICAgICAgICAgICcyMCc6ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknCiAgICAgICAgICAnMjInOiAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJwogICAgICAgICAgJzI0JzogJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJwogICAgICAgICAgJzI3JzogJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJwogICAgICAgICAgJzMnOiAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknCiAgICAgICAgICAnMzAnOiAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKScKICAgICAgICAgICczMyc6ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKScKICAgICAgICAgICczNic6ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKScKICAgICAgICAgICczOSc6ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKScKICAgICAgICAgICc0JzogJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJwogICAgICAgICAgJzQyJzogJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknCiAgICAgICAgICAnNDUnOiAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknCiAgICAgICAgICAnNDgnOiAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknCiAgICAgICAgICAnNSc6ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKScKICAgICAgICAgICc2JzogJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJwogICAgICAgICAgJzcnOiAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJwogICAgICAgICAgJzgnOiAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJwogICAgICAgICAgJzknOiAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBVbml0cyAoVSkKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxOS1pbmNoIFJhY2s6IDE5LWluY2ggUmFjawogICAgICAgICAgMjEtaW5jaCBSYWNrOiAyMS1pbmNoIFJhY2sKICAgICAgICAgIDIzLWluY2ggUmFjazogMjMtaW5jaCBSYWNrCiAgICAgICAgICBDdXN0b20gUmFjazogQ3VzdG9tIFJhY2sKICAgICAgICAgIEVUU0kgUmFjazogRVRTSSBSYWNrCiAgICAgICAgICBNaW5pLVJhY2s6IE1pbmktUmFjawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3dlcjogVG93ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBGb3JtIEZhY3RvcgogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1XZWlnaHQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFHUDogQUdQCiAgICAgICAgICBFSVNBOiBFSVNBCiAgICAgICAgICBGaXJlV2lyZUlFRUUxMzk0OiBGaXJlV2lyZSAoSUVFRSAxMzk0KQogICAgICAgICAgSVNBOiBJU0EKICAgICAgICAgIExQQ0xvd1BpbkNvdW50OiBMUEMgKExvdyBQaW4gQ291bnQpCiAgICAgICAgICBNQ0FNaWNyb0NoYW5uZWxBcmNoaXRlY3R1cmU6IE1DQSAoTWljcm8gQ2hhbm5lbCBBcmNoaXRlY3R1cmUpCiAgICAgICAgICBOdUJ1czogTnVCdXMKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUENJOiBQQ0kKICAgICAgICAgIFBDSUV4cHJlc3NQQ0llOiBQQ0kgRXhwcmVzcyAoUENJZSkKICAgICAgICAgIFBDSVg6IFBDSS1YCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBVU0JVbml2ZXJzYWxTZXJpYWxCdXM6IFVTQiAoVW5pdmVyc2FsIFNlcmlhbCBCdXMpCiAgICAgICAgICBWRVNBTG9jYWxCdXNWTEI6IFZFU0EgTG9jYWwgQnVzIChWTEIpCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQnVzIEludGVyZmFjZQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUJ1c0ludGVyZmFjZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Db3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAxIEdCCiAgICAgICAgICAnMTEnOiAxMSBHQgogICAgICAgICAgJzEyOCc6IDEyOCBHQgogICAgICAgICAgJzE2JzogMTYgR0IKICAgICAgICAgICcyJzogMiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNCc6IDQgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZAogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgR0REUjU6IEdERFI1CiAgICAgICAgICBHRERSNVg6IEdERFI1WAogICAgICAgICAgR0REUjY6IEdERFI2CiAgICAgICAgICBHRERSNlg6IEdERFI2WAogICAgICAgICAgSEJNMjogSEJNMgogICAgICAgICAgSEJNMkU6IEhCTTJFCiAgICAgICAgICBIQk1IaWdoQmFuZHdpZHRoTWVtb3J5OiBIQk0gKEhpZ2ggQmFuZHdpZHRoIE1lbW9yeSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1lbW9yeSBUeXBlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudFwiICVdWyUgQ2FwYWNpdHkKICAgICAgICAgID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplXCIgJV1cclxuWyUgVG90YWwgPSBEYXRhLiRDb3VudAogICAgICAgICAgKiBEYXRhLiRDYXBhY2l0eSAlXVxyXG5bJSBUb3RhbCAlXSBHQiIKICAgICAgICBJbnRlcnByZXRlcjogfgogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgUmVhZG9ubHk6ICcxJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSZXF1aXJlZEFyZ3M6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gTmFtZVVwZGF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25DcmVhdGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQikKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LUNhcGFjaXR5OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAyNCc6IDEwMjQgR0IKICAgICAgICAgICcxMic6IDEyIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgJzk2JzogOTYgR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1DbG9ja1JhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgUkFNIG1vZHVsZXMKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnRcIiAlXVslIENhcGFjaXR5ID0KICAgICAgICAgIFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHlcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50ICogRGF0YS4kQ2FwYWNpdHkKICAgICAgICAgICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25EZWxldGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlciBTb2Z0d2FyZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyIFNvZnR3YXJlCiAgICAgIE5hbWU6IElUU01TZXJ2ZXJTb2Z0d2FyZS1SZWZlcmVuY2VUb1NlcnZlclNvZnR3YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBBREFUQTogQURBVEEKICAgICAgICAgICAgICAgIEFEQVRBVGVjaG5vbG9neTogQURBVEEgVGVjaG5vbG9neQogICAgICAgICAgICAgICAgQXBhY2VyOiBBcGFjZXIKICAgICAgICAgICAgICAgIEJ1ZmZhbG86IEJ1ZmZhbG8KICAgICAgICAgICAgICAgIENvcnNhaXI6IENvcnNhaXIKICAgICAgICAgICAgICAgIENydWNpYWxNaWNyb246IENydWNpYWwgKE1pY3JvbikKICAgICAgICAgICAgICAgIEdUZWNobm9sb2d5V2VzdGVybkRpZ2l0YWw6IEctVGVjaG5vbG9neSAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSEdTVFdlc3Rlcm5EaWdpdGFsOiBIR1NUIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIaXRhY2hpOiBIaXRhY2hpCiAgICAgICAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgICAgICAgIEtpbmdzdG9uOiBLaW5nc3RvbgogICAgICAgICAgICAgICAgS2luZ3N0b25EaWdpdGFsOiBLaW5nc3RvbiBEaWdpdGFsCiAgICAgICAgICAgICAgICBMYUNpZVNlYWdhdGU6IExhQ2llIChTZWFnYXRlKQogICAgICAgICAgICAgICAgTGV4YXI6IExleGFyCiAgICAgICAgICAgICAgICBNYXh0b3I6IE1heHRvcgogICAgICAgICAgICAgICAgT0NaVG9zaGliYTogT0NaIChUb3NoaWJhKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBQTlk6IFBOWQogICAgICAgICAgICAgICAgUGxleHRvcjogUGxleHRvcgogICAgICAgICAgICAgICAgU0toeW5peDogU0sgaHluaXgKICAgICAgICAgICAgICAgIFNhbXN1bmc6IFNhbXN1bmcKICAgICAgICAgICAgICAgIFNhbXN1bmdTZW1pY29uZHVjdG9yOiBTYW1zdW5nIFNlbWljb25kdWN0b3IKICAgICAgICAgICAgICAgIFNhbkRpc2tXZXN0ZXJuRGlnaXRhbDogU2FuRGlzayAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgU2VhZ2F0ZTogU2VhZ2F0ZQogICAgICAgICAgICAgICAgU2lsaWNvblBvd2VyOiBTaWxpY29uIFBvd2VyCiAgICAgICAgICAgICAgICBTb255OiBTb255CiAgICAgICAgICAgICAgICBTdXBlclRhbGVudDogU3VwZXIgVGFsZW50CiAgICAgICAgICAgICAgICBUZWFtR3JvdXA6IFRlYW0gR3JvdXAKICAgICAgICAgICAgICAgIFRvc2hpYmE6IFRvc2hpYmEKICAgICAgICAgICAgICAgIFRyYW5zY2VuZDogVHJhbnNjZW5kCiAgICAgICAgICAgICAgICBXZXN0ZXJuRGlnaXRhbDogV2VzdGVybiBEaWdpdGFsCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBNYW51ZmFjdHVyZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIEZyZWUgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFNlcnZlciAodmlydHVhbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG5cclxuICAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZToKICAgIElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbgogICAgXCAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW1cclxuICBJVFNNIFNlcnZlciBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gU2VydmVyIFNvZnR3YXJlICBcclxuICBJVFNNCiAgICBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNCiAgICBHcmFwaGljcyBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZToKICAgIElUU00gU3RvcmFnZVxyXG4gIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uCiAgICBcICAgXHJcbiAgSVRTTSBGb3JtIEZhY3RvcjpcclxuICAgIE5hbWU6IElUU00gRm9ybSBGYWN0b3JcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuCiAgICBcICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbiAgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlciBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBTb2Z0d2FyZQogICAgTmFtZTogU2VydmVyIFNvZnR3YXJlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXI6OlNlcnZlclxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBMaWNlbnNlOjpMaWNlbnNlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00KICAgIFNlcnZlcjpcclxuICAgIE5hbWU6IElUU00gU2VydmVyXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbgogICAgXCBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6CiAgICBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvU2VydmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU2VydmVyCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBTZXJ2ZXIKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb1NlcnZlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogU0lNIENhcmQKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udHJhY3Q6OkNvbnRyYWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIFxyXG5Sb2xlczoKICAgIFxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbgogICAgXCAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIFNJTSBDYXJkXHJcbiAgSVRTTSBDb250cmFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udHJhY3RcclxuCiAgICBcIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZToKICAgIENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IENvbnRyYWN0LVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBDb250cmFjdCBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9Db250cmFjdFBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IENvbnRyYWN0LVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9Db250cmFjdFR5cGU6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogQ29udHJhY3QtVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9Db250cmFjdFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9Db250cmFjdDoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQ29udHJhY3QKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogQ29udHJhY3QKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLUNhcmRudW1iZXI6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDYXJkIE51bWJlcgogICAgICBOYW1lOiBJVFNNU0lNLUNhcmRudW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tTW9iaWxlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9iaWxlIE51bWJlcgogICAgICBOYW1lOiBJVFNNU0lNLU1vYmlsZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1QSU46CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQSU4KICAgICAgTmFtZTogSVRTTVNJTS1QSU4KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUElOMjoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFBJTiAyCiAgICAgIE5hbWU6IElUU01TSU0tUElOMgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1QVUs6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQVUsKICAgICAgTmFtZTogSVRTTVNJTS1QVUsKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUFVLMjoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFBVSyAyCiAgICAgIE5hbWU6IElUU01TSU0tUFVLMgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1UeXBlOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEVtYmVkZGVkIFNJTSAoZVNJTSk6IEVtYmVkZGVkIFNJTSAoZVNJTSkKICAgICAgICAgIE1pY3JvIFNJTTogTWljcm8gU0lNCiAgICAgICAgICBOYW5vIFNJTTogTmFubyBTSU0KICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU3RhbmRhcmQgU0lNOiBTdGFuZGFyZCBTSU0KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXJkIFR5cGUKICAgICAgTmFtZTogSVRTTVNJTS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBTbWFydGJvYXJkCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIERpc3BsYXlcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQgogICAgTG9jYXRlZCBpblxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktUG93ZXJEZWxpdmVyeToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIE5vOiBObwogICAgICAgICAgWWVzOiBZZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQb3dlciBEZWxpdmVyeQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1SZXNvbHV0aW9uOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMksgKDIwNDggeCAxMDgwKTogMksgKDIwNDggeCAxMDgwKQogICAgICAgICAgJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JzogJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JwogICAgICAgICAgNUsgKDUxMjAgeCAyODgwKTogNUsgKDUxMjAgeCAyODgwKQogICAgICAgICAgOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKTogOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKQogICAgICAgICAgRnVsbCBIRCAoMTkyMCB4IDEwODApOiBGdWxsIEhEICgxOTIwIHggMTA4MCkKICAgICAgICAgIEhEICgxMjgwIHggNzIwKTogSEQgKDEyODAgeCA3MjApCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFF1YWQgSEQgKDI1NjAgeCAxNDQwKTogUXVhZCBIRCAoMjU2MCB4IDE0NDApCiAgICAgICAgICBVV1FIRCAoMzQ0MCB4IDE0NDApOiBVV1FIRCAoMzQ0MCB4IDE0NDApCiAgICAgICAgICBXVVhHQSAoMTkyMCB4IDEyMDApOiBXVVhHQSAoMTkyMCB4IDEyMDApCiAgICAgICAgICBXWEdBICgxMzY2IHggNzY4KTogV1hHQSAoMTM2NiB4IDc2OCkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFJlc29sdXRpb24KICAgICAgTmFtZTogSVRTTURpc3BsYXktUmVzb2x1dGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktU2l6ZUluY2g6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMjcnOiAyNyIKICAgICAgICAgICczMic6IDMyIgogICAgICAgICAgJzM0JzogMzQiCiAgICAgICAgICAnMzUnOiAzNSIKICAgICAgICAgICc0MCc6IDQwIgogICAgICAgICAgJzQzJzogNDMiCiAgICAgICAgICAnNDknOiA0OSIKICAgICAgICAgICc1NSc6IDU1IgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTW9uaXRvciBTaXplCiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVNpemVJbmNoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1UeXBlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpOiBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSkKICAgICAgICAgIExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSk6IExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSk6IE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodAogICAgICAgICAgICBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG91Y2hzY3JlZW4gTW9uaXRvcjogVG91Y2hzY3JlZW4gTW9uaXRvcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTURpc3BsYXktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFN0b3JhZ2UKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG5cclxuICAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZToKICAgIElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbgogICAgXCAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW1cclxuICBJVFNNIFNlcnZlciBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gU2VydmVyIFNvZnR3YXJlICBcclxuICBJVFNNCiAgICBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNCiAgICBHcmFwaGljcyBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZToKICAgIElUU00gU3RvcmFnZVxyXG4gIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uCiAgICBcICAgXHJcbiAgSVRTTSBGb3JtIEZhY3RvcjpcclxuICAgIE5hbWU6IElUU00gRm9ybSBGYWN0b3JcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuCiAgICBcICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbiAgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlciBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogU3Vic2lkaWFyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIEFkZHJlc3NcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uXHJcblxyXG5TZWN0aW9uczpcclxuICBBZGRyZXNzOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6CiAgICBBZGRyZXNzXHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVN0cmVldFxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1DaXR5XHJcbiAgICAgIC0KICAgIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnlcclxuICAgICAgLSBERjogTG9jYXRpb24tTGF0aXR1ZGVcclxuICAgICAgLSBERjoKICAgIExvY2F0aW9uLUxvbmdpdHVkZSIKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQ2l0eToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ2l0eQogICAgICBOYW1lOiBMb2NhdGlvbi1DaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1MYXRpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTGF0aXR1ZGUKICAgICAgTmFtZTogTG9jYXRpb24tTGF0aXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLUxvbmdpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTG9uZ2l0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxvbmdpdHVkZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENvdW50cnkKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6IDAKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBDb3VudHJ5CiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tU3RyZWV0OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTdHJlZXQKICAgICAgTmFtZTogTG9jYXRpb24tU3RyZWV0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTmV0d29yayBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU3dpdGNoCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrCiAgICBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuCiAgICBcIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZToKICAgIElUU00gTmV0d29yayBJbmZvXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQgogICAgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQgogICAgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBVUFMKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbAogICAgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuCiAgICBcIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIKICAgIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUKICAgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlCiAgICBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzCiAgICBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNCiAgICBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbgogICAgYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgVVBTXHJcbiAgSVRTTSBNb2RlbDpcclxuCiAgICBcICAgTmFtZTogSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZAogICAgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yawogICAgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHk6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQmF0dGVyeSBDYXBhY2l0eSAoQWgpCiAgICAgIE5hbWU6IElUU01VUFMtQmF0dGVyeUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNVVBTLUJhdHRlcnlUeXBlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBGbHl3aGVlbDogRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UKICAgICAgICAgIExpLWlvbjogTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeQogICAgICAgICAgTGlGZVBPNDogTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeQogICAgICAgICAgTmlDZDogTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnkKICAgICAgICAgIE5pTUg6IE5pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNMQTogU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQmF0dGVyeSBUeXBlCiAgICAgIE5hbWU6IElUU01VUFMtQmF0dGVyeVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01VUFMtTWF4aW11bUxvYWRDYXBhY2l0eToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpCiAgICAgIE5hbWU6IElUU01VUFMtTWF4aW11bUxvYWRDYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBXTEFOIGFjY2VzcyBwb2ludAogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIFJvd1NwYW46CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yawogICAgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTQogICAgTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbgogICAgXCBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6CiAgICBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCg==</File>
        <File Location="var/packagesetup/ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0IHBhaXJzKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZzo6UHJlZmVyZW5jZXNEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKKTsKCj1oZWFkMSBOQU1FCgp2YXI6OnBhY2thZ2VzZXR1cDo6SVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IC0gY29kZSB0byBleGVjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIERFU0NSSVBUSU9OCgpGdW5jdGlvbnMgZm9yIGluc3RhbGxpbmcgdGhlIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCBwYWNrYWdlLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OklUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCcpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBGb3JjZSBhIHJlbG9hZCBvZiBaWlpBdXRvLnBtIGFuZCBaWlpBQXV0by5wbSB0byBnZXQgdGhlIGZyZXNoIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJUlOQyApIHsKICAgICAgICBpZiAoICRNb2R1bGUgPX4gbS9aWlpBQT91dG9cLnBtJC8gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSU5DeyRNb2R1bGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENyZWF0ZSBjb21tb24gb2JqZWN0cyB3aXRoIGZyZXNoIGRlZmF1bHQgY29uZmlnLgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKCk7CgogICAgIyBkZWZpbmUgVXNlcklEIHBhcmFtZXRlciBmb3IgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBzdGF0cyBvYmplY3QKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZGVmaW5lIGZpbGUgcHJlZml4IGZvciBzdGF0cwogICAgJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9ID0gJ0lUU01TdGF0cyc7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgQ29kZUluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIGluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZUluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlSW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBncm91cCBpdHNtLWNvbmZpZ2l0ZW0KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0dyb3VwIGZvciBJVFNNIENvbmZpZ0l0ZW0gbWFzayBhY2Nlc3MgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nLAogICAgKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgQzxjdXJfZGVwbF9zdGF0ZV9pZD4gb3IgQzxjdXJfaW5jaV9zdGF0ZV9pZD4gcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBkZXBsb3ltZW50IHN0YXRlcwogICAgJFNlbGYtPl9TZXREZXBsb3ltZW50U3RhdGVQcmVmZXJlbmNlcygpOwoKICAgICMgYWRkIHRoZSBDb25maWdJdGVtIG1hbmFnZW1lbnQgaW52b2tlciB0byB0aGUgRWxhc3RpY3NlYXJjaCB3ZWJzZXJ2aWNlCiAgICAkU2VsZi0+X1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKCBBY3Rpb24gPT4gJ0FkZCcgKTsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e1N0YXRzRmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBncm91cCBpdHNtLWNvbmZpZ2l0ZW0KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0dyb3VwIGZvciBJVFNNIENvbmZpZ0l0ZW0gbWFzayBhY2Nlc3MgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nLAogICAgKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGRlcGxveW1lbnQgc3RhdGVzCiAgICAkU2VsZi0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fMTFfMF8xNSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMTEuMC4xNC4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzE1KCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfMTUgeyAgICAjIyBubyBjcml0aWMgcXcoT1RPQk86OlJlcXVpcmVDYW1lbENhc2UpCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdXBkYXRlIHN5c2NvbmZpZyBzZXR0aW5ncyBvZiBjdXN0b21lciBjb21wYW55IGFuZCBjdXN0b21lciB1c2VyIGluZm9ybWF0aW9uIGNlbnRlciB3aWRnZXRzCiAgICAkU2VsZi0+X1VwZGF0ZURhc2hib2FyZFdpZGdldFN5c0NvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfNygpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMTEuMC43LgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfNygpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzcgeyAgICAjIyBubyBjcml0aWMgcXcoT1RPQk86OlJlcXVpcmVDYW1lbENhc2UpCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBDb25maWdJdGVtIG1hbmFnZW1lbnQgaW52b2tlciB0byB0aGUgRWxhc3RpY3NlYXJjaCB3ZWJzZXJ2aWNlCiAgICAkU2VsZi0+X1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKCBBY3Rpb24gPT4gJ0FkZCcgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGRlcGxveW1lbnQgc3RhdGVzCiAgICAkU2VsZi0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNsZWFyIGNvbmZpZ2l0ZW1fbGluayB0YWJsZQogICAgIyAgIHBsYWNpbmcgdGhpcyBiZWZvcmUgX0R5bmFtaWNGaWVsZHNEZWxldGUgdG8gYXZvaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgcHJldmVudGluZyBkeW5hbWljIGZpZWxkIHZhbHVlIGRlbGV0aW9uCiAgICAkU2VsZi0+X0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCk7CgogICAgIyBkZWxldGUgYWxsIGR5bmFtaWMgZmllbGRzOgogICAgIyAgIG9mIG9iamVjdCB0eXBlIGNvbmZpZyBpdGVtCiAgICAjICAgb2YgZmllbGQgdHlwZSBJVFNNQ29uZmlnSXRlbVJlZmVyZW5jZSBhbmQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uUmVmZXJlbmNlCiAgICAkU2VsZi0+X0R5bmFtaWNGaWVsZHNEZWxldGUoKTsKCiAgICAjIGNsZWFuIHVwIEltcG9ydEV4cG9ydCB0ZW1wbGF0ZXMKICAgICRTZWxmLT5fQ29uZmlnSXRlbUltcG9ydEV4cG9ydFRlbXBsYXRlc0RlbGV0ZSgpOwoKICAgICMgZGVsZXRlIGFsbCBsaW5rcyB3aXRoIGNvbmZpZ3VyYXRpb24gaXRlbXMKICAgICRTZWxmLT5fTGlua0RlbGV0ZSgpOwoKICAgICMgZGVhY3RpdmF0ZSB0aGUgZ3JvdXAgQzxpdHNtLWNvbmZpZ2l0ZW0+CiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICAjIGRlbGV0ZSAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnIHNlcnZpY2UgcHJlZmVyZW5jZXMKICAgICRTZWxmLT5fRGVsZXRlU2VydmljZVByZWZlcmVuY2VzKCk7CgogICAgIyByZW1vdmUgdGhlIENvbmZpZ0l0ZW0gbWFuYWdlbWVudCBpbnZva2VyIGZyb20gdGhlIEVsYXN0aWNzZWFyY2ggd2Vic2VydmljZQogICAgJFNlbGYtPl9VcGRhdGVFbGFzdGljc2VhcmNoV2ViU2VydmljZSggQWN0aW9uID0+ICdSZW1vdmUnICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsUG9zdCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBvc3QgcGFydAoKdXNpbmcgYSBwb3N0IGZ1bmN0aW9uIGJlY2F1c2UgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgaG9sZCBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gY29uZmlnIGl0ZW0gY2xhc3MgaXRlbXMKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGxQb3N0KCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5zdGFsbFBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlbGV0ZSBnZW5lcmFsIGNhdGFsb2cgY2xhc3NlczoKICAgICMgICBJVFNNOjpDb25maWdJdGVtOjpDbGFzcwogICAgIyAgIElUU006OkNvbmZpZ0l0ZW06OlJvbGUKICAgICMgICBJVFNNOjpDb25maWdJdGVtOjpDbGFzczo6Q2F0ZWdvcnkKICAgICRTZWxmLT5fR2VuZXJhbENhdGFsb2dDbGFzc2VzRGVsZXRlKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfU2V0RGVwbG95bWVudFN0YXRlUHJlZmVyZW5jZXMoKQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCkKCj1jdXQKCnN1YiBfU2V0RGVwbG95bWVudFN0YXRlUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlTWFwID0gKAogICAgICAgIEV4cGlyZWQgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBJbmFjdGl2ZSAgICA9PiAncG9zdHByb2R1Y3RpdmUnLAogICAgICAgIE1haW50ZW5hbmNlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBQaWxvdCAgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgUGxhbm5lZCAgICAgPT4gJ3ByZXByb2R1Y3RpdmUnLAogICAgICAgIFByb2R1Y3Rpb24gID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBSZXBhaXIgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgUmV0aXJlZCAgICAgPT4gJ3Bvc3Rwcm9kdWN0aXZlJywKICAgICAgICBSZXZpZXcgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgJ1Rlc3QvUUEnICAgPT4gJ3ByZXByb2R1Y3RpdmUnLAogICAgKTsKCiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVNYXAgKSB7CiAgICAgICAgbXkgJEl0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgTmFtZSAgPT4gJE5hbWUsCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgIG5leHQgTkFNRSBpZiAhJEl0ZW07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW0tPntJdGVtSUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJ0Z1bmN0aW9uYWxpdHknLAogICAgICAgICAgICBWYWx1ZSAgPT4gWyAkTWFweyROYW1lfSBdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfR3JvdXBBZGQoKQoKYWRkIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdUaGUgZ3JvdXAgZGVzY3JpcHRpb24uJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgRGVzY3JpcHRpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGxpc3Qgb2YgYWxsIGdyb3VwcwogICAgbXkgJUdyb3VwTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExpc3QoKTsKCiAgICAjIHJldmVyc2UgdGhlIGdyb3VwIGxpc3QgZm9yIGVhc2llciBsb29rdXAKICAgIG15ICVHcm91cExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlR3JvdXBMaXN0OwoKICAgICMgY2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMKICAgIG15ICRHcm91cElEID0gJEdyb3VwTGlzdFJldmVyc2V7ICRQYXJhbXtOYW1lfSB9OwoKICAgICMgcmVhY3RpdmF0ZSB0aGUgZ3JvdXAKICAgIGlmICgkR3JvdXBJRCkgewoKICAgICAgICAjIGdldCBjdXJyZW50IGdyb3VwIGRhdGEKICAgICAgICBteSAlR3JvdXBEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmVhY3RpdmF0ZSBncm91cAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cFVwZGF0ZSgKICAgICAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCB0aGUgZ3JvdXAKICAgIGVsc2UgewogICAgICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCA9PiAkUGFyYW17RGVzY3JpcHRpb259LAogICAgICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBsb29rdXAgdGhlIG5ldyBncm91cCBpZAogICAgbXkgJE5ld0dyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBhZGQgdXNlciByb290IHRvIHRoZSBncm91cAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyQWRkKAogICAgICAgIEdJRCAgICAgICAgPT4gJE5ld0dyb3VwSUQsCiAgICAgICAgVUlEICAgICAgICA9PiAxLAogICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICBybyAgICAgICAgPT4gMSwKICAgICAgICAgICAgbW92ZV9pbnRvID0+IDEsCiAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAxLAogICAgICAgICAgICBvd25lciAgICAgPT4gMSwKICAgICAgICAgICAgcHJpb3JpdHkgID0+IDEsCiAgICAgICAgICAgIHJ3ICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0dyb3VwRGVhY3RpdmF0ZSgpCgpkZWFjdGl2YXRlIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgKTsKCj1jdXQKCnN1YiBfR3JvdXBEZWFjdGl2YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTmFtZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9va3VwIGdyb3VwIGlkCiAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJEdyb3VwSUQ7CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgIyBnZXQgY3VycmVudCBncm91cCBkYXRhCiAgICBteSAlR3JvdXBEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwR2V0KAogICAgICAgIElEICAgICA9PiAkR3JvdXBJRCwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBkZWFjdGl2YXRlIGdyb3VwCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBVcGRhdGUoCiAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle2ludmFsaWR9LAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCiMgVE9ETyB2ZXJpZnkgaWYgYWxsIHJlbGV2YW50IGxpbmtzIGFyZSBkZWxldGVkCgo9aGVhZDIgX0xpbmtEZWxldGUoKQoKZGVsZXRlIGFsbCBleGlzdGluZyBsaW5rcyB0byBjb25maWd1cmF0aW9uIGl0ZW1zCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fTGlua0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9MaW5rRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIGNvbmZpZ3VyYXRpb24gaXRlbXMKICAgIG15ICRDb25maWdJdGVtSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2goKTsKCiAgICByZXR1cm4gaWYgISRDb25maWdJdGVtSURzOwogICAgcmV0dXJuIGlmIHJlZiAkQ29uZmlnSXRlbUlEcyBuZSAnQVJSQVknOwoKICAgICMgZGVsZXRlIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0ZpbGx1cEVtcHR5TGFzdFZlcnNpb25JRCgpCgpmaWxsIHVwIGVtcHR5IGVudHJpZXMgaW4gdGhlIGxhc3RfdmVyc2lvbl9pZCBjb2x1bW4gb2YgdGhlIEM8Y29uZmlnaXRlbT4gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCj1jdXQKCnN1YiBfRmlsbHVwRW1wdHlMYXN0VmVyc2lvbklEIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGVtcHR5IGxhc3RfdmVyc2lvbl9pZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICcKICAgICAgICAgICAgLiAnbGFzdF92ZXJzaW9uX2lkID0gMCBPUiBsYXN0X3ZlcnNpb25faWQgSVMgTlVMTCcsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRSb3dbMF07CiAgICB9CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgZ2V0IHRoZSBsYXN0IHZlcnNpb24gb2YgdGhpcyBjb25maWd1cmF0aW9uIGl0ZW0KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8gT1JERVIgQlkgaWQgREVTQycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICBteSAkVmVyc2lvbklEOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRWZXJzaW9uSUQgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRWZXJzaW9uSUQ7CgogICAgICAgICMgdXBkYXRlIEM8aW5jaV9zdGF0ZV9pZD4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW0gJwogICAgICAgICAgICAgICAgLiAnU0VUIGxhc3RfdmVyc2lvbl9pZCA9ID8gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkVmVyc2lvbklELCBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfRmlsbHVwRW1wdHlWZXJzaW9uSW5jaWRlbnRTdGF0ZUlEKCkKCmZpbGwgdXAgZW1wdHkgZW50cmllcyBpbiB0aGUgQzxpbmNpX3N0YXRlX2lkIGNvbHVtbj4gb2YgdGhlIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0ZpbGx1cEVtcHR5VmVyc2lvbkluY2lkZW50U3RhdGVJRCgpOwoKPWN1dAoKc3ViIF9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBvcGVyYXRpb25hbCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBlcnJvciBoYW5kbGluZwogICAgaWYgKCAhJEluY2lTdGF0ZUxpc3QgfHwgcmVmICRJbmNpU3RhdGVMaXN0IG5lICdIQVNIJyB8fCAhJXskSW5jaVN0YXRlTGlzdH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBmaW5kIGFueSBpdGVtIGluIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzb3J0IGlkcwogICAgbXkgQEluY2lTdGF0ZUtleUxpc3QgPSBzb3J0IGtleXMgJXskSW5jaVN0YXRlTGlzdH07CgogICAgIyB1cGRhdGUgaW5jaV9zdGF0ZV9pZAogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24gJwogICAgICAgICAgICAuICdTRVQgaW5jaV9zdGF0ZV9pZCA9ID8gJwogICAgICAgICAgICAuICdXSEVSRSBpbmNpX3N0YXRlX2lkID0gMCBPUiBpbmNpX3N0YXRlX2lkIElTIE5VTEwnLAogICAgICAgIEJpbmQgPT4gWyBcJEluY2lTdGF0ZUtleUxpc3RbMF0gXSwKICAgICk7Cn0KCj1oZWFkMiBfRmlsbHVwRW1wdHlJbmNpZGVudEFuZERlcGxveW1lbnRTdGF0ZUlEKCkKCmZpbGwgdXAgZW1wdHkgZW50cmllcyBpbiB0aGUgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgY29sdW1uIG9mIHRoZSBDPGNvbmZpZ2l0ZW0+IHRhYmxlCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRmlsbHVwRW1wdHlJbmNpZGVudEFuZERlcGxveW1lbnRTdGF0ZUlEKCk7Cgo9Y3V0CgpzdWIgX0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBlbXB0eSBjdXJfZGVwbF9zdGF0ZV9pZCBvciBjdXJfaW5jaV9zdGF0ZV9pZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICcKICAgICAgICAgICAgLiAnY3VyX2RlcGxfc3RhdGVfaWQgPSAwIE9SIGN1cl9kZXBsX3N0YXRlX2lkIElTIE5VTEwgT1IgJwogICAgICAgICAgICAuICdjdXJfaW5jaV9zdGF0ZV9pZCA9IDAgT1IgY3VyX2luY2lfc3RhdGVfaWQgSVMgTlVMTCcsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRSb3dbMF07CiAgICB9CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbgogICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJExhc3RWZXJzaW9uOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmIHJlZiAkTGFzdFZlcnNpb24gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTGFzdFZlcnNpb24tPntEZXBsU3RhdGVJRH07CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRMYXN0VmVyc2lvbi0+e0luY2lTdGF0ZUlEfTsKCiAgICAgICAgIyBjb21wbGV0ZSBjb25maWd1cmF0aW9uIGl0ZW0KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW0gU0VUICcKICAgICAgICAgICAgICAgIC4gJ2N1cl9kZXBsX3N0YXRlX2lkID0gPywgJwogICAgICAgICAgICAgICAgLiAnY3VyX2luY2lfc3RhdGVfaWQgPSA/ICcKICAgICAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRMYXN0VmVyc2lvbi0+e0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFwkTGFzdFZlcnNpb24tPntJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcygpCgpEZWxldGVzIHRoZSBzZXJ2aWNlIHByZWZlcmVuY2VzIGZvciB0aGUga2V5ICdDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcycuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRGVsZXRlU2VydmljZVByZWZlcmVuY2VzKCk7Cgo9Y3V0CgpzdWIgX0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHNlcnZpY2UgbGlzdAogICAgbXkgJVNlcnZpY2VMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIFNFUlZJQ0VJRDoKICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVTZXJ2aWNlTGlzdCApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgdHlwZSBmcm9tIENJcyBvZiB0aGUgc2VydmljZQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJycsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfVXBkYXRlRWxhc3RpY3NlYXJjaFdlYlNlcnZpY2UoKQoKQWRkcyB0aGUgQ29uZmlnSXRlbSBtYW5hZ2VtZW50IGludm9rZXIuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fVXBkYXRlRWxhc3RpY3NlYXJjaFdlYlNlcnZpY2UoCiAgICAgICAgTW9kZSA9PiAnQWRkfFJlbW92ZScKICAgICk7Cgo9Y3V0CgpzdWIgX1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFdlYnNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpOwogICAgbXkgJFdlYnNlcnZpY2UgICAgICAgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUdldCgKICAgICAgICBOYW1lID0+ICdFbGFzdGljc2VhcmNoJywKICAgICk7CgogICAgaWYgKCAhJFdlYnNlcnZpY2UgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEaWQgbm90IGZpbmQgdGhlIEVsYXN0aWNzZWFyY2ggd2Vic2VydmljZSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0FkZCcgKSB7CiAgICAgICAgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17SW52b2tlcn17Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9ID0gewogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnJywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50JywKICAgICAgICB9OwogICAgICAgICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e0ludm9rZXJ9e0NvbmZpZ0l0ZW1NYW5hZ2VtZW50fSA9IHsKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgICAgIEV2ZW50cyAgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBc3luY2hyb25vdXMgPT4gJzAnLAogICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAnMCcsCiAgICAgICAgICAgICAgICAgICAgRXZlbnQgICAgICAgID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0F0dGFjaG1lbnRBZGRQb3N0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0F0dGFjaG1lbnREZWxldGVQb3N0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgVHlwZSA9PiAnRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQnLAogICAgICAgIH07CiAgICAgICAgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17VHJhbnNwb3J0fXtDb25maWd9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9ID0gewogICAgICAgICAgICBDb21tYW5kICAgID0+ICdQT1NUJywKICAgICAgICAgICAgQ29udHJvbGxlciA9PiAnL3RtcGF0dGFjaG1lbnRzLzpkb2NhcGkvOmlkP3BpcGVsaW5lPTpwYXRoJywKICAgICAgICB9OwogICAgICAgICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e1RyYW5zcG9ydH17Q29uZmlnfXtJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9e0NvbmZpZ0l0ZW1NYW5hZ2VtZW50fSA9IHsKICAgICAgICAgICAgQ29tbWFuZCAgICA9PiAnUE9TVCcsCiAgICAgICAgICAgIENvbnRyb2xsZXIgPT4gJy9jb25maWdpdGVtLzpkb2NhcGkvOmlkJywKICAgICAgICB9OwogICAgfQoKICAgIGVsc2lmICggJFBhcmFte0FjdGlvbn0gZXEgJ1JlbW92ZScgKSB7CiAgICAgICAgZGVsZXRlICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e0ludm9rZXJ9e0NvbmZpZ0l0ZW1Jbmdlc3RBdHRhY2htZW50fTsKICAgICAgICBkZWxldGUgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17SW52b2tlcn17Q29uZmlnSXRlbU1hbmFnZW1lbnR9OwogICAgICAgIGRlbGV0ZSAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtUcmFuc3BvcnR9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9OwogICAgICAgIGRlbGV0ZSAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtUcmFuc3BvcnR9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbU1hbmFnZW1lbnR9OwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gQWN0aW9uIHByb3ZpZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN1Y2Nlc3MgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHRoZSBFbGFzdGljc2VhcmNoIHdlYnNlcnZpY2UhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHJldHVybiAxOwoKfQoKPWhlYWQyIF9VcGRhdGVEYXNoYm9hcmRXaWRnZXRTeXNDb25maWcoKQoKVXBkYXRlcyB0aGUgc3lzY29uZmlnIHNldHRpbmdzIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGFuZCBjdXN0b21lciB1c2VyIGluZm9ybWF0aW9uIGNlbnRlciB3aWRnZXRzIHRvIHRoZSBuZXcgc3RydWN0dXJlLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X1VwZGF0ZURhc2hib2FyZFdpZGdldFN5c0NvbmZpZygpOwoKPWN1dAoKc3ViIF9VcGRhdGVEYXNoYm9hcmRXaWRnZXRTeXNDb25maWcgewoKICAgIG15ICRMb2dPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIG15IEBTZXR0aW5ncyA9ICgKICAgICAgICAiQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkiLAogICAgICAgICJBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyIgogICAgKTsKCiAgICBteSAkQWxsRGlydHk7CiAgICBteSBAQ2hhbmdlZFNldHRpbmdzOwoKICAgIFNFVFRJTkc6CiAgICBmb3IgbXkgJFNldHRpbmdOYW1lIChAU2V0dGluZ3MpIHsKCiAgICAgICAgbXkgJVNldHRpbmcgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICRTZXR0aW5nTmFtZSwKICAgICAgICApOwoKICAgICAgICAjIGRvIG5vdGhpbmcgaWYgc2V0dGluZyBpcyBub3QgbW9kaWZpZWQgYW5kIG5vdCBkaXJ0eQogICAgICAgIG5leHQgU0VUVElORyBpZiAhJFNldHRpbmd7SXNNb2RpZmllZH0gJiYgISRTZXR0aW5ne0lzRGlydHl9OwoKICAgICAgICAjIGFzIHRoZSBTeXNDb25maWcgY2hhbmdlIGJyZWFrcyB0aGUgb2xkIHNldHRpbmcsIGR1cmluZyB1cGdyYWRlIHRvIDExLjEgd2UgaGF2ZSB0byB1c2UgdGhlIGZvcm1lcmx5IGRlcGxveWVkIHNldHRpbmcKICAgICAgICBpZiAoICEkU2V0dGluZ3tJc01vZGlmaWVkfSApIHsKICAgICAgICAgICAgJVNldHRpbmcgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nR2V0KAogICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJFNldHRpbmdOYW1lLAogICAgICAgICAgICAgICAgRGVwbG95ZWQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRBbGxEaXJ0eSA9IDE7CiAgICAgICAgfQoKICAgICAgICBuZXh0IFNFVFRJTkcgaWYgcmVmICRTZXR0aW5ne0VmZmVjdGl2ZVZhbHVlfXtDb25maWdJdGVtS2V5fSBuZSAnSEFTSCc7CgogICAgICAgIHB1c2ggQENoYW5nZWRTZXR0aW5ncywgJFNldHRpbmdOYW1lOwoKICAgICAgICAjIGZldGNoIGR5bmFtaWMgZmllbGQgZnJvbSBvbGQgc3RydWN0dXJlCiAgICAgICAgbXkgJElkZW50aWZpZXJERiA9IGZpcnN0IHsgJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9e0NvbmZpZ0l0ZW1LZXl9eyRffSB9IGtleXMgJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9e0NvbmZpZ0l0ZW1LZXl9LT4lKjsKCiAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICBGb3JjZSAgICAgPT4gMSwKICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBVcGRhdGUgc2V0dGluZyB3aXRoIG1vZGlmaWVkIGRhdGEKICAgICAgICBteSAlUmVzdWx0ID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFNldHRpbmdOYW1lLAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ3tFZmZlY3RpdmVWYWx1ZX0tPiUqLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAkSWRlbnRpZmllckRGLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJlc3VsdHtTdWNjZXNzfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHNldHRpbmcgJFNldHRpbmdOYW1lLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVbmxvY2soCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICBEZWZhdWx0SUQgPT4gJFNldHRpbmd7RGVmYXVsdElEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdW5sb2NrIHNldHRpbmcgJFNldHRpbmdOYW1lLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgIH0KCiAgICBpZiAoIEBDaGFuZ2VkU2V0dGluZ3MgKSB7CiAgICAgICAgbXkgJURpcnR5U2V0dGluZ3MgPSAkQWxsRGlydHkgPyAoKSA6IHsgRGlydHlTZXR0aW5ncyA9PiBcQENoYW5nZWRTZXR0aW5ncyB9OwoKICAgICAgICBteSAlRGVwbG95bWVudFJlc3VsdCA9ICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICAgICAgICAgIENvbW1lbnRzID0+ICJJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgVXBncmFkZSAoZml4ZWQgQ0lDIGFuZCBDVUlDIElUU00gV2lkZ2V0IENvbmZpZykuIiwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgPT4gMSwKICAgICAgICAgICAgJURpcnR5U2V0dGluZ3MsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlcGxveW1lbnRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRGVwbG95bWVudCBmYWlsZWQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfRHluYW1pY0ZpZWxkc0RlbGV0ZSgpCgpEZWxldGVzIHRoZSBkeW5hbWljIGZpZWxkcyB3aGljaCBhcmUgcmVsYXRlZCB0byB0aGlzIHBhY2thZ2UsIGVpdGhlciBiZWNhdXNlIHRoZXkgYXJlIG9mIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtIG9yIGJlY2F1c2UgdGhleSBhcmUgb2YgZmllbGQgdHlwZSBJVFNNQ29uZmlnSXRlbVJlZmVyZW5jZSBvciBJVFNNQ29uZmlnSXRlbVZlcnNpb25SZWZlcmVuY2UuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGdldCBhbGwgZHluYW1pYyBmaWVsZHMgYmVjYXVzZSB3ZSBjYW4ndCBmaWx0ZXIgZm9yIGZpZWxkIHR5cGUgaW4gZHluYW1pYyBmaWVsZCBsaXN0IGZ1bmN0aW9ucwogICAgbXkgJER5bmFtaWNGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZHMtPkAqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRAogICAgICAgICAgICB1bmxlc3MgKAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScKICAgICAgICAgICAgICAgIHx8ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJwogICAgICAgICAgICAgICAgfHwgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW1WZXJzaW9uJwogICAgICAgICAgICApOwoKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntJbnRlcm5hbEZpZWxkfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBpbnRlcm5hbCBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QWxsVmFsdWVzRGVsZXRlKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIkNvdWxkIG5vdCBkZWxldGUgdmFsdWVzIGZvciBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGREZWxldGUoCiAgICAgICAgICAgIElEICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBEeW5hbWljRmllbGQgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9HZW5lcmFsQ2F0YWxvZ0NsYXNzZXNEZWxldGUoKQoKRGVsZXRlcyB0aGUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzIGl0ZW1zIHdoaWNoIGFyZSByZWxhdGVkIHRvIHRoaXMgcGFja2FnZSBhbmQgdGhlaXIgcHJlZmVyZW5jZXMgYXMgd2VsbC4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9HZW5lcmFsQ2F0YWxvZ0NsYXNzZXNEZWxldGUoKTsKCj1jdXQKCnN1YiBfR2VuZXJhbENhdGFsb2dDbGFzc2VzRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVjZXNzYXJ5IG9iamVjdHMKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJFByZWZlcmVuY2VzT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nOjpQcmVmZXJlbmNlc0RCJyk7CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBteSBAQ2xhc3Nlc1RvRGVsZXRlCiAgICAgICAgPSBxdyhJVFNNOjpDb25maWdJdGVtOjpDbGFzcyBJVFNNOjpDb25maWdJdGVtOjpSb2xlIElUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDYXRlZ29yeSBJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUgSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm8pOwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzcyAoQENsYXNzZXNUb0RlbGV0ZSkgewoKICAgICAgICBteSAkSXRlbUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgIFZhbGlkID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDTEFTUyB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1MaXN0KTsKCiAgICAgICAgZm9yIG15ICRJdGVtICggcGFpcnMgJEl0ZW1MaXN0LT4lKiApIHsKICAgICAgICAgICAgbXkgKCAkSUQsICROYW1lICkgPSAkSXRlbS0+QCo7CgogICAgICAgICAgICAjIHVuc2V0IHByZWZlcmVuY2VzIG9mIGl0ZW0KICAgICAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJFByZWZlcmVuY2VzT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICglUHJlZmVyZW5jZXMpIHsKICAgICAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIGtleXMgJVByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlc09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkZWxldGUgaXRlbSBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGdlbmVyYWxfY2F0YWxvZyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICAgICAgXCRJRCwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIEdlbmVyYWxDYXRhbG9nIGl0ZW0gJE5hbWUhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENMQVNTOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCkKCkNsZWFycyB0aGUgY29uZmlnaXRlbV9saW5rIGRhdGFiYXNlIHRhYmxlLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0NvbmZpZ0l0ZW1MaW5rRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgdGFibGUgcm93cyBmcm9tIGRhdGFiYXNlCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSByb3dzIG9mIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfQ29uZmlnSXRlbUltcG9ydEV4cG9ydFRlbXBsYXRlc0RlbGV0ZSgpCgpEZWxldGVzIGFsbCBJbXBvcnRFeHBvcnQgdGVtcGxhdGVzIHdpdGggb2JqZWN0IHR5cGUgQ29uZmlnSXRlbS4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Db25maWdJdGVtSW1wb3J0RXhwb3J0VGVtcGxhdGVzRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0NvbmZpZ0l0ZW1JbXBvcnRFeHBvcnRUZW1wbGF0ZXNEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgIG15ICRUZW1wbGF0ZUlETGlzdCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlRlbXBsYXRlTGlzdCgKICAgICAgICBPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICByZXR1cm4gMSB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRUZW1wbGF0ZUlETGlzdCk7CgogICAgZm9yIG15ICRUZW1wbGF0ZUlEICggJFRlbXBsYXRlSURMaXN0LT5AKiApIHsKCiAgICAgICAgIyBkZWxldGUgdGVtcGxhdGUgZnJvbSBkYXRhYmFzZQogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+VGVtcGxhdGVEZWxldGUoCiAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggISREZWxldGVTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIkNvdWxkIG5vdCBkZWxldGUgSW1wb3J0RXhwb3J0IHRlbXBsYXRlIG9mIHR5cGUgSVRTTUNvbmZpZ0l0ZW0gd2l0aCBJRCAkVGVtcGxhdGVJRCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="doc/en/ITSMConfigurationManagement.pdf" Permission="644" Encode="Base64">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3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHdKAADeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdEgCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4pwQA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgn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AoB3AoB3AoB3SgAA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnRIAgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeKcEAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4pAQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3SgAA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA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</File>
    </Filelist>
    <DatabaseInstall Type="post">
        <TableCreate Type="post" Name="configitem">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_number" Required="true" Size="100" Type="VARCHAR"></Column>
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="last_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="cur_depl_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="cur_inci_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Required="true" Type="DATE"></Column>
            <Column Name="change_by" Required="true" Type="INTEGER"></Column>
            <Unique>
                                <UniqueColumn Name="configitem_number"></UniqueColumn>
</Unique>
            <Index Name="configitem_class_id">
                <IndexColumn Name="class_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_last_version_id">
                <IndexColumn Name="last_version_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_cur_depl_state_id">
                <IndexColumn Name="cur_depl_state_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_cur_inci_state_id">
                <IndexColumn Name="cur_inci_state_id">
                </IndexColumn>
            </Index>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
                <Reference Foreign="id" Local="cur_depl_state_id">
                </Reference>
                <Reference Foreign="id" Local="cur_inci_state_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="configitem_definition" Required="true" Type="LONGBLOB"></Column>
            <Column Name="dynamicfield_definition" Required="false" Type="LONGBLOB"></Column>
            <Column Name="version" Required="true" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_version">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_id" Required="true" Type="BIGINT"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="version_string" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="definition_id" Required="true" Type="INTEGER"></Column>
            <Column Name="depl_state_id" Required="true" Type="INTEGER"></Column>
            <Column Name="inci_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="description" Required="false" Size="1800000" Type="VARCHAR"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Required="true" Type="DATE"></Column>
            <Column Name="change_by" Required="true" Type="INTEGER"></Column>
            <Index Name="configitem_version_configitem_id">
                <IndexColumn Name="configitem_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_version_depl_state_id">
                <IndexColumn Name="depl_state_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_version_inci_state_id">
                <IndexColumn Name="inci_state_id">
                </IndexColumn>
            </Index>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_definition">
                <Reference Foreign="id" Local="definition_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="depl_state_id">
                </Reference>
                <Reference Foreign="id" Local="inci_state_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_counter">
            <Column Name="class_id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="counter_type" Required="true" Size="50" Type="VARCHAR"></Column>
            <Column Name="counter" Required="true" Size="50" Type="VARCHAR"></Column>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_history_type">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="comments" Size="191" Type="VARCHAR"></Column>
            <Column Name="valid_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Type="DATE"></Column>
            <Column Name="change_by" Type="INTEGER"></Column>
            <Unique Name="configitem_history_type_name">
                                <UniqueColumn Name="name"></UniqueColumn>
</Unique>
            <ForeignKey ForeignTable="valid">
                <Reference Foreign="id" Local="valid_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_history">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_id" Required="true" Type="BIGINT"></Column>
            <Column Name="type_id" Required="true" Type="INTEGER"></Column>
            <Column Name="content" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_history_type">
                <Reference Foreign="id" Local="type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition_sync">
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="field_id" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_link">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="source_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="source_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="link_type_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="dynamic_field_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="source_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="source_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="target_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="target_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="link_type">
                <Reference Foreign="id" Local="link_type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="dynamic_field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Expired</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Inactive</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Maintenance</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Pilot</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Planned</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Production</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Repair</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Retired</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Review</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Test/QA</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::YesNo</Data>
            <Data Key="name" Translatable="1" Type="Quote">Yes</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::YesNo</Data>
            <Data Key="name" Translatable="1" Type="Quote">No</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class::Category</Data>
            <Data Key="name" Translatable="1" Type="Quote">All</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ConfigItemCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ConfigItemDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">LinkAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">LinkDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">NameUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ValueUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">DefinitionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">IncidentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">DeploymentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">AttachmentAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">AttachmentDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
    </DatabaseInstall>
    <DatabaseUpgrade Type="post">
        <TableCreate Type="post" Name="configitem_history_type" Version="1.3.71">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="comments" Size="191" Type="VARCHAR"></Column>
            <Column Name="valid_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Type="DATE"></Column>
            <Column Name="change_by" Type="INTEGER"></Column>
            <Unique Name="configitem_history_type_name">
                                <UniqueColumn Name="name"></UniqueColumn>
</Unique>
            <ForeignKey ForeignTable="valid">
                <Reference Foreign="id" Local="valid_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition_sync" Version="11.0.1">
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="field_id" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_link" Version="11.0.1">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="source_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="source_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="link_type_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="dynamic_field_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="source_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="source_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="target_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="target_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="link_type">
                <Reference Foreign="id" Local="link_type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="dynamic_field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableAlter Type="post" Name="configitem_definition" Version="11.0.1">
            <ColumnAdd Name="dynamicfield_definition" Required="false" Type="LONGBLOB"></ColumnAdd>
        </TableAlter>
        <TableAlter Type="post" Name="configitem_version" Version="11.0.1">
            <ColumnAdd Name="version_string" Required="true" Size="191" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="description" Required="false" Size="1800000" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="change_time" Required="true" Type="DATE"></ColumnAdd>
            <ColumnAdd Name="change_by" Required="true" Type="INTEGER"></ColumnAdd>
        </TableAlter>
        <Insert Type="post" Table="configitem_history_type" Version="11.0.1">
            <Data Key="name" Type="Quote">VersionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog" Version="11.0.1">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class::Category</Data>
            <Data Key="name" Translatable="1" Type="Quote">All</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
    </DatabaseUpgrade>
    <DatabaseUninstall Type="pre">
        <TableDrop Type="pre" Name="configitem_definition_sync">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_link">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_counter">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_version">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_definition">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_history">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_history_type">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem">
        </TableDrop>
    </DatabaseUninstall>
</otrs_package>